@@ -54,6 +54,9 @@ static void mmc_prepare_data(struct mmc_host *host, struct mmc_data *data)
/* We do not handle DMA boundaries, so set it to max (512 KiB) */
writew((7 << 12) | (data->blocksize & 0xFFF), &host->reg->blksize);
writew(data->blocks, &host->reg->blkcnt);
+
+ flush_dcache_range((u32)data->dest,
+ (u32)data->dest + (data->blocks * data->blocksize));
}
static void mmc_set_transfer_mode(struct mmc_host *host, struct mmc_data *data)
@@ -237,6 +240,10 @@ static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
break;
} else if (mask & (1 << 1)) {
/* Transfer Complete */
+ invalidate_dcache_range((u32)data->dest,
+ (u32)data->dest +
+ (data->blocks *
+ data->blocksize));
debug("r/w is done\n");
break;
}