|
@@ -3108,8 +3108,7 @@ static void nand_decode_ext_id(struct mtd_info *mtd, struct nand_chip *chip,
|
|
|
* ID to decide what to do.
|
|
|
*/
|
|
|
if (id_len == 6 && id_data[0] == NAND_MFR_SAMSUNG &&
|
|
|
- (chip->cellinfo & NAND_CI_CELLTYPE_MSK) &&
|
|
|
- id_data[5] != 0x00) {
|
|
|
+ !nand_is_slc(chip) && id_data[5] != 0x00) {
|
|
|
/* Calc pagesize */
|
|
|
mtd->writesize = 2048 << (extid & 0x03);
|
|
|
extid >>= 2;
|
|
@@ -3141,7 +3140,7 @@ static void nand_decode_ext_id(struct mtd_info *mtd, struct nand_chip *chip,
|
|
|
(((extid >> 1) & 0x04) | (extid & 0x03));
|
|
|
*busw = 0;
|
|
|
} else if (id_len == 6 && id_data[0] == NAND_MFR_HYNIX &&
|
|
|
- (chip->cellinfo & NAND_CI_CELLTYPE_MSK)) {
|
|
|
+ !nand_is_slc(chip)) {
|
|
|
unsigned int tmp;
|
|
|
|
|
|
/* Calc pagesize */
|
|
@@ -3204,7 +3203,7 @@ static void nand_decode_ext_id(struct mtd_info *mtd, struct nand_chip *chip,
|
|
|
* - 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) &&
|
|
|
+ nand_is_slc(chip) &&
|
|
|
(id_data[5] & 0x7) == 0x6 /* 24nm */ &&
|
|
|
!(id_data[4] & 0x80) /* !BENAND */) {
|
|
|
mtd->oobsize = 32 * mtd->writesize >> 9;
|
|
@@ -3265,11 +3264,11 @@ static void nand_decode_bbm_options(struct mtd_info *mtd,
|
|
|
* Micron devices with 2KiB pages and on SLC Samsung, Hynix, Toshiba,
|
|
|
* AMD/Spansion, and Macronix. All others scan only the first page.
|
|
|
*/
|
|
|
- if ((chip->cellinfo & NAND_CI_CELLTYPE_MSK) &&
|
|
|
+ if (!nand_is_slc(chip) &&
|
|
|
(maf_id == NAND_MFR_SAMSUNG ||
|
|
|
maf_id == NAND_MFR_HYNIX))
|
|
|
chip->bbt_options |= NAND_BBT_SCANLASTPAGE;
|
|
|
- else if ((!(chip->cellinfo & NAND_CI_CELLTYPE_MSK) &&
|
|
|
+ else if ((nand_is_slc(chip) &&
|
|
|
(maf_id == NAND_MFR_SAMSUNG ||
|
|
|
maf_id == NAND_MFR_HYNIX ||
|
|
|
maf_id == NAND_MFR_TOSHIBA ||
|
|
@@ -3745,8 +3744,7 @@ int nand_scan_tail(struct mtd_info *mtd)
|
|
|
chip->ecc.total = chip->ecc.steps * chip->ecc.bytes;
|
|
|
|
|
|
/* Allow subpage writes up to ecc.steps. Not possible for MLC flash */
|
|
|
- if (!(chip->options & NAND_NO_SUBPAGE_WRITE) &&
|
|
|
- !(chip->cellinfo & NAND_CI_CELLTYPE_MSK)) {
|
|
|
+ if (!(chip->options & NAND_NO_SUBPAGE_WRITE) && nand_is_slc(chip)) {
|
|
|
switch (chip->ecc.steps) {
|
|
|
case 2:
|
|
|
mtd->subpage_sft = 1;
|