mtd: nand: fix Samsung SLC detection regression
This patch fixes errors seen in identifying old Samsung SLC, due to the following commits: commite2d3a35ee4
mtd: nand: detect Samsung K9GBG08U0A, K9GAG08U0F ID commite3b88bd604
mtd: nand: add generic READ ID length calculation functions Some Samsung NAND with "5-byte" ID really appear to have 6-byte IDs, with wraparound like: Samsung K9K8G08U0D ec d3 51 95 58 ec ec d3 Samsung K9F1G08U0C ec f1 00 95 40 ec ec f1 Samsung K9F2G08U0B ec da 10 95 44 00 ec da This bad wraparound makes it hard to reliably detect the difference between Samsung SLC with 5-byte ID and Samsung SLC with 6-byte ID. The fix is to, for now, only use the new Samsung table for MLC. We cannot support the new SLC (K9FAG08U0M) until Samsung gives better ID decode information. Note that this applies in addition to the previous regression fix: commitbc86cf7af2
mtd: nand: fix Samsung SLC NAND identification regression Together, these patches completely restore the previous detection behavior so that we cannot see any more regressions in Samsung SLC NAND (finger crossed). With luck, I can get a hold of a Samsung representative and stop having to cross my fingers eventually. Reported-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> Tested-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> Signed-off-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
This commit is contained in:
parent
af451af4e0
commit
6924d99fcd
|
@ -2990,6 +2990,7 @@ static void nand_decode_ext_id(struct mtd_info *mtd, struct nand_chip *chip,
|
||||||
* ID to decide what to do.
|
* 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) {
|
id_data[5] != 0x00) {
|
||||||
/* Calc pagesize */
|
/* Calc pagesize */
|
||||||
mtd->writesize = 2048 << (extid & 0x03);
|
mtd->writesize = 2048 << (extid & 0x03);
|
||||||
|
|
Loading…
Reference in a new issue