aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host
diff options
context:
space:
mode:
authorJisheng Zhang <jszhang@marvell.com>2015-01-29 04:42:12 -0500
committerUlf Hansson <ulf.hansson@linaro.org>2015-01-29 05:28:06 -0500
commit3396e7361159753047965d1ed134ff7af248d64c (patch)
tree3e301dae37ae680ff9f191ec8846ae0abc60fa0b /drivers/mmc/host
parent352ee868dda03ca72e60d4853356881ff161ec23 (diff)
mmc: sdhci: switch voltage before sdhci_set_ios in runtime resume
I observed the Host Control2 register isn't correctly restored after runtime resuming on BG2Q. For example, the register reads as 0x800c before runtime suspend, but it's set as 0x8004 after runtime resuming. This could results in a non working host. The reason is the Host Control2 is incorrectly reset when switching voltage. We fix this by following the same sequence during initialization. Signed-off-by: Jisheng Zhang <jszhang@marvell.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'drivers/mmc/host')
-rw-r--r--drivers/mmc/host/sdhci.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index c9881ca131d5..0ad412a4876f 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2871,9 +2871,9 @@ int sdhci_runtime_resume_host(struct sdhci_host *host)
2871 /* Force clock and power re-program */ 2871 /* Force clock and power re-program */
2872 host->pwr = 0; 2872 host->pwr = 0;
2873 host->clock = 0; 2873 host->clock = 0;
2874 sdhci_do_start_signal_voltage_switch(host, &host->mmc->ios);
2874 sdhci_do_set_ios(host, &host->mmc->ios); 2875 sdhci_do_set_ios(host, &host->mmc->ios);
2875 2876
2876 sdhci_do_start_signal_voltage_switch(host, &host->mmc->ios);
2877 if ((host_flags & SDHCI_PV_ENABLED) && 2877 if ((host_flags & SDHCI_PV_ENABLED) &&
2878 !(host->quirks2 & SDHCI_QUIRK2_PRESET_VALUE_BROKEN)) { 2878 !(host->quirks2 & SDHCI_QUIRK2_PRESET_VALUE_BROKEN)) {
2879 spin_lock_irqsave(&host->lock, flags); 2879 spin_lock_irqsave(&host->lock, flags);