OSDN Git Service

gpio: omap: Give unique labels to each GPIO bank/chip
authorLinus Walleij <linus.walleij@linaro.org>
Fri, 29 Dec 2017 12:22:58 +0000 (13:22 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 3 Jan 2018 07:46:08 +0000 (08:46 +0100)
As we need to add GPIO lookup tables to the OMAP platforms, we
need to reference each GPIO chip with a unique label. Use the GPIO
base to name each chip, "gpio-0-31", "gpio-32-63" etc.

Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: Santosh Shilimkar <ssantosh@kernel.org>
Cc: Kevin Hilman <khilman@kernel.org>
Cc: linux-omap@vger.kernel.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-omap.c

index 05bae9f..ab5035b 100644 (file)
@@ -1060,6 +1060,7 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc)
 {
        struct gpio_irq_chip *irq;
        static int gpio;
+       const char *label;
        int irq_base = 0;
        int ret;
 
@@ -1081,7 +1082,11 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc)
                        bank->chip.parent = &omap_mpuio_device.dev;
                bank->chip.base = OMAP_MPUIO(0);
        } else {
-               bank->chip.label = "gpio";
+               label = devm_kasprintf(bank->chip.parent, GFP_KERNEL, "gpio-%d-%d",
+                                      gpio, gpio + bank->width - 1);
+               if (!label)
+                       return -ENOMEM;
+               bank->chip.label = label;
                bank->chip.base = gpio;
        }
        bank->chip.ngpio = bank->width;