brcm63xx: use consistent gpio chip labeling for OF/non-OF
[openwrt.git] / target / linux / brcm63xx / patches-3.14 / 374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch
index 7d1cd28..6f74d02 100644 (file)
@@ -8,8 +8,8 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 ---
  drivers/gpio/Kconfig        |    8 +++
  drivers/gpio/Makefile       |    1 +
- drivers/gpio/gpio-bcm63xx.c |  117 +++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 126 insertions(+)
+ drivers/gpio/gpio-bcm63xx.c |  122 +++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 131 insertions(+)
  create mode 100644 drivers/gpio/gpio-bcm63xx.c
 
 --- a/drivers/gpio/Kconfig
@@ -41,7 +41,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  obj-$(CONFIG_GPIO_CS5535)     += gpio-cs5535.o
 --- /dev/null
 +++ b/drivers/gpio/gpio-bcm63xx.c
-@@ -0,0 +1,117 @@
+@@ -0,0 +1,122 @@
 +/*
 + * Driver for BCM63XX memory-mapped GPIO controllers, based on
 + * Generic driver for memory-mapped GPIO controllers.
@@ -87,8 +87,8 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 +      struct bgpio_chip *bgc;
 +      struct bgpio_pdata *pdata = dev_get_platdata(dev);
 +
-+      dat_r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+      dirout_r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
++      dirout_r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++      dat_r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
 +      if (!dat_r || !dirout_r)
 +              return -EINVAL;
 +
@@ -117,8 +117,13 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 +      platform_set_drvdata(pdev, bgc);
 +
 +      if (dev->of_node) {
++              int id = of_alias_get_id(dev->of_node, "gpio");
 +              u32 ngpios;
 +
++              if (id >= 0)
++                      bgc->gc.label = devm_kasprintf(dev, GFP_KERNEL,
++                                                     "bcm63xx-gpio.%d", id);
++
 +              if (!of_property_read_u32(dev->of_node, "ngpios", &ngpios))
 +                      bgc->gc.ngpio = ngpios;
 +