|
@@ -2866,6 +2866,7 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
|
|
|
*/
|
|
|
if (id_data[0] == id_data[6] && id_data[1] == id_data[7] &&
|
|
|
id_data[0] == NAND_MFR_SAMSUNG &&
|
|
|
+ (chip->cellinfo & NAND_CI_CELLTYPE_MSK) &&
|
|
|
id_data[5] != 0x00) {
|
|
|
/* Calc pagesize */
|
|
|
mtd->writesize = 2048 << (extid & 0x03);
|
|
@@ -2934,14 +2935,10 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
|
|
|
chip->chip_shift = ffs((unsigned)(chip->chipsize >> 32)) + 32 - 1;
|
|
|
|
|
|
/* Set the bad block position */
|
|
|
- if (!(busw & NAND_BUSWIDTH_16) && (*maf_id == NAND_MFR_STMICRO ||
|
|
|
- (*maf_id == NAND_MFR_SAMSUNG &&
|
|
|
- mtd->writesize == 512) ||
|
|
|
- *maf_id == NAND_MFR_AMD))
|
|
|
- chip->badblockpos = NAND_SMALL_BADBLOCK_POS;
|
|
|
- else
|
|
|
+ if (mtd->writesize > 512 || (busw & NAND_BUSWIDTH_16))
|
|
|
chip->badblockpos = NAND_LARGE_BADBLOCK_POS;
|
|
|
-
|
|
|
+ else
|
|
|
+ chip->badblockpos = NAND_SMALL_BADBLOCK_POS;
|
|
|
|
|
|
/* Get chip options, preserve non chip based options */
|
|
|
chip->options &= ~NAND_CHIPOPTIONS_MSK;
|