mtd: rawnand: fsmc: Take instruction delay into account
authorHerve Codina <herve.codina@bootlin.com>
Fri, 19 Nov 2021 15:03:15 +0000 (16:03 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 3 Dec 2021 13:33:45 +0000 (14:33 +0100)
The FSMC NAND controller should apply a delay after the
instruction has been issued on the bus.
The FSMC NAND controller driver did not handle this delay.

Add this waiting delay in the FSMC NAND controller driver.

Fixes: 4da712e70294 ("mtd: nand: fsmc: use ->exec_op()")
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20211119150316.43080-4-herve.codina@bootlin.com
drivers/mtd/nand/raw/fsmc_nand.c

index 658f0cbe7ce8ca3b545c28cba577258ed54f4e52..0a6c9ef0ea8bf1d16bf5a9dd4e22ec760d4253bf 100644 (file)
@@ -15,6 +15,7 @@
 
 #include <linux/clk.h>
 #include <linux/completion.h>
+#include <linux/delay.h>
 #include <linux/dmaengine.h>
 #include <linux/dma-direction.h>
 #include <linux/dma-mapping.h>
@@ -664,6 +665,9 @@ static int fsmc_exec_op(struct nand_chip *chip, const struct nand_operation *op,
                                                instr->ctx.waitrdy.timeout_ms);
                        break;
                }
+
+               if (instr->delay_ns)
+                       ndelay(instr->delay_ns);
        }
 
        return ret;