Hi Tianling,

On 6/10/2026 5:01 AM, Tianling Shen wrote:
> rockchip_dnl_key_pressed() looks for the ADC device by checking
> whether the device name starts with "saradc".
> 
> On RK3328, RK3576, RK3588 etc., the SARADC node is named "adc@...",
> so the device name no longer has the "saradc" prefix. As a result,
> U-Boot fails to find the SARADC device and does not sample the
> download key state.
> 
> Do not rely on the DT node name. Match the bound Rockchip SARADC
> driver instead, which works for both "saradc@..." and "adc@..."
> node names.
> 
> Signed-off-by: Tianling Shen <[email protected]>
> ---
>  arch/arm/mach-rockchip/boot_mode.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-rockchip/boot_mode.c 
> b/arch/arm/mach-rockchip/boot_mode.c
> index 55e9456668ae..363fad523cbd 100644
> --- a/arch/arm/mach-rockchip/boot_mode.c
> +++ b/arch/arm/mach-rockchip/boot_mode.c
> @@ -51,7 +51,7 @@ __weak int rockchip_dnl_key_pressed(void)
>  
>       ret = -ENODEV;
>       uclass_foreach_dev(dev, uc) {
> -             if (!strncmp(dev->name, "saradc", 6)) {
> +             if (!strcmp(dev->driver->name, "rockchip_saradc")) {

The adc channel used below may not fit all boards/SoCs, so this change
may have unintended consequences.

I have previously avoided "fixing"/enable this code path for RK35xx
because the download key selection should really be improved when this
is fixed/expanded to more boards/SoCs.

E.g. maybe add support to declare a recovery button in u-boot,config
node and use UCLASS_BUTTON to check if such button was pressed or
something similar?

Regards,
Jonas

>                       ret = adc_channel_single_shot(dev->name, 1, &val);
>                       break;
>               }

Reply via email to