diff options
author | Ulf Hansson <ulf.hansson@linaro.org> | 2013-06-10 19:03:38 +0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2013-06-27 20:39:16 +0400 |
commit | 74590263384e5d4601de7f0ee2790477578829ea (patch) | |
tree | b6548924c4fdc46244f0663c2adcfd72d22f30c9 /drivers/mmc/core/sd.c | |
parent | 810caddba42a54fe5db4e2664757a9a334ba359c (diff) | |
download | linux-74590263384e5d4601de7f0ee2790477578829ea.tar.xz |
mmc: core: Push common suspend|resume code into each bus_ops
By moving code from the mmc_suspend|resume_host down into each
.suspend|resume bus_ops callback, we get a more flexible solution.
Some nice side effects are that we get a better understanding of each
bus_ops suspend|resume sequence and the common code don't have to take
care of specific corner cases, especially for the SDIO case.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Tested-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc/core/sd.c')
-rw-r--r-- | drivers/mmc/core/sd.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index aeaae7c3b22b..cacef27b00d1 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c @@ -1075,6 +1075,8 @@ static int mmc_sd_suspend(struct mmc_host *host) if (!mmc_host_is_spi(host)) err = mmc_deselect_cards(host); host->card->state &= ~MMC_STATE_HIGHSPEED; + if (!err) + mmc_power_off(host); mmc_release_host(host); return err; @@ -1094,6 +1096,8 @@ static int mmc_sd_resume(struct mmc_host *host) BUG_ON(!host->card); mmc_claim_host(host); + mmc_power_up(host); + mmc_select_voltage(host, host->ocr); err = mmc_sd_init_card(host, host->ocr, host->card); mmc_release_host(host); |