[MTD] make dataflash write-verify be optional

Linux-MTD Mailing List linux-mtd at lists.infradead.org
Thu Aug 7 06:59:01 EDT 2008


Gitweb:     http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=8c64038e4c077b2b37c6b27d0c40c77a3ddfaeef
Commit:     8c64038e4c077b2b37c6b27d0c40c77a3ddfaeef
Parent:     cf93ae02600e2c752bf2570085e7970a1c0f2b94
Author:     David Brownell <dbrownell at users.sourceforge.net>
AuthorDate: Wed Aug 6 21:55:14 2008 -0700
Committer:  David Woodhouse <David.Woodhouse at intel.com>
CommitDate: Thu Aug 7 11:49:00 2008 +0100

    [MTD] make dataflash write-verify be optional
    
    This adds a WRITE_VERIFY Kconfig option to the DataFlash driver,
    closely mirroring the similar NAND and ONENAND options, giving
    an option to disable some code that's currently always enabled.
    
    Removing this step probably saves a millisecond or so per page
    when writing data, which will add up quickly since these pages
    are small (the largest is 1 KiB).  It doesn't seem to add a
    lot in terms of reliability, and wouldn't detect errors which
    crop up when transferring data to the on-chip SRAM buffer.
    
    Signed-off-by: David Brownell <dbrownell at users.sourceforge.net>
    Acked-by: Haavard Skinnemoen <haavard.skinnemoen at atmel.com>
    Acked-by: Andrew Victor <linux at maxim.org.za>
    Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
---
 drivers/mtd/devices/Kconfig         |   10 ++++++++++
 drivers/mtd/devices/mtd_dataflash.c |    8 +++-----
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/mtd/devices/Kconfig b/drivers/mtd/devices/Kconfig
index 88f4df0..6fde0a2 100644
--- a/drivers/mtd/devices/Kconfig
+++ b/drivers/mtd/devices/Kconfig
@@ -59,6 +59,16 @@ config MTD_DATAFLASH
 	  Sometimes DataFlash chips are packaged inside MMC-format
 	  cards; at this writing, the MMC stack won't handle those.
 
+config MTD_DATAFLASH_WRITE_VERIFY
+	bool "Verify DataFlash page writes"
+	depends on MTD_DATAFLASH
+	help
+	  This adds an extra check when data is written to the flash.
+	  It may help if you are verifying chip setup (timings etc) on
+	  your board.  There is a rare possibility that even though the
+	  device thinks the write was successful, a bit could have been
+	  flipped accidentally due to device wear or something else.
+
 config MTD_DATAFLASH_OTP
 	bool "DataFlash OTP support (Security Register)"
 	depends on MTD_DATAFLASH
diff --git a/drivers/mtd/devices/mtd_dataflash.c b/drivers/mtd/devices/mtd_dataflash.c
index 9016127..6dd9aff 100644
--- a/drivers/mtd/devices/mtd_dataflash.c
+++ b/drivers/mtd/devices/mtd_dataflash.c
@@ -30,12 +30,10 @@
  * doesn't (yet) use these for any kind of i/o overlap or prefetching.
  *
  * Sometimes DataFlash is packaged in MMC-format cards, although the
- * MMC stack can't use SPI (yet), or distinguish between MMC and DataFlash
+ * MMC stack can't (yet?) distinguish between MMC and DataFlash
  * protocols during enumeration.
  */
 
-#define CONFIG_DATAFLASH_WRITE_VERIFY
-
 /* reads can bypass the buffers */
 #define OP_READ_CONTINUOUS	0xE8
 #define OP_READ_PAGE		0xD2
@@ -403,7 +401,7 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
 		(void) dataflash_waitready(priv->spi);
 
 
-#ifdef	CONFIG_DATAFLASH_WRITE_VERIFY
+#ifdef CONFIG_MTD_DATAFLASH_VERIFY_WRITE
 
 		/* (3) Compare to Buffer1 */
 		addr = pageaddr << priv->page_offset;
@@ -432,7 +430,7 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
 		} else
 			status = 0;
 
-#endif	/* CONFIG_DATAFLASH_WRITE_VERIFY */
+#endif	/* CONFIG_MTD_DATAFLASH_VERIFY_WRITE */
 
 		remaining = remaining - writelen;
 		pageaddr++;



More information about the linux-mtd-cvs mailing list