For a few years, Linux has been using the new EBI bindings for NAND controllers on all AT91 SoCs newer than the AT91RM2000. We have so far only supported the old bindings by hacking the DT, but this doesn't suffice for the SAMA5D4. Therefore import a new state of the Linux NAND controller driver. We still keep around the old barebox driver to support the non-DT enabled AT91 platforms. Ahmad Fatoum (15): asm-generic: io.h: sync with Linux mtd: nand: base: implement nand_gpio_waitrdy mtd: nand: prefix enum nand_ecc_algo constants with NAND_ECC_ALGO_ mtd: nand: rename nand_device::eccreq to Linux' ecc.requirements mtd: nand: define nand_get_(small|large)_page_ooblayout mtd: nand: define nand_interface_is_sdr mtd: nand: provide Linux' struct nand_ecc_ctrl::engine_type driver: implement dev_request_resource lib: provide stub Linux "generic" allocator API memory: add Atmel EBI driver mfd: add atmel-smc driver mtd: nand: atmel: import Linux NAND controller driver ARM: AT91: sama5d3_xplained: switch to upstream binding mtd: nand: drop DT support in legacy driver ARM: AT91: sama5d3: always read memory size from controller arch/arm/dts/at91-microchip-ksz9477-evb.dts | 4 - arch/arm/dts/at91-sama5d3_xplained.dts | 29 - arch/arm/dts/sama5d3.dtsi | 17 +- drivers/base/driver.c | 19 +- drivers/memory/Kconfig | 14 + drivers/memory/Makefile | 1 + drivers/memory/atmel-ebi.c | 614 +++++ drivers/mfd/Kconfig | 4 + drivers/mfd/Makefile | 1 + drivers/mfd/atmel-smc.c | 352 +++ drivers/mtd/nand/Kconfig | 11 +- drivers/mtd/nand/Makefile | 2 +- drivers/mtd/nand/atmel/Makefile | 3 + drivers/mtd/nand/{ => atmel}/atmel_nand_ecc.h | 0 .../mtd/nand/{atmel_nand.c => atmel/legacy.c} | 106 +- drivers/mtd/nand/atmel/nand-controller.c | 2049 +++++++++++++++++ drivers/mtd/nand/atmel/pmecc.c | 992 ++++++++ drivers/mtd/nand/atmel/pmecc.h | 70 + drivers/mtd/nand/nand_base.c | 86 +- drivers/mtd/nand/nand_esmt.c | 10 +- drivers/mtd/nand/nand_fsl_ifc.c | 2 +- drivers/mtd/nand/nand_hynix.c | 40 +- drivers/mtd/nand/nand_jedec.c | 4 +- drivers/mtd/nand/nand_micron.c | 16 +- drivers/mtd/nand/nand_onfi.c | 8 +- drivers/mtd/nand/nand_samsung.c | 18 +- drivers/mtd/nand/nand_toshiba.c | 12 +- include/asm-generic/io.h | 401 +++- include/driver.h | 5 + include/linux/genalloc.h | 36 + include/linux/mfd/syscon/atmel-matrix.h | 112 + include/linux/mfd/syscon/atmel-smc.h | 119 + include/linux/mtd/nand.h | 27 +- include/linux/mtd/rawnand.h | 43 +- include/linux/mutex.h | 2 + include/soc/at91/atmel-sfr.h | 2 + lib/Kconfig | 5 + lib/Makefile | 1 + lib/genalloc.c | 118 + 39 files changed, 5074 insertions(+), 281 deletions(-) create mode 100644 drivers/memory/atmel-ebi.c create mode 100644 drivers/mfd/atmel-smc.c create mode 100644 drivers/mtd/nand/atmel/Makefile rename drivers/mtd/nand/{ => atmel}/atmel_nand_ecc.h (100%) rename drivers/mtd/nand/{atmel_nand.c => atmel/legacy.c} (92%) create mode 100644 drivers/mtd/nand/atmel/nand-controller.c create mode 100644 drivers/mtd/nand/atmel/pmecc.c create mode 100644 drivers/mtd/nand/atmel/pmecc.h create mode 100644 include/linux/genalloc.h create mode 100644 include/linux/mfd/syscon/atmel-matrix.h create mode 100644 include/linux/mfd/syscon/atmel-smc.h create mode 100644 lib/genalloc.c -- 2.30.2