From: "Brian Norris" <norris@broadcom.com>
To: "linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
David Woodhouse <dwmw2@infradead.org>,
Maxim Levitsky <maximlevitsky@gmail.com>,
Brian Norris <norris@broadcom.com>,
Artem Bityutskiy <dedekind1@gmail.com>
Subject: [PATCH] mtd/nand: Support Micron chips, 4KB page
Date: Mon, 26 Jul 2010 13:04:13 -0700 [thread overview]
Message-ID: <4C4DEA3D.5070208@broadcom.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 3957 bytes --]
The following parts exhibit some interesting patterns in their ID strings.
Their ID strings are not fully compatible with the current nand_base.c
detection algorithm. In order to detect them properly, I have taken the
liberty to develop a heuristic algorithm. None of these chips have a *good*
detection pattern listed in their datasheets, although MT29F16G08MAA has a
table on p.24 of its data sheet (not included here).
Part ID String Block Page OOB
MT29F16G08ABABA 2C 48 00 26 89 00 00 512K 4K 224
MT29F16G08CBABA 2C 48 04 46 85 00 00 1024K 4K 224
MT29F16G08MAA 2C D5 94 3E 74 00 00 512K 4K 218
I have attached a table logging most of the relevant data for the many chips
I have researched. The three chips are highlighted red, although there are
variants of the chips listed as well. I believe this patch should correctly
identify all the 5-byte ID Micron chips.
And before the question is asked: I realize that these chips support ONFI,
so that should be the primary means by which to identify them, but I would
still like to be able to detect these properly without ONFI if necessary,
especially considering some of the older NAND controllers we still use do not
support reading ONFI data.
Feedback on my logic is appreciated.
Signed-off-by: Brian Norris <norris@broadcom.com>
---
drivers/mtd/nand/nand_base.c | 34 +++++++++++++++++++++++++---------
drivers/mtd/nand/nand_ids.c | 1 +
2 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 4a7b864..1ca230d 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -2846,6 +2846,9 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
* Field definitions are in the following datasheets:
* Old style (4,5 byte ID): Samsung K9GAG08U0M (p.32)
* New style (6 byte ID): Samsung K9GAG08U0D (p.40)
+ * Micron (5 byte ID): Micron MT29F16G08MAA (p.24)
+ * Note: Micron rule is based on heuristics for
+ * newer chips
*
* Check for wraparound + Samsung ID + nonzero 6th byte
* to decide what to do.
@@ -2867,15 +2870,28 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
/* Calc pagesize */
mtd->writesize = 1024 << (extid & 0x03);
extid >>= 2;
- /* Calc oobsize */
- mtd->oobsize = (8 << (extid & 0x01)) *
- (mtd->writesize >> 9);
- extid >>= 2;
- /* Calc blocksize. Blocksize is multiples of 64KiB */
- mtd->erasesize = (64 * 1024) << (extid & 0x03);
- extid >>= 2;
- /* Get buswidth information */
- busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0;
+ /* Check for 5 byte ID + Micron + read more 0x00 */
+ if (id_data[0] == NAND_MFR_MICRON && id_data[4] != 0x00
+ && mtd->writesize >= 4096
+ && id_data[5] == 0x00
+ && id_data[6] == 0x00) {
+ mtd->oobsize = ((extid & 0x03) == 0x03) ? 218
+ : 224;
+ extid >>= 3;
+ mtd->erasesize = (256 * 1024) << (extid & 0x03);
+ /* All Micron have busw x8? */
+ busw = 0;
+ } else {
+ /* Calc oobsize */
+ mtd->oobsize = (8 << (extid & 0x01)) *
+ (mtd->writesize >> 9);
+ extid >>= 2;
+ /* Calc blocksize (multiples of 64KiB) */
+ mtd->erasesize = (64 * 1024) << (extid & 0x03);
+ extid >>= 2;
+ /* Get buswidth information */
+ busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0;
+ }
}
} else {
/*
diff --git a/drivers/mtd/nand/nand_ids.c b/drivers/mtd/nand/nand_ids.c
index 89907ed..25f6be2 100644
--- a/drivers/mtd/nand/nand_ids.c
+++ b/drivers/mtd/nand/nand_ids.c
@@ -107,6 +107,7 @@ struct nand_flash_dev nand_flash_ids[] = {
/* 16 Gigabit */
{"NAND 2GiB 1,8V 8-bit", 0xA5, 0, 2048, 0, LP_OPTIONS},
{"NAND 2GiB 3,3V 8-bit", 0xD5, 0, 2048, 0, LP_OPTIONS},
+ {"NAND 2GiB 3,3V 8-bit", 0x48, 0, 2048, 0, LP_OPTIONS},
{"NAND 2GiB 1,8V 16-bit", 0xB5, 0, 2048, 0, LP_OPTIONS16},
{"NAND 2GiB 3,3V 16-bit", 0xC5, 0, 2048, 0, LP_OPTIONS16},
--
1.7.0.4
[-- Attachment #2: NAND_Data_mail.csv --]
[-- Type: text/plain, Size: 26117 bytes --]
"Manufacturer","Part #","Man. ID","ID Code","Full ID","MB","Page","OOB","Block","Bus","ONFI","Bad Block Location","ECC Req.","Bits per cell","ID Length","Notes"
"Toshiba","TC58128AFT","0x98","0x73","0x9873",16,512,16,"16 KB","x8","N/A","All OOB bytes","?","1?",2,
"Samsung","K9F1G08U0B","0xEC","0xF1","0xECF1009540",128,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte",1,5,
"Toshiba","TC58DVM72A1TG00","0x98","0x73","0x9873",16,512,16,"16 KB","x8","N/A","All OOB bytes","?","1?",2,
"Samsung","K9F5608D0C","0xEC","0x75","0xEC75",32,512,16,"16 KB","x8","N/A","1st or 2nd page (6th byte in OOB = non FFh)","? (1-bit correct, 2-bit detect)",1,2,
"Samsung","K9F5608Q0C","0xEC","0x35","0xEC35",32,512,16,"16 KB","x8","N/A","1st or 2nd page (6th byte in OOB = non FFh)","? (1-bit correct, 2-bit detect)",1,2,
"Samsung","K9F5608U0C","0xEC","0x75","0xEC75",32,512,16,"16 KB","x8","N/A","1st or 2nd page (6th byte in OOB = non FFh)","? (1-bit correct, 2-bit detect)",1,2,
"Samsung","K9F5616D0C","0xEC","0x55","0xEC55",32,512,16,"16 KB","x16","N/A","1st or 2nd page (1st word in OOB = non FFh)","? (1-bit correct, 2-bit detect)",1,2,
"Samsung","K9F5616Q0C","0xEC","0x45","0xEC45",32,512,16,"16 KB","x16","N/A","1st or 2nd page (1st word in OOB = non FFh)","? (1-bit correct, 2-bit detect)",1,2,
"Samsung","K9F5616U0C","0xEC","0x55","0xEC55",32,512,16,"16 KB","x16","N/A","1st or 2nd page (1st word in OOB = non FFh)","? (1-bit correct, 2-bit detect)",1,2,"EDC"
"Samsung","K9F4G08U0A","0xEC","0xDC","0xECDC109554",64,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte",1,5,
"Samsung","K9K8G08U1A","0xEC","0xDC","0xECDC109554",128,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte",1,5,"Made of two K9F4G08U0As"
"Samsung","K9F4G08U0M","0xEC","0xDC","0xECDC109554",512,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte",1,5,
"Samsung","K9K8G08U1M","0xEC","0xDC","0xECDC109554",1024,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte",1,5,
"ST","NAND128W3A","0x20","0x73","0x2073",16,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND256R3A","0x20","0x35","0x2035",32,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND256W3A","0x20","0x75","0x2075",32,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND256R4A","0x0020","0x0045","0x2045",32,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND256W4A","0x0020","0x0055","0x2055",32,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND512R3A","0x20","0x36","0x2036",64,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND512W3A","0x20","0x76","0x2076",64,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND512R4A","0x0020","0x0046","0x2046",64,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND512W4A","0x0020","0x0056","0x2056",64,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND01GR3A","0x20","0x39","0x2039",128,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND01GW3A","0x20","0x79","0x2079",128,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND01GR4A","0x0020","0x0049","0x2049",128,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND01GW4A","0x0020","0x0059","0x2059",128,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,2,
"ST","NAND512R3A2C","0x20","0x36","0x2036",64,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","22-bit/2048-bits",1,2,"Similar part, different manufacturer (Numonyx NAND512-A2D); further cycles ignored"
"ST","NAND512W3A2C","0x20","0x76","0x2076",64,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","22-bit/2048-bits",1,2,"Similar part, different manufacturer (Numonyx NAND512-A2D); further cycles ignored"
"ST","NAND512R4A2C","0x0020","0x0046","0x2046",64,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,2,"Similar part, different manufacturer (Numonyx NAND512-A2D); further cycles ignored"
"ST","NAND512W4A2C","0x0020","0x0056","0x2056",64,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,2,"Similar part, different manufacturer (Numonyx NAND512-A2D); further cycles ignored"
"Numonyx","NAND512R3A2D","0x20","0x36","0x2036",64,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","1-bit/512-byte (2-bit detect)",1,2,"further cycles ignored"
"Numonyx","NAND512W3A2D","0x20","0x76","0x2076",64,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","1-bit/512-byte (2-bit detect)",1,2,"further cycles ignored"
"Numonyx","NAND512R4A2D","0x0020","0x0046","0x2046",64,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","1-bit/512-byte (2-bit detect)",1,2,"further cycles ignored"
"Numonyx","NAND512W4A2D","0x0020","0x0056","0x2056",64,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","1-bit/512-byte (2-bit detect)",1,2,"further cycles ignored"
"Numonyx","NAND01GR3A2C","0x20","0x78","0x2078",128,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","1-bit/512-byte (2-bit detect)",1,2,"further cycles ignored"
"Numonyx","NAND01GW3A2C","0x20","0x79","0x2079",128,512,16,"16 KB","x8","N/A","1st page (6th byte in OOB = non FFh)","1-bit/512-byte (2-bit detect)",1,2,"further cycles ignored"
"Numonyx","NAND01GR4A2C","0x0020","0x0072","0x2072",128,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","1-bit/512-byte (2-bit detect)",1,2,"further cycles ignored"
"Numonyx","NAND01GW4A2C","0x0020","0x0074","0x2074",128,512,16,"16 KB","x16","N/A","1st page (1st word in OOB = non FFh)","1-bit/512-byte (2-bit detect)",1,2,"further cycles ignored"
"Hynix","HY27UF081G2M","0xAD","0xF1","0xADF1XX15",128,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","?",1,4,"remains in Read ID mode"
"Hynix","HY27UF161G2M","0xAD","0xC1","0xADC1XX55",128,2048,64,"128 KB","x16","N/A","1st or 2nd page (1st byte in OOB = non FFh)","?",1,4,"remains in Read ID mode"
"Hynix","HY27SF081G2M","0xAD","0xA1","0xADA1XX15",128,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","?",1,4,"remains in Read ID mode"
"Hynix","HY27SF161G2M","0xAD","0xAD","0xADADXX55",128,2048,64,"128 KB","x16","N/A","1st or 2nd page (1st byte in OOB = non FFh)","?",1,4,"remains in Read ID mode"
"Micron","MT29F2G08AAC","0x2C","0xDA","0x2CDAXX15",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte (or 528-byte)","1?",4,"remains in Read ID mode"
"Micron","MT29F2G08ABC","0x2C","0xAA","0x2CAAXX15",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte (or 528-byte)","1?",4,"remains in Read ID mode"
"Micron","MT29F2G16AAC","0x2C","0xCA","0x2CCAXX55",256,2048,64,"128 KB","x16","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte (or 528-byte)","1?",4,"remains in Read ID mode"
"Micron","MT29F2G16ABC","0x2C","0xBA","0x2CBAXX55",256,2048,64,"128 KB","x16","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte (or 528-byte)","1?",4,"remains in Read ID mode"
"Micron","MT29F4G08BAC","0x2C","0xDC","0x2CDCXX15",512,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte (or 528-byte)","1?",4,"remains in Read ID mode"
"Micron","MT29F8G08FAC","0x2C","0xDC","0x2CDCXX15",1024,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte (or 528-byte)","1?",4,"remains in Read ID mode; made of two 4Gb sections"
"Micron","MT29F2G08AAB","0x2C","0xDA","0x2CDAXX15",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","?","1?",4,"remains in Read ID mode"
"Micron","MT29F2G16AAB","0x2C","0xCA","0x2CCAXX55",256,2048,64,"128 KB","x16","N/A","1st or 2nd page (1st byte in OOB = non FFh)","?","1?",4,"remains in Read ID mode"
"Micron","MT29F4G08BAB","0x2C","0xDC","0x2CDCXX15",512,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","?","1?",4,"remains in Read ID mode"
"Micron","MT29F4G16BAB","0x2C","0xCC","0x2CCCXX55",512,2048,64,"128 KB","x16","N/A","1st or 2nd page (1st byte in OOB = non FFh)","?","1?",4,"remains in Read ID mode"
"Micron","MT29F8G08FAB","0x2C","0xDC","0x2CDCXX15",1024,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","?","1?",4,"remains in Read ID mode"
"Samsung","K9F1208R0B","0xEC","0x36","0xEC36A5C0",64,512,16,"16 KB","x8","N/A","1st or 2nd page (6th byte in OOB = non FFh)","? (1-bit correct, 2-bit detect)",1,4,"remains in Read ID mode"
"Samsung","K9F1208B0B","0xEC","0x76","0xEC76A5C0",64,512,16,"16 KB","x8","N/A","1st or 2nd page (6th byte in OOB = non FFh)","? (1-bit correct, 2-bit detect)",1,4,"remains in Read ID mode"
"Samsung","K9F1208U0B","0xEC","0x76","0xEC76A5C0",64,512,16,"16 KB","x8","N/A","1st or 2nd page (6th byte in OOB = non FFh)","? (1-bit correct, 2-bit detect)",1,4,"remains in Read ID mode"
"Samsung","K9F2G08U0M","0xEC","0xDA","0xECDA8015",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","? (1-bit correct, 2-bit detect)",1,4,
"Samsung","K9K4G08U1M","0xEC","0xDA","0xECDA8015",512,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","? (1-bit correct, 2-bit detect)",1,4,
"Samsung","K9F2G08B0B","0xEC","0xDA","0xECDA109544",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,"only differ by voltage"
"Samsung","K9F2G08U0B","0xEC","0xDA","0xECDA109544",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,"only differ by voltage"
"Samsung","K9F2G08R0A","0xEC","0xAA","0xECAA001544",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,
"Samsung","K9F2G08U0A","0xEC","0xDA","0xECDA109544",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,
"Samsung","K9F2G08B0B","0xEC","0xDA","0xECDA109544",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,
"Samsung","K9F2G08U0B","0xEC","0xDA","0xECDA109544",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,
"Samsung","K9GAG08B0D","0xEC","0xD5","0xECD594293441",2048,4096,218,"512 KB","x8","N/A","Last page (1st byte in OOB = non FFh)","8-bit/512-byte (correction)",2,6,
"Samsung","K9GAG08U0D","0xEC","0xD5","0xECD594293441",2048,4096,218,"512 KB","x8","N/A","Last page (1st byte in OOB = non FFh)","8-bit/512-byte (correction)",2,6,
"Samsung","K9LBG08U1D","0xEC","0xD5","0xECD594293441",4096,4096,218,"512 KB","x8","N/A","Last page (1st byte in OOB = non FFh)","8-bit/512-byte (correction)",2,6,"Contains 2 K9GAG08U0D"
"Samsung","K9HCG08U5D","0xEC","0xD5","0xECD594293441",8192,4096,218,"512 KB","x8","N/A","Last page (1st byte in OOB = non FFh)","8-bit/512-byte (correction)",2,6,"Contains 4 K9GAG08U0D"
"Spansion","S30ML512P","0x01","0x76","0x0176010101",64,512,16,"512 KB","x8","N/A","1st or 2nd page (6th byte in OOB = non FFh)","1-bit/512-byte (correction)","ORNAND","6?","Each model has x8/x16 bus versions, 2%/0% bad blocks; 2% => ID byte 3 = 0x00"
"Spansion","S30ML512P","0x01","0x56","0x0156010101",64,512,16,"512 KB","x16","N/A","1st or 2nd page (1st word in OOB = non FFh)","1-bit/512-byte (correction)","ORNAND","6?","Each model has x8/x16 bus versions, 2%/0% bad blocks; 2% => ID byte 3 = 0x00"
"Spansion","S30ML256P","0x01","0x75","0x0175010101",32,512,16,"512 KB","x8","N/A","1st or 2nd page (6th byte in OOB = non FFh)","1-bit/512-byte (correction)","ORNAND","6?","Each model has x8/x16 bus versions, 2%/0% bad blocks; 2% => ID byte 3 = 0x00"
"Spansion","S30ML256P","0x01","0x55","0x0155010101",32,512,16,"512 KB","x16","N/A","1st or 2nd page (1st word in OOB = non FFh)","1-bit/512-byte (correction)","ORNAND","6?","Each model has x8/x16 bus versions, 2%/0% bad blocks; 2% => ID byte 3 = 0x00"
"Spansion","S30ML128P","0x01","0x73","0x0173010101",16,512,16,"512 KB","x8","N/A","1st or 2nd page (6th byte in OOB = non FFh)","1-bit/512-byte (correction)","ORNAND","6?","Each model has x8/x16 bus versions, 2%/0% bad blocks; 2% => ID byte 3 = 0x00"
"Spansion","S30ML128P","0x01","0x53","0x0153030101",16,512,16,"512 KB","x16","N/A","1st or 2nd page (1st word in OOB = non FFh)","1-bit/512-byte (correction)","ORNAND","6?","Each model has x8/x16 bus versions, 2%/0% bad blocks; 2% => ID byte 3 = 0x04"
"Samsung","K9K8G08U0A","0xEC","0xD3","0xECD3519558",1024,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte",1,5,"remains in Read ID mode"
"Samsung","K9WAG08U1A","0xEC","0xD3","0xECD3519558",2048,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte",1,5,"remains in Read ID mode"
"Samsung","K9NBG08U5A","0xEC","0xD3","0xECD3519558",4096,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte",1,5,"remains in Read ID mode"
"Samsung","K9F8G08B0M","0xEC","0xD3","0xECD310A664",1024,4096,128,"256 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte",1,"5?",
"Samsung","K9F8G08U0M","0xEC","0xD3","0xECD310A664",1024,4096,128,"256 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte",1,"5?",
"Samsung","K9F8G08U1M","0xEC","0xD3","0xECD310A664",2048,4096,128,"256 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/512-byte",1,"5?","contains 2 K9F8G08U0M"
"Numonyx","NAND04GR3B2D","0x20","0xAC","0x20AC101554",512,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,"embedded 1/528 bit ECC; remains in Read ID mode"
"Numonyx","NAND08GR3B4C","0x20","0xAC","0x20AC101554",1024,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,"embedded 1/528 bit ECC; remains in Read ID mode; contains two NAND04GR3B2D"
"Numonyx","NAND04GW3B2D","0x20","0xDC","0x20DC109554",512,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,"embedded 1/528 bit ECC; remains in Read ID mode"
"Numonyx","NAND08GW3B4C","0x20","0xDC","0x20DC109554",1024,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,"embedded 1/528 bit ECC; remains in Read ID mode; contains two NAND04GW3B2D"
"Numonyx","NAND04GR4B2D","0x0020","0xBC","0x20BC105554",512,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,5,"embedded 1/528 bit ECC; remains in Read ID mode"
"Numonyx","NAND04GW4B2D","0x0020","0xCC","0x20CC10D554",512,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,5,"embedded 1/528 bit ECC; remains in Read ID mode"
"Numonyx","NAND08GR3B2C","0x20","0xA3","0x20A3511558",1024,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,"embedded 1/528 bit ECC; remains in Read ID mode"
"Numonyx","NAND08GW3B2C","0x20","0xD3","0x20D3519558",1024,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,"embedded 1/528 bit ECC; remains in Read ID mode"
"Numonyx","NAND08GR4B2C","0x0020","0xB3","0x20B3515558",1024,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,5,"embedded 1/528 bit ECC; remains in Read ID mode"
"Numonyx","NAND08GW4B2C","0x0020","0xC3","0x20C351D558",1024,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,5,"embedded 1/528 bit ECC; remains in Read ID mode"
"Micron","MT29F4G08AAA","0x2C","0xDC","0x2CDC909554",512,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,
"Micron","MT29F8G08BAA","0x2C","0xD3","0x2CD3D19558",1024,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,
"Micron","MT29F8G08DAA","0x2C","0xDC","0x2CDC909554",1024,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,"contains 2 MT29F4G08AAA"
"Micron","MT29F16G08FAA","0x2C","0xD3","0x2CD3D19558",2048,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,"contains 2 MT29F8G08BAA"
"Micron","MT29F16G08MAA","0x2C","0xD5","0x2CD5943E74",2048,4096,218,"512 KB","x8",1.0,"1st page (1st byte in OOB = non FFh)","8-bit/539-byte",2,5,
"Micron","MT29F32G08QAA","0x2C","0xD5","0x2CD5943E74",4096,4096,218,"512 KB","x8",1.0,"1st page (1st byte in OOB = non FFh)","8-bit/539-byte",2,5,
"Micron","MT29F64G08TAA","0x2C","0xD7","0x2CD7D53E78",8192,4096,218,"512 KB","x8",1.0,"1st page (1st byte in OOB = non FFh)","8-bit/539-byte",2,5,
"Micron","MT29F16G08CBABA","0x2C","0x48","0x2C48044685",2048,4096,224,"1024 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","12-bit/540-byte",2,5,"returns 0x00 after first 5 read ID bytes"
"Micron","MT29F16G08CBABB","0x2C","0x48","0x2C48044685",2048,4096,224,"1024 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","12-bit/540-byte",2,5,"returns 0x00 after first 5 read ID bytes"
"Micron","MT29F8G08MAA","0x2C","0xD3","0x2CD394A564",1024,2048,64,"256 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","4-bit/528-byte",2,5,"remains in Read ID mode"
"Micron","MT29F16G08QAA","0x2C","0xD3","0x2CD394A564",2048,2048,64,"256 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","4-bit/528-byte",2,5,"remains in Read ID mode"
"Micron","MT29F32G08TAA","0x2C","0xD5","0x2CD5D5A568",4096,2048,64,"256 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","4-bit/528-byte",2,5,"remains in Read ID mode"
"ST","NAND04GR3B2D","0x20","0xAC","0x20AC101554",512,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,
"ST","NAND08GR3B4C","0x20","0xAC","0x20AC101554",1024,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,
"ST","NAND04GW3B2D","0x20","0xDC","0x20DC109554",512,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,
"ST","NAND08GW3B4C","0x20","0xDC","0x20DC109554",1024,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,
"ST","NAND04GR4B2D","0x0020","0xBC","0x20BC105554",512,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,5,
"ST","NAND04GW4B2D","0x0020","0xCC","0x20CC10D554",512,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,5,
"ST","NAND08GR3B2C","0x20","0xA3","0x20A3511558",1024,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,
"ST","NAND08GW3B2C","0x20","0xD3","0x20D3519558",1024,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,
"ST","NAND08GR4B2C","0x0020","0xB3","0x20B3515558",1024,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,5,
"ST","NAND08GW4B2C","0x0020","0xC3","0x20C351D558",1024,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,5,
"Numonyx","NAND02GR3B2D","0x20","0xAA","0x20AA101544",256,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,"remains in Read ID mode"
"Numonyx","NAND02GW3B2D","0x20","0xDA","0x20DA109544",256,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,5,"remains in Read ID mode"
"Numonyx","NAND02GR4B2D","0x0020","0xBA","0x20BA105544",256,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,5,"remains in Read ID mode"
"Numonyx","NAND02GW4B2D","0x0020","0xCA","0x20CA10D544",256,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,5,"remains in Read ID mode"
"Numonyx","NAND01GR3B2B","0x20","0xA1","0x20A18015",128,2048,64,"128 KB","x8","N/A","1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,4,
"Numonyx","NAND01GW3B2B","0x20","0xF1","0x20F1801D",128,2048,64,"128 KB","x8","N/A","1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,4,
"Numonyx","NAND01GR4B2B","0x0020","0xB1","0x20B18055",128,2048,64,"128 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,4,
"Numonyx","NAND01GW4B2B","0x0020","0xC1","0x20C1805D",128,2048,64,"128 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,4,
"Numonyx","NAND02GR3B2C","0x20","0xAA","0x20AA8015",256,2048,64,"128 KB","x8","N/A","1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,4,
"Numonyx","NAND02GW3B2C","0x20","0xDA","0x20DA801D",256,2048,64,"128 KB","x8","N/A","1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,4,
"Numonyx","NAND02GR4B2C","0x0020","0xBA","0x20BA8055",256,2048,64,"128 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,4,
"Numonyx","NAND02GW42C","0x0020","0xCA","0x20CA805D",256,2048,64,"128 KB","x16","N/A","1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,4,
"Numonyx","NAND01GR3B2B","0x20","0xA1","0x20A10015",128,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,4,
"Numonyx","NAND01GW3B2B","0x20","0xF1","0x20F1001D",128,2048,64,"128 KB","x8",1.0,"1st page (1st or 6th byte in OOB = non FFh)","22-bit/2048-bits",1,4,
"Numonyx","NAND01GR4B2B","0x20","0xB1","0x20B10055",128,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,4,
"Numonyx","NAND01GW4B2B","0x20","0xC1","0x20C1005D",128,2048,64,"128 KB","x16",1.0,"1st page (1st word in OOB = non FFh)","22-bit/2048-bits",1,4,
"Hynix","HY27UF082G2A","0xAD","0xDA","0xADDA801D00",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,
"Hynix","HY27UF162G2A","0xAD","0xCA","0xADCA805D00",256,2048,64,"128 KB","x16","N/A","1st or 2nd page (1st word in OOB = non FFh)","1-bit/528-byte",1,5,
"Hynix","HY27UF082G2A","0xAD","0xDA","0xADDA801D00",256,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,
"Hynix","HY27UF162G2A","0xAD","0xCA","0xADCA805D00",256,2048,64,"128 KB","x16","N/A","1st or 2nd page (1st word in OOB = non FFh)","1-bit/528-byte",1,5,
"Samsung","K9G8G08B0A","0xEC","0xD3","0xECD314A564",1024,2048,64,"256 KB","x8","N/A","Last page (1st byte in OOB = non FFh)","4-bit/512-byte",2,5,
"Samsung","K9G8G08U0A","0xEC","0xD3","0xECD314A564",1024,2048,64,"256 KB","x8","N/A","Last page (1st byte in OOB = non FFh)","4-bit/512-byte",2,5,
"Samsung","K9LAG08U1A","0xEC","0xD3","0xECD314A564",2048,2048,64,"256 KB","x8","N/A","Last page (1st byte in OOB = non FFh)","4-bit/512-byte",2,5,
"Samsung","K9LBG08U0D","0xEC","0xD7","0xECD7D5293841",4096,4096,218,"512 KB","x8","N/A","Last page (1st byte in OOB = non FFh)","8-bit/512-byte (correction)",2,6,
"Samsung","K9HCG08U1D","0xEC","0xD7","0xECD7D5293841",8192,4096,218,"512 KB","x8","N/A","Last page (1st byte in OOB = non FFh)","8-bit/512-byte (correction)",2,6,
"Samsung","K9XDG08U5D","0xEC","0xD7","0xECD7D5293841",16384,4096,218,"512 KB","x8","N/A","Last page (1st byte in OOB = non FFh)","8-bit/512-byte (correction)",2,6,
"Numonyx","NAND08GW3F2B","0x20","0xD3","0x20D390152441",1024,2048,64,"128 KB","x8","N/A","1st page (1st or 6th byte in OOB = non FFh)","1-bit/512-byte",1,6,
"Samsung","K9K8G08U0B","0xEC","0xDC","0xECDC519558",1024,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,
"Samsung","K9WAG08U1B","0xEC","0xDC","0xECDC519558",2048,2048,64,"128 KB","x8","N/A","1st or 2nd page (1st byte in OOB = non FFh)","1-bit/528-byte",1,5,
"Micron","MT29F16G08ABABA","0x2C","0x48","0x2C48002689",2048,4096,224,"512 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","4-bit/540-byte",1,5,"Read ID produces 00h after byte 5"
"Micron","MT29F16G08ABCBB","0x2C","0x48","0x2C48002689",2048,4096,224,"512 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","4-bit/540-byte",1,5,"Read ID produces 00h after byte 5"
"Micron","MT29F32G08AFABA","0x2C","0x48","0x2C48002689",4096,4096,224,"512 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","4-bit/540-byte",1,5,"Read ID produces 00h after byte 5"
"Micron","MT29F32G08AECBB","0x2C","0x48","0x2C48002689",4096,4096,224,"512 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","4-bit/540-byte",1,5,"Read ID produces 00h after byte 5"
"Micron","MT29F64G08AJABA","0x2C","0x68","0x2C6801A689",8192,4096,224,"512 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","4-bit/540-byte",1,5,"Read ID produces 00h after byte 5"
"Micron","MT29F64G08AKABA","0x2C","0x68","0x2C6801A689",8192,4096,224,"512 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","4-bit/540-byte",1,5,"Read ID produces 00h after byte 5"
"Micron","MT29F64G08AKCBB","0x2C","0x68","0x2C6801A689",8192,4096,224,"512 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","4-bit/540-byte",1,5,"Read ID produces 00h after byte 5"
"Micron","MT29F64G08AMABA","0x2C","0x48","0x2C48002689",8192,4096,224,"512 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","4-bit/540-byte",1,5,"Read ID produces 00h after byte 5"
"Micron","MT29F64G08AMCBB","0x2C","0x48","0x2C48002689",8192,4096,224,"512 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","4-bit/540-byte",1,5,"Read ID produces 00h after byte 5"
"Micron","MT29F128G08AUABA","0x2C","0x68","0x2C6801A689",16384,4096,224,"512 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","4-bit/540-byte",1,5,"Read ID produces 00h after byte 5"
"Micron","MT29F128G08AUCBB","0x2C","0x68","0x2C6801A689",16384,4096,224,"512 KB","x8",2.1,"1st page (1st byte in OOB = non FFh)","4-bit/540-byte",1,5,"Read ID produces 00h after byte 5"
[-- Attachment #3: NAND_Data_mail.ods --]
[-- Type: application/vnd.oasis.opendocument.spreadsheet, Size: 24482 bytes --]
next reply other threads:[~2010-07-26 20:04 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-26 20:04 Brian Norris [this message]
2010-07-27 19:42 ` [PATCH v2] mtd/nand: Support Micron chips, pagesize >= 4KB Brian Norris
2010-07-28 8:36 ` Matthieu CASTET
2010-07-29 23:28 ` Brian Norris
2010-08-22 8:14 ` Artem Bityutskiy
2010-08-22 8:20 ` Artem Bityutskiy
2010-08-22 22:20 ` Kevin Cernekee
2010-08-23 8:22 ` Matthieu CASTET
2010-08-23 21:48 ` Kevin Cernekee
2010-08-24 6:10 ` Artem Bityutskiy
2010-08-26 0:43 ` Kevin Cernekee
2010-08-30 12:32 ` Artem Bityutskiy
2010-08-05 4:31 ` [PATCH] mtd/nand: Support Micron chips, 4KB page Artem Bityutskiy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C4DEA3D.5070208@broadcom.com \
--to=norris@broadcom.com \
--cc=dedekind1@gmail.com \
--cc=dwmw2@infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=maximlevitsky@gmail.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).