[PATCH v2 1/2] mtd: nand: Add a helper to retrieve the number of ECC steps
Boris Brezillon
boris.brezillon at collabora.com
Wed Jan 20 05:30:09 EST 2021
On Wed, 20 Jan 2021 11:17:49 +0100
Miquel Raynal <miquel.raynal at bootlin.com> wrote:
> This operation is very common and deserves a helper. It of course only
> works after the ECC engine initialization.
>
> Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
> ---
> include/linux/mtd/nand.h | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
> index 414f8a4d2853..27e87c02971c 100644
> --- a/include/linux/mtd/nand.h
> +++ b/include/linux/mtd/nand.h
> @@ -585,6 +585,18 @@ nanddev_get_ecc_conf(struct nand_device *nand)
> return &nand->ecc.ctx.conf;
> }
>
> +/**
> + * nanddev_get_ecc_nsteps() - Extract the actual number of ECC steps
> + * @nand: NAND device
> + */
> +static inline unsigned int
> +nanddev_get_ecc_nsteps(struct nand_device *nand)
> +{
> + const struct nand_ecc_props *conf = nanddev_get_ecc_conf(nand);
> +
> + return nanddev_page_size(nand) / conf->step_size;
Some ECC engines might cover OOB bytes too, so you can't really guess
the number of steps with a simple page_size / step_size division. I
think it's safer to store the number of steps and step_size directly in
the conf and let the engine fill those.
> +}
> +
> /**
> * nanddev_get_ecc_requirements() - Extract the ECC requirements from a NAND
> * device
More information about the linux-mtd
mailing list