mtd: spi-nor: fix spansion quad enable

Linux-MTD Mailing List linux-mtd at lists.infradead.org
Fri Dec 16 11:59:13 PST 2016


Gitweb:     http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=807c16253319ee6ccf8873ae64f070f7eb532cd5
Commit:     807c16253319ee6ccf8873ae64f070f7eb532cd5
Parent:     355445b86f0f61125409e1217be4f0a8ee362116
Author:     Joël Esponde <joel.esponde at honeywell.com>
AuthorDate: Wed Nov 23 12:47:40 2016 +0100
Committer:  Cyrille Pitchen <cyrille.pitchen at atmel.com>
CommitDate: Wed Nov 23 15:29:20 2016 +0100

    mtd: spi-nor: fix spansion quad enable
    
    With the S25FL127S nor flash part, each writing to the configuration
    register takes hundreds of ms. During that  time, no more accesses to
    the flash should be done (even reads).
    
    This commit adds a wait loop after the register writing until the flash
    finishes its work.
    
    This issue could make rootfs mounting fail when the latter was done too
    much closely to this quad enable bit setting step. And in this case, a
    driver as UBIFS may try to recover the filesystem and may broke it
    completely.
    
    Signed-off-by: Joël Esponde <joel.esponde at honeywell.com>
    Signed-off-by: Cyrille Pitchen <cyrille.pitchen at atmel.com>
---
 drivers/mtd/spi-nor/spi-nor.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 4fd3ac8..cebd0cc 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -1256,6 +1256,13 @@ static int spansion_quad_enable(struct spi_nor *nor)
 		return -EINVAL;
 	}
 
+	ret = spi_nor_wait_till_ready(nor);
+	if (ret) {
+		dev_err(nor->dev,
+			"timeout while writing configuration register\n");
+		return ret;
+	}
+
 	/* read back and check it */
 	ret = read_cr(nor);
 	if (!(ret > 0 && (ret & CR_QUAD_EN_SPAN))) {



More information about the linux-mtd-cvs mailing list