|
@@ -3081,6 +3081,22 @@ static void nand_decode_ext_id(struct mtd_info *mtd, struct nand_chip *chip,
|
|
extid >>= 2;
|
|
extid >>= 2;
|
|
/* Get buswidth information */
|
|
/* Get buswidth information */
|
|
*busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0;
|
|
*busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Toshiba 24nm raw SLC (i.e., not BENAND) have 32B OOB per
|
|
|
|
+ * 512B page. For Toshiba SLC, we decode the 5th/6th byte as
|
|
|
|
+ * follows:
|
|
|
|
+ * - ID byte 6, bits[2:0]: 100b -> 43nm, 101b -> 32nm,
|
|
|
|
+ * 110b -> 24nm
|
|
|
|
+ * - ID byte 5, bit[7]: 1 -> BENAND, 0 -> raw SLC
|
|
|
|
+ */
|
|
|
|
+ if (id_len >= 6 && id_data[0] == NAND_MFR_TOSHIBA &&
|
|
|
|
+ !(chip->cellinfo & NAND_CI_CELLTYPE_MSK) &&
|
|
|
|
+ (id_data[5] & 0x7) == 0x6 /* 24nm */ &&
|
|
|
|
+ !(id_data[4] & 0x80) /* !BENAND */) {
|
|
|
|
+ mtd->oobsize = 32 * mtd->writesize >> 9;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|