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

Reply via email to