[PATCH v2 01/12] rockchip: spl: Add common handling of USB bootsource_id 0x81

Jonas Karlman jonas at kwiboo.se
Sun Feb 1 00:38:12 CET 2026


Multiple newer Rockchip SoCs report 0x81 instead of 0xa when booting
from USB, i.e. on RK3576, RK3528, RK3506 and RV1106.

Move the bootsource_id 0x81 handling currently only used for RK3528 to
the common read_brom_bootsource_id() to reduce the need to override this
function when support for newer SoCs is introduced.

Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
---
v2: New patch
---
 arch/arm/mach-rockchip/rk3528/rk3528.c | 15 ---------------
 arch/arm/mach-rockchip/spl.c           | 12 +++++++++++-
 2 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/arch/arm/mach-rockchip/rk3528/rk3528.c b/arch/arm/mach-rockchip/rk3528/rk3528.c
index 57ead0006f1f..f9bfc445b857 100644
--- a/arch/arm/mach-rockchip/rk3528/rk3528.c
+++ b/arch/arm/mach-rockchip/rk3528/rk3528.c
@@ -49,21 +49,6 @@ void board_debug_uart_init(void)
 {
 }
 
-u32 read_brom_bootsource_id(void)
-{
-	u32 bootsource_id = readl(BROM_BOOTSOURCE_ID_ADDR);
-
-	/* Re-map the raw value read from reg to an existing BROM_BOOTSOURCE
-	 * enum value to avoid having to create a larger boot_devices table.
-	 */
-	if (bootsource_id == 0x81)
-		return BROM_BOOTSOURCE_USB;
-	else if (bootsource_id > BROM_LAST_BOOTSOURCE)
-		log_debug("Unknown bootsource %x\n", bootsource_id);
-
-	return bootsource_id;
-}
-
 int arch_cpu_init(void)
 {
 	u32 val;
diff --git a/arch/arm/mach-rockchip/spl.c b/arch/arm/mach-rockchip/spl.c
index a9155dceedb4..e989c148079a 100644
--- a/arch/arm/mach-rockchip/spl.c
+++ b/arch/arm/mach-rockchip/spl.c
@@ -35,7 +35,17 @@ __weak const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
 
 __weak u32 read_brom_bootsource_id(void)
 {
-	return readl(BROM_BOOTSOURCE_ID_ADDR);
+	u32 bootsource_id = readl(BROM_BOOTSOURCE_ID_ADDR);
+
+	/* Re-map the raw value read from reg to an existing BROM_BOOTSOURCE
+	 * enum value to avoid having to create a larger boot_devices table.
+	 */
+	if (bootsource_id == 0x81)
+		return BROM_BOOTSOURCE_USB;
+	else if (bootsource_id > BROM_LAST_BOOTSOURCE)
+		log_debug("Unknown bootsource %x\n", bootsource_id);
+
+	return bootsource_id;
 }
 
 const char *board_spl_was_booted_from(void)
-- 
2.52.0



More information about the U-Boot mailing list