[PATCH/RFC] rockchip: derive GPIO bank from alias if available

Simon Glass sjg at chromium.org
Tue Jul 26 21:53:44 CEST 2022


Hi John,

On Tue, 26 Jul 2022 at 10:25, John Keeping <john at metanate.com> wrote:
>
> Upstream device trees now use standard node names like "gpio at ff..." but
> the rk_gpio driver expects a name like "gpio0 at ff..." (note the index
> before the @).
>
> This is not a change that can be made in a -u-boot.dtsi file, so
> updating to the latest upstream device trees requires updating the
> driver.
>
> When a sequence number is given explicitly via an alias it makes sense
> to use this for the bank number (and aliases can be added via
> -u-boot.dtsi when they are not present upstream), so make this the
> preferred scheme for assigning a bank index, falling back to the current
> method if no alias is defined.
>
> Signed-off-by: John Keeping <john at metanate.com>
> ---
> I'm not sure if it would be better just to use dev_seq(dev)
> unconditionally here.  If no aliases are defined, then the device tree
> nodes are in the right order for all Rockchip SoCs anyway so the
> sequence numbers will be sensible.

Well dev_seq() should now match the alias numbers if provided, so it
seems better.

>
> But this feels like the change with less risk of unintentionally
> introducing a regression.
>
>  drivers/gpio/rk_gpio.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpio/rk_gpio.c b/drivers/gpio/rk_gpio.c
> index 68f30157a9..b2f6d0e925 100644
> --- a/drivers/gpio/rk_gpio.c
> +++ b/drivers/gpio/rk_gpio.c
> @@ -151,8 +151,13 @@ static int rockchip_gpio_probe(struct udevice *dev)
>                 return ret;
>
>         uc_priv->gpio_count = ROCKCHIP_GPIOS_PER_BANK;
> -       end = strrchr(dev->name, '@');
> -       priv->bank = trailing_strtoln(dev->name, end);
> +
> +       ret = dev_read_alias_seq(dev, &priv->bank);
> +       if (ret) {
> +               end = strrchr(dev->name, '@');
> +               priv->bank = trailing_strtoln(dev->name, end);
> +       }
> +
>         priv->name[0] = 'A' + priv->bank;
>         uc_priv->bank_name = priv->name;
>
> --
> 2.37.1
>

Regards,
Simon


More information about the U-Boot mailing list