u-boot/drivers/mtd/nand
Masahiro Yamada 470c29d1c2 mtd: nand: add generic helpers to check, match, maximize ECC settings
Driver are responsible for setting up ECC parameters correctly.
Those include:
  - Check if ECC parameters specified (usually by DT) are valid
  - Meet the chip's ECC requirement
  - Maximize ECC strength if NAND_ECC_MAXIMIZE flag is set

The logic can be generalized by factoring out common code.

This commit adds 3 helpers to the NAND framework:
nand_check_ecc_caps - Check if preset step_size and strength are valid
nand_match_ecc_req - Match the chip's requirement
nand_maximize_ecc - Maximize the ECC strength

To use the helpers above, a driver needs to provide:
  - Data array of supported ECC step size and strength
  - A hook that calculates ECC bytes from the combination of
    step_size and strength.

By using those helpers, code duplication among drivers will be
reduced.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>

[Linux commit: 2c8f8afa7f92acb07641bf95b940d384ed1d0294]
2017-11-29 00:28:59 +09:00
..
am335x_spl_bch.c mtd: nand: Consolidate nand spl loaders implementation 2017-05-08 11:57:26 -04:00
arasan_nfc.c nand: arasan_nfc: Clear ecc on bit while sending read command 2016-11-15 15:27:57 +01:00
atmel_nand.c mtd: replace MTDDEBUG() with pr_debug() 2017-10-23 14:07:26 -04:00
atmel_nand_ecc.h atmel_nand_ecc: update pmecc registers according to sama5d2 chip 2016-02-02 11:49:10 +01:00
davinci_nand.c mtd: nand: Drop the ->errstat() hook 2017-11-29 00:28:58 +09:00
denali.c mtd: nand: denali: allow to override corrupted revision register 2017-09-18 20:26:00 +09:00
denali.h mtd: nand: denali_dt: add clock support 2017-10-15 22:32:25 +09:00
denali_dt.c mtd: nand: denali_dt: add clock support 2017-10-15 22:32:25 +09:00
denali_spl.c mtd: nand: Sync with Linux v4.6 2016-06-03 20:27:48 -05:00
fsl_elbc_nand.c treewide: replace #include <asm/errno.h> with <linux/errno.h> 2016-09-23 17:55:42 -04:00
fsl_elbc_spl.c Coding Style cleanup: replace leading SPACEs by TABs 2013-10-14 16:06:54 -04:00
fsl_ifc_nand.c mtd: nand: fsl-ifc: fix support of multiple NAND devices 2017-11-14 08:33:20 -08:00
fsl_ifc_spl.c powerpc/mpc85xx: SECURE BOOT- Enable chain of trust in SPL 2016-07-21 11:09:23 -07:00
fsl_upm.c treewide: replace #include <asm/errno.h> with <linux/errno.h> 2016-09-23 17:55:42 -04:00
fsmc_nand.c mtd: nand: drv: use get_nand_dev_by_index() 2017-07-11 22:41:49 -04:00
kb9202_nand.c mtd: nand: Add+use mtd_to/from_nand and nand_get/set_controller_data 2016-06-03 20:27:48 -05:00
Kconfig omap2: nand: Make NAND_OMAP_GPMC_PREFETCH default 2017-11-17 07:44:13 -05:00
kirkwood_nand.c mtd: nand: Add+use mtd_to/from_nand and nand_get/set_controller_data 2016-06-03 20:27:48 -05:00
kmeter1_nand.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
lpc32xx_nand_mlc.c treewide: replace with error() with pr_err() 2017-10-04 11:59:44 -04:00
lpc32xx_nand_slc.c treewide: replace #include <asm/errno.h> with <linux/errno.h> 2016-09-23 17:55:42 -04:00
Makefile mtd: nand: denali_dt: add a DT driver 2017-08-30 09:03:11 +09:00
mxc_nand.c mtd: replace MTDDEBUG() with pr_debug() 2017-10-23 14:07:26 -04:00
mxc_nand.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
mxc_nand_spl.c mtd: nand: Sync with Linux v4.6 2016-06-03 20:27:48 -05:00
mxs_nand.c imx: reorganize IMX code as other SOCs 2017-07-12 10:17:44 +02:00
mxs_nand_spl.c mtd: nand: mxs_nand_spl: Fix to remove twise 'NAND' print 2017-01-04 16:56:44 +01:00
nand.c mtd: nand: make nand_info array static 2017-07-11 22:41:54 -04:00
nand_base.c mtd: nand: add generic helpers to check, match, maximize ECC settings 2017-11-29 00:28:59 +09:00
nand_bbt.c mtd: nand: Sync with Linux v4.6 2016-06-03 20:27:48 -05:00
nand_bch.c mtd: replace MTDDEBUG() with pr_debug() 2017-10-23 14:07:26 -04:00
nand_ecc.c treewide: replace #include <asm/errno.h> with <linux/errno.h> 2016-09-23 17:55:42 -04:00
nand_ids.c mtd: nand: add support for the TC58NVG2S0H chip 2016-11-28 15:10:30 -05:00
nand_plat.c mtd: nand: Add+use mtd_to/from_nand and nand_get/set_controller_data 2016-06-03 20:27:48 -05:00
nand_spl_load.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
nand_spl_loaders.c mtd: nand: Consolidate nand spl loaders implementation 2017-05-08 11:57:26 -04:00
nand_spl_simple.c mtd: nand: Consolidate nand spl loaders implementation 2017-05-08 11:57:26 -04:00
nand_timings.c mtd: nand: Add a few more timings to nand_sdr_timings 2017-11-29 00:28:58 +09:00
nand_util.c treewide: replace #include <asm/errno.h> with <linux/errno.h> 2016-09-23 17:55:42 -04:00
ndfc.c mtd: nand: Sync with Linux v4.6 2016-06-03 20:27:48 -05:00
omap_elm.c treewide: replace #include <asm/errno.h> with <linux/errno.h> 2016-09-23 17:55:42 -04:00
omap_gpmc.c cmd: nand: abstract global variable usage for dm conversion 2017-07-11 22:41:44 -04:00
pxa3xx_nand.c treewide: replace with error() with pr_err() 2017-10-04 11:59:44 -04:00
pxa3xx_nand.h mtd: nand: Add mvebu (PXA / AXP / A38x) NAND device driver 2015-08-25 22:53:58 -05:00
sunxi_nand.c dm: gpio: Add live tree support 2017-06-01 07:03:10 -06:00
sunxi_nand_spl.c nand: sunxi: Fix modulo by zero error 2017-04-07 11:23:45 +05:30
tegra_nand.c dm: gpio: Add live tree support 2017-06-01 07:03:10 -06:00
tegra_nand.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
vf610_nfc.c mtd: nand: Sync with Linux v4.6 2016-06-03 20:27:48 -05:00
zynq_nand.c mtd: nand: drv: use get_nand_dev_by_index() 2017-07-11 22:41:49 -04:00