[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