[PATCH v2 09/15] gpio: rockchip: Use gpio alias id as gpio bank id

Kever Yang kever.yang at rock-chips.com
Thu Mar 14 04:30:24 CET 2024


On 2024/2/17 08:22, Jonas Karlman wrote:
> The U-Boot driver try to base the gpio bank id on the gpio-ranges prop
> and fall back to base the bank id on the node name. However, the linux
> driver try to base the bank id on the gpio alias id and fall back on
> node order.
>
> This can cause issues when SoC DT is synced from linux and gpioX@ nodes
> has been renamed to gpio@ and gpio-ranges or a SoC specific alias has
> not been assigned.
>
> Try to use the gpio alias id as first fallback when a gpio-ranges prop
> is missing to ease sync of updated SoC DT. Keep the current fallback on
> node name as a third fallback to not affect any existing unsynced DT.
>
> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>

Thanks,
- Kever
> ---
> v2:
> - No change
> ---
>   drivers/gpio/rk_gpio.c | 7 +++++--
>   1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpio/rk_gpio.c b/drivers/gpio/rk_gpio.c
> index 4a6ae554bf78..24fedd456353 100644
> --- a/drivers/gpio/rk_gpio.c
> +++ b/drivers/gpio/rk_gpio.c
> @@ -201,8 +201,11 @@ static int rockchip_gpio_probe(struct udevice *dev)
>   		priv->bank = args.args[1] / ROCKCHIP_GPIOS_PER_BANK;
>   	} else {
>   		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;


More information about the U-Boot mailing list