gpio: dwapb_gpio: fix binding without bank-name property
authorSimon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Fri, 2 Nov 2018 10:54:50 +0000 (11:54 +0100)
committerMarek Vasut <marex@denx.de>
Thu, 29 Nov 2018 11:45:15 +0000 (12:45 +0100)
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@gmail.com>
drivers/gpio/dwapb_gpio.c

index 68836a79021e3a22874d2c191f2aaadee76a8e39..e55fb4ac73dd423715c889e3e1e8814fb980ae8c 100644 (file)
@@ -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);