[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