diff options
author | Adrian Hunter <adrian.hunter@nokia.com> | 2009-05-05 04:04:19 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2009-06-05 12:49:25 -0400 |
commit | ee8f37688966ab1438d0cf42e0cb7c6595d9592c (patch) | |
tree | 6607008d4b764c930114fc83066faa3f0de3c986 | |
parent | 1e42d142e65ebdef38fb399b421d04e092ad1c6e (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.c | 3 | ||||
-rw-r--r-- | include/linux/mtd/onenand.h | 1 |
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 | ||
2577 | static const struct onenand_manufacturers onenand_manuf_ids[] = { | 2577 | static 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 |