mmc: core: call pm_runtime_put_noidle in pm_runtime_get_sync failed case
Even in failed case of pm_runtime_get_sync, the usage_count is incremented. In order to keep the usage_count with correct value and runtime power management to behave correctly, call pm_runtime_put_noidle in such case. Signed-off-by: Liu Chuansheng <chuansheng.liu@intel.com> Signed-off-by: Li Fei <fei.li@intel.com> Acked-by: Ohad Ben-Cohen <ohad@wizery.com> Signed-off-by: Chris Ball <cjb@laptop.org>
This commit is contained in:
parent
abd4190f0c
commit
3bffb800b9
2 changed files with 4 additions and 3 deletions
|
@ -861,8 +861,10 @@ static void mmc_sdio_detect(struct mmc_host *host)
|
||||||
/* Make sure card is powered before detecting it */
|
/* Make sure card is powered before detecting it */
|
||||||
if (host->caps & MMC_CAP_POWER_OFF_CARD) {
|
if (host->caps & MMC_CAP_POWER_OFF_CARD) {
|
||||||
err = pm_runtime_get_sync(&host->card->dev);
|
err = pm_runtime_get_sync(&host->card->dev);
|
||||||
if (err < 0)
|
if (err < 0) {
|
||||||
|
pm_runtime_put_noidle(&host->card->dev);
|
||||||
goto out;
|
goto out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mmc_claim_host(host);
|
mmc_claim_host(host);
|
||||||
|
|
|
@ -138,7 +138,7 @@ static int sdio_bus_probe(struct device *dev)
|
||||||
if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) {
|
if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) {
|
||||||
ret = pm_runtime_get_sync(dev);
|
ret = pm_runtime_get_sync(dev);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto disable_runtimepm;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the default block size so the driver is sure it's something
|
/* Set the default block size so the driver is sure it's something
|
||||||
|
@ -158,7 +158,6 @@ static int sdio_bus_probe(struct device *dev)
|
||||||
disable_runtimepm:
|
disable_runtimepm:
|
||||||
if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD)
|
if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD)
|
||||||
pm_runtime_put_noidle(dev);
|
pm_runtime_put_noidle(dev);
|
||||||
out:
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue