diff options
Diffstat (limited to 'drivers/mtd/nand/nand_base.c')
| -rw-r--r-- | drivers/mtd/nand/nand_base.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index ec6841d8e95..1a03b7f673c 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -2983,13 +2983,15 @@ static void nand_decode_ext_id(struct mtd_info *mtd, struct nand_chip *chip,  	/*  	 * Field definitions are in the following datasheets:  	 * 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)  	 * -	 * 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 && +			(chip->cellinfo & NAND_CI_CELLTYPE_MSK) && +			id_data[5] != 0x00) {  		/* Calc pagesize */  		mtd->writesize = 2048 << (extid & 0x03);  		extid >>= 2;  |