[PATCH v1 1/2] mtd: nand: Allow full NAND framework in SPL

alif.zakuan.yuslaimi at altera.com alif.zakuan.yuslaimi at altera.com
Fri Jun 20 12:29:52 CEST 2025


From: Alif Zakuan Yuslaimi <alif.zakuan.yuslaimi at altera.com>

Add configuration option to compile the entire NAND framework into
U-Boot SPL. This is required by some drivers, like the Denali NAND,
which use a lot of functionality from the NAND core.

Signed-off-by: Marek Vasut <marex at denx.de>
Signed-off-by: Tien Fong Chee <tien.fong.chee at altera.com>
Signed-off-by: Alif Zakuan Yuslaimi <alif.zakuan.yuslaimi at altera.com>
---
 drivers/mtd/nand/raw/Kconfig  |  8 ++++++++
 drivers/mtd/nand/raw/Makefile | 28 ++++++++++++----------------
 2 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
index adb271dfb8f..28b48d53def 100644
--- a/drivers/mtd/nand/raw/Kconfig
+++ b/drivers/mtd/nand/raw/Kconfig
@@ -208,6 +208,7 @@ config NAND_CADENCE
 config NAND_DENALI
 	bool
 	select SYS_NAND_SELF_INIT
+	select SYS_NAND_ONFI_DETECTION if TARGET_SOCFPGA_SOC64
 	imply CMD_NAND
 
 config NAND_DENALI_DT
@@ -826,4 +827,11 @@ config SYS_NAND_HW_ECC_OOBFIRST
 
 endif	# if SPL
 
+config SPL_NAND_FRAMEWORK
+	bool "Compile the entire NAND framework into the SPL"
+	help
+	  Some drivers require a lot of functionality from the NAND framework
+	  core when used in SPL. This option allows compiling the full NAND
+	  framework into the SPL instead of it's reduced version.
+
 endif	# if MTD_RAW_NAND
diff --git a/drivers/mtd/nand/raw/Makefile b/drivers/mtd/nand/raw/Makefile
index 34cba77046a..08829406902 100644
--- a/drivers/mtd/nand/raw/Makefile
+++ b/drivers/mtd/nand/raw/Makefile
@@ -3,8 +3,18 @@
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd at denx.de.
 
+nand-framework-objs := nand.o nand_bbt.o nand_ids.o nand_util.o \
+		       nand_ecc.o nand_base.o nand_timings.o nand_amd.o \
+		       nand_hynix.o nand_macronix.o nand_micron.o \
+		       nand_samsung.o nand_toshiba.o
+
 ifdef CONFIG_XPL_BUILD
 
+ifdef CONFIG_SPL_NAND_FRAMEWORK
+obj-y += $(nand-framework-objs)
+NORMAL_DRIVERS=y
+endif
+
 ifdef CONFIG_SPL_NAND_DRIVERS
 NORMAL_DRIVERS=y
 endif
@@ -15,9 +25,7 @@ obj-$(CONFIG_SPL_NAND_DENALI) += denali_spl.o
 obj-$(CONFIG_SPL_NAND_SIMPLE) += nand_spl_simple.o
 obj-$(CONFIG_SPL_NAND_LOAD) += nand_spl_load.o
 obj-$(CONFIG_SPL_NAND_ECC) += nand_ecc.o
-obj-$(CONFIG_SPL_NAND_BASE) += nand_base.o nand_amd.o nand_hynix.o \
-				nand_macronix.o nand_micron.o \
-				nand_samsung.o nand_toshiba.o
+obj-$(CONFIG_SPL_NAND_BASE) += nand_base.o
 obj-$(CONFIG_SPL_NAND_IDENT) += nand_ids.o nand_timings.o
 obj-$(CONFIG_$(PHASE_)NAND_INIT) += nand.o
 ifeq ($(CONFIG_SPL_ENV_SUPPORT),y)
@@ -28,19 +36,7 @@ else # not spl
 
 NORMAL_DRIVERS=y
 
-obj-y += nand.o
-obj-y += nand_bbt.o
-obj-y += nand_ids.o
-obj-y += nand_util.o
-obj-y += nand_ecc.o
-obj-y += nand_base.o
-obj-y += nand_amd.o
-obj-y += nand_hynix.o
-obj-y += nand_macronix.o
-obj-y += nand_micron.o
-obj-y += nand_samsung.o
-obj-y += nand_toshiba.o
-obj-y += nand_timings.o
+obj-y += $(nand-framework-objs)
 
 endif # not spl
 
-- 
2.25.1



More information about the U-Boot mailing list