mtd: nand: Introduce the ECC engine framework
authorMiquel Raynal <miquel.raynal@bootlin.com>
Thu, 27 Aug 2020 08:51:56 +0000 (10:51 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Wed, 2 Sep 2020 07:28:15 +0000 (09:28 +0200)
commita8c7ffdb5fdde3a57c0b654f66f4d81325abe69f
tree8efed3aacb084db560bfb9e5f04f074fb7073391
parentb440915af2e41daff7ee33e1d0ec29af5c37a1bf
mtd: nand: Introduce the ECC engine framework

Create a generic ECC engine framework. This is a base to instantiate ECC
engine objects.

If we really want to be generic, bindings must evolve, so here is the
new logic. The following three properties are mutually exclusive:
- The nand-no-ecc-engine boolean property is set and there is no
  ECC engine to retrieve.
- The nand-use-soft-ecc-engine boolean property is set and the core
  will force using the use of software correction.
- There is a nand-ecc-engine property pointing at a node which will
  act as ECC engine.

It the later case, the property may reference:
- The NAND chip node itself (for the on-die ECC case).
- The parent node if the NAND controller embeds an ECC engine.
- Any other node being an external ECC controller as well.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20200827085208.16276-9-miquel.raynal@bootlin.com
drivers/mtd/nand/Kconfig
drivers/mtd/nand/Makefile
drivers/mtd/nand/ecc.c [new file with mode: 0644]
include/linux/mtd/nand.h