linux/drivers/mtd/nand
Brian Norris 666b65683d mtd: brcmnand: respect ECC algorithm set by NAND subsystem
This is more obvious than guessing based on ECC strength. It allows
using NAND on devices with BCH-1 (e.g. D-Link DIR-885L).

This maintains DT backward compatibility by defaulting to Hamming if a
1-bit ECC algorithm is specified without a corresponding algorithm
selection. i.e., to use BCH-1, you must specify:

  nand-ecc-strength = <1>;
  nand-ecc-step-size = <512>;
  nand-ecc-algo = "bch";

Also adds a check to ensure we haven't allowed someone to get by with SW
ECC. If we want to support SW ECC, we need to refactor some other pieces
of this driver.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Tested-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
2016-05-05 23:55:15 +02:00
..
bcm47xxnflash mtd: nand: make use of nand_set/get_controller_data() helpers 2016-01-07 10:23:41 -08:00
brcmnand mtd: brcmnand: respect ECC algorithm set by NAND subsystem 2016-05-05 23:55:15 +02:00
gpmi-nand gpmi-nand: Handle ECC Errors in erased pages 2016-05-05 23:55:15 +02:00
ams-delta.c mtd: nand: ams-delta: set ECC algorithm explicitly 2016-04-19 22:05:31 +02:00
atmel_nand_ecc.h mtd: atmel_nand: Support 32-bit ECC strength 2016-02-12 10:27:48 -08:00
atmel_nand_nfc.h mtd: atmel_nand: Support variable RB_EDGE interrupts 2016-02-12 10:27:46 -08:00
atmel_nand.c mtd: nand: atmel: set ECC algorithm explicitly 2016-05-05 23:52:03 +02:00
au1550nd.c mtd: nand: au1550nd: set ECC algorithm explicitly 2016-05-05 23:51:53 +02:00
bf5xx_nand.c mtd: nand: bf5xx: set ECC algorithm explicitly 2016-05-05 23:52:02 +02:00
cafe_nand.c mtd: nand: cafe: switch to mtd_ooblayout_ops 2016-05-05 23:51:39 +02:00
cmx270_nand.c mtd: nand: cmx270: set ECC algorithm explicitly 2016-05-05 23:51:54 +02:00
cs553x_nand.c mtd: nand: remove useless mtd->priv = chip assignments 2015-12-18 13:21:40 -08:00
davinci_nand.c mtd: nand: davinci: set ECC algorithm explicitly 2016-05-05 23:52:02 +02:00
denali_dt.c
denali_pci.c mtd: denali_pci: switch to dev_err() 2015-08-18 17:21:37 -07:00
denali.c mtd: nand: denali: switch to mtd_ooblayout_ops 2016-05-05 23:51:40 +02:00
denali.h mtd: nand: denali: use the mtd instance embedded in struct nand_chip 2015-12-18 13:13:50 -08:00
diskonchip.c mtd: nand: diskonchip: switch to mtd_ooblayout_ops 2016-05-05 23:51:40 +02:00
docg4.c mtd: nand: docg4: switch to mtd_ooblayout_ops 2016-05-05 23:51:41 +02:00
fsl_elbc_nand.c mtd: nand: fsl_elbc: set ECC algorithm explicitly 2016-05-05 23:51:55 +02:00
fsl_ifc_nand.c mtd: nand: fsl_ifc: set ECC algorithm explicitly 2016-05-05 23:51:55 +02:00
fsl_upm.c mtd: nand: fsl_upm: set ECC algorithm explicitly 2016-05-05 23:51:54 +02:00
fsmc_nand.c mtd: mtd: drop NAND_ECC_SOFT_BCH enum value 2016-05-05 23:55:13 +02:00
gpio.c mtd: nand: gpio: set ECC algorithm explicitly 2016-04-19 22:05:31 +02:00
hisi504_nand.c mtd: nand: hisi504: rely on generic DT parsing done in nand_scan_ident() 2016-05-05 23:51:58 +02:00
jz4740_nand.c mtd: nand: jz4740: Remove unused local variable 2016-05-05 23:51:56 +02:00
jz4780_bch.c mtd: nand: jz4780: fixup, device structure assigned at probe 2016-04-19 22:04:50 +02:00
jz4780_bch.h mtd: nand: jz4780: driver for NAND devices on JZ4780 SoCs 2016-01-07 09:35:11 -08:00
jz4780_nand.c mtd: mtd: drop NAND_ECC_SOFT_BCH enum value 2016-05-05 23:55:13 +02:00
Kconfig mtd: nand: Qualcomm NAND controller driver 2016-03-10 11:02:17 -08:00
lpc32xx_mlc.c mtd: nand: lpc32xx: switch to mtd_ooblayout_ops 2016-05-05 23:51:45 +02:00
lpc32xx_slc.c mtd: nand: lpc32xx: rely on generic DT parsing done in nand_scan_ident() 2016-05-05 23:51:58 +02:00
Makefile mtd: nand: Qualcomm NAND controller driver 2016-03-10 11:02:17 -08:00
mpc5121_nfc.c mtd: nand: mpc5121_nfc: set ECC algorithm explicitly 2016-05-05 23:51:53 +02:00
mxc_nand.c mtd: mtd: drop NAND_ECC_SOFT_BCH enum value 2016-05-05 23:55:13 +02:00
nand_base.c mtd: nand: add support for "nand-ecc-algo" DT property 2016-05-05 23:55:14 +02:00
nand_bbt.c mtd: nand: remove EXPORT_SYMBOL of nand_scan_bbt() 2016-01-23 14:00:14 -08:00
nand_bch.c mtd: nand: kill the ecc->layout field 2016-05-05 23:51:50 +02:00
nand_ecc.c mtd: nand: return consistent error codes in ecc.correct() implementations 2016-01-06 18:45:46 -08:00
nand_ids.c mtd: nand: add NAND_NEED_SCRAMBLING flag to the H27UCG8T2ATR-BC definition 2016-01-22 16:36:54 -08:00
nand_timings.c
nandsim.c mtd: mtd: drop NAND_ECC_SOFT_BCH enum value 2016-05-05 23:55:13 +02:00
ndfc.c mtd: nand: make use of nand_set/get_controller_data() helpers 2016-01-07 10:23:41 -08:00
nuc900_nand.c mtd: nand: nuc900: set ECC algorithm explicitly 2016-04-19 22:05:32 +02:00
omap2.c mtd: nand: omap2: Fix high memory dma prefetch transfer 2016-05-05 23:52:01 +02:00
omap_elm.c mtd: omap_elm: print interrupt resource using %pr 2015-12-18 10:16:17 -08:00
orion_nand.c mtd: nand: orion: set ECC algorithm explicitly 2016-04-19 22:05:33 +02:00
pasemi_nand.c mtd: nand: pasemi: switch to dev_* printing functions 2016-04-19 22:05:35 +02:00
plat_nand.c mtd: nand: plat: set ECC algorithm explicitly 2016-04-19 22:05:34 +02:00
pxa3xx_nand.c mtd: nand: pxa3xx: switch to mtd_ooblayout_ops 2016-05-05 23:51:46 +02:00
qcom_nandc.c mtd: nand: qcom: switch to mtd_ooblayout_ops 2016-05-05 23:51:49 +02:00
r852.c mtd: nand: make use of nand_set/get_controller_data() helpers 2016-01-07 10:23:41 -08:00
r852.h mtd: nand: r852: use the mtd instance embedded in struct nand_chip 2015-12-18 10:54:41 -08:00
s3c2410.c mtd: nand: s3c2410: set ECC algorithm explicitly 2016-05-05 23:51:52 +02:00
sh_flctl.c mtd: nand: sh_flctl: rely on generic DT parsing done in nand_scan_ident() 2016-05-05 23:51:59 +02:00
sharpsl.c mtd: nand: sharpsl: switch to mtd_ooblayout_ops 2016-05-05 23:51:36 +02:00
sm_common.c mtd: nand: sm_common: switch to mtd_ooblayout_ops 2016-05-05 23:51:48 +02:00
sm_common.h
socrates_nand.c mtd: nand: socrates: set ECC algorithm explicitly 2016-04-19 22:05:35 +02:00
sunxi_nand.c mtd: mtd: drop NAND_ECC_SOFT_BCH enum value 2016-05-05 23:55:13 +02:00
tmio_nand.c mtd: nand: remove useless mtd->priv = chip assignments 2015-12-18 13:21:40 -08:00
txx9ndfmc.c mtd: nand: make use of nand_set/get_controller_data() helpers 2016-01-07 10:23:41 -08:00
vf610_nfc.c mtd: nand: vf610: switch to mtd_ooblayout_ops 2016-05-05 23:51:48 +02:00
xway_nand.c mtd: nand: make use of mtd_to_nand() in NAND drivers 2015-12-08 12:24:36 -08:00