Message ID | 20200528113113.9166-3-miquel.raynal@bootlin.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Introduce the generic ECC engine abstraction | expand |
On Thu, 28 May 2020 13:30:57 +0200 Miquel Raynal <miquel.raynal@bootlin.com> wrote: In the subject s/OOB placement/ECC placement/ > There is currently a confusion between the ECC type/mode/provider > (eg. on-host, 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@bootlin.com> > Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> > --- > drivers/mtd/nand/raw/nand_base.c | 5 +++++ > include/linux/mtd/rawnand.h | 14 ++++++++++++++ > 2 files changed, 19 insertions(+) > > diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c > index bd3f5a875e39..4d2d444f9db9 100644 > --- a/drivers/mtd/nand/raw/nand_base.c > +++ b/drivers/mtd/nand/raw/nand_base.c > @@ -5018,6 +5018,11 @@ static const char * const nand_ecc_modes[] = { > [NAND_ECC_ON_DIE] = "on-die", > }; > > +static const char * const nand_ecc_placement[] = { > + [NAND_ECC_PLACEMENT_OOB] = "oob", > + [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 65b1c1c18b41..5e014807e050 100644 > --- a/include/linux/mtd/rawnand.h > +++ b/include/linux/mtd/rawnand.h > @@ -92,6 +92,20 @@ enum nand_ecc_mode { > NAND_ECC_ON_DIE, > }; > > +/** > + * enum nand_ecc_placement - NAND ECC bytes placement > + * @NAND_ECC_PLACEMENT_UNKNOWN: The actual position of the ECC bytes is unknown > + * @NAND_ECC_PLACEMENT_OOB: The ECC bytes are located in the OOB area > + * @NAND_ECC_PLACEMENT_INTERLEAVED: Syndrome layout, there are ECC bytes > + * interleaved with regular data in the main > + * area > + */ > +enum nand_ecc_placement { > + NAND_ECC_PLACEMENT_UNKNOWN, > + NAND_ECC_PLACEMENT_OOB, > + NAND_ECC_PLACEMENT_INTERLEAVED, > +}; > + > enum nand_ecc_algo { > NAND_ECC_UNKNOWN, > NAND_ECC_HAMMING,
Boris Brezillon <boris.brezillon@collabora.com> wrote on Thu, 28 May 2020 14:08:52 +0200: > On Thu, 28 May 2020 13:30:57 +0200 > Miquel Raynal <miquel.raynal@bootlin.com> wrote: > > In the subject s/OOB placement/ECC placement/ That's a leftover. Fixed in patch 2 and 3.
diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c index bd3f5a875e39..4d2d444f9db9 100644 --- a/drivers/mtd/nand/raw/nand_base.c +++ b/drivers/mtd/nand/raw/nand_base.c @@ -5018,6 +5018,11 @@ static const char * const nand_ecc_modes[] = { [NAND_ECC_ON_DIE] = "on-die", }; +static const char * const nand_ecc_placement[] = { + [NAND_ECC_PLACEMENT_OOB] = "oob", + [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 65b1c1c18b41..5e014807e050 100644 --- a/include/linux/mtd/rawnand.h +++ b/include/linux/mtd/rawnand.h @@ -92,6 +92,20 @@ enum nand_ecc_mode { NAND_ECC_ON_DIE, }; +/** + * enum nand_ecc_placement - NAND ECC bytes placement + * @NAND_ECC_PLACEMENT_UNKNOWN: The actual position of the ECC bytes is unknown + * @NAND_ECC_PLACEMENT_OOB: The ECC bytes are located in the OOB area + * @NAND_ECC_PLACEMENT_INTERLEAVED: Syndrome layout, there are ECC bytes + * interleaved with regular data in the main + * area + */ +enum nand_ecc_placement { + NAND_ECC_PLACEMENT_UNKNOWN, + NAND_ECC_PLACEMENT_OOB, + NAND_ECC_PLACEMENT_INTERLEAVED, +}; + enum nand_ecc_algo { NAND_ECC_UNKNOWN, NAND_ECC_HAMMING,