aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/mmc/core/core.c9
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,