[PATCH v2 0/4] rockchip: rk3588: Fix SPI flash bootsource id values

The commit fd6e425be243 ("rockchip: rk3588-rock-5b: Enable boot from SPI NOR flash") added a new BROM_BOOTSOURCE_SPINOR_RK3588 with value 6.
At the time the reason for this new bootsource id value 6 was unknown.
Since then the following bootsource id values have been observed on different RK3588 devices:
- Radxa ROCK 5 Model A - fspim0_pins - rk3588s - Xunlong Orange Pi 5 - fspim0_pins - rk3588s brom_bootdevice_id: 3
- FriendlyElec NanoPC-T6 - fspim1_pins - rk3588 - Xunlong Orange Pi 5 Plus - fspim1_pins - rk3588 brom_bootdevice_id: 4
- Radxa ROCK 5 Model B - fspim2_pins - rk3588 brom_bootdevice_id: 6
It has now been confirmed that the BootRom on RK3588 use different bootsource id values depending on the iomux used by the flash spi controller, and not by the type of spi nor or spi nand flash used.
This series adjusts the bootsource enum values, updates the boot_devices array to fix booting from SPI flash on RK3588 devices using fspim1_pins. It also enable building of a bootable SPI image for affected devices.
Changes in v2: - Move FSPI M0/M1/M2 enum values from bootrom.h to rk3588.c - Add t-b tag
John Clark (1): rockchip: rk3588-nanopc-t6: Build SPI image
Jonas Karlman (2): rockchip: rk3588: Fix boot from SPI flash rockchip: rk3588s-orangepi-5: Build SPI image
Slawomir Stepien (1): rockchip: rk3588-orangepi-5-plus: Build SPI image
arch/arm/include/asm/arch-rockchip/bootrom.h | 1 - arch/arm/mach-rockchip/rk3588/rk3588.c | 16 ++++++++++++++-- configs/nanopc-t6-rk3588_defconfig | 1 + configs/orangepi-5-plus-rk3588_defconfig | 1 + configs/orangepi-5-rk3588s_defconfig | 1 + 5 files changed, 17 insertions(+), 3 deletions(-)

The commit fd6e425be243 ("rockchip: rk3588-rock-5b: Enable boot from SPI NOR flash") added a new BROM_BOOTSOURCE_SPINOR_RK3588 with value 6.
At the time the reason for this new bootsource id value 6 was unknown.
We now know that the BootRom on RK3588 use different bootsource id values depending on the iomux used by the flash spi controller, and not by the type of spi nor or spi nand flash used.
Add the following enum values and use them for RK3588 boot_devices.
- BROM_BOOTSOURCE_FSPI_M0 = 3 - BROM_BOOTSOURCE_FSPI_M1 = 4 - BROM_BOOTSOURCE_FSPI_M2 = 6
Fixes: fd6e425be243 ("rockchip: rk3588-rock-5b: Enable boot from SPI NOR flash") Signed-off-by: Jonas Karlman jonas@kwiboo.se Tested-by: Slawomir Stepien sst@poczta.fm --- v2: - Move FSPI M0/M1/M2 enum values from bootrom.h to rk3588.c - Add t-b tag
arch/arm/include/asm/arch-rockchip/bootrom.h | 1 - arch/arm/mach-rockchip/rk3588/rk3588.c | 16 ++++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/arch/arm/include/asm/arch-rockchip/bootrom.h b/arch/arm/include/asm/arch-rockchip/bootrom.h index 7dab18fbc3fb..4276a0f6811a 100644 --- a/arch/arm/include/asm/arch-rockchip/bootrom.h +++ b/arch/arm/include/asm/arch-rockchip/bootrom.h @@ -48,7 +48,6 @@ enum { BROM_BOOTSOURCE_SPINOR = 3, BROM_BOOTSOURCE_SPINAND = 4, BROM_BOOTSOURCE_SD = 5, - BROM_BOOTSOURCE_SPINOR_RK3588 = 6, BROM_BOOTSOURCE_USB = 10, BROM_LAST_BOOTSOURCE = BROM_BOOTSOURCE_USB }; diff --git a/arch/arm/mach-rockchip/rk3588/rk3588.c b/arch/arm/mach-rockchip/rk3588/rk3588.c index b1f535fad505..7b0349ec2577 100644 --- a/arch/arm/mach-rockchip/rk3588/rk3588.c +++ b/arch/arm/mach-rockchip/rk3588/rk3588.c @@ -37,11 +37,23 @@ DECLARE_GLOBAL_DATA_PTR; #define BUS_IOC_GPIO2D_IOMUX_SEL_H 0x5c #define BUS_IOC_GPIO3A_IOMUX_SEL_L 0x60
+/** + * Boot-device identifiers used by the BROM on RK3588 when device is booted + * from SPI flash. IOMUX used for SPI flash affect the value used by the BROM + * and not the type of SPI flash used. + */ +enum { + BROM_BOOTSOURCE_FSPI_M0 = 3, + BROM_BOOTSOURCE_FSPI_M1 = 4, + BROM_BOOTSOURCE_FSPI_M2 = 6, +}; + const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { [BROM_BOOTSOURCE_EMMC] = "/mmc@fe2e0000", - [BROM_BOOTSOURCE_SPINOR] = "/spi@fe2b0000/flash@0", + [BROM_BOOTSOURCE_FSPI_M0] = "/spi@fe2b0000/flash@0", + [BROM_BOOTSOURCE_FSPI_M1] = "/spi@fe2b0000/flash@0", + [BROM_BOOTSOURCE_FSPI_M2] = "/spi@fe2b0000/flash@0", [BROM_BOOTSOURCE_SD] = "/mmc@fe2c0000", - [BROM_BOOTSOURCE_SPINOR_RK3588] = "/spi@fe2b0000/flash@0", };
static struct mm_region rk3588_mem_map[] = {

On 2023/11/18 07:24, Jonas Karlman wrote:
The commit fd6e425be243 ("rockchip: rk3588-rock-5b: Enable boot from SPI NOR flash") added a new BROM_BOOTSOURCE_SPINOR_RK3588 with value 6.
At the time the reason for this new bootsource id value 6 was unknown.
We now know that the BootRom on RK3588 use different bootsource id values depending on the iomux used by the flash spi controller, and not by the type of spi nor or spi nand flash used.
Add the following enum values and use them for RK3588 boot_devices.
- BROM_BOOTSOURCE_FSPI_M0 = 3
- BROM_BOOTSOURCE_FSPI_M1 = 4
- BROM_BOOTSOURCE_FSPI_M2 = 6
Fixes: fd6e425be243 ("rockchip: rk3588-rock-5b: Enable boot from SPI NOR flash") Signed-off-by: Jonas Karlman jonas@kwiboo.se Tested-by: Slawomir Stepien sst@poczta.fm
Reviewed-by: Kever Yang kever.yang@rock-chips.com
Thanks, - Kever
v2:
Move FSPI M0/M1/M2 enum values from bootrom.h to rk3588.c
Add t-b tag
arch/arm/include/asm/arch-rockchip/bootrom.h | 1 - arch/arm/mach-rockchip/rk3588/rk3588.c | 16 ++++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/arch/arm/include/asm/arch-rockchip/bootrom.h b/arch/arm/include/asm/arch-rockchip/bootrom.h index 7dab18fbc3fb..4276a0f6811a 100644 --- a/arch/arm/include/asm/arch-rockchip/bootrom.h +++ b/arch/arm/include/asm/arch-rockchip/bootrom.h @@ -48,7 +48,6 @@ enum { BROM_BOOTSOURCE_SPINOR = 3, BROM_BOOTSOURCE_SPINAND = 4, BROM_BOOTSOURCE_SD = 5,
- BROM_BOOTSOURCE_SPINOR_RK3588 = 6, BROM_BOOTSOURCE_USB = 10, BROM_LAST_BOOTSOURCE = BROM_BOOTSOURCE_USB };
diff --git a/arch/arm/mach-rockchip/rk3588/rk3588.c b/arch/arm/mach-rockchip/rk3588/rk3588.c index b1f535fad505..7b0349ec2577 100644 --- a/arch/arm/mach-rockchip/rk3588/rk3588.c +++ b/arch/arm/mach-rockchip/rk3588/rk3588.c @@ -37,11 +37,23 @@ DECLARE_GLOBAL_DATA_PTR; #define BUS_IOC_GPIO2D_IOMUX_SEL_H 0x5c #define BUS_IOC_GPIO3A_IOMUX_SEL_L 0x60
+/**
- Boot-device identifiers used by the BROM on RK3588 when device is booted
- from SPI flash. IOMUX used for SPI flash affect the value used by the BROM
- and not the type of SPI flash used.
- */
+enum {
- BROM_BOOTSOURCE_FSPI_M0 = 3,
- BROM_BOOTSOURCE_FSPI_M1 = 4,
- BROM_BOOTSOURCE_FSPI_M2 = 6,
+};
- const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { [BROM_BOOTSOURCE_EMMC] = "/mmc@fe2e0000",
- [BROM_BOOTSOURCE_SPINOR] = "/spi@fe2b0000/flash@0",
- [BROM_BOOTSOURCE_FSPI_M0] = "/spi@fe2b0000/flash@0",
- [BROM_BOOTSOURCE_FSPI_M1] = "/spi@fe2b0000/flash@0",
- [BROM_BOOTSOURCE_FSPI_M2] = "/spi@fe2b0000/flash@0", [BROM_BOOTSOURCE_SD] = "/mmc@fe2c0000",
[BROM_BOOTSOURCE_SPINOR_RK3588] = "/spi@fe2b0000/flash@0", };
static struct mm_region rk3588_mem_map[] = {

From: John Clark inindev@gmail.com
Enable building of the SPI image, u-boot-rockchip-spi.bin, now that we know what bootsource id values BootRom use for SPI flash on RK3588.
Fixes: b0b8086898f8 ("board: rockchip: add FriendlyElec NanoPC-T6 rk3588 board") Signed-off-by: John Clark inindev@gmail.com Signed-off-by: Jonas Karlman jonas@kwiboo.se --- v2: - No change
configs/nanopc-t6-rk3588_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/nanopc-t6-rk3588_defconfig b/configs/nanopc-t6-rk3588_defconfig index 070399ce2a86..daa13a4ffff8 100644 --- a/configs/nanopc-t6-rk3588_defconfig +++ b/configs/nanopc-t6-rk3588_defconfig @@ -14,6 +14,7 @@ CONFIG_SF_DEFAULT_MODE=0x2000 CONFIG_DEFAULT_DEVICE_TREE="rk3588-nanopc-t6" CONFIG_ROCKCHIP_RK3588=y CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y +CONFIG_ROCKCHIP_SPI_IMAGE=y CONFIG_SPL_SERIAL=y CONFIG_SPL_STACK_R_ADDR=0x600000 CONFIG_TARGET_NANOPCT6_RK3588=y

On 2023/11/18 07:24, Jonas Karlman wrote:
From: John Clark inindev@gmail.com
Enable building of the SPI image, u-boot-rockchip-spi.bin, now that we know what bootsource id values BootRom use for SPI flash on RK3588.
Fixes: b0b8086898f8 ("board: rockchip: add FriendlyElec NanoPC-T6 rk3588 board") Signed-off-by: John Clark inindev@gmail.com Signed-off-by: Jonas Karlman jonas@kwiboo.se
Reviewed-by: Kever Yang kever.yang@rock-chips.com
Thanks, - Kever
v2:
No change
configs/nanopc-t6-rk3588_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/nanopc-t6-rk3588_defconfig b/configs/nanopc-t6-rk3588_defconfig index 070399ce2a86..daa13a4ffff8 100644 --- a/configs/nanopc-t6-rk3588_defconfig +++ b/configs/nanopc-t6-rk3588_defconfig @@ -14,6 +14,7 @@ CONFIG_SF_DEFAULT_MODE=0x2000 CONFIG_DEFAULT_DEVICE_TREE="rk3588-nanopc-t6" CONFIG_ROCKCHIP_RK3588=y CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y +CONFIG_ROCKCHIP_SPI_IMAGE=y CONFIG_SPL_SERIAL=y CONFIG_SPL_STACK_R_ADDR=0x600000 CONFIG_TARGET_NANOPCT6_RK3588=y

From: Slawomir Stepien sst@poczta.fm
Enable building of the SPI image, u-boot-rockchip-spi.bin, now that we know what bootsource id values BootRom use for SPI flash on RK3588.
Fixes: b51cf8bb09b6 ("board: rockchip: Add Xunlong Orange Pi 5 Plus") Signed-off-by: Slawomir Stepien sst@poczta.fm Signed-off-by: Jonas Karlman jonas@kwiboo.se --- v2: - No change
configs/orangepi-5-plus-rk3588_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/orangepi-5-plus-rk3588_defconfig b/configs/orangepi-5-plus-rk3588_defconfig index 04736996217e..e1cd753a6d18 100644 --- a/configs/orangepi-5-plus-rk3588_defconfig +++ b/configs/orangepi-5-plus-rk3588_defconfig @@ -14,6 +14,7 @@ CONFIG_SF_DEFAULT_MODE=0x2000 CONFIG_DEFAULT_DEVICE_TREE="rk3588-orangepi-5-plus" CONFIG_ROCKCHIP_RK3588=y CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y +CONFIG_ROCKCHIP_SPI_IMAGE=y CONFIG_SPL_SERIAL=y CONFIG_SPL_STACK_R_ADDR=0x600000 CONFIG_TARGET_EVB_RK3588=y

On 2023/11/18 07:24, Jonas Karlman wrote:
From: Slawomir Stepien sst@poczta.fm
Enable building of the SPI image, u-boot-rockchip-spi.bin, now that we know what bootsource id values BootRom use for SPI flash on RK3588.
Fixes: b51cf8bb09b6 ("board: rockchip: Add Xunlong Orange Pi 5 Plus") Signed-off-by: Slawomir Stepien sst@poczta.fm Signed-off-by: Jonas Karlman jonas@kwiboo.se
Reviewed-by: Kever Yang kever.yang@rock-chips.com
Thanks, - Kever
v2:
No change
configs/orangepi-5-plus-rk3588_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/orangepi-5-plus-rk3588_defconfig b/configs/orangepi-5-plus-rk3588_defconfig index 04736996217e..e1cd753a6d18 100644 --- a/configs/orangepi-5-plus-rk3588_defconfig +++ b/configs/orangepi-5-plus-rk3588_defconfig @@ -14,6 +14,7 @@ CONFIG_SF_DEFAULT_MODE=0x2000 CONFIG_DEFAULT_DEVICE_TREE="rk3588-orangepi-5-plus" CONFIG_ROCKCHIP_RK3588=y CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y +CONFIG_ROCKCHIP_SPI_IMAGE=y CONFIG_SPL_SERIAL=y CONFIG_SPL_STACK_R_ADDR=0x600000 CONFIG_TARGET_EVB_RK3588=y

Enable building of the SPI image, u-boot-rockchip-spi.bin, now that we know what bootsource id values BootRom use for SPI flash on RK3588.
Fixes: 28c5f941edf7 ("board: rockchip: Add Xunlong Orange Pi 5") Signed-off-by: Jonas Karlman jonas@kwiboo.se --- v2: - No change
configs/orangepi-5-rk3588s_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/orangepi-5-rk3588s_defconfig b/configs/orangepi-5-rk3588s_defconfig index feb45a53853b..1e33c832ec67 100644 --- a/configs/orangepi-5-rk3588s_defconfig +++ b/configs/orangepi-5-rk3588s_defconfig @@ -13,6 +13,7 @@ CONFIG_SF_DEFAULT_MODE=0x2000 CONFIG_DEFAULT_DEVICE_TREE="rk3588s-orangepi-5" CONFIG_ROCKCHIP_RK3588=y CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y +CONFIG_ROCKCHIP_SPI_IMAGE=y CONFIG_SPL_SERIAL=y CONFIG_SPL_STACK_R_ADDR=0x600000 CONFIG_TARGET_EVB_RK3588=y

On 2023/11/18 07:24, Jonas Karlman wrote:
Enable building of the SPI image, u-boot-rockchip-spi.bin, now that we know what bootsource id values BootRom use for SPI flash on RK3588.
Fixes: 28c5f941edf7 ("board: rockchip: Add Xunlong Orange Pi 5") Signed-off-by: Jonas Karlman jonas@kwiboo.se
Reviewed-by: Kever Yang kever.yang@rock-chips.com
Thanks, - Kever
v2:
No change
configs/orangepi-5-rk3588s_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/orangepi-5-rk3588s_defconfig b/configs/orangepi-5-rk3588s_defconfig index feb45a53853b..1e33c832ec67 100644 --- a/configs/orangepi-5-rk3588s_defconfig +++ b/configs/orangepi-5-rk3588s_defconfig @@ -13,6 +13,7 @@ CONFIG_SF_DEFAULT_MODE=0x2000 CONFIG_DEFAULT_DEVICE_TREE="rk3588s-orangepi-5" CONFIG_ROCKCHIP_RK3588=y CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y +CONFIG_ROCKCHIP_SPI_IMAGE=y CONFIG_SPL_SERIAL=y CONFIG_SPL_STACK_R_ADDR=0x600000 CONFIG_TARGET_EVB_RK3588=y
participants (2)
-
Jonas Karlman
-
Kever Yang