summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorRyan QIAN <b32804@freescale.com>2012-02-24 16:48:53 +0800
committerRyan QIAN <b32804@freescale.com>2012-02-24 18:00:28 +0800
commit540ea17f70231698d22cbec0c3338e2218ae95fd (patch)
tree3b9f91c55102ce7733f828524cb8bec48bf83acb /drivers/mmc
parent0a2926a1c16161500552482938c47ae44f92dbc9 (diff)
ENGR00175321 [MX6]MMCSD: eMMC4.4 failed to work after resume
- clear ddr_en bit on non ddr timing mode in platform code. Signed-off-by: Ryan QIAN <b32804@freescale.com>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/sdhci-esdhc-imx.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index 3f0e1b6a13db..042bfc73c78a 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -324,8 +324,13 @@ static void esdhc_writew_le(struct sdhci_host *host, u16 val, int reg)
orig_reg |= (val & SDHCI_CTRL_TUNED_CLK)
? 0 : SDHCI_MIX_CTRL_SMPCLK_SEL;
- orig_reg |= (val & SDHCI_CTRL_UHS_DDR50)
- ? SDHCI_MIX_CTRL_DDREN : 0;
+ if (val & SDHCI_CTRL_UHS_DDR50) {
+ orig_reg |= SDHCI_MIX_CTRL_DDREN;
+ imx_data->scratchpad |= SDHCI_MIX_CTRL_DDREN;
+ } else {
+ orig_reg &= ~SDHCI_MIX_CTRL_DDREN;
+ imx_data->scratchpad &= ~SDHCI_MIX_CTRL_DDREN;
+ }
writel(orig_reg, host->ioaddr + SDHCI_MIX_CTRL);
/* set clock frequency again */
@@ -536,8 +541,6 @@ static int plt_8bit_width(struct sdhci_host *host, int width)
reg |= SDHCI_PROT_CTRL_8BIT;
else if (width == MMC_BUS_WIDTH_4)
reg |= SDHCI_PROT_CTRL_4BIT;
- else if (width == MMC_BUS_WIDTH_1)
- host->mmc->ios.ddr = 0;
writel(reg, host->ioaddr + SDHCI_HOST_CONTROL);
return 0;