]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
gpio: rockchip: Use gpio alias id as gpio bank id
authorJonas Karlman <jonas@kwiboo.se>
Sat, 17 Feb 2024 00:22:35 +0000 (00:22 +0000)
committerKever Yang <kever.yang@rock-chips.com>
Thu, 14 Mar 2024 03:40:48 +0000 (11:40 +0800)
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@kwiboo.se>
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
drivers/gpio/rk_gpio.c

index c5e096bb1ad7d559bd5cdb02ce6ce8199f0e3245..2e901ac5c7343571b30ebdb2ef7d31640794afb3 100644 (file)
@@ -200,8 +200,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;