[PATCH 9/9] mtd: nand: detect Samsung K9GBG08U0A, K9GAG08U0F ID

Marek Vasut marex at denx.de
Thu Oct 4 21:37:11 EDT 2012


Dear Brian Norris,

> Datasheets for the following Samsung NAND parts (both MLC and SLC) describe
> extensions to the Samsung 6-byte extended ID decoding table:
[...]

This breaks my board with K9F2G08 part:

[    0.860000] NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 
256MiB 3,3V 8-bit), page size: 2048, OOB size: 64


> 
> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> index 7e93d0d..bcb58ce 100644
> --- a/drivers/mtd/nand/nand_base.c
> +++ b/drivers/mtd/nand/nand_base.c
> @@ -2939,19 +2939,18 @@ 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 K9GBG08U0M (p.40)
> +	 * New style   (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.
>  	 */
> -	if (id_len == 6 && id_data[0] == NAND_MFR_SAMSUNG &&
> -			(chip->cellinfo & NAND_CI_CELLTYPE_MSK)) {
> +	if (id_len == 6 && id_data[0] == NAND_MFR_SAMSUNG) {
[...]

I believe the above hunk is wrong, reverting it fixes the problem.

Best regards,
Marek Vasut



More information about the linux-mtd mailing list