mtd: rawnand: Make sure we wait tWB before polling the STATUS reg
Linux-MTD Mailing List
linux-mtd at lists.infradead.org
Wed May 9 23:59:01 PDT 2018
Gitweb: http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=3057fcef385348fe85173f1b0c824d89f1176f72
Commit: 3057fcef385348fe85173f1b0c824d89f1176f72
Parent: a2ee41fd953e7c3ff6c55a3038c80354d191a318
Author: Boris Brezillon <boris.brezillon at bootlin.com>
AuthorDate: Fri May 4 21:24:31 2018 +0200
Committer: Boris Brezillon <boris.brezillon at bootlin.com>
CommitDate: Thu May 10 08:40:39 2018 +0200
mtd: rawnand: Make sure we wait tWB before polling the STATUS reg
NAND chips require a bit of time to take the NAND operation into
account and set the BUSY bit in the STATUS reg. Make sure we don't poll
the STATUS reg too early in nand_soft_waitrdy().
Fixes: 8878b126df76 ("mtd: nand: add ->exec_op() implementation")
Cc: <stable at vger.kernel.org>
Signed-off-by: Boris Brezillon <boris.brezillon at bootlin.com>
Acked-by: Miquel Raynal <miquel.raynal at bootlin.com>
---
drivers/mtd/nand/raw/nand_base.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c
index 72f3a89da513..f28c3a555861 100644
--- a/drivers/mtd/nand/raw/nand_base.c
+++ b/drivers/mtd/nand/raw/nand_base.c
@@ -706,12 +706,17 @@ static void nand_wait_status_ready(struct mtd_info *mtd, unsigned long timeo)
*/
int nand_soft_waitrdy(struct nand_chip *chip, unsigned long timeout_ms)
{
+ const struct nand_sdr_timings *timings;
u8 status = 0;
int ret;
if (!chip->exec_op)
return -ENOTSUPP;
+ /* Wait tWB before polling the STATUS reg. */
+ timings = nand_get_sdr_timings(&chip->data_interface);
+ ndelay(PSEC_TO_NSEC(timings->tWB_max));
+
ret = nand_status_op(chip, NULL);
if (ret)
return ret;
More information about the linux-mtd-cvs
mailing list