[PATCH v2 0/5] mtd: nand: add support for on-die ECC
Boris Brezillon
boris.brezillon at free-electrons.com
Mon May 15 12:36:35 PDT 2017
On Sat, 29 Apr 2017 11:06:41 +0200
Thomas Petazzoni <thomas.petazzoni at free-electrons.com> wrote:
> Hello,
>
> This patch series adds support for on-die ECC, i.e ECC performed by
> the NAND chip itself, as opposed to having the ECC calculated by the
> NAND controller or in software.
>
> It is useful in situations where the NAND chip has an ECC requirement
> that is not met by the ECC capabilities of the NAND controller.
>
> Patch 1 adjusts the NAND generic DT binding to add "on-die" as an
> nand-ecc-mode.
>
> Patch 2 adds the core support for on-die ECC, which is really simple
> and minimal: all the work is really done in the vendor-specific NAND
> code.
>
> Patch 3 and 4 adds the on-die ECC implementation for Micron NANDs.
>
> Patch 5 allows the FSMC NAND driver to use on-die ECC.
>
> This series was tested on a SPEAr600 platform, with a Micron
> MT29F1G08ABADAWP NAND. The mtd_nandbiterrs.ko test is passing
> successfully, which shows that the on-die ECC is correcting bitflips
> as expected.
>
> This series is based on the current nand-next branch, as it depends on
> the rework from Boris of the vendor-specific NAND code.
>
> Many thanks to Boris from providing lots of useful feedback and
> discussion during the development of this patch series.
Applied to nand/next.
Thanks,
Boris
>
> Changes since v1:
>
> - Rebased on the latest nand/next branch.
>
> - Reworked the mechanism to detect if the Micron NAND suppors on-die
> ECC. We realized that the READ_ID command only indicates if on-die
> ECC is currently enabled or not, not whether it is supported by the
> NAND. After discussion with Bean Huo from Micron we came up with a
> logic to determine if the NAND has on-die ECC support, which PATCH
> 4/5 implements.
>
> Note that we intentionally only support cases that we could
> test. Therefore, we error out if the NAND has an on-die ECC that
> cannot be disabled, and we error out if the NAND uses a 8 bits per
> 512 bytes on-die ECC, since it requires a slightly different
> handling than the 4 bits per 512 bytes on-die ECC our NAND is
> using.
>
> - Added Acked-by from Rob Herring on PATCH 1/5 (DT binding)
>
> - Added Acked-by from Richard Weinberger on all patches, except PATCH
> 4/5 since it was significantly changed.
>
> Best regards,
>
> Thomas
>
>
> Thomas Petazzoni (5):
> dt-bindings: mtd: document new "on-die" nand-ecc-mode
> mtd: nand: add core support for on-die ECC
> mtd: nand: export nand_{read,write}_page_raw()
> mtd: nand: add support for Micron on-die ECC
> mtd: nand: fsmc_nand: handle on-die ECC case
>
> Documentation/devicetree/bindings/mtd/nand.txt | 2 +-
> drivers/mtd/nand/fsmc_nand.c | 3 +
> drivers/mtd/nand/nand_base.c | 23 ++-
> drivers/mtd/nand/nand_micron.c | 215 +++++++++++++++++++++++++
> include/linux/mtd/nand.h | 11 ++
> 5 files changed, 249 insertions(+), 5 deletions(-)
>
More information about the linux-mtd
mailing list