[PATCH 1/2] pinctrl: rockchip: use alias rather than full of name

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Michael Riesch <michael.riesch@xxxxxxxxxxxxxx>

We've so far relied on GPIO controllers being named "gpioX", while the
binding mandates gpio controllers being just called "gpio". This already
broke rk3288 support and rk3568.dtsi upstream also differs from the
version in barebox' arch/arm/dts in that regard.

Instead, do like Linux does and use the alias to match the controllers to
the GPIO banks with a fallback to probe order.

Fixes: 3f2f5980d517 ("dts: update to v5.16-rc1")
Signed-off-by: Michael Riesch <michael.riesch@xxxxxxxxxxxxxx>
[afa: drop strncmp in favor of id comparison, reword commit message]
Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx>
---
 drivers/pinctrl/pinctrl-rockchip.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index 5cf77c58b218..ea748b600419 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -877,18 +877,24 @@ static struct rockchip_pin_ctrl *rockchip_pinctrl_get_soc_data(
 	struct rockchip_pin_bank *bank;
 	char *name;
 	int grf_offs, pmu_offs, drv_grf_offs, drv_pmu_offs, i, j;
+	int gpio = 0;
 
 	match = of_match_node(rockchip_pinctrl_dt_match, node);
 	ctrl = (struct rockchip_pin_ctrl *)match->data;
 
 	for_each_child_of_node(node, np) {
+		int id;
+
 		if (!of_find_property(np, "gpio-controller", NULL))
 			continue;
 
+		id = of_alias_get_id(np, "gpio");
+		if (id < 0)
+			id = gpio++;
+
 		bank = ctrl->pin_banks;
 		for (i = 0; i < ctrl->nr_banks; ++i, ++bank) {
-			name = bank->name;
-			if (!strncmp(name, np->name, strlen(name))) {
+			if (bank->bank_num == id) {
 				bank->of_node = np;
 				if (!rockchip_get_bank_data(bank, dev))
 					bank->valid = true;
-- 
2.30.2


_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox



[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux