summaryrefslogtreecommitdiff
path: root/drivers/mmc/host
diff options
context:
space:
mode:
authorHaibo Chen <haibo.chen@nxp.com>2017-09-04 17:26:08 +0800
committerLeonard Crestez <leonard.crestez@nxp.com>2018-08-24 12:41:33 +0300
commitf8fe40d1aa62a9a993af25765a71fb92e96c459f (patch)
treeaae01e0ba24edff0e2c309c8b1ac506ec05c46ce /drivers/mmc/host
parentd1432d1066b5caf5cfbc0ee2c2821714dba8d9aa (diff)
MLK-16363 mmc: sdhci: add 1ms delay after tuning complete
When the last ready-buffer-ready is set, then usdhc execute-tuning bit is clear, this means usdhc finish the tuning process, but at this time, sd/mmc card may still out put the tuning data, can't response to any command. So this patch add 1ms delay when usdhc finish the tuning, make sure sd/mmc card finish sending the tuning data, then sd/mmc can response the following command normally. Signed-off-by: Haibo Chen <haibo.chen@nxp.com> Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
Diffstat (limited to 'drivers/mmc/host')
-rw-r--r--drivers/mmc/host/sdhci.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 6b0967fb8dcd..c498da5b46b2 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2119,8 +2119,16 @@ static void __sdhci_execute_tuning(struct sdhci_host *host, u32 opcode)
ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2);
if (!(ctrl & SDHCI_CTRL_EXEC_TUNING)) {
- if (ctrl & SDHCI_CTRL_TUNED_CLK)
+ if (ctrl & SDHCI_CTRL_TUNED_CLK) {
+ /*
+ * need to wait some time, make sure sd/mmc fininsh
+ * send out tuning data, otherwise, the sd/mmc can't
+ * response to any command when the card still out
+ * put the tuning data.
+ */
+ mdelay(1);
return; /* Success! */
+ }
break;
}