[PATCH v2 0/5] mtd: nand: add support for on-die ECC
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Sat Apr 29 02:06:41 PDT 2017
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.
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(-)
--
2.7.4
More information about the linux-mtd
mailing list