pinctrl: at91: provide gpio names
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Tue, 6 Nov 2012 16:33:34 +0000 (00:33 +0800)
committerJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Sun, 18 Nov 2012 22:35:37 +0000 (06:35 +0800)
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
drivers/pinctrl/pinctrl-at91.c

index b9e2cbd..401fc96 100644 (file)
@@ -1364,9 +1364,10 @@ static int __devinit at91_gpio_probe(struct platform_device *pdev)
        struct gpio_chip *chip;
        struct pinctrl_gpio_range *range;
        int ret = 0;
-       int irq;
+       int irq, i;
        int alias_idx = of_alias_get_id(np, "gpio");
        uint32_t ngpio;
+       char **names;
 
        BUG_ON(alias_idx >= ARRAY_SIZE(gpio_chips));
        if (gpio_chips[alias_idx]) {
@@ -1436,6 +1437,18 @@ static int __devinit at91_gpio_probe(struct platform_device *pdev)
                        chip->ngpio = ngpio;
        }
 
+       names = devm_kzalloc(&pdev->dev, sizeof(char*) * chip->ngpio, GFP_KERNEL);
+
+       if (!names) {
+               ret = -ENOMEM;
+               goto clk_err;
+       }
+
+       for (i = 0; i < chip->ngpio; i++)
+               names[i] = kasprintf(GFP_KERNEL, "pio%c%d", alias_idx + 'A', i);
+
+       chip->names = (const char*const*)names;
+
        range = &at91_chip->range;
        range->name = chip->label;
        range->id = alias_idx;