summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorPavan Kunapuli <pkunapuli@nvidia.com>2012-07-10 18:57:25 +0530
committerRohan Somvanshi <rsomvanshi@nvidia.com>2012-07-31 03:35:29 -0700
commitee2367b525e8c1c5036d170bcba1798abd0ca9c7 (patch)
treeb685899e46f9f719c8005d1bd03850db03bc1e6e /drivers/mmc
parent830b927faaf4236217f42c9e1f22d9147869c30b (diff)
mmc: sdhci: Avoid power on/off during sleep
If eMMC sleep support is enabled, set MMC_PM_KEEP_POWER to avoid host power off and power on. Instead, restore the host context in resume. Bug 1007644 Bug 936069 Change-Id: I74578bb1f9e297b3af6bd79b9215364334984836 Signed-off-by: Pavan Kunapuli <pkunapuli@nvidia.com> Reviewed-on: http://git-master/r/118913 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Min-wuk Lee <mlee@nvidia.com> Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/sdhci.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 6c86278b22ab..f86bf746a6e6 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2349,6 +2349,15 @@ int sdhci_suspend_host(struct sdhci_host *host, pm_message_t state)
}
if (mmc->card) {
+ /*
+ * If eMMC cards are put in sleep state, Vccq can be disabled
+ * but Vcc would still be powered on. In resume, we only restore
+ * the controller context. So, set MMC_PM_KEEP_POWER flag.
+ */
+ if (mmc_card_can_sleep(mmc) &&
+ !(mmc->caps & MMC_CAP2_NO_SLEEP_CMD))
+ mmc->pm_flags = MMC_PM_KEEP_POWER;
+
ret = mmc_suspend_host(host->mmc);
if (ret) {
if (has_tuning_timer) {