summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Nelson <eric.nelson@boundarydevices.com>2013-04-03 12:31:56 +0000
committerStefano Babic <sbabic@denx.de>2013-04-14 11:20:53 +0200
commit54899fc8fe7b33cbe1a7179e39d24e75ababcdc6 (patch)
treea1de0ed88b4a381f5ea6247455254eec0c7eb330
parent0f1411bc8dade4472ca802f46f75714e67301bb0 (diff)
downloadu-boot-imx-54899fc8fe7b33cbe1a7179e39d24e75ababcdc6.zip
u-boot-imx-54899fc8fe7b33cbe1a7179e39d24e75ababcdc6.tar.gz
u-boot-imx-54899fc8fe7b33cbe1a7179e39d24e75ababcdc6.tar.bz2
fsl_esdhc: flush cache after IO completion
The cache should invalidate the read buffer for the SD card interface after the transfer complete, not command-complete. Tested-by: Andrew Gabbasov <Andrew_Gabbasov@mentor.com> Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
-rw-r--r--drivers/mmc/fsl_esdhc.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
index 35f879e..737b812 100644
--- a/drivers/mmc/fsl_esdhc.c
+++ b/drivers/mmc/fsl_esdhc.c
@@ -327,9 +327,6 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
while (!(esdhc_read32(&regs->irqstat) & (IRQSTAT_CC | IRQSTAT_CTOE)))
;
- if (data && (data->flags & MMC_DATA_READ))
- check_and_invalidate_dcache_range(cmd, data);
-
irqstat = esdhc_read32(&regs->irqstat);
esdhc_write32(&regs->irqstat, irqstat);
@@ -403,6 +400,8 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
} while (!(irqstat & IRQSTAT_TC) &&
(esdhc_read32(&regs->prsstat) & PRSSTAT_DLA));
#endif
+ if (data->flags & MMC_DATA_READ)
+ check_and_invalidate_dcache_range(cmd, data);
}
esdhc_write32(&regs->irqstat, -1);