[U-Boot] [PATCH 2/2] mmc: tegra: invalidate complete cachelines
Thierry Reding
thierry.reding at avionic-design.de
Tue Apr 24 09:53:44 CEST 2012
The MMC core sometimes reads buffers that are smaller than a complete
cacheline, for example when reading the SCR. In order to avoid a warning
from the ARM v7 cache handling code, this patch makes sure that complete
cachelines are flushed.
Signed-off-by: Thierry Reding <thierry.reding at avionic-design.de>
---
drivers/mmc/tegra2_mmc.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/mmc/tegra2_mmc.c b/drivers/mmc/tegra2_mmc.c
index fb8a57d..3615876 100644
--- a/drivers/mmc/tegra2_mmc.c
+++ b/drivers/mmc/tegra2_mmc.c
@@ -323,12 +323,13 @@ static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
}
writel(mask, &host->reg->norintsts);
if (data->flags & MMC_DATA_READ) {
+ ulong end = (ulong)data->dest +
+ roundup(data->blocks * data->blocksize,
+ ARCH_DMA_MINALIGN);
if ((uintptr_t)data->dest & (ARCH_DMA_MINALIGN - 1))
printf("Warning: unaligned read from %p "
"may fail\n", data->dest);
- invalidate_dcache_range((ulong)data->dest,
- (ulong)data->dest +
- data->blocks * data->blocksize);
+ invalidate_dcache_range((ulong)data->dest, end);
}
}
--
1.7.10
More information about the U-Boot
mailing list