[MTD] [NAND] nand_base.c: reset chip first

Linux-MTD Mailing List linux-mtd at lists.infradead.org
Tue Sep 16 11:59:02 EDT 2008


Gitweb:     http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=ef89a8801321e0d0665c327c9d77d602ef764c87
Commit:     ef89a8801321e0d0665c327c9d77d602ef764c87
Parent:     8afbc114542a6810b0a2e658abda6e911121cd22
Author:     Karl Beldan <karl.beldan at gmail.com>
AuthorDate: Mon Sep 15 14:37:29 2008 +0200
Committer:  David Woodhouse <David.Woodhouse at intel.com>
CommitDate: Tue Sep 16 08:18:12 2008 -0700

    [MTD] [NAND] nand_base.c: reset chip first
    
    Some chips require a RESET after power-up (e.g. Micron MT29FxGxxxxx).
    The first command sent is NAND_CMD_READID.
    Issue a NAND_CMD_RESET in nand_scan_ident before reading the device id.
    Tested with an MT29F4G08AAC.
    
    Signed-off-by: Karl Beldan <karl.beldan at gmail.com>
    Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
---
 drivers/mtd/nand/nand_base.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index d303db3..0a9c9cd 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -2318,6 +2318,12 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
 	/* Select the device */
 	chip->select_chip(mtd, 0);
 
+	/*
+	 * Reset the chip, required by some chips (e.g. Micron MT29FxGxxxxx)
+	 * after power-up
+	 */
+	chip->cmdfunc(mtd, NAND_CMD_RESET, -1, -1);
+
 	/* Send the command for reading device ID */
 	chip->cmdfunc(mtd, NAND_CMD_READID, 0x00, -1);
 
@@ -2488,6 +2494,8 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips)
 	/* Check for a chip array */
 	for (i = 1; i < maxchips; i++) {
 		chip->select_chip(mtd, i);
+		/* See comment in nand_get_flash_type for reset */
+		chip->cmdfunc(mtd, NAND_CMD_RESET, -1, -1);
 		/* Send the command for reading device ID */
 		chip->cmdfunc(mtd, NAND_CMD_READID, 0x00, -1);
 		/* Read manufacturer and device IDs */



More information about the linux-mtd-cvs mailing list