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 */
|
||||
if (host->caps & MMC_CAP_POWER_OFF_CARD) {
|
||||
err = pm_runtime_get_sync(&host->card->dev);
|
||||
if (err < 0)
|
||||
if (err < 0) {
|
||||
pm_runtime_put_noidle(&host->card->dev);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
ret = pm_runtime_get_sync(dev);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
goto disable_runtimepm;
|
||||
}
|
||||
|
||||
/* 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:
|
||||
if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD)
|
||||
pm_runtime_put_noidle(dev);
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue