From: Peng Fan Date: Tue, 21 Jul 2015 08:15:21 +0000 (+0800) Subject: mtd: nand: mxs invalidate dcache before DMA read X-Git-Tag: v2015.10-rc3~93^2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=ecfb8768b16ebf6781ee0df45742674bda8a9543;p=u-boot mtd: nand: mxs invalidate dcache before DMA read Follow linux dma flow: Before DMA read, be sure to invalidate the cache over the address range of DMA buffer to prevent cache coherency problems. After DMA read, invalidate dcache again. Signed-off-by: Peng Fan Acked-by: Marek Vasut Acked-by: Tim Harvey --- diff --git a/drivers/mtd/nand/mxs_nand.c b/drivers/mtd/nand/mxs_nand.c index 33ce8174dc..1d689015a5 100644 --- a/drivers/mtd/nand/mxs_nand.c +++ b/drivers/mtd/nand/mxs_nand.c @@ -462,6 +462,9 @@ static void mxs_nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int length) mxs_dma_desc_append(channel, d); + /* Invalidate caches */ + mxs_nand_inval_data_buf(nand_info); + /* Execute the DMA chain. */ ret = mxs_dma_go(channel); if (ret) { @@ -628,6 +631,9 @@ static int mxs_nand_ecc_read_page(struct mtd_info *mtd, struct nand_chip *nand, mxs_dma_desc_append(channel, d); + /* Invalidate caches */ + mxs_nand_inval_data_buf(nand_info); + /* Execute the DMA chain. */ ret = mxs_dma_go(channel); if (ret) {