On Wed, 27 May 2020 10:00:50 +0200 Miquel Raynal <miquel.raynal@xxxxxxxxxxx> wrote: > Hi Boris, > > Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> wrote on Wed, 27 May > 2020 00:39:04 +0200: > > > On Tue, 26 May 2020 21:56:19 +0200 > > Miquel Raynal <miquel.raynal@xxxxxxxxxxx> wrote: > > > > > There is currently a confusion between the ECC type/mode/provider > > > (eg. hardware, software, on-die or none) and the ECC bytes placement. > > > > > > Create a new enumeration to describe this placement. > > > > > > Signed-off-by: Miquel Raynal <miquel.raynal@xxxxxxxxxxx> > > > Reviewed-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> > > > --- > > > drivers/mtd/nand/raw/nand_base.c | 4 ++++ > > > include/linux/mtd/rawnand.h | 12 ++++++++++++ > > > 2 files changed, 16 insertions(+) > > > > > > diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c > > > index ef70ca0828c3..a4470a19c805 100644 > > > --- a/drivers/mtd/nand/raw/nand_base.c > > > +++ b/drivers/mtd/nand/raw/nand_base.c > > > @@ -5018,6 +5018,10 @@ static const char * const nand_ecc_modes[] = { > > > [NAND_ECC_ON_DIE] = "on-die", > > > }; > > > > > > +static const char * const nand_ecc_placement[] = { > > > + [NAND_ECC_PLACEMENT_INTERLEAVED] = "interleaved", > > > +}; > > > + > > > static int of_get_nand_ecc_mode(struct device_node *np) > > > { > > > const char *pm; > > > diff --git a/include/linux/mtd/rawnand.h b/include/linux/mtd/rawnand.h > > > index 8187056dd3a0..6eb4d91b07eb 100644 > > > --- a/include/linux/mtd/rawnand.h > > > +++ b/include/linux/mtd/rawnand.h > > > @@ -92,6 +92,18 @@ enum nand_ecc_mode { > > > NAND_ECC_ON_DIE, > > > }; > > > > > > +/** > > > + * enum nand_ecc_placement - NAND ECC placement > > > + * @NAND_ECC_PLACEMENT_FREE: The driver can decide where to put ECC bytes. > > > > Can we name that one UNDEFINED instead of FREE, and it's not really the > > driver that decides (unless you have a choice or use SW ECC), more the ECC > > engine itself. > > Ack. > > > > > > + * Default behavior is to put them at the end of the > > > + * OOB area. > > > > I wouldn't even define a default behavior here, but instead add a value for > > OOB/TAIL placement. > > This is for legacy reasons, maybe I should not say it is a default, but > rather a common location (or say nothing). I wouldn't even mention what the most common pattern is. But I think defining @NAND_ECC_PLACEMENT_OOB is a good thing. > > > > > > + * @NAND_ECC_PLACEMENT_INTERLEAVED: Syndrome layout: interleave data and OOB. > > > > > > ^ECC bytes > > > > > + */ > > > +enum nand_ecc_placement { > > > + NAND_ECC_PLACEMENT_FREE, > > > + NAND_ECC_PLACEMENT_INTERLEAVED, > > > +}; > > > + > > > enum nand_ecc_algo { > > > NAND_ECC_UNKNOWN, > > > NAND_ECC_HAMMING, > > ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/