The GPMI nand driver suffers from very poor performance. The read performance can be roughly doubled with two steps: First is to use runtime PM for controlling the clocks which prevents the driver from spending a good amount of time en/disabling the clocks. The second step is to implement exec_op which allows us to combine the steps necessary to do a page read into a single DMA transaction. I would prefer to let this go through the mtd tree with the ack of the dmaengine maintainers changes since v1: - tested and fixed on i.MX28 - remove debugging leftover - Add mxs dma specific header files to put the oddities of the mxs dma driver in - Turn off BCH engine interrupts when not needed as they result in calling complete() on an uninitialized completion. This crashes on i.MX28 -----------------------------8<-------------------------------- Sascha Hauer (14): mtd: rawnand: export nand operation tracer mtd: rawnand: fsmc: Use nand_op_trace for operation tracing mtd: rawnand: gpmi: move all driver code into single file mtd: rawnand: gpmi: remove unused variable mtd: rawnand: gpmi: Remove unnecessary variables mtd: rawnand: gpmi: read buf in nand_read_page_op mtd: rawnand: gpmi: remove unused parameters mtd: rawnand: gpmi: Drop unnecessary restoring of previous chipselection mtd: rawnand: gpmi: use runtime PM to manage clocks dma: mxs: Drop unnecessary flag mtd: rawnand: gpmi: drop unnecessary flag dma: mxs: Add header file to be shared with gpmi nand driver dma: mxs: rename custom flag mtd: rawnand: gpmi: Implement exec_op drivers/dma/mxs-dma.c | 25 +- drivers/mtd/nand/raw/fsmc_nand.c | 19 +- drivers/mtd/nand/raw/gpmi-nand/Makefile | 1 - drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c | 936 ----------- drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 1687 ++++++++++++++------ drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.h | 64 +- drivers/mtd/nand/raw/nand_base.c | 30 +- include/linux/dma/mxs-dma.h | 24 + include/linux/mtd/rawnand.h | 37 + 9 files changed, 1264 insertions(+), 1559 deletions(-) delete mode 100644 drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c create mode 100644 include/linux/dma/mxs-dma.h -- 2.20.1 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/