* [PATCH 0/2] Enable SPI NOR flash for SpacemiT K3 in main app
@ 2026-10-20 19:51 E Shattow
2026-10-20 19:51 ` [PATCH 1/2] configs: spacemit: k3: enable spi nor flash " E Shattow
2026-10-20 19:51 ` [PATCH 2/2] configs: spacemit: k3: enable mtdparts on Pico-ITX " E Shattow
0 siblings, 2 replies; 11+ messages in thread
From: E Shattow @ 2026-10-20 19:51 UTC (permalink / raw)
To: u-boot, Yixun Lan; +Cc: E Shattow
Enable SPI Flash command, mtd part names and locations, and store U-Boot
environment in SPI NOR flash.
E Shattow (2):
configs: spacemit: k3: enable spi nor flash in main app
configs: spacemit: k3: enable mtdparts on Pico-ITX in main app
arch/riscv/cpu/k3/Kconfig | 1 +
configs/spacemit_k3_defconfig | 11 +++++++++++
2 files changed, 12 insertions(+)
base-commit: 40988fb81ef17c15c36aab94297f5a7a6bc79671
--
2.53.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/2] configs: spacemit: k3: enable spi nor flash in main app
2026-10-20 19:51 [PATCH 0/2] Enable SPI NOR flash for SpacemiT K3 in main app E Shattow
@ 2026-10-20 19:51 ` E Shattow
2026-10-21 7:13 ` Yixun Lan
2026-10-21 8:01 ` Yixun Lan
2026-10-20 19:51 ` [PATCH 2/2] configs: spacemit: k3: enable mtdparts on Pico-ITX " E Shattow
1 sibling, 2 replies; 11+ messages in thread
From: E Shattow @ 2026-10-20 19:51 UTC (permalink / raw)
To: u-boot, Yixun Lan, Tim Ouyang, Leo Liang, Yao Zi, Tom Rini; +Cc: E Shattow
Enable sf command and env storage in SPI NOR flash. SPL is not yet
upstream so this is only in the main app, and depends on vendor SPL for
clocks setup ahead of SPI NOR flash probe.
Signed-off-by: E Shattow <e@freeshell.de>
---
arch/riscv/cpu/k3/Kconfig | 1 +
configs/spacemit_k3_defconfig | 6 ++++++
2 files changed, 7 insertions(+)
diff --git a/arch/riscv/cpu/k3/Kconfig b/arch/riscv/cpu/k3/Kconfig
index 5474ac112437..07b490a718dd 100644
--- a/arch/riscv/cpu/k3/Kconfig
+++ b/arch/riscv/cpu/k3/Kconfig
@@ -14,5 +14,6 @@ config SPACEMIT_K3
imply RISCV_TIMER if RISCV_SMODE
imply CMD_CPU
imply OF_UPSTREAM
+ imply SPI
endif
diff --git a/configs/spacemit_k3_defconfig b/configs/spacemit_k3_defconfig
index 586305c62322..b333e708d01b 100644
--- a/configs/spacemit_k3_defconfig
+++ b/configs/spacemit_k3_defconfig
@@ -4,6 +4,8 @@ CONFIG_SYS_MALLOC_F_LEN=0x80000
CONFIG_NR_DRAM_BANKS=2
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x102300000
+CONFIG_ENV_SIZE=0x10000
+CONFIG_ENV_OFFSET=0xa0000
CONFIG_DM_GPIO=y
CONFIG_DEFAULT_DEVICE_TREE="spacemit/k3-pico-itx"
CONFIG_SYS_BOOTM_LEN=0xa000000
@@ -35,6 +37,8 @@ CONFIG_CMD_REGULATOR=y
CONFIG_CMD_FAT=y
CONFIG_CMD_FS_GENERIC=y
CONFIG_DEVICE_TREE_INCLUDES="spacemit-k3-u-boot.dtsi"
+CONFIG_ENV_OVERWRITE=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
CONFIG_NET_LWIP=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_SYSCON=y
@@ -44,6 +48,7 @@ CONFIG_SPACEMIT_GPIO=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_SPACEMIT_K1=y
CONFIG_MISC=y
+CONFIG_SPI_FLASH_WINBOND=y
CONFIG_PHY_GIGE=y
CONFIG_DWC_ETH_QOS=y
CONFIG_DWC_ETH_QOS_SPACEMIT=y
@@ -61,4 +66,5 @@ CONFIG_DEBUG_UART_SHIFT=2
CONFIG_DEBUG_UART_ANNOUNCE=y
CONFIG_SYS_NS16550=y
CONFIG_SYS_NS16550_MEM32=y
+CONFIG_FSL_QSPI=y
CONFIG_TIMER_EARLY=y
--
2.53.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/2] configs: spacemit: k3: enable mtdparts on Pico-ITX in main app
2026-10-20 19:51 [PATCH 0/2] Enable SPI NOR flash for SpacemiT K3 in main app E Shattow
2026-10-20 19:51 ` [PATCH 1/2] configs: spacemit: k3: enable spi nor flash " E Shattow
@ 2026-10-20 19:51 ` E Shattow
2026-10-21 7:56 ` Yixun Lan
1 sibling, 1 reply; 11+ messages in thread
From: E Shattow @ 2026-10-20 19:51 UTC (permalink / raw)
To: u-boot, Yixun Lan, Tom Rini; +Cc: E Shattow
add default mtdparts and mtdids consistent with k3-pico-itx.dts
Signed-off-by: E Shattow <e@freeshell.de>
---
configs/spacemit_k3_defconfig | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/configs/spacemit_k3_defconfig b/configs/spacemit_k3_defconfig
index b333e708d01b..2ca912556a88 100644
--- a/configs/spacemit_k3_defconfig
+++ b/configs/spacemit_k3_defconfig
@@ -26,6 +26,7 @@ CONFIG_SYS_PBSIZE=276
CONFIG_HUSH_PARSER=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_I2C=y
+CONFIG_CMD_MTD=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_DNS=y
CONFIG_CMD_MII=y
@@ -36,6 +37,9 @@ CONFIG_CMD_PMIC=y
CONFIG_CMD_REGULATOR=y
CONFIG_CMD_FAT=y
CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
+CONFIG_MTDIDS_DEFAULT="nor0=spi0.0"
+CONFIG_MTDPARTS_DEFAULT="spi0.0:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)"
CONFIG_DEVICE_TREE_INCLUDES="spacemit-k3-u-boot.dtsi"
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_SPI_FLASH=y
@@ -49,6 +53,7 @@ CONFIG_DM_I2C=y
CONFIG_SYS_I2C_SPACEMIT_K1=y
CONFIG_MISC=y
CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_FLASH_MTD=y
CONFIG_PHY_GIGE=y
CONFIG_DWC_ETH_QOS=y
CONFIG_DWC_ETH_QOS_SPACEMIT=y
--
2.53.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] configs: spacemit: k3: enable spi nor flash in main app
2026-10-20 19:51 ` [PATCH 1/2] configs: spacemit: k3: enable spi nor flash " E Shattow
@ 2026-10-21 7:13 ` Yixun Lan
2026-10-21 7:37 ` E Shattow
2026-10-21 8:01 ` Yixun Lan
1 sibling, 1 reply; 11+ messages in thread
From: Yixun Lan @ 2026-10-21 7:13 UTC (permalink / raw)
To: E Shattow; +Cc: u-boot, Tim Ouyang, Leo Liang, Yao Zi, Tom Rini
Hi E Shattow,
Thanks for the patch
On 12:51 Tue 20 Oct , E Shattow wrote:
> Enable sf command and env storage in SPI NOR flash.
..
> SPL is not yet
> upstream so this is only in the main app, and depends on vendor SPL for
> clocks setup ahead of SPI NOR flash probe.
>
This could be added as additional info, but I'd rather not put in commit
meassage, maybe just put it under "---" scissors line for reference
For why depend on SPL for clock, reset setup.. I checked fsl_qspi.c,
there is no clock & reset enabling support currently, although SpacemiT
do provide those support, but I think it's another item need to improve,
and we could definitely address it in a separate thread..
> Signed-off-by: E Shattow <e@freeshell.de>
> ---
> arch/riscv/cpu/k3/Kconfig | 1 +
> configs/spacemit_k3_defconfig | 6 ++++++
> 2 files changed, 7 insertions(+)
>
> diff --git a/arch/riscv/cpu/k3/Kconfig b/arch/riscv/cpu/k3/Kconfig
> index 5474ac112437..07b490a718dd 100644
> --- a/arch/riscv/cpu/k3/Kconfig
> +++ b/arch/riscv/cpu/k3/Kconfig
> @@ -14,5 +14,6 @@ config SPACEMIT_K3
> imply RISCV_TIMER if RISCV_SMODE
> imply CMD_CPU
> imply OF_UPSTREAM
> + imply SPI
Any reason to add this dependency?
I'd prefer to put this config in defconfig, As I see K3 has
no hard requirement for SPI support from architecture perspective
>
> endif
> diff --git a/configs/spacemit_k3_defconfig b/configs/spacemit_k3_defconfig
> index 586305c62322..b333e708d01b 100644
> --- a/configs/spacemit_k3_defconfig
> +++ b/configs/spacemit_k3_defconfig
> @@ -4,6 +4,8 @@ CONFIG_SYS_MALLOC_F_LEN=0x80000
> CONFIG_NR_DRAM_BANKS=2
> CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
> CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x102300000
> +CONFIG_ENV_SIZE=0x10000
> +CONFIG_ENV_OFFSET=0xa0000
> CONFIG_DM_GPIO=y
> CONFIG_DEFAULT_DEVICE_TREE="spacemit/k3-pico-itx"
> CONFIG_SYS_BOOTM_LEN=0xa000000
> @@ -35,6 +37,8 @@ CONFIG_CMD_REGULATOR=y
> CONFIG_CMD_FAT=y
> CONFIG_CMD_FS_GENERIC=y
> CONFIG_DEVICE_TREE_INCLUDES="spacemit-k3-u-boot.dtsi"
> +CONFIG_ENV_OVERWRITE=y
> +CONFIG_ENV_IS_IN_SPI_FLASH=y
> CONFIG_NET_LWIP=y
> CONFIG_NET_RANDOM_ETHADDR=y
> CONFIG_SYSCON=y
> @@ -44,6 +48,7 @@ CONFIG_SPACEMIT_GPIO=y
> CONFIG_DM_I2C=y
> CONFIG_SYS_I2C_SPACEMIT_K1=y
> CONFIG_MISC=y
> +CONFIG_SPI_FLASH_WINBOND=y
> CONFIG_PHY_GIGE=y
> CONFIG_DWC_ETH_QOS=y
> CONFIG_DWC_ETH_QOS_SPACEMIT=y
> @@ -61,4 +66,5 @@ CONFIG_DEBUG_UART_SHIFT=2
> CONFIG_DEBUG_UART_ANNOUNCE=y
> CONFIG_SYS_NS16550=y
> CONFIG_SYS_NS16550_MEM32=y
> +CONFIG_FSL_QSPI=y
> CONFIG_TIMER_EARLY=y
> --
> 2.53.0
>
--
Yixun Lan (dlan)
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] configs: spacemit: k3: enable spi nor flash in main app
2026-10-21 7:13 ` Yixun Lan
@ 2026-10-21 7:37 ` E Shattow
0 siblings, 0 replies; 11+ messages in thread
From: E Shattow @ 2026-10-21 7:37 UTC (permalink / raw)
To: Yixun Lan; +Cc: u-boot, Tim Ouyang, Leo Liang, Yao Zi, Tom Rini
Hi Yixun,
On 10/21/26 00:13, Yixun Lan wrote:
> Hi E Shattow,
>
> Thanks for the patch
>
> On 12:51 Tue 20 Oct , E Shattow wrote:
>> Enable sf command and env storage in SPI NOR flash.
> ..
>> SPL is not yet
>> upstream so this is only in the main app, and depends on vendor SPL for
>> clocks setup ahead of SPI NOR flash probe.
>>
> This could be added as additional info, but I'd rather not put in commit
> meassage, maybe just put it under "---" scissors line for reference
>
> For why depend on SPL for clock, reset setup.. I checked fsl_qspi.c,
> there is no clock & reset enabling support currently, although SpacemiT
> do provide those support, but I think it's another item need to improve,
> and we could definitely address it in a separate thread..
>
>> Signed-off-by: E Shattow <e@freeshell.de>
>> ---
>> arch/riscv/cpu/k3/Kconfig | 1 +
>> configs/spacemit_k3_defconfig | 6 ++++++
>> 2 files changed, 7 insertions(+)
>>
>> diff --git a/arch/riscv/cpu/k3/Kconfig b/arch/riscv/cpu/k3/Kconfig
>> index 5474ac112437..07b490a718dd 100644
>> --- a/arch/riscv/cpu/k3/Kconfig
>> +++ b/arch/riscv/cpu/k3/Kconfig
>> @@ -14,5 +14,6 @@ config SPACEMIT_K3
>> imply RISCV_TIMER if RISCV_SMODE
>> imply CMD_CPU
>> imply OF_UPSTREAM
>> + imply SPI
> Any reason to add this dependency?
It is a guess, that when SPL may be loaded by K3 SoC BootROM from SPI
NOR flash then there should be an 'imply SPI' for what is needed to have
SPI support in SPL here on selecting the K3 SoC or in
BOARD_SPECIFIC_OPTIONS.
>
> I'd prefer to put this config in defconfig, As I see K3 has
> no hard requirement for SPI support from architecture perspective
>
Okay, no objection to to move 'imply SPI' as '=y' in
spacemit_k3_defconfig for v2 revision.
>>
>> endif
>> diff --git a/configs/spacemit_k3_defconfig b/configs/spacemit_k3_defconfig
>> index 586305c62322..b333e708d01b 100644
>> --- a/configs/spacemit_k3_defconfig
>> +++ b/configs/spacemit_k3_defconfig
>> @@ -4,6 +4,8 @@ CONFIG_SYS_MALLOC_F_LEN=0x80000
>> CONFIG_NR_DRAM_BANKS=2
>> CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
>> CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x102300000
>> +CONFIG_ENV_SIZE=0x10000
>> +CONFIG_ENV_OFFSET=0xa0000
>> CONFIG_DM_GPIO=y
>> CONFIG_DEFAULT_DEVICE_TREE="spacemit/k3-pico-itx"
>> CONFIG_SYS_BOOTM_LEN=0xa000000
>> @@ -35,6 +37,8 @@ CONFIG_CMD_REGULATOR=y
>> CONFIG_CMD_FAT=y
>> CONFIG_CMD_FS_GENERIC=y
>> CONFIG_DEVICE_TREE_INCLUDES="spacemit-k3-u-boot.dtsi"
>> +CONFIG_ENV_OVERWRITE=y
>> +CONFIG_ENV_IS_IN_SPI_FLASH=y
>> CONFIG_NET_LWIP=y
>> CONFIG_NET_RANDOM_ETHADDR=y
>> CONFIG_SYSCON=y
>> @@ -44,6 +48,7 @@ CONFIG_SPACEMIT_GPIO=y
>> CONFIG_DM_I2C=y
>> CONFIG_SYS_I2C_SPACEMIT_K1=y
>> CONFIG_MISC=y
>> +CONFIG_SPI_FLASH_WINBOND=y
>> CONFIG_PHY_GIGE=y
>> CONFIG_DWC_ETH_QOS=y
>> CONFIG_DWC_ETH_QOS_SPACEMIT=y
>> @@ -61,4 +66,5 @@ CONFIG_DEBUG_UART_SHIFT=2
>> CONFIG_DEBUG_UART_ANNOUNCE=y
>> CONFIG_SYS_NS16550=y
>> CONFIG_SYS_NS16550_MEM32=y
>> +CONFIG_FSL_QSPI=y
>> CONFIG_TIMER_EARLY=y
>> --
>> 2.53.0
>>
>
Thanks for the review,
-E
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] configs: spacemit: k3: enable mtdparts on Pico-ITX in main app
2026-10-20 19:51 ` [PATCH 2/2] configs: spacemit: k3: enable mtdparts on Pico-ITX " E Shattow
@ 2026-10-21 7:56 ` Yixun Lan
2026-10-21 14:35 ` E Shattow
0 siblings, 1 reply; 11+ messages in thread
From: Yixun Lan @ 2026-10-21 7:56 UTC (permalink / raw)
To: E Shattow; +Cc: u-boot, Tom Rini
Hi E Shattow,
On 12:51 Tue 20 Oct , E Shattow wrote:
> add default mtdparts and mtdids consistent with k3-pico-itx.dts
>
> Signed-off-by: E Shattow <e@freeshell.de>
> ---
> configs/spacemit_k3_defconfig | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/configs/spacemit_k3_defconfig b/configs/spacemit_k3_defconfig
> index b333e708d01b..2ca912556a88 100644
> --- a/configs/spacemit_k3_defconfig
> +++ b/configs/spacemit_k3_defconfig
> @@ -26,6 +26,7 @@ CONFIG_SYS_PBSIZE=276
> CONFIG_HUSH_PARSER=y
> CONFIG_CMD_GPIO=y
> CONFIG_CMD_I2C=y
> +CONFIG_CMD_MTD=y
> CONFIG_CMD_DHCP=y
> CONFIG_CMD_DNS=y
> CONFIG_CMD_MII=y
> @@ -36,6 +37,9 @@ CONFIG_CMD_PMIC=y
> CONFIG_CMD_REGULATOR=y
> CONFIG_CMD_FAT=y
> CONFIG_CMD_FS_GENERIC=y
> +CONFIG_CMD_MTDPARTS=y
> +CONFIG_MTDIDS_DEFAULT="nor0=spi0.0"
> +CONFIG_MTDPARTS_DEFAULT="spi0.0:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)"
or make it more specific? s/spi0.0/d420c000.spi/
> CONFIG_DEVICE_TREE_INCLUDES="spacemit-k3-u-boot.dtsi"
> CONFIG_ENV_OVERWRITE=y
> CONFIG_ENV_IS_IN_SPI_FLASH=y
> @@ -49,6 +53,7 @@ CONFIG_DM_I2C=y
> CONFIG_SYS_I2C_SPACEMIT_K1=y
> CONFIG_MISC=y
> CONFIG_SPI_FLASH_WINBOND=y
> +CONFIG_SPI_FLASH_MTD=y
> CONFIG_PHY_GIGE=y
> CONFIG_DWC_ETH_QOS=y
> CONFIG_DWC_ETH_QOS_SPACEMIT=y
> --
> 2.53.0
>
--
Yixun Lan (dlan)
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] configs: spacemit: k3: enable spi nor flash in main app
2026-10-20 19:51 ` [PATCH 1/2] configs: spacemit: k3: enable spi nor flash " E Shattow
2026-10-21 7:13 ` Yixun Lan
@ 2026-10-21 8:01 ` Yixun Lan
2026-10-21 15:47 ` E Shattow
1 sibling, 1 reply; 11+ messages in thread
From: Yixun Lan @ 2026-10-21 8:01 UTC (permalink / raw)
To: E Shattow; +Cc: u-boot, Tim Ouyang, Leo Liang, Yao Zi, Tom Rini
Hi E Shattow,
one more comment
On 12:51 Tue 20 Oct , E Shattow wrote:
> Enable sf command and env storage in SPI NOR flash. SPL is not yet
> upstream so this is only in the main app, and depends on vendor SPL for
> clocks setup ahead of SPI NOR flash probe.
>
> Signed-off-by: E Shattow <e@freeshell.de>
> ---
> arch/riscv/cpu/k3/Kconfig | 1 +
> configs/spacemit_k3_defconfig | 6 ++++++
> 2 files changed, 7 insertions(+)
>
..
> CONFIG_SYSCON=y
> @@ -44,6 +48,7 @@ CONFIG_SPACEMIT_GPIO=y
> CONFIG_DM_I2C=y
> CONFIG_SYS_I2C_SPACEMIT_K1=y
> CONFIG_MISC=y
> +CONFIG_SPI_FLASH_WINBOND=y
I've also tested on com260 board which use GD25LQ64C chip, same 8MiB
but need to enable CONFIG_SPI_FLASH_GIGADEVICE=y, the patch 2/2 also
works on com260, so I'd suggest to make the commit message slightly
more generic? not specific for Pico-ITX board
--
Yixun Lan (dlan)
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] configs: spacemit: k3: enable mtdparts on Pico-ITX in main app
2026-10-21 7:56 ` Yixun Lan
@ 2026-10-21 14:35 ` E Shattow
2026-10-22 0:57 ` Yixun Lan
0 siblings, 1 reply; 11+ messages in thread
From: E Shattow @ 2026-10-21 14:35 UTC (permalink / raw)
To: Yixun Lan; +Cc: u-boot, Tom Rini
Hi Yixun,
On 10/21/26 00:56, Yixun Lan wrote:
> Hi E Shattow,
>
>
> On 12:51 Tue 20 Oct , E Shattow wrote:
>> add default mtdparts and mtdids consistent with k3-pico-itx.dts
>>
>> Signed-off-by: E Shattow <e@freeshell.de>
>> ---
>> configs/spacemit_k3_defconfig | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/configs/spacemit_k3_defconfig b/configs/spacemit_k3_defconfig
>> index b333e708d01b..2ca912556a88 100644
>> --- a/configs/spacemit_k3_defconfig
>> +++ b/configs/spacemit_k3_defconfig
>> @@ -26,6 +26,7 @@ CONFIG_SYS_PBSIZE=276
>> CONFIG_HUSH_PARSER=y
>> CONFIG_CMD_GPIO=y
>> CONFIG_CMD_I2C=y
>> +CONFIG_CMD_MTD=y
>> CONFIG_CMD_DHCP=y
>> CONFIG_CMD_DNS=y
>> CONFIG_CMD_MII=y
>> @@ -36,6 +37,9 @@ CONFIG_CMD_PMIC=y
>> CONFIG_CMD_REGULATOR=y
>> CONFIG_CMD_FAT=y
>> CONFIG_CMD_FS_GENERIC=y
>> +CONFIG_CMD_MTDPARTS=y
>> +CONFIG_MTDIDS_DEFAULT="nor0=spi0.0"
>> +CONFIG_MTDPARTS_DEFAULT="spi0.0:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)"
> or make it more specific? s/spi0.0/d420c000.spi/
Yes and no, I do prefer an automatic layout (and layout name) be
generated from device tree at runtime. I guess that may possibly become
"qspi.flash0", or "fdt.soc.d420c000.spi.qspi.flash.0", etc.
The output of 'mtd list' tells us the parent:
=> mtd list
List of MTD devices:
* nor0
- device: flash@0
- parent: spi@d420c000
Also, then, the output of 'mtdparts' tells us the partition layout:
=> mtdpart
device nor0 <spi0.0>, # parts = 6
#: name size offset mask_flags
0: bootinfo 0x00020000 0x00000000 0
1: fsbl 0x00080000 0x00020000 0
2: env 0x00010000 0x000a0000 0
3: esos 0x00100000 0x000b0000 0
4: opensbi 0x00060000 0x001b0000 0
5: uboot 0x005f0000 0x00210000 0
active partition: nor0,0 - (bootinfo) 0x00020000 @ 0x00000000
defaults:
mtdids : nor0=spi0.0
mtdparts:
spi0.0:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)
I consider the partition layout identifier style as you suggest:
$ egrep --exclude-dir=.git -or 'mtdparts=[^ ]+)' | cut -d: -f2 | sort |
uniq -c | egrep -v '[0-9a-fA-F]{7}' | sort -k1,1 -n
...
3 mtdparts=nand_mtd
3 mtdparts=uniphier-nand.0
4 mtdparts=nand0
4 mtdparts=spi-flash.0
5 mtdparts=nor0
5 mtdparts=spi_flash
7 mtdparts=boot
7 mtdparts=omap2-nand.0
8 mtdparts=nand
11 mtdparts=nand.0
12 mtdparts=orion_nand
13 mtdparts=spi0.0
16 mtdparts=gpmi-nand
50 mtdparts=atmel_nand
$ egrep --exclude-dir=.git -or 'mtdparts=[^ ]+)' | cut -d: -f2 | sort |
uniq -c | egrep '[0-9a-fA-F]{7}' | sort -k1,1 -n
1 mtdparts=10b80000.nand.0
1 mtdparts=1fc000000.nor_flash
1 mtdparts=21e0000.qspi
1 mtdparts=30bb0000.qspi
1 mtdparts=30bb0000.spi
1 mtdparts=8000000.nand
1 mtdparts=fe000000.nor_flash
1 mtdparts=ffb90000.nand.0
1 mtdparts=mtdparts=47040000.spi.0
1 mtdparts=[mtdparts=]edb7312-nor
1 mtdparts=mtdparts=edb7312-nor
2 mtdparts=02008000.spi.1
2 mtdparts=8000000.nor
4 mtdparts=1550000.spi
4 mtdparts=1550000.spi-0
4 mtdparts=47040000.spi.0
4 mtdparts=ec000000.nor
4 mtdparts=ef000000.nor
4 mtdparts=fef000000.nor
10 mtdparts=ff705000.spi.0
16 mtdparts=60000000.nor
16 mtdparts=ff800000.flash
22 mtdparts=fe8000000.nor
For the initial patch here I instead prefer the minimal and simple style
for mtdparts layout template names and to re-use what is popular in
U-Boot source tree. The use of hexadecimal bus address for the layout
name is difficult for me to read, and not clear to me what is the
benefit to doing this manually-entered data address?
=> env print
...
mtddevnum=0
mtdids=nor0=spi0.0
mtdparts=spi0.0:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)
partition=nor0,0
...
Compared to a style of repeating the bus address:
=> env print
...
mtddevnum=0
mtdids=nor0=d420c000.spi
mtdparts=d420c000.spi:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)
partition=nor0,0
...
Let me know if you do yet prefer the bus address repeated for the name
of partition layout. I'd like to see this as part of a runtime-generated
mtdparts configuration, so anything is okay with me for the initial
manual layout here.
>
>> CONFIG_DEVICE_TREE_INCLUDES="spacemit-k3-u-boot.dtsi"
>> CONFIG_ENV_OVERWRITE=y
>> CONFIG_ENV_IS_IN_SPI_FLASH=y
>> @@ -49,6 +53,7 @@ CONFIG_DM_I2C=y
>> CONFIG_SYS_I2C_SPACEMIT_K1=y
>> CONFIG_MISC=y
>> CONFIG_SPI_FLASH_WINBOND=y
>> +CONFIG_SPI_FLASH_MTD=y
>> CONFIG_PHY_GIGE=y
>> CONFIG_DWC_ETH_QOS=y
>> CONFIG_DWC_ETH_QOS_SPACEMIT=y
>> --
>> 2.53.0
>>
>
Thanks,
-E
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] configs: spacemit: k3: enable spi nor flash in main app
2026-10-21 8:01 ` Yixun Lan
@ 2026-10-21 15:47 ` E Shattow
0 siblings, 0 replies; 11+ messages in thread
From: E Shattow @ 2026-10-21 15:47 UTC (permalink / raw)
To: Yixun Lan; +Cc: u-boot, Tim Ouyang, Leo Liang, Yao Zi, Tom Rini
Hi Yixun,
On 10/21/26 01:01, Yixun Lan wrote:
> Hi E Shattow,
>
> one more comment
>
> On 12:51 Tue 20 Oct , E Shattow wrote:
>> Enable sf command and env storage in SPI NOR flash. SPL is not yet
Okay, I will adjust the commit message. Thanks for looking at fsl_qspi.c
this is a good report to learn it will need some work.
I have carefully constructed a build of SPL from
spacemit-com/uboot-2022.10 that is reduced to a minimum of build config
options. I'll make the requested changes and send a short write-up of
how I build this reduced vendor SPL, for a baseline of testing.
>> upstream so this is only in the main app, and depends on vendor SPL for
>> clocks setup ahead of SPI NOR flash probe.
>>
>> Signed-off-by: E Shattow <e@freeshell.de>
>> ---
>> arch/riscv/cpu/k3/Kconfig | 1 +
>> configs/spacemit_k3_defconfig | 6 ++++++
>> 2 files changed, 7 insertions(+)
>>
> ..
>> CONFIG_SYSCON=y
>> @@ -44,6 +48,7 @@ CONFIG_SPACEMIT_GPIO=y
>> CONFIG_DM_I2C=y
>> CONFIG_SYS_I2C_SPACEMIT_K1=y
>> CONFIG_MISC=y
>> +CONFIG_SPI_FLASH_WINBOND=y
> I've also tested on com260 board which use GD25LQ64C chip, same 8MiB
> but need to enable CONFIG_SPI_FLASH_GIGADEVICE=y, the patch 2/2 also
> works on com260, so I'd suggest to make the commit message slightly
> more generic? not specific for Pico-ITX board
>
Great, adding this for extending support to CoM260, thank you.
-E
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] configs: spacemit: k3: enable mtdparts on Pico-ITX in main app
2026-10-21 14:35 ` E Shattow
@ 2026-10-22 0:57 ` Yixun Lan
2026-10-22 7:41 ` E Shattow
0 siblings, 1 reply; 11+ messages in thread
From: Yixun Lan @ 2026-10-22 0:57 UTC (permalink / raw)
To: E Shattow; +Cc: u-boot, Tom Rini
Hi E
On 07:35 Wed 21 Oct , E Shattow wrote:
> Hi Yixun,
>
> On 10/21/26 00:56, Yixun Lan wrote:
> > Hi E Shattow,
> >
> >
> > On 12:51 Tue 20 Oct , E Shattow wrote:
> >> add default mtdparts and mtdids consistent with k3-pico-itx.dts
> >>
> >> Signed-off-by: E Shattow <e@freeshell.de>
> >> ---
> >> configs/spacemit_k3_defconfig | 5 +++++
> >> 1 file changed, 5 insertions(+)
> >>
> >> diff --git a/configs/spacemit_k3_defconfig b/configs/spacemit_k3_defconfig
> >> index b333e708d01b..2ca912556a88 100644
> >> --- a/configs/spacemit_k3_defconfig
> >> +++ b/configs/spacemit_k3_defconfig
> >> @@ -26,6 +26,7 @@ CONFIG_SYS_PBSIZE=276
> >> CONFIG_HUSH_PARSER=y
> >> CONFIG_CMD_GPIO=y
> >> CONFIG_CMD_I2C=y
> >> +CONFIG_CMD_MTD=y
> >> CONFIG_CMD_DHCP=y
> >> CONFIG_CMD_DNS=y
> >> CONFIG_CMD_MII=y
> >> @@ -36,6 +37,9 @@ CONFIG_CMD_PMIC=y
> >> CONFIG_CMD_REGULATOR=y
> >> CONFIG_CMD_FAT=y
> >> CONFIG_CMD_FS_GENERIC=y
> >> +CONFIG_CMD_MTDPARTS=y
> >> +CONFIG_MTDIDS_DEFAULT="nor0=spi0.0"
> >> +CONFIG_MTDPARTS_DEFAULT="spi0.0:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)"
>
> > or make it more specific? s/spi0.0/d420c000.spi/
>
> Yes and no, I do prefer an automatic layout (and layout name) be
> generated from device tree at runtime. I guess that may possibly become
> "qspi.flash0", or "fdt.soc.d420c000.spi.qspi.flash.0", etc.
>
> The output of 'mtd list' tells us the parent:
>
> => mtd list
> List of MTD devices:
> * nor0
> - device: flash@0
> - parent: spi@d420c000
>
> Also, then, the output of 'mtdparts' tells us the partition layout:
>
> => mtdpart
>
> device nor0 <spi0.0>, # parts = 6
> #: name size offset mask_flags
> 0: bootinfo 0x00020000 0x00000000 0
> 1: fsbl 0x00080000 0x00020000 0
> 2: env 0x00010000 0x000a0000 0
> 3: esos 0x00100000 0x000b0000 0
> 4: opensbi 0x00060000 0x001b0000 0
> 5: uboot 0x005f0000 0x00210000 0
>
> active partition: nor0,0 - (bootinfo) 0x00020000 @ 0x00000000
>
> defaults:
> mtdids : nor0=spi0.0
> mtdparts:
> spi0.0:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)
>
> I consider the partition layout identifier style as you suggest:
>
> $ egrep --exclude-dir=.git -or 'mtdparts=[^ ]+)' | cut -d: -f2 | sort |
> uniq -c | egrep -v '[0-9a-fA-F]{7}' | sort -k1,1 -n
>
> ...
> 3 mtdparts=nand_mtd
> 3 mtdparts=uniphier-nand.0
> 4 mtdparts=nand0
> 4 mtdparts=spi-flash.0
> 5 mtdparts=nor0
> 5 mtdparts=spi_flash
> 7 mtdparts=boot
> 7 mtdparts=omap2-nand.0
> 8 mtdparts=nand
> 11 mtdparts=nand.0
> 12 mtdparts=orion_nand
> 13 mtdparts=spi0.0
> 16 mtdparts=gpmi-nand
> 50 mtdparts=atmel_nand
>
>
> $ egrep --exclude-dir=.git -or 'mtdparts=[^ ]+)' | cut -d: -f2 | sort |
> uniq -c | egrep '[0-9a-fA-F]{7}' | sort -k1,1 -n
> 1 mtdparts=10b80000.nand.0
> 1 mtdparts=1fc000000.nor_flash
> 1 mtdparts=21e0000.qspi
> 1 mtdparts=30bb0000.qspi
> 1 mtdparts=30bb0000.spi
> 1 mtdparts=8000000.nand
> 1 mtdparts=fe000000.nor_flash
> 1 mtdparts=ffb90000.nand.0
> 1 mtdparts=mtdparts=47040000.spi.0
> 1 mtdparts=[mtdparts=]edb7312-nor
> 1 mtdparts=mtdparts=edb7312-nor
> 2 mtdparts=02008000.spi.1
> 2 mtdparts=8000000.nor
> 4 mtdparts=1550000.spi
> 4 mtdparts=1550000.spi-0
> 4 mtdparts=47040000.spi.0
> 4 mtdparts=ec000000.nor
> 4 mtdparts=ef000000.nor
> 4 mtdparts=fef000000.nor
> 10 mtdparts=ff705000.spi.0
> 16 mtdparts=60000000.nor
> 16 mtdparts=ff800000.flash
> 22 mtdparts=fe8000000.nor
>
>
> For the initial patch here I instead prefer the minimal and simple style
> for mtdparts layout template names and to re-use what is popular in
> U-Boot source tree. The use of hexadecimal bus address for the layout
> name is difficult for me to read, and not clear to me what is the
> benefit to doing this manually-entered data address?
>
> => env print
> ...
> mtddevnum=0
> mtdids=nor0=spi0.0
> mtdparts=spi0.0:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)
> partition=nor0,0
> ...
>
> Compared to a style of repeating the bus address:
>
> => env print
> ...
> mtddevnum=0
> mtdids=nor0=d420c000.spi
> mtdparts=d420c000.spi:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)
> partition=nor0,0
> ...
>
> Let me know if you do yet prefer the bus address repeated for the name
> of partition layout. I'd like to see this as part of a runtime-generated
> mtdparts configuration, so anything is okay with me for the initial
> manual layout here.
>
I've done a further check.. so quote from <uboot>/cmd/mtdparts.c
* mtdparts=[mtdparts=]<mtd-def>[;<mtd-def>...]
*
* <mtd-def> := <mtd-id>:<part-def>[,<part-def>...]
* <mtd-id> := unique device tag used by linux kernel to find mtd device (mtd->name)
from kernel side, check file drivers/mtd/parsers/cmdlinepart.c which
has the same format, on the linux console (if no mtdparts enabled)
# cat /sys/class/mtd/mtd0/name
d420c000.spi
so with bus address it's able to support cmdlinepart, although we
currently use ofpart, but IMO, it's correct and in case people need it
> >
> >> CONFIG_DEVICE_TREE_INCLUDES="spacemit-k3-u-boot.dtsi"
> >> CONFIG_ENV_OVERWRITE=y
> >> CONFIG_ENV_IS_IN_SPI_FLASH=y
> >> @@ -49,6 +53,7 @@ CONFIG_DM_I2C=y
> >> CONFIG_SYS_I2C_SPACEMIT_K1=y
> >> CONFIG_MISC=y
> >> CONFIG_SPI_FLASH_WINBOND=y
> >> +CONFIG_SPI_FLASH_MTD=y
> >> CONFIG_PHY_GIGE=y
> >> CONFIG_DWC_ETH_QOS=y
> >> CONFIG_DWC_ETH_QOS_SPACEMIT=y
> >> --
> >> 2.53.0
> >>
> >
>
> Thanks,
>
> -E
--
Yixun Lan (dlan)
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] configs: spacemit: k3: enable mtdparts on Pico-ITX in main app
2026-10-22 0:57 ` Yixun Lan
@ 2026-10-22 7:41 ` E Shattow
0 siblings, 0 replies; 11+ messages in thread
From: E Shattow @ 2026-10-22 7:41 UTC (permalink / raw)
To: Yixun Lan; +Cc: u-boot, Tom Rini
Hi Yixun,
On 10/21/26 17:57, Yixun Lan wrote:
> Hi E
>
> On 07:35 Wed 21 Oct , E Shattow wrote:
>> Hi Yixun,
>> ...
>> Let me know if you do yet prefer the bus address repeated for the name
>> of partition layout. I'd like to see this as part of a runtime-generated
>> mtdparts configuration, so anything is okay with me for the initial
>> manual layout here.
>>
> I've done a further check.. so quote from <uboot>/cmd/mtdparts.c
>
> * mtdparts=[mtdparts=]<mtd-def>[;<mtd-def>...]
> *
> * <mtd-def> := <mtd-id>:<part-def>[,<part-def>...]
> * <mtd-id> := unique device tag used by linux kernel to find mtd device (mtd->name)
>
> from kernel side, check file drivers/mtd/parsers/cmdlinepart.c which
> has the same format, on the linux console (if no mtdparts enabled)
Have a look also at comments in Linux function atmel_nand_attach_chip():
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/mtd/nand/raw/atmel/nand-controller.c#n2008
"We keep the MTD name unchanged to avoid breaking platforms where the
MTD cmdline parser is used and the bootloader has not been updated to
use the new naming scheme."
"If the new bindings are used and the bootloader has not been updated to
pass a new mtdparts parameter on the cmdline, you should define the
following property in your nand node:"
label = "atmel_nand";
"This way, mtd->name will be set by the core when nand_set_flash_node()
is called."
The examples I can find of CONFIG_BOOTARGS in U-Boot source tree are:
1 mtdparts=mtdparts=atmel_nand
1 mtdparts=s3c-onenand
2 mtdparts=1550000.spi
2 mtdparts=1550000.spi-0
6 mtdparts=60000000.nor
45 mtdparts=atmel_nand
>
> # cat /sys/class/mtd/mtd0/name
> d420c000.spi
>
> so with bus address it's able to support cmdlinepart, although we
> currently use ofpart, but IMO, it's correct and in case people need it
Yes, although I will be clear to say this is some form of Linux
dev_name() and not the bus address, if that is yet a correct thing to
say. I'm only sure to confirm what you describe by running a build of
mainline Linux kernel with this configuration. For example:
# With StarFive JH-7110 SoC and mtdparts test Linux kernel
$ cat /sys/class/mtd/mtd0/name
13010000.spi.0
# With SpacemiT K3 SoC and mtdparts test Linux kernel
$ cat /sys/class/mtd/mtd0/name
d420c000.spi
If mtdparts=spi0.0... is on the commandline then it is not matched. Else
I use instead of spi0.0 the form of dev_name() as alluded to in the
mdtparts.c code then I do see the partitions appear in /proc/mtd
I would like to make a more exact description of where in mainline Linux
code that causes "d420c000.spi" (is this exactly the dev_name? and from
what code?) but it is at least enough for me now to confirm the effect
it has in testing and how to get this outcome without guessing.
Thanks again, and I'll send the requested changes shortly,
-E
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-10-22 7:41 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-20 19:51 [PATCH 0/2] Enable SPI NOR flash for SpacemiT K3 in main app E Shattow
2026-10-20 19:51 ` [PATCH 1/2] configs: spacemit: k3: enable spi nor flash " E Shattow
2026-10-21 7:13 ` Yixun Lan
2026-10-21 7:37 ` E Shattow
2026-10-21 8:01 ` Yixun Lan
2026-10-21 15:47 ` E Shattow
2026-10-20 19:51 ` [PATCH 2/2] configs: spacemit: k3: enable mtdparts on Pico-ITX " E Shattow
2026-10-21 7:56 ` Yixun Lan
2026-10-21 14:35 ` E Shattow
2026-10-22 0:57 ` Yixun Lan
2026-10-22 7:41 ` E Shattow
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.