[PATCH] mtd: nand: samsung: add datasheet minimum strength requirements for a chip

Boris Brezillon boris.brezillon at free-electrons.com
Wed Dec 6 00:24:01 PST 2017


Hi Miquel,

On Thu, 30 Nov 2017 16:10:41 +0100
Miquel Raynal <miquel.raynal at free-electrons.com> wrote:

Why not naming the chip in the subject line?

"mtd: nand: samsung: add ECC requirements for K9F4G08U0D"

> Samsung NAND chip K9F4G08U0D minimum ECC strength requirement is 1 bit
> per 512 bytes. As the chip is not ONFI nor JEDEC and because of the lack
> of these values, boards using it failed to probe the NAND controller
> driver. Fix this by adding the default values if needed.
> 
> Signed-off-by: Miquel Raynal <miquel.raynal at free-electrons.com>
> ---
>  drivers/mtd/nand/nand_samsung.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/mtd/nand/nand_samsung.c b/drivers/mtd/nand/nand_samsung.c
> index d348f0129ae7..5dc4fa4862d7 100644
> --- a/drivers/mtd/nand/nand_samsung.c
> +++ b/drivers/mtd/nand/nand_samsung.c
> @@ -91,6 +91,13 @@ 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 &&
> +		    (!chip->ecc_step_ds || !chip->ecc_strength_ds)) {

Why do you test chip->ecc_step_ds and chip->ecc_strenght_ds values? I
mean, the chip is not ONFI or JEDEC compliant, so there's no reason
these fields would have been assigned to something != 0, and if they
were, it's a bug.

> +			chip->ecc_step_ds = 512;
> +			chip->ecc_strength_ds = 1;
> +		}
>  	}
>  }
>  




More information about the linux-mtd mailing list