Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09ec417b authored by Ladislav Michl's avatar Ladislav Michl Committed by Boris Brezillon
Browse files

mtd: nand: samsung: Disable subpage writes on E-die NAND



Samsung E-die SLC NAND manufactured using 21nm process (K9F1G08U0E)
does not support partial page programming, so disable subpage writes
for it. Manufacturing process is stored in lowest two bits of 5th ID
byte.

Signed-off-by: default avatarLadislav Michl <ladis@linux-mips.org>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
parent 6cbefbdc
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -92,10 +92,23 @@ static void samsung_nand_decode_id(struct nand_chip *chip)
	} else {
		nand_decode_ext_id(chip);

		/* Datasheet values for SLC Samsung K9F4G08U0D-S[I|C]B0(T00) */
		if (nand_is_slc(chip) && chip->id.data[1] == 0xDC) {
		if (nand_is_slc(chip)) {
			switch (chip->id.data[1]) {
			/* K9F4G08U0D-S[I|C]B0(T00) */
			case 0xDC:
				chip->ecc_step_ds = 512;
				chip->ecc_strength_ds = 1;
				break;

			/* K9F1G08U0E 21nm chips do not support subpage write */
			case 0xF1:
				if (chip->id.len > 4 &&
				    (chip->id.data[4] & GENMASK(1, 0)) == 0x1)
					chip->options |= NAND_NO_SUBPAGE_WRITE;
				break;
			default:
				break;
			}
		}
	}
}