Hi Richard, This is the NAND PR for 5.8. I just updated it this morning to fix an issue reported by a build robot in a !COMPILE_TEST driver due to some recent cleanup. Thanks, Miquèl The following changes since commit 6a8b55ed4056ea5559ebe4f6a4b247f627870d4c: Linux 5.7-rc3 (2020-04-26 13:51:02 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git tags/nand/for-5.8 for you to fetch changes up to 86f2b225adf4ecd2edfdc8541a7342645556ac3b: mtd: rawnand: Add an invalid ECC mode to discriminate with valid ones (2020-05-31 10:53:41 +0200) ---------------------------------------------------------------- Raw NAND core changes: * Stop using nand_release(), patched all drivers. * Give more information about the ECC weakness when not matching the chip's requirement. * MAINTAINERS updates. * Support emulated SLC mode on MLC NANDs. * Support "constrained" controllers, adapt the core and ONFI/JEDEC table parsing and Micron's code. * Take check_only into account. * Add an invalid ECC mode to discriminate with valid ones. * Return an enum from of_get_nand_ecc_algo(). * Drop OOB_FIRST placement scheme. * Introduce nand_extract_bits(). * Ensure a consistent bitflips numbering. * BCH lib: - Allow easy bit swapping. - Rework a little bit the exported function names. * Fix nand_gpio_waitrdy(). * Propage CS selection to sub operations. * Add a NAND_NO_BBM_QUIRK flag. * Give the possibility to verify a read operation is supported. * Add a helper to check supported operations. * Avoid indirect access to ->data_buf(). * Rename the use_bufpoi variables. * Fix comments about the use of bufpoi. * Rename a NAND chip option. * Reorder the nand_chip->options flags. * Translate obscure bitfields into readable macros. * Timings: - Fix default values. - Add mode information to the timings structure. Raw NAND controller driver changes: * Fixed many error paths. * Arasan - New driver * Au1550nd: - Various cleanups - Migration to ->exec_op() * brcmnand: - Misc cleanup. - Support v2.1-v2.2 controllers. - Remove unused including <linux/version.h>. - Correctly verify erased pages. - Fix Hamming OOB layout. * Cadence - Make cadence_nand_attach_chip static. * Cafe: - Set the NAND_NO_BBM_QUIRK flag * cmx270: - Remove this controller driver. * cs553x: - Misc cleanup - Migration to ->exec_op() * Davinci: - Misc cleanup. - Migration to ->exec_op() * Denali: - Add more delays before latching incoming data * Diskonchip: - Misc cleanup - Migration to ->exec_op() * Fsmc: - Change to non-atomic bit operations. * GPMI: - Use nand_extract_bits() - Fix runtime PM imbalance. * Ingenic: - Migration to exec_op() - Fix the RB gpio active-high property on qi, lb60 - Make qi_lb60_ooblayout_ops static. * Marvell: - Misc cleanup and small fixes * Nandsim: - Fix the error paths, driver wide. * Omap_elm: - Fix runtime PM imbalance. * STM32_FMC2: - Misc cleanups (error cases, comments, timeout valus, cosmetic changes). ---------------------------------------------------------------- Boris Brezillon (34): mtd: rawnand: Take check_only into account mtd: rawnand: au1550nd: Stop using IO_ADDR_{R, W} in au_{read, write}_buf[16]() mtd: rawnand: au1550nd: Implement exec_op() mtd: rawnand: au1550nd: Get rid of the legacy interface implementation mtd: rawnand: au1550nd: Patch the read/write buf helper prototypes mtd: rawnand: cs553x: Declare controllers instead of NAND chips mtd: rawnand: cs553x: Stop using chip->legacy.IO_ADDR_{R, W} mtd: rawnand: cs553x: Implement exec_op() mtd: rawnand: cs553x: Get rid of the legacy interface implementation mtd: rawnand: toshiba: Add a specific init for TC58TEG5DCLTA00 mtd: rawnand: Define the "distance 3" MLC pairing scheme mtd: rawnand: toshiba: Set the pairing scheme for TC58TEG5DCLTA00 mtd: Add support for emulated SLC mode on MLC NANDs dt-bindings: mtd: partition: Document the slc-mode property mtd: partitions: ofpart: Parse the slc-mode property mtd: cmdlinepart: Add an slc option to use SLC mode on a part ubi: Relax the 'no MLC' rule and allow MLCs operating in SLC mode mtd: rawnand: Add a NAND_NO_BBM_QUIRK flag mtd: rawnand: cafe: Set the NAND_NO_BBM_QUIRK flag mtd: rawnand: diskonchip: Set the NAND_NO_BBM_QUIRK flag mtd: rawnand: diskonchip: Make sure doc2001plus_readbuf() works for single byte reads mtd: rawnand: diskonchip: Get rid of doc2000_readbuf_dword() mtd: rawnand: diskonchip: Inherit from nand_controller mtd: rawnand: diskonchip: Implement exec_op() mtd: rawnand: diskonchip: Get rid of the legacy interface implementation mtd: rawnand: Propage CS selection to sub operations mtd: rawnand: davinci: Inherit from nand_controller mtd: rawnand: davinci: Stop using nand_chip.legacy.IO_ADDR_{R, W} mtd: rawnand: davinci: Implement exec_op() mtd: rawnand: davinci: Get rid of the legacy interface implementation mtd: rawnand: Fix nand_gpio_waitrdy() mtd: rawnand: Remove the cmx270 NAND controller driver mtd: rawnand: ingenic: Fix the RB gpio active-high property on qi, lb60 mtd: rawnand: ingenic: Convert the driver to exec_op() Christophe Kerello (5): mtd: rawnand: stm32_fmc2: manage all errors cases at probe time mtd: rawnand: stm32_fmc2: remove useless inline comments mtd: rawnand: stm32_fmc2: use FMC2_TIMEOUT_MS for timeouts mtd: rawnand: stm32_fmc2: cosmetic change to use nfc instead of fmc2 where relevant mtd: rawnand: stm32_fmc2: use FIELD_PREP/FIELD_GET macros Dinghao Liu (3): mtd: rawnand: gpmi: Fix runtime PM imbalance on error mtd: rawnand: gpmi: Fix runtime PM imbalance in gpmi_nand_probe mtd: rawnand: omap_elm: Fix runtime PM imbalance on error Fenghua Yu (1): mtd: rawnand: fsmc: Change to non-atomic bit operations Masahiro Yamada (1): mtd: rawnand: denali: add more delays before latching incoming data Miquel Raynal (124): mtd: rawnand: Give more information about the ECC weakness mtd: rawnand: marvell: Fix the condition on a return code mtd: rawnand: marvell: Use devm_platform_ioremap_res() mtd: rawnand: marvell: Use nand_cleanup() when the device is not yet registered mtd: rawnand: marvell: Fix probe error path mtd: rawnand: marvell: Rename a function to clarify mtd: rawnand: marvell: Rename the ->correct() function mtd: rawnand: timings: Add mode information to the timings structure mtd: rawnand: timings: Fix default tR_max and tCCS_min timings mtd: rawnand: onfi: Fix redundancy detection check mtd: rawnand: onfi: Use intermediate variables to improve readability mtd: rawnand: onfi: Define the number of parameter pages mtd: rawnand: onfi: Avoid doing a copy of the parameter page mtd: rawnand: onfi: Drop a useless parameter page read mtd: rawnand: jedec: Define the number of parameter pages mtd: rawnand: jedec: Use intermediate variables to improve readability mtd: rawnand: Translate obscure bitfields into readable macros mtd: rawnand: Reorder the nand_chip->options flags mtd: rawnand: Rename a NAND chip option mtd: rawnand: Fix comments about the use of bufpoi mtd: rawnand: Rename the use_bufpoi variables mtd: rawnand: Avoid indirect access to ->data_buf() mtd: rawnand: Add a helper to check supported operations mtd: rawnand: Give the possibility to verify a read operation is supported mtd: rawnand: onfi: Adapt the parameter page read to constraint controllers mtd: rawnand: jedec: Adapt the parameter page read to constraint controllers mtd: rawnand: Expose monolithic read/write_page_raw() helpers mtd: rawnand: Allow controllers to overload soft ECC hooks mtd: rawnand: micron: Allow controllers to overload raw accessors MAINTAINERS: Remove Piotr Sroka and mark Cadence NFC as orphaned MAINTAINERS: Remove Xiaolei Li and mark MTK NFC as orphaned mtd: rawnand: micron: Adapt the PAGE READ flow to constraint controllers lib/bch: Rework a little bit the exported function names lib/bch: Allow easy bit swapping mtd: rawnand: Ensure the number of bitflips is consistent mtd: rawnand: Add nand_extract_bits() MAINTAINERS: Add Arasan NAND controller and bindings dt-bindings: mtd: Document ARASAN NAND bindings mtd: rawnand: arasan: Add new Arasan NAND controller mtd: rawnand: arasan: Support the hardware BCH ECC engine mtd: rawnand: ams-delta: Stop using nand_release() mtd: rawnand: au1550nd: Stop using nand_release() mtd: rawnand: bcm47xx: Stop using nand_release() mtd: rawnand: brcmnand: Stop using nand_release() mtd: rawnand: cadence: Stop using nand_release() mtd: rawnand: cafe: Stop using nand_release() mtd: rawnand: cs553x: Stop using nand_release() mtd: rawnand: davinci: Stop using nand_release() mtd: rawnand: denali: Delete items from the list in the _remove() path mtd: rawnand: denali: Stop using nand_release() mtd: rawnand: diskonchip: Fix the probe error path mtd: rawnand: diskonchip: Stop using nand_release() mtd: rawnand: fsl_elbc: Stop using nand_release() mtd: rawnand: fsl_ifc: Stop using nand_release() mtd: rawnand: fsl_upm: Stop using nand_release() mtd: rawnand: fsmc: Stop using nand_release() mtd: rawnand: gpio: Stop using nand_release() mtd: rawnand: gpmi: Stop using nand_release() mtd: rawnand: hisi504: Stop using nand_release() mtd: rawnand: ingenic: Fix the probe error path mtd: rawnand: ingenic: Stop using nand_release() mtd: rawnand: lpc32xx_mlc: Stop using nand_release() mtd: rawnand: lpc32xx_slc: Stop using nand_release() mtd: rawnand: marvell: Stop using nand_release() mtd: rawnand: mpc5121: Stop using nand_release() mtd: rawnand: mtk: Fix the probe error path mtd: rawnand: mtk: Stop using nand_release() mtd: rawnand: mxc: Stop using nand_release() mtd: rawnand: mxic: Stop using nand_release() mtd: rawnand: ndfc: Stop using nand_release() mtd: rawnand: omap2: Stop using nand_release() mtd: rawnand: orion: Fix the probe error path mtd: rawnand: orion: Stop using nand_release() mtd: rawnand: oxnas: Keep track of registered devices mtd: rawnand: oxnas: Fix the probe error path mtd: rawnand: oxnas: Unregister all devices on error mtd: rawnand: oxnas: Release all devices in the _remove() path mtd: rawnand: oxnas: Stop using nand_release() mtd: rawnand: pasemi: Fix the probe error path mtd: rawnand: pasemi: Stop using nand_release() mtd: rawnand: plat_nand: Fix the probe error path mtd: rawnand: plat_nand: Stop using nand_release() mtd: rawnand: qcom: Stop using nand_release() mtd: rawnand: r852: Stop using nand_release() mtd: rawnand: s3c2410: Stop using nand_release() mtd: rawnand: sh_flctl: Stop using nand_release() mtd: rawnand: sharpsl: Fix the probe error path mtd: rawnand: sharpsl: Stop using nand_release() mtd: rawnand: socrates: Fix the probe error path mtd: rawnand: socrates: Stop using nand_release() mtd: rawnand: stm32_fmc2: Stop using nand_release() mtd: rawnand: sunxi: Fix the probe error path mtd: rawnand: sunxi: Stop using nand_release() mtd: rawnand: tango: Stop using nand_release() mtd: rawnand: tmio: Fix the probe error path mtd: rawnand: tmio: Stop using nand_release() mtd: rawnand: txx9ndfmc: Stop using nand_release() mtd: rawnand: vf610: Stop using nand_release() mtd: rawnand: xway: Fix the probe error path mtd: rawnand: xway: Stop using nand_release() mtd: rawnand: gpmi: Use nand_extract_bits() mtd: rawnand: nandsim: Consistent use of 'ns' instead of 'dev' mtd: rawnand: nandsim: Use octal permissions mtd: rawnand: nandsim: Use a consistent ns_ prefix for all functions mtd: rawnand: nandsim: Clean error handling mtd: rawnand: nandsim: Keep track of the created debugfs entries mtd: rawnand: nandsim: Remove debugfs entries at unload time mtd: rawnand: nandsim: Fix the two ns_alloc_device() error paths mtd: rawnand: nandsim: Free partition names on error in ns_init() mtd: rawnand: nandsim: Free the allocated device on error in ns_init() mtd: rawnand: nandsim: Free the partition names in ns_free() mtd: rawnand: nandsim: Stop using nand_release() mtd: rawnand: nandsim: Use an additional label when freeing the nandsim object mtd: rawnand: nandsim: Free erase_block_wear on error mtd: rawnand: nandsim: Fix the label pointing on nand_cleanup() mtd: rawnand: nandsim: Manage lists on error in ns_init_module() mtd: rawnand: nandsim: Rename a label in ns_init_module() mtd: rawnand: nandsim: Reorganize ns_cleanup_module() mtd: rawnand: Stop using nand_release() mtd: Fix typo in mtd_ooblayout_set_databytes() description mtd: rawnand: Avoid a typedef mtd: rawnand: Drop OOB_FIRST placement scheme mtd: rawnand: Return an enum from of_get_nand_ecc_algo() mtd: rawnand: Add an invalid ECC mode to discriminate with valid ones YueHaibing (3): mtd: rawnand: ingenic: Make qi_lb60_ooblayout_ops static mtd: rawnand: cadence: Make cadence_nand_attach_chip static mtd: rawnand: brcmnand: Remove unused including <linux/version.h> Álvaro Fernández Rojas (8): mtd: rawnand: brcmnand: fix hamming oob layout mtd: rawnand: brcmnand: improve hamming oob layout mtd: rawnand: brcmnand: correctly verify erased pages mtd: rawnand: brcmnand: rename v4 registers mtd: rawnand: brcmnand: fix CS0 layout mtd: rawnand: brcmnand: rename page sizes dt-bindings: mtd: brcmnand: add v2.1 and v2.2 support mtd: rawnand: brcmnand: support v2.1-v2.2 controllers Documentation/devicetree/bindings/mtd/arasan,nand-controller.yaml | 63 ++++++++ Documentation/devicetree/bindings/mtd/brcm,brcmnand.txt | 2 + Documentation/devicetree/bindings/mtd/partition.txt | 3 + Documentation/driver-api/mtdnand.rst | 6 +- MAINTAINERS | 13 +- drivers/mtd/devices/docg3.c | 10 +- drivers/mtd/mtdcore.c | 191 +++++++++++++++++++++-- drivers/mtd/mtdpart.c | 54 ++++--- drivers/mtd/nand/raw/Kconfig | 12 +- drivers/mtd/nand/raw/Makefile | 2 +- drivers/mtd/nand/raw/ams-delta.c | 5 +- drivers/mtd/nand/raw/arasan-nand-controller.c | 1297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ drivers/mtd/nand/raw/atmel/nand-controller.c | 2 +- drivers/mtd/nand/raw/au1550nd.c | 417 +++++++++++++++++-------------------------------- drivers/mtd/nand/raw/bcm47xxnflash/main.c | 6 +- drivers/mtd/nand/raw/brcmnand/brcmnand.c | 164 +++++++++++++------ drivers/mtd/nand/raw/cadence-nand-controller.c | 17 +- drivers/mtd/nand/raw/cafe_nand.c | 16 +- drivers/mtd/nand/raw/cmx270_nand.c | 236 ---------------------------- drivers/mtd/nand/raw/cs553x_nand.c | 199 ++++++++++++++++-------- drivers/mtd/nand/raw/davinci_nand.c | 324 +++++++++++++++++++++++--------------- drivers/mtd/nand/raw/denali.c | 60 +++++-- drivers/mtd/nand/raw/diskonchip.c | 497 ++++++++++++++++++++++------------------------------------ drivers/mtd/nand/raw/fsl_elbc_nand.c | 7 +- drivers/mtd/nand/raw/fsl_ifc_nand.c | 7 +- drivers/mtd/nand/raw/fsl_upm.c | 9 +- drivers/mtd/nand/raw/fsmc_nand.c | 19 ++- drivers/mtd/nand/raw/gpio.c | 6 +- drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 189 +++------------------- drivers/mtd/nand/raw/hisi504_nand.c | 6 +- drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c | 170 ++++++++++++-------- drivers/mtd/nand/raw/internals.h | 12 ++ drivers/mtd/nand/raw/lpc32xx_mlc.c | 7 +- drivers/mtd/nand/raw/lpc32xx_slc.c | 6 +- drivers/mtd/nand/raw/marvell_nand.c | 68 ++++---- drivers/mtd/nand/raw/meson_nand.c | 5 +- drivers/mtd/nand/raw/mpc5121_nfc.c | 5 +- drivers/mtd/nand/raw/mtk_nand.c | 19 ++- drivers/mtd/nand/raw/mxc_nand.c | 6 +- drivers/mtd/nand/raw/mxic_nand.c | 10 +- drivers/mtd/nand/raw/nand_base.c | 445 ++++++++++++++++++++++++++++++++-------------------- drivers/mtd/nand/raw/nand_bch.c | 10 +- drivers/mtd/nand/raw/nand_jedec.c | 30 ++-- drivers/mtd/nand/raw/nand_legacy.c | 8 +- drivers/mtd/nand/raw/nand_micron.c | 65 ++++++-- drivers/mtd/nand/raw/nand_onfi.c | 69 ++++---- drivers/mtd/nand/raw/nand_timings.c | 11 +- drivers/mtd/nand/raw/nand_toshiba.c | 14 ++ drivers/mtd/nand/raw/nandsim.c | 440 +++++++++++++++++++++++++++++---------------------- drivers/mtd/nand/raw/ndfc.c | 8 +- drivers/mtd/nand/raw/omap2.c | 8 +- drivers/mtd/nand/raw/omap_elm.c | 1 + drivers/mtd/nand/raw/orion_nand.c | 8 +- drivers/mtd/nand/raw/oxnas_nand.c | 33 ++-- drivers/mtd/nand/raw/pasemi_nand.c | 9 +- drivers/mtd/nand/raw/plat_nand.c | 8 +- drivers/mtd/nand/raw/qcom_nandc.c | 13 +- drivers/mtd/nand/raw/r852.c | 6 +- drivers/mtd/nand/raw/s3c2410.c | 3 +- drivers/mtd/nand/raw/sh_flctl.c | 6 +- drivers/mtd/nand/raw/sharpsl.c | 14 +- drivers/mtd/nand/raw/socrates_nand.c | 8 +- drivers/mtd/nand/raw/stm32_fmc2_nand.c | 1065 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------- drivers/mtd/nand/raw/sunxi_nand.c | 16 +- drivers/mtd/nand/raw/tango_nand.c | 13 +- drivers/mtd/nand/raw/tegra_nand.c | 6 +- drivers/mtd/nand/raw/tmio_nand.c | 8 +- drivers/mtd/nand/raw/txx9ndfmc.c | 6 +- drivers/mtd/nand/raw/vf610_nfc.c | 10 +- drivers/mtd/nand/raw/xway_nand.c | 8 +- drivers/mtd/parsers/cmdlinepart.c | 12 +- drivers/mtd/parsers/ofpart.c | 3 + drivers/mtd/ubi/build.c | 5 +- include/linux/bch.h | 11 +- include/linux/mtd/bbm.h | 2 +- include/linux/mtd/mtd.h | 7 +- include/linux/mtd/partitions.h | 2 + include/linux/mtd/rawnand.h | 133 +++++++++------- include/linux/platform_data/mtd-davinci.h | 2 +- include/linux/platform_data/mtd-nand-s3c2410.h | 2 +- include/uapi/mtd/mtd-abi.h | 1 + lib/bch.c | 152 ++++++++++++------ 82 files changed, 4275 insertions(+), 2553 deletions(-) create mode 100644 Documentation/devicetree/bindings/mtd/arasan,nand-controller.yaml create mode 100644 drivers/mtd/nand/raw/arasan-nand-controller.c delete mode 100644 drivers/mtd/nand/raw/cmx270_nand.c ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/