|
@@ -2983,13 +2983,14 @@ static void nand_decode_ext_id(struct mtd_info *mtd, struct nand_chip *chip,
|
|
/*
|
|
/*
|
|
* Field definitions are in the following datasheets:
|
|
* Field definitions are in the following datasheets:
|
|
* Old style (4,5 byte ID): Samsung K9GAG08U0M (p.32)
|
|
* Old style (4,5 byte ID): Samsung K9GAG08U0M (p.32)
|
|
- * New style (6 byte ID): Samsung K9GAG08U0F (p.44)
|
|
|
|
|
|
+ * New Samsung (6 byte ID): Samsung K9GAG08U0F (p.44)
|
|
* Hynix MLC (6 byte ID): Hynix H27UBG8T2B (p.22)
|
|
* Hynix MLC (6 byte ID): Hynix H27UBG8T2B (p.22)
|
|
*
|
|
*
|
|
- * Check for ID length, cell type, and Hynix/Samsung ID to decide what
|
|
|
|
- * to do.
|
|
|
|
|
|
+ * Check for ID length, non-zero 6th byte, cell type, and Hynix/Samsung
|
|
|
|
+ * ID to decide what to do.
|
|
*/
|
|
*/
|
|
- if (id_len == 6 && id_data[0] == NAND_MFR_SAMSUNG) {
|
|
|
|
|
|
+ if (id_len == 6 && id_data[0] == NAND_MFR_SAMSUNG &&
|
|
|
|
+ id_data[5] != 0x00) {
|
|
/* Calc pagesize */
|
|
/* Calc pagesize */
|
|
mtd->writesize = 2048 << (extid & 0x03);
|
|
mtd->writesize = 2048 << (extid & 0x03);
|
|
extid >>= 2;
|
|
extid >>= 2;
|