Already 3 series have been sent on this topic but as they grow over time, I decide to split it arbitrary and take only the preparation patches that are here. The actual ECC machinery will be contributed later when this preparation series will be merged. Cheers, Miquèl Changes in v4 ============= * Rebased on top of a recent kernel version. * Added Boris' reviewed-by. * Added Maxime's Acked-by tag. * Added the missing of_device.h header to ecc.c. * Corrected a 'minimum' comparison by using min_t. * Updated the new Macronix raw NAND controller driver by using the new (ECC related) function names. * Fixed a function call in ndfc.c. * Update brcmnand.c file to fit new enumerations and structures (due to recent Kamal's changes). * Force sm_ftl to depends on the Hamming engine, because by just selecting it the ECC code would be embedded in the NAND core and the NAND core might not be compiled in with sm_ftl. * Fixed a structure field name that I previously added in davinci platform data. * Moved the oob_first placement scheme to Davinci driver. Removed any occurence of it out of the driver (unused). * Simplify structure names as proposed by Boris. * Change enumeration/string names about ECC engine providers/placements. * Change the logic in the of_get_nand_ecc_* helpers to ensure backward compatibility. * Use enums intead of unsigned integers in the core when referring to ECC engine type, placement and algorithm. * Add nand-ecc-placement DT property. * Deprecate hw_syndrome. * Deprecate nand-ecc-mode in favor of nand-ecc-provider. Miquel Raynal (21): mtd: Fix typo in mtd_ooblayout_set_databytes() description mtd: rawnand: Avoid a typedef mtd: rawnand: Drop OOB_FIRST placement scheme dt-bindings: mtd: Deprecate OOB_FIRST mode mtd: rawnand: Return an enum from of_get_nand_ecc_algo() mtd: rawnand: Add an invalid ECC mode to discriminate with valid ones mtd: rawnand: Create a new enumeration to describe OOB placement mtd: rawnand: Separate the ECC engine type and the OOB placement mtd: rawnand: Create a new enumeration to describe properly ECC types mtd: rawnand: Create a helper to retrieve the ECC placement mtd: rawnand: Use the new ECC engine type enumeration mtd: rawnand: Deprecate nand-ecc-mode in favor of nand-ecc-provider mtd: rawnand: Drop the legacy ECC type enumeration dt-bindings: mtd: Add the nand-ecc-placement property dt-bindings: mtd: Deprecate hw_syndrome from the ECC modes dt-bindings: mtd: Deprecate the nand-ecc-mode property mtd: nand: Move nand_device forward declaration to the top mtd: nand: Add an extra level in the Kconfig hierarchy mtd: nand: Drop useless 'depends on' in Kconfig mtd: nand: Add a NAND page I/O request type mtd: nand: Rename a core structure .../devicetree/bindings/mtd/atmel-nand.txt | 3 +- .../bindings/mtd/nand-controller.yaml | 27 +- arch/arm/mach-davinci/board-da830-evm.c | 2 +- arch/arm/mach-davinci/board-da850-evm.c | 2 +- arch/arm/mach-davinci/board-dm355-evm.c | 2 +- arch/arm/mach-davinci/board-dm355-leopard.c | 3 +- arch/arm/mach-davinci/board-dm365-evm.c | 2 +- arch/arm/mach-davinci/board-dm644x-evm.c | 2 +- arch/arm/mach-davinci/board-dm646x-evm.c | 2 +- arch/arm/mach-davinci/board-mityomapl138.c | 2 +- arch/arm/mach-davinci/board-neuros-osd2.c | 2 +- arch/arm/mach-davinci/board-omapl138-hawk.c | 2 +- arch/arm/mach-s3c24xx/common-smdk.c | 2 +- arch/arm/mach-s3c24xx/mach-anubis.c | 2 +- arch/arm/mach-s3c24xx/mach-at2440evb.c | 2 +- arch/arm/mach-s3c24xx/mach-bast.c | 2 +- arch/arm/mach-s3c24xx/mach-gta02.c | 2 +- arch/arm/mach-s3c24xx/mach-jive.c | 2 +- arch/arm/mach-s3c24xx/mach-mini2440.c | 2 +- arch/arm/mach-s3c24xx/mach-osiris.c | 2 +- arch/arm/mach-s3c24xx/mach-qt2410.c | 2 +- arch/arm/mach-s3c24xx/mach-rx1950.c | 2 +- arch/arm/mach-s3c24xx/mach-rx3715.c | 2 +- arch/arm/mach-s3c24xx/mach-vstms.c | 2 +- arch/arm/mach-s3c64xx/mach-hmt.c | 2 +- arch/arm/mach-s3c64xx/mach-mini6410.c | 2 +- arch/arm/mach-s3c64xx/mach-real6410.c | 2 +- drivers/mtd/mtdcore.c | 2 +- drivers/mtd/nand/Kconfig | 5 + drivers/mtd/nand/onenand/Kconfig | 1 - drivers/mtd/nand/raw/Kconfig | 1 - drivers/mtd/nand/raw/ams-delta.c | 2 +- drivers/mtd/nand/raw/atmel/nand-controller.c | 14 +- drivers/mtd/nand/raw/au1550nd.c | 2 +- .../mtd/nand/raw/bcm47xxnflash/ops_bcm4706.c | 3 +- drivers/mtd/nand/raw/brcmnand/brcmnand.c | 8 +- .../mtd/nand/raw/cadence-nand-controller.c | 4 +- drivers/mtd/nand/raw/cafe_nand.c | 3 +- drivers/mtd/nand/raw/cmx270_nand.c | 2 +- drivers/mtd/nand/raw/cs553x_nand.c | 2 +- drivers/mtd/nand/raw/davinci_nand.c | 153 +++++--- drivers/mtd/nand/raw/denali.c | 3 +- drivers/mtd/nand/raw/diskonchip.c | 3 +- drivers/mtd/nand/raw/fsl_elbc_nand.c | 18 +- drivers/mtd/nand/raw/fsl_ifc_nand.c | 10 +- drivers/mtd/nand/raw/fsl_upm.c | 2 +- drivers/mtd/nand/raw/fsmc_nand.c | 12 +- drivers/mtd/nand/raw/gpio.c | 2 +- drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 2 +- drivers/mtd/nand/raw/hisi504_nand.c | 6 +- .../mtd/nand/raw/ingenic/ingenic_nand_drv.c | 14 +- drivers/mtd/nand/raw/lpc32xx_mlc.c | 2 +- drivers/mtd/nand/raw/lpc32xx_slc.c | 3 +- drivers/mtd/nand/raw/marvell_nand.c | 17 +- drivers/mtd/nand/raw/meson_nand.c | 2 +- drivers/mtd/nand/raw/mpc5121_nfc.c | 2 +- drivers/mtd/nand/raw/mtk_nand.c | 6 +- drivers/mtd/nand/raw/mxc_nand.c | 23 +- drivers/mtd/nand/raw/nand_base.c | 330 ++++++++---------- drivers/mtd/nand/raw/nand_micron.c | 4 +- drivers/mtd/nand/raw/nand_toshiba.c | 3 +- drivers/mtd/nand/raw/nandsim.c | 4 +- drivers/mtd/nand/raw/ndfc.c | 2 +- drivers/mtd/nand/raw/omap2.c | 20 +- drivers/mtd/nand/raw/orion_nand.c | 2 +- drivers/mtd/nand/raw/pasemi_nand.c | 2 +- drivers/mtd/nand/raw/plat_nand.c | 2 +- drivers/mtd/nand/raw/qcom_nandc.c | 2 +- drivers/mtd/nand/raw/r852.c | 3 +- drivers/mtd/nand/raw/s3c2410.c | 16 +- drivers/mtd/nand/raw/sh_flctl.c | 4 +- drivers/mtd/nand/raw/sharpsl.c | 2 +- drivers/mtd/nand/raw/socrates_nand.c | 3 +- drivers/mtd/nand/raw/stm32_fmc2_nand.c | 9 +- drivers/mtd/nand/raw/sunxi_nand.c | 18 +- drivers/mtd/nand/raw/tango_nand.c | 2 +- drivers/mtd/nand/raw/tegra_nand.c | 2 +- drivers/mtd/nand/raw/tmio_nand.c | 2 +- drivers/mtd/nand/raw/txx9ndfmc.c | 2 +- drivers/mtd/nand/raw/vf610_nfc.c | 4 +- drivers/mtd/nand/raw/xway_nand.c | 2 +- drivers/mtd/nand/spi/core.c | 4 +- include/linux/mtd/nand.h | 30 +- include/linux/mtd/rawnand.h | 46 ++- include/linux/mtd/spinand.h | 2 +- include/linux/platform_data/mtd-davinci.h | 9 +- .../linux/platform_data/mtd-nand-s3c2410.h | 2 +- 87 files changed, 521 insertions(+), 422 deletions(-) -- 2.20.1 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/