From 8b61a1a33e41456ebeafa0ebe7ec0fccf859861e Mon Sep 17 00:00:00 2001 From: Nikolay Martynov Date: Wed, 25 Nov 2015 20:43:46 -0500 Subject: [PATCH] mtd: nand: Fix Spansion sparearea size detection According to datasheet S34ML02G2 and S34ML04G2 have larger sparea area size than was detected. Signed-off-by: Nikolay Martynov --- drivers/mtd/nand/nand_base.c | 9 +++++++++ 1 file changed, 9 insertions(+) --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -3568,6 +3568,7 @@ static void nand_decode_ext_id(struct mt /* * Field definitions are in the following datasheets: * Old style (4,5 byte ID): Samsung K9GAG08U0M (p.32) + * Spansion S34ML02G2 (p.33) * New Samsung (6 byte ID): Samsung K9GAG08U0F (p.44) * Hynix MLC (6 byte ID): Hynix H27UBG8T2B (p.22) * @@ -3665,6 +3666,19 @@ static void nand_decode_ext_id(struct mt *busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0; /* + * Spansion S34ML0[24]G2 have oobsize twice as large + * as S34ML01G2 encoded in the same bit. We + * differinciate them by their ID length + */ + if (id_data[0] == NAND_MFR_AMD + && (id_data[1] == 0xda + || id_data[1] == 0xdc + || id_data[1] == 0xca + || id_data[1] == 0xcc)) { + mtd->oobsize *= 2; + } + + /* * 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: