* [PATCH v3 1/2] configs: spacemit: k3: enable spi nor flash in main app
2026-10-22 10:38 [PATCH v3 0/2] Enable SPI NOR flash for SpacemiT K3 in main app E Shattow
@ 2026-10-22 10:38 ` E Shattow
2026-10-22 10:38 ` [PATCH v3 2/2] configs: spacemit: k3: enable mtdparts " E Shattow
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: E Shattow @ 2026-10-22 10:38 UTC (permalink / raw)
To: u-boot, Yixun Lan, 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.
Signed-off-by: E Shattow <e@freeshell.de>
---
configs/spacemit_k3_defconfig | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/configs/spacemit_k3_defconfig b/configs/spacemit_k3_defconfig
index 586305c62322..afe3a3b42939 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,8 @@ CONFIG_SPACEMIT_GPIO=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_SPACEMIT_K1=y
CONFIG_MISC=y
+CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_FLASH_WINBOND=y
CONFIG_PHY_GIGE=y
CONFIG_DWC_ETH_QOS=y
CONFIG_DWC_ETH_QOS_SPACEMIT=y
@@ -61,4 +67,6 @@ CONFIG_DEBUG_UART_SHIFT=2
CONFIG_DEBUG_UART_ANNOUNCE=y
CONFIG_SYS_NS16550=y
CONFIG_SYS_NS16550_MEM32=y
+CONFIG_SPI=y
+CONFIG_FSL_QSPI=y
CONFIG_TIMER_EARLY=y
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v3 2/2] configs: spacemit: k3: enable mtdparts in main app
2026-10-22 10:38 [PATCH v3 0/2] Enable SPI NOR flash for SpacemiT K3 in main app E Shattow
2026-10-22 10:38 ` [PATCH v3 1/2] configs: spacemit: k3: enable spi nor flash " E Shattow
@ 2026-10-22 10:38 ` E Shattow
2026-10-22 11:20 ` [PATCH v3 0/2] Enable SPI NOR flash for SpacemiT K3 " Yixun Lan
2026-10-23 1:14 ` Yixun Lan
3 siblings, 0 replies; 5+ messages in thread
From: E Shattow @ 2026-10-22 10:38 UTC (permalink / raw)
To: u-boot, Yixun Lan, Tom Rini; +Cc: E Shattow
add default mtdids and mtdparts consistent with Linux v7.3 FSL QSPI "new"
driver .get_name() handler fsl_qspi_get_name() and k3-pico-itx.dts
Signed-off-by: E Shattow <e@freeshell.de>
---
Write-up about testing methodology and the decision of what how
MTDIDS_DEFAULT is written for compatibility, follows.
With Debian 13 Trixie Linux as a baseline distro and build Linux v7.3:
tar Jxf /usr/src/linux-source-7.3.tar.xz && cd linux-source-7.3
xzcat /usr/src/linux-config-7.2/config.riscv64_none_riscv64.xz > .config
scripts/config --enable DEBUG_INFO_NONE --undefine CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
scripts/config --set-val CMDLINE_PARTITION y --set-val MTD y --set-val MTD_BLOCK y --set-val MTD_CMDLINE_PARTS y --set-val MTD_OF_PARTS n
make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- olddefconfig
make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- KDEB_CHANGELOG_DIST=unreleased -j$(nproc) bindeb-pkg LOCALVERSION=-mtdparts
# K3 append linux cmdline: mtdparts=
Loading Linux 7.3.0-rc7-mtdparts ...
Loading initial ramdisk ...
Removing MTD device #0 (nor0) with use count 1
[ 9.946726] mtd: no mtd-id
$ cat /sys/class/mtd/mtd0/name /proc/mtd
d420c000.spi
dev: size erasesize name
mtd0: 00800000 00001000 "d420c000.spi"
# K3 append linux cmdline: mtdparts=spi0.0:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)
Loading Linux 7.3.0-rc7-mtdparts ...
Loading initial ramdisk ...
Removing MTD device #0 (nor0) with use count 1
$ cat /sys/class/mtd/mtd0/name /proc/mtd
d420c000.spi
dev: size erasesize name
mtd0: 00800000 00001000 "d420c000.spi"
# K3 append linux cmdline: mtdparts=d420c000.spi:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)
Loading Linux 7.3.0-rc7-mtdparts ...
Loading initial ramdisk ...
Removing MTD device #0 (nor0) with use count 1
$ cat /sys/class/mtd/mtd0/name /proc/mtd
bootinfo
dev: size erasesize name
mtd0: 00020000 00001000 "bootinfo"
mtd1: 00080000 00001000 "fsbl"
mtd2: 00010000 00001000 "env"
mtd3: 00100000 00001000 "esos"
mtd4: 00060000 00001000 "opensbi"
mtd5: 005f0000 00001000 "uboot"
# JH-7110 append linux cmdline: mtdparts=
Loading Linux 7.3.0-rc7-mtdparts ...
Loading initial ramdisk ...
[ 16.626705] mtd: no mtd-id
$ cat /sys/class/mtd/mtd0/name /proc/mtd
13010000.spi.0
dev: size erasesize name
mtd0: 01000000 00001000 "13010000.spi.0"
# JH-7110 append linux cmdline: mtdparts=spi0.0:960k(spl),64k(uboot-env),-(uboot)
Loading Linux 7.3.0-rc7-mtdparts ...
Loading initial ramdisk ...
$ cat /sys/class/mtd/mtd0/name /proc/mtd
13010000.spi.0
dev: size erasesize name
mtd0: 01000000 00001000 "13010000.spi.0"
# JH-7110 append linux cmdline: mtdparts=13010000.spi:960k(spl),64k(uboot-env),-(uboot)
Loading Linux 7.3.0-rc7-mtdparts ...
Loading initial ramdisk ...
$ cat /sys/class/mtd/mtd0/name /proc/mtd
13010000.spi.0
dev: size erasesize name
mtd0: 01000000 00001000 "13010000.spi.0"
# JH-7110 append linux cmdline: mtdparts=13010000.spi.0:960k(spl),64k(uboot-env),-(uboot)
Loading Linux 7.3.0-rc7-mtdparts ...
Loading initial ramdisk ...
$ cat /sys/class/mtd/mtd0/name /proc/mtd
spl
dev: size erasesize name
mtd0: 000f0000 00001000 "spl"
mtd1: 00010000 00001000 "uboot-env"
mtd2: 00f00000 00001000 "uboot"
# K3
$ ls -d /sys/bus/platform/drivers/*/*/spi_master
/sys/bus/platform/drivers/fsl-quadspi/d420c000.spi/spi_master
# JH-7110
$ ls -d /sys/bus/platform/drivers/*/*/spi_master
/sys/bus/platform/drivers/cadence-qspi/13010000.spi/spi_master
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/spi/spi-fsl-qspi.c?h=v7.3#n840
static const char *fsl_qspi_get_name(struct spi_mem *mem)
{
struct fsl_qspi *q = spi_controller_get_devdata(mem->spi->controller);
struct device *dev = &mem->spi->dev;
const char *name;
/*
* In order to keep mtdparts compatible with the old MTD driver at
* mtd/spi-nor/fsl-quadspi.c, we set a custom name derived from the
* platform_device of the controller.
*/
if (of_get_available_child_count(q->dev->of_node) == 1)
return dev_name(q->dev);
name = devm_kasprintf(dev, GFP_KERNEL,
"%s-%d", dev_name(q->dev),
spi_get_chipselect(mem->spi, 0));
if (!name) {
dev_err(dev, "failed to get memory for custom flash name\n");
return ERR_PTR(-ENOMEM);
}
return name;
}
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/spi/spi-cadence-quadspi.c?h=v7.3#n1724
static const char *cqspi_get_name(struct spi_mem *mem)
{
struct cqspi_st *cqspi = spi_controller_get_devdata(mem->spi->controller);
struct device *dev = &cqspi->pdev->dev;
return devm_kasprintf(dev, GFP_KERNEL, "%s.%d", dev_name(dev),
spi_get_chipselect(mem->spi, 0));
}
In summary of the above, for compatibility with certain non-default use
of 'mtdparts=' on kernel commandline we look to what each Linux driver
returns for its assigned .dev_name() handler, as the mtd-id name.
-E
---
configs/spacemit_k3_defconfig | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/configs/spacemit_k3_defconfig b/configs/spacemit_k3_defconfig
index afe3a3b42939..f9408663619f 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=d420c000.spi"
+CONFIG_MTDPARTS_DEFAULT="d420c000.spi: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
@@ -50,6 +54,7 @@ CONFIG_SYS_I2C_SPACEMIT_K1=y
CONFIG_MISC=y
CONFIG_SPI_FLASH_GIGADEVICE=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] 5+ messages in thread