summaryrefslogtreecommitdiff
path: root/drivers/mmc/core
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2017-04-05 12:16:57 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-04-05 12:16:56 -0700
commitbbc2d362eb2cddf1314725d4896aa0e4cd3182da (patch)
treeaca8145f37ee42a515756fa61f00cc1f4fda15f3 /drivers/mmc/core
parentb8d554f7cb26611c26ae257d995d85c00c725612 (diff)
parentdf018af6406858c212034c47385a62917390160c (diff)
Merge "ARM: dts: msm: enable SDR104 workaround for MSM8998"
Diffstat (limited to 'drivers/mmc/core')
-rw-r--r--drivers/mmc/core/core.c4
-rw-r--r--drivers/mmc/core/core.h1
-rw-r--r--drivers/mmc/core/sd.c2
3 files changed, 6 insertions, 1 deletions
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index c409f713d4f0..41f0935440fd 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -4040,6 +4040,10 @@ int _mmc_detect_card_removed(struct mmc_host *host)
if (ret) {
mmc_card_set_removed(host->card);
+ if (host->card->sdr104_blocked) {
+ mmc_host_set_sdr104(host);
+ host->card->sdr104_blocked = false;
+ }
pr_debug("%s: card remove detected\n", mmc_hostname(host));
}
diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h
index 1116544eebc1..c66187299598 100644
--- a/drivers/mmc/core/core.h
+++ b/drivers/mmc/core/core.h
@@ -80,7 +80,6 @@ void mmc_init_context_info(struct mmc_host *host);
extern bool mmc_can_scale_clk(struct mmc_host *host);
extern int mmc_init_clk_scaling(struct mmc_host *host);
-extern int mmc_suspend_clk_scaling(struct mmc_host *host);
extern int mmc_resume_clk_scaling(struct mmc_host *host);
extern int mmc_exit_clk_scaling(struct mmc_host *host);
extern unsigned long mmc_get_max_frequency(struct mmc_host *host);
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 9e147a667edf..5b4d5d74fe55 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -1285,6 +1285,8 @@ static int _mmc_sd_resume(struct mmc_host *host)
#endif
mmc_card_clr_suspended(host->card);
+ if (host->card->sdr104_blocked)
+ goto out;
err = mmc_resume_clk_scaling(host);
if (err) {
pr_err("%s: %s: fail to resume clock scaling (%d)\n",