[PATCH 2/3] gpio: rockchip: Use gpio alias id as gpio bank id

Jonas Karlman jonas at kwiboo.se
Sun Mar 19 00:56:58 CET 2023


Use the gpio alias id as the gpio bank id, same as in the linux driver.

This reverts the recent change to base bank id on the gpio-ranges prop
and apply the same logic used when nodes was named gpio0@ to the alias.

With missing gpio aliases added to u-boot.dtsi files this should restore
gpio function for SoCs that have synced gpio0@ to gpio@ node name
changes from linux.

Fixes: 904b8700f81c ("gpio: gpio-rockchip: parse gpio-ranges for bank id")
Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
---
 drivers/gpio/rk_gpio.c | 17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

diff --git a/drivers/gpio/rk_gpio.c b/drivers/gpio/rk_gpio.c
index f7ad4d68b452..bc77b28307c0 100644
--- a/drivers/gpio/rk_gpio.c
+++ b/drivers/gpio/rk_gpio.c
@@ -15,6 +15,7 @@
 #include <asm/arch-rockchip/clock.h>
 #include <asm/arch-rockchip/gpio.h>
 #include <dm/pinctrl.h>
+#include <dm/read.h>
 #include <dt-bindings/clock/rk3288-cru.h>
 
 enum {
@@ -142,7 +143,6 @@ static int rockchip_gpio_probe(struct udevice *dev)
 {
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct rockchip_gpio_priv *priv = dev_get_priv(dev);
-	struct ofnode_phandle_args args;
 	char *end;
 	int ret;
 
@@ -151,24 +151,15 @@ static int rockchip_gpio_probe(struct udevice *dev)
 	if (ret)
 		return ret;
 
-	/*
-	 * If "gpio-ranges" is present in the devicetree use it to parse
-	 * the GPIO bank ID, otherwise use the legacy method.
-	 */
-	ret = ofnode_parse_phandle_with_args(dev_ofnode(dev),
-					     "gpio-ranges", NULL, 3,
-					     0, &args);
-	if (!ret || ret != -ENOENT) {
-		uc_priv->gpio_count = args.args[2];
-		priv->bank = args.args[1] / args.args[2];
-	} else {
-		uc_priv->gpio_count = ROCKCHIP_GPIOS_PER_BANK;
+	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;
+	uc_priv->gpio_count = ROCKCHIP_GPIOS_PER_BANK;
 
 	return 0;
 }
-- 
2.40.0



More information about the U-Boot mailing list