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 <[email protected]> --- 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
