summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorDong Aisheng <b29396@freescale.com>2012-03-28 15:58:48 +0800
committerDong Aisheng <b29396@freescale.com>2012-03-29 11:24:47 +0800
commit5b38424cbea86532d23b33ea6f27cea7353ffdf4 (patch)
tree2e4f4e3b2332d274e4c78633a2bd99171e4362a7 /drivers/mmc
parent45f8aab793e42597aee532dcdd78dea669b66abd (diff)
ENGR00178290-2 mmc: sdhci: introduce QUIRK_BROKEN_AUTO_CMD23 for mx6
We observed a few commands timeout when using auto cmd23. The root cause is still unkonwn. This patch is a workaround to not use auto cmd23 temporarily. Signed-off-by: Dong Aisheng <b29396@freescale.com>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/sdhci-esdhc-imx.c3
-rwxr-xr-xdrivers/mmc/host/sdhci.c1
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index a65d6204a7e8..74c2eb063f1f 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -701,6 +701,9 @@ static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pd
host->quirks |= SDHCI_QUIRK_NO_MULTIBLOCK
| SDHCI_QUIRK_BROKEN_ADMA;
+ if (cpu_is_mx6())
+ host->quirks2 |= SDHCI_QUIRK_BROKEN_AUTO_CMD23,
+
/* write_protect can't be routed to controller, use gpio */
sdhci_esdhc_ops.get_ro = esdhc_pltfm_get_ro;
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 82afe0522ecc..9df0b7de403e 100755
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2656,6 +2656,7 @@ int sdhci_add_host(struct sdhci_host *host)
/* Auto-CMD23 stuff only works in ADMA or PIO. */
if ((host->version >= SDHCI_SPEC_300) &&
+ !(host->quirks2 & SDHCI_QUIRK_BROKEN_AUTO_CMD23) &&
((host->flags & SDHCI_USE_ADMA) ||
!(host->flags & SDHCI_USE_SDMA))) {
host->flags |= SDHCI_AUTO_CMD23;