Android report data timeout issue on the Micron eMMC of i.mx8mscale
evk board. Before using CMD25 to write multi block data, driver will
use CMD6 to flush cache. But some CMD25 will get both data timeout
interrupt and transfer complete interrupt. If add delay after busy
check, and before sending CMD13, this issue gone.
We meet similar issue on Sandisk eMMC before, and already have a
commit
581925fe325a ("MLK-11685-1 mmc: add delay after CMD6 befoer
sending CMD13 for sandisk"), but when cherry-pick to 4.9 branch,
meet conflicts, put the delay in the wrong place. So meet the similar
issue again.
This patch fix this, move the dealy in the right place, right before
CMD13.
Reviewed-by: Dong Aisheng <Aisheng.dong@nxp.com>
Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
if (!use_busy_signal)
goto out;
- /*
- * WORKAROUND: for Sandisk eMMC cards, it might need certain delay
- * before sending CMD13 after CMD6
- */
- mdelay(1);
-
/*If SPI or used HW busy detection above, then we don't need to poll. */
if (((host->caps & MMC_CAP_WAIT_WHILE_BUSY) && use_r1b_resp) ||
mmc_host_is_spi(host))
if (timing)
mmc_set_timing(host, timing);
+ /*
+ * WORKAROUND: for Sandisk eMMC cards, it might need certain delay
+ * before sending CMD13 after CMD6
+ */
+ mdelay(1);
+
if (send_status) {
err = mmc_switch_status(card);
if (err && timing)