diff options
| -rw-r--r-- | drivers/mmc/core/core.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index b02f17ddc..fad74b3b2 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -2853,12 +2853,14 @@ void mmc_rescan(struct work_struct *work) void mmc_start_host(struct mmc_host *host) { + mmc_claim_host(host); host->f_init = max(freqs[0], host->f_min); host->rescan_disable = 0; if (host->caps2 & MMC_CAP2_NO_PRESCAN_POWERUP) mmc_power_off(host); else mmc_power_up(host); + mmc_release_host(host); mmc_detect_change(host, 0); } @@ -3113,8 +3115,11 @@ int mmc_suspend_host(struct mmc_host *host) } mmc_bus_put(host); - if (!err && !mmc_card_keep_power(host)) + if (!err && !mmc_card_keep_power(host)) { + mmc_claim_host(host); mmc_power_off(host); + mmc_release_host(host); + } out: return err; @@ -3139,7 +3144,9 @@ int mmc_resume_host(struct mmc_host *host) if (host->bus_ops && !host->bus_dead) { if (!mmc_card_keep_power(host)) { + mmc_claim_host(host); mmc_power_up(host); + mmc_release_host(host); mmc_select_voltage(host, host->ocr); /* * Tell runtime PM core we just powered up the card, |
