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. + * Default behavior is to put them at the end of the + * OOB area. + * @NAND_ECC_PLACEMENT_INTERLEAVED: Syndrome layout: interleave data and OOB. + */ +enum nand_ecc_placement { + NAND_ECC_PLACEMENT_FREE, + NAND_ECC_PLACEMENT_INTERLEAVED, +}; + enum nand_ecc_algo { NAND_ECC_UNKNOWN, NAND_ECC_HAMMING, -- 2.20.1