public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] mx6: fsl_esdhc: Fix waiting for DMA operation completion
@ 2013-04-02 10:04 Andrew Gabbasov
  2013-04-02 15:49 ` Eric Nelson
  0 siblings, 1 reply; 19+ messages in thread
From: Andrew Gabbasov @ 2013-04-02 10:04 UTC (permalink / raw)
  To: u-boot

On iMX6 sometimes the Transfer Complete interrupt occurs earlier
than the DMA part completes its operation. If immediately after that
the read data is used for some data verification, those obtained data
may be incomplete, which causes intermittent verification failures.

For example, when the default environment command tries to load and run
boot script from FAT partition on SD/MMC card, it sometimes fails,
reporting invalid partition table, or unknown partition type, or
something else of that kind. Such errors disappear if the build
configuration has CONFIG_SYS_FSL_ESDHC_USE_PIO, or if some delay
is added after transfer completion.

Adding extra waiting for DMA completion after Transfer Complete
event fixes this issue.

Signed-off-by: Andrew Gabbasov <andrew_gabbasov@mentor.com>
---
 drivers/mmc/fsl_esdhc.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
index d2a505e..806c6dd 100644
--- a/drivers/mmc/fsl_esdhc.c
+++ b/drivers/mmc/fsl_esdhc.c
@@ -402,6 +402,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
 				return COMM_ERR;
 		} while (!(irqstat & IRQSTAT_TC) &&
 				(esdhc_read32(&regs->prsstat) & PRSSTAT_DLA));
+#ifdef CONFIG_MX6
+		/* In imx6 TC (data end) interrupt sometimes occur earlier
+		   than DMA completes. In this case just wait a little more. */ 
+		while (!(irqstat & (IRQSTAT_DINT | IRQSTAT_DMAE)))
+			irqstat = esdhc_read32(&regs->irqstat);
+#endif
 #endif
 	}
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2013-04-08  9:13 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-02 10:04 [U-Boot] [PATCH] mx6: fsl_esdhc: Fix waiting for DMA operation completion Andrew Gabbasov
2013-04-02 15:49 ` Eric Nelson
2013-04-02 18:10   ` Dirk Behme
2013-04-02 21:50     ` Eric Nelson
2013-04-03  7:33       ` Gabbasov, Andrew
2013-04-02 18:21   ` Gabbasov, Andrew
2013-04-02 21:38     ` Eric Nelson
2013-04-03  6:48       ` Gabbasov, Andrew
2013-04-03 13:38         ` Eric Nelson
2013-04-03 17:30           ` Gabbasov, Andrew
2013-04-03 23:17             ` Eric Nelson
2013-04-03 23:47               ` Eric Nelson
2013-04-04 18:03                 ` Gabbasov, Andrew
2013-04-04 18:41                   ` Eric Nelson
2013-04-05 20:18                     ` Fleming Andy-AFLEMING
2013-04-06 21:31                       ` Eric Nelson
2013-04-08  9:13                       ` Gabbasov, Andrew
2013-04-04 18:12               ` Fabio Estevam
2013-04-04 18:14                 ` Fleming Andy-AFLEMING

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox