gpio: palmas: add dt support
authorLaxman Dewangan <ldewangan@nvidia.com>
Tue, 23 Jul 2013 07:36:04 +0000 (13:06 +0530)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 29 Jul 2013 16:14:33 +0000 (18:14 +0200)
Add of_device_id table for Palma GPIO to be enable the
driver from DT file.

The driver can be registered from DT file as:
palmas: tps65913@58 {
:::::::::::
palmas_gpio: palmas_gpio {
compatible = "ti,palmas-gpio";
gpio-controller;
#gpio-cells = <2>;
};
};

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Documentation/devicetree/bindings/gpio/gpio-palmas.txt [new file with mode: 0644]
drivers/gpio/gpio-palmas.c

diff --git a/Documentation/devicetree/bindings/gpio/gpio-palmas.txt b/Documentation/devicetree/bindings/gpio/gpio-palmas.txt
new file mode 100644 (file)
index 0000000..08b5b52
--- /dev/null
@@ -0,0 +1,27 @@
+Palmas GPIO controller bindings
+
+Required properties:
+- compatible:
+  - "ti,palams-gpio" for palma series of the GPIO controller
+  - "ti,tps80036-gpio" for Palma series device TPS80036.
+  - "ti,tps65913-gpio" for palma series device TPS65913.
+  - "ti,tps65914-gpio" for palma series device TPS65914.
+- #gpio-cells : Should be two.
+  - first cell is the gpio pin number
+  - second cell is used to specify the gpio polarity:
+      0 = active high
+      1 = active low
+- gpio-controller : Marks the device node as a GPIO controller.
+
+Note: This gpio node will be sub node of palmas node.
+
+Example:
+       palmas: tps65913@58 {
+               :::::::::::
+               palmas_gpio: palmas_gpio {
+                       compatible = "ti,palmas-gpio";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+               };
+               :::::::::::
+       };
index e3a4e56..09360c4 100644 (file)
@@ -134,7 +134,7 @@ static int palmas_gpio_probe(struct platform_device *pdev)
        palmas_gpio->gpio_chip.get      = palmas_gpio_get;
        palmas_gpio->gpio_chip.dev = &pdev->dev;
 #ifdef CONFIG_OF_GPIO
-       palmas_gpio->gpio_chip.of_node = palmas->dev->of_node;
+       palmas_gpio->gpio_chip.of_node = pdev->dev.of_node;
 #endif
        palmas_pdata = dev_get_platdata(palmas->dev);
        if (palmas_pdata && palmas_pdata->gpio_base)
@@ -159,9 +159,19 @@ static int palmas_gpio_remove(struct platform_device *pdev)
        return gpiochip_remove(&palmas_gpio->gpio_chip);
 }
 
+static struct of_device_id of_palmas_gpio_match[] = {
+       { .compatible = "ti,palmas-gpio"},
+       { .compatible = "ti,tps65913-gpio"},
+       { .compatible = "ti,tps65914-gpio"},
+       { .compatible = "ti,tps80036-gpio"},
+       { },
+};
+MODULE_DEVICE_TABLE(of, of_palmas_gpio_match);
+
 static struct platform_driver palmas_gpio_driver = {
        .driver.name    = "palmas-gpio",
        .driver.owner   = THIS_MODULE,
+       .driver.of_match_table = of_palmas_gpio_match,
        .probe          = palmas_gpio_probe,
        .remove         = palmas_gpio_remove,
 };