[U-Boot] [PATCH v1 1/3] gpio: dwapb_gpio: fix binding without bank-name property

Simon Goldschmidt simon.k.r.goldschmidt at gmail.com
Mon Oct 29 19:25:31 UTC 2018


As a preparation for merging the socfpga gen5 devicetree files
from Linux, this patch makes the dwapb gpio driver work correctly
without the 'bank-name' property on the gpio-controller nodes.

This property is not present in the Linux drivers and thus is not
present in the Linux devicetrees. It is only used to access pins
via bank name.

This fallback is necessary since without it, the driver will
return an error code which will lead to an error in U-Boot
startup.

The bank names will still be added to the default board device
trees in follow-up patch, but other boards using this driver and
not including the bank name should also work with the socfpga.dtsi
without adding the bank-name property.

Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>
---

 drivers/gpio/dwapb_gpio.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpio/dwapb_gpio.c b/drivers/gpio/dwapb_gpio.c
index 68836a7902..e55fb4ac73 100644
--- a/drivers/gpio/dwapb_gpio.c
+++ b/drivers/gpio/dwapb_gpio.c
@@ -180,6 +180,13 @@ static int gpio_dwapb_bind(struct udevice *dev)
 		plat->pins = fdtdec_get_int(blob, node, "snps,nr-gpios", 0);
 		plat->name = fdt_stringlist_get(blob, node, "bank-name", 0,
 						NULL);
+		if (!plat->name) {
+			/*
+			 * Fall back to node name. This means accessing pins
+			 * via bank name won't work.
+			 */
+			plat->name = fdt_get_name(blob, node, NULL);
+		}
 
 		ret = device_bind(dev, dev->driver, plat->name,
 				  plat, -1, &subdev);
-- 
2.17.1



More information about the U-Boot mailing list