Re: [PATCH v4 14/15] mtd: nand: hynix: rework NAND ID decoding to extract more information

From: Boris Brezillon
Date: Tue Jan 03 2017 - 08:37:21 EST


On Tue, 03 Jan 2017 21:17:13 +0800
Icenowy Zheng <icenowy@xxxxxxxx> wrote:

> 03.01.2017, 21:01, "Boris Brezillon" <boris.brezillon@xxxxxxxxxxxxxxxxxx>:
> > The current NAND ID detection in nand_hynix.c is not handling the
> > different scheme used by Hynix, thus forcing developers to add new
> > entries in the nand_ids table each time they want to support a new MLC
> > NAND.
> >
> > Enhance the detection logic to handle all known formats. This does not
> > necessarily mean we are handling all the cases, but if new formats are
> > discovered, the code should evolve to take them into account instead of
> > adding more full-id entries in the nand_ids table.
> >
> > Signed-off-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx>
> > ---
> > Âdrivers/mtd/nand/nand_hynix.c | 228 ++++++++++++++++++++++++++++++++++++++----
> > Â1 file changed, 209 insertions(+), 19 deletions(-)
> >
> > diff --git a/drivers/mtd/nand/nand_hynix.c b/drivers/mtd/nand/nand_hynix.c
> > index 06c8e8b0ec68..a35ca3a593f5 100644
> > --- a/drivers/mtd/nand/nand_hynix.c
> > +++ b/drivers/mtd/nand/nand_hynix.c
> > @@ -13,21 +13,56 @@
> > ÂÂ*/
> >

[...]

> > + switch (oobsize) {
> > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂcase 0:
> > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂmtd->oobsize = 128;
> > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂbreak;
> > @@ -46,23 +81,178 @@ static void hynix_nand_decode_id(struct nand_chip *chip)
> > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂcase 5:
> > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂmtd->oobsize = 16;
> > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂbreak;
> > - default:
> > + case 6:
> > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂmtd->oobsize = 640;
> > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂbreak;
> > + default:
> > + /*
> > + * We should never reach this case, but if that
> > + * happens, this probably means Samsung decided to use
>
> Is this "Samsung" a copy-n-paste error? ;-)

Indeed, and this is not the only place where I'm wrongly mentioning
Samsung. I'll fix that.

Thanks,

Boris