[PATCH v2 01/12] rockchip: spl: Add common handling of USB bootsource_id 0x81
Kever Yang
kever.yang at rock-chips.com
Mon Mar 9 04:02:53 CET 2026
On 2026/2/1 07:38, Jonas Karlman wrote:
> 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>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>
Thanks,
- Kever
> ---
> 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)
More information about the U-Boot
mailing list