aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrian Hunter <adrian.hunter@nokia.com>2009-05-05 04:04:19 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2009-06-05 12:49:25 -0400
commitee8f37688966ab1438d0cf42e0cb7c6595d9592c (patch)
tree6607008d4b764c930114fc83066faa3f0de3c986
parent1e42d142e65ebdef38fb399b421d04e092ad1c6e (diff)
mtd: OneNAND: add support for OneNAND manufactured by Numonyx
In addition to adding the Numonyx manufacturer code, this patch also ensures 'sync. write' is disabled when reading identification data - something that the Numonyx chip objects to, but the Samsung chip seems to ignore. Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-rw-r--r--drivers/mtd/onenand/onenand_base.c3
-rw-r--r--include/linux/mtd/onenand.h1
2 files changed, 3 insertions, 1 deletions
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index 30d6999e5f9f..2346857a275d 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -2576,6 +2576,7 @@ static void onenand_print_device_info(int device, int version)
2576 2576
2577static const struct onenand_manufacturers onenand_manuf_ids[] = { 2577static const struct onenand_manufacturers onenand_manuf_ids[] = {
2578 {ONENAND_MFR_SAMSUNG, "Samsung"}, 2578 {ONENAND_MFR_SAMSUNG, "Samsung"},
2579 {ONENAND_MFR_NUMONYX, "Numonyx"},
2579}; 2580};
2580 2581
2581/** 2582/**
@@ -2621,7 +2622,7 @@ static int onenand_probe(struct mtd_info *mtd)
2621 /* Save system configuration 1 */ 2622 /* Save system configuration 1 */
2622 syscfg = this->read_word(this->base + ONENAND_REG_SYS_CFG1); 2623 syscfg = this->read_word(this->base + ONENAND_REG_SYS_CFG1);
2623 /* Clear Sync. Burst Read mode to read BootRAM */ 2624 /* Clear Sync. Burst Read mode to read BootRAM */
2624 this->write_word((syscfg & ~ONENAND_SYS_CFG1_SYNC_READ), this->base + ONENAND_REG_SYS_CFG1); 2625 this->write_word((syscfg & ~ONENAND_SYS_CFG1_SYNC_READ & ~ONENAND_SYS_CFG1_SYNC_WRITE), this->base + ONENAND_REG_SYS_CFG1);
2625 2626
2626 /* Send the command for reading device ID from BootRAM */ 2627 /* Send the command for reading device ID from BootRAM */
2627 this->write_word(ONENAND_CMD_READID, this->base + ONENAND_BOOTRAM); 2628 this->write_word(ONENAND_CMD_READID, this->base + ONENAND_BOOTRAM);
diff --git a/include/linux/mtd/onenand.h b/include/linux/mtd/onenand.h
index 9aa2a9149b58..0fa3ac4ad576 100644
--- a/include/linux/mtd/onenand.h
+++ b/include/linux/mtd/onenand.h
@@ -176,6 +176,7 @@ struct onenand_chip {
176 * OneNAND Flash Manufacturer ID Codes 176 * OneNAND Flash Manufacturer ID Codes
177 */ 177 */
178#define ONENAND_MFR_SAMSUNG 0xec 178#define ONENAND_MFR_SAMSUNG 0xec
179#define ONENAND_MFR_NUMONYX 0x20
179 180
180/** 181/**
181 * struct onenand_manufacturers - NAND Flash Manufacturer ID Structure 182 * struct onenand_manufacturers - NAND Flash Manufacturer ID Structure