[PATCH 11/16] board: k1: enable SPI NOR flash in SPL

Raymond Mao raymondmaoca at gmail.com
Wed Apr 22 16:31:07 CEST 2026


From: Raymond Mao <raymond.mao at riscstar.com>

Enable SPI NOR flash in SPL stage.

Signed-off-by: Raymond Mao <raymond.mao at riscstar.com>
---
 board/spacemit/k1/spl.c       | 24 +++++++++++++++++++++++-
 configs/spacemit_k1_defconfig | 22 ++++++++++++++++++++++
 2 files changed, 45 insertions(+), 1 deletion(-)

diff --git a/board/spacemit/k1/spl.c b/board/spacemit/k1/spl.c
index 5af804f0409..77b6df1371b 100644
--- a/board/spacemit/k1/spl.c
+++ b/board/spacemit/k1/spl.c
@@ -20,6 +20,7 @@
 #include <spl.h>
 #include <tlv_eeprom.h>
 #include "tlv_codes.h"
+#include <spi_flash.h>
 
 #define MUX_MODE4		4
 #define EDGE_NONE		BIT(6)
@@ -309,6 +310,21 @@ void ddr_early_init(void)
 		log_info("DDR isn't invalid\n");
 }
 
+void nor_early_init(void)
+{
+	struct udevice *dev;
+	int ret;
+
+	ret = uclass_get_device(UCLASS_SPI, 0, &dev);
+	if (ret)
+		panic("Fail to detect spi controller.\n");
+	udelay(10);
+	ret = uclass_get_device(UCLASS_SPI_FLASH, 0, &dev);
+	if (ret)
+		panic("Fail to detect spi nor flash.\n");
+	udelay(10);
+}
+
 void board_init_f(ulong dummy)
 {
 	u8 i2c_buf[I2C_BUF_SIZE];
@@ -335,13 +351,19 @@ void board_init_f(ulong dummy)
 	pmic_init();
 
 	ddr_early_init();
+	nor_early_init();
 }
 
 u32 spl_boot_device(void)
 {
-	return BOOT_DEVICE_NOR;
+	return BOOT_DEVICE_SPI;
 }
 
 void spl_board_init(void)
 {
 }
+
+void *board_spl_fit_buffer_addr(ulong fit_size, int sectors, int bl_len)
+{
+	return (void *)CONFIG_SPL_LOAD_FIT_ADDRESS;
+}
diff --git a/configs/spacemit_k1_defconfig b/configs/spacemit_k1_defconfig
index 29a3c71f19e..97b6c8cbbb0 100644
--- a/configs/spacemit_k1_defconfig
+++ b/configs/spacemit_k1_defconfig
@@ -14,6 +14,7 @@ CONFIG_SPL_HAVE_INIT_STACK=y
 CONFIG_SPL_STACK=0xc0840000
 CONFIG_SPL_SIZE_LIMIT=0x31000
 CONFIG_SPL_FIT_SIGNATURE=y
+CONFIG_SPL_HAS_LOAD_FIT_ADDRESS=y
 CONFIG_SPL_LOAD_FIT_ADDRESS=0x08000000
 CONFIG_STACK_SIZE=0x100000
 CONFIG_SYS_BOOTM_LEN=0xa000000
@@ -29,7 +30,10 @@ CONFIG_SYS_CBSIZE=256
 CONFIG_SYS_PBSIZE=276
 # CONFIG_BOARD_INIT is not set
 CONFIG_HUSH_PARSER=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_ENV_OVERWRITE=y
+CONFIG_ENV_OFFSET=0x60000
+CONFIG_ENV_SIZE=0x4000
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_SPACEMIT_K1=y
 CONFIG_GPIO=y
@@ -65,6 +69,18 @@ CONFIG_DM_PMIC=y
 CONFIG_PMIC_SPACEMIT_P1=y
 CONFIG_DM_REGULATOR=y
 CONFIG_DM_REGULATOR_SPACEMIT_P1=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_FSL_QSPI=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_MEM=y
+CONFIG_SYS_SPI_U_BOOT_OFFS=0x000a0000
+CONFIG_CMD_SPI=y
+CONFIG_MTD=y
+CONFIG_DM_MTD=y
+CONFIG_MULTI_DTB_FIT=y
 CONFIG_SPL_REGMAP=y
 CONFIG_SPL_LIB_RATIONAL=y
 CONFIG_SPL_DM_RESET=y
@@ -78,3 +94,9 @@ CONFIG_SPL_CMD_TLV_EEPROM=y
 CONFIG_SPL_POWER=y
 CONFIG_SPL_DM_PMIC=y
 CONFIG_SPL_DM_REGULATOR=y
+CONFIG_SPL_SPI=y
+CONFIG_SPL_DM_SPI=y
+CONFIG_SPL_DM_SPI_FLASH=y
+CONFIG_SPL_SPI_LOAD=y
+CONFIG_SPL_SPI_FLASH_TINY=y
+CONFIG_SPL_SPI_FLASH_SUPPORT=y
-- 
2.25.1



More information about the U-Boot mailing list