From: Dinesh Maniyam <dinesh.mani...@intel.com> This patchset add Cadence NAND driver support for Intel Agilex5 devices.
The NAND driver is leveraged from the cadence-nand-controller.c from Linux version 6.11.2. U-Boot will support read, write and erase NAND with Cadence driver. The driver further enhanced in U-Boot to support NAND booting from FSBL and support boot to kernel via UBIFS. Patch status: Have changes: All patches expect Patch 19 Detail changelog can find in commit message. v1->v2: -------- Patch 1 - 18: - remove the "this patch is to" commit phrases Patch 4; - minor refactoring of code to match the stable version 6.11.2. Patch 14: - Add maintainer and "#include" mechanism for new variant Patch 16: - leverage the existing nand_spl_load_image v2->v3: -------- Patch: arm: dts: agilex5: Enabled cdns-nand dts setting - Move &nand from uboot.dtsi to socdk.dts Patch: include: asm: Add support to read/write 64-bit - Dropped because redefinition of readsq & writesq Patch: drivers: mtd: nand: Add driver for Cadence Nand - Remove redundant clk_free func Patch: drivers: mtd: nand: Enabled Kconfig and Makefile for SPL_NAND_FRAMEWORK - New Patch: drivers: mtd: nand: Kconfig: Add SYS_NAND_PAGE_SIZE dependency - New Patch: configs: nand2_defconfig: Enable configs for nand boot - Remove CONFIG_OF_UPSTREAM in order to get correct dts for compilation Patch: drivers: mtd: nand: base: Add support for Hardware ECC for check bad block - Remove copyright Patch: drivers: mtd: nand: Kconfig: Remove SYS_NAND_BLOCK_SIZE dependency - Dropped because SPL NAND have dependency with SYS_NAND_BLOCK_SIZE History: -------- [v1]: https://patchwork.ozlabs.org/project/uboot/cover/20240919035512.13854-1-dinesh.mani...@intel.com/ [v2]: https://patchwork.ozlabs.org/project/uboot/cover/20241205092315.25060-1-dinesh.mani...@intel.com/ Dinesh Maniyam (19): dt: nand: add cadence nand dt-bindings arm: dts: agilex5: Enabled cdns-nand dts setting drivers: mtd: nand: Add driver for Cadence Nand drivers: mtd: nand: cadence: Add support for read status command drivers: mtd: nand: cadence: Add support for readid command drivers: mtd: nand: cadence: Add support for NAND_CMD_PARAM drivers: mtd: nand: cadence: Add support for NAND_CMD_RESET drivers: mtd: nand: cadence: Support cmd SET_FEATURES & GET_FEATURES drivers: mtd: nand: cadence: Flush & invalidate dma descriptor drivers: mtd: nand: cadence: Poll for desc complete status drivers: mtd: nand: cadence: Use bounce buffer drivers: nand: Enabled Kconfig and Makefile for cdns-nand configs: nand2_defconfig: Enable configs for nand boot drivers: mtd: nand: base: Add support for Hardware ECC for check bad block drivers: mtd: nand: spl: Add support for nand SPL load image drivers: mtd: nand: Enabled Kconfig and Makefile for Cadence-SPL drivers: mtd: nand: Enabled Kconfig and Makefile for SPL_NAND_FRAMEWORK drivers: mtd: nand: Kconfig: Add SYS_NAND_PAGE_SIZE dependency drivers: mtd: nand: Kconfig: Enabled self-init for cdns-nand SPL arch/arm/dts/socfpga_agilex5.dtsi | 14 + .../arm/dts/socfpga_agilex5_socdk-u-boot.dtsi | 9 +- arch/arm/dts/socfpga_agilex5_socdk.dts | 19 + board/intel/agilex5-socdk/MAINTAINERS | 2 + configs/socfpga_agilex5_nand2_defconfig | 32 + .../mtd/cadence,nand.yaml | 98 + drivers/mtd/nand/raw/Kconfig | 26 +- drivers/mtd/nand/raw/Makefile | 12 + drivers/mtd/nand/raw/cadence_nand.c | 2423 +++++++++++++++++ drivers/mtd/nand/raw/cadence_spl.c | 59 + drivers/mtd/nand/raw/nand_base.c | 69 +- include/cadence-nand.h | 529 ++++ include/linux/mtd/rawnand.h | 12 + 13 files changed, 3278 insertions(+), 26 deletions(-) create mode 100644 configs/socfpga_agilex5_nand2_defconfig create mode 100644 doc/device-tree-bindings/mtd/cadence,nand.yaml create mode 100644 drivers/mtd/nand/raw/cadence_nand.c create mode 100644 drivers/mtd/nand/raw/cadence_spl.c create mode 100644 include/cadence-nand.h -- 2.19.0