From 3fb7bf029a0d9946442a4cfcb0a4eb26764dcf72 Mon Sep 17 00:00:00 2001 From: Jason Zhu Date: Wed, 1 Jul 2020 16:34:02 +0800 Subject: [PATCH] mtd: mtd_blk: implement mtd_dread_prepare() Prepare to read data, then data is transmitted in background. Signed-off-by: Jason Zhu Change-Id: Iab560f7f903549a0b6c27f7e8e2ac984ae2ac75c Signed-off-by: Jon Lin --- drivers/mtd/mtd_blk.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/mtd/mtd_blk.c b/drivers/mtd/mtd_blk.c index f8df54b737..9274f6d96a 100644 --- a/drivers/mtd/mtd_blk.c +++ b/drivers/mtd/mtd_blk.c @@ -12,7 +12,9 @@ #include #include #include +#include #include +#include #define MTD_PART_NAND_HEAD "mtdparts=" #define MTD_ROOT_PART_NUM "ubi.mtd=" @@ -398,9 +400,16 @@ ulong mtd_dread(struct udevice *udev, lbaint_t start, return 0; } else if (desc->devnum == BLK_MTD_SPI_NOR) { #if defined(CONFIG_SPI_FLASH_MTD) || defined(CONFIG_SPL_BUILD) + struct spi_nor *nor = (struct spi_nor *)mtd->priv; + struct spi_slave *spi = nor->spi; size_t retlen_nor; + if (desc->op_flag == BLK_PRE_RW) + spi->mode |= SPI_DMA_PREPARE; mtd_read(mtd, off, rwsize, &retlen_nor, dst); + if (desc->op_flag == BLK_PRE_RW) + spi->mode |= SPI_DMA_PREPARE; + if (retlen_nor == rwsize) return blkcnt; else