diff mbox

[V2] gpio: palmas: add dt support

Message ID 1366122705-3579-1-git-send-email-ldewangan@nvidia.com
State Not Applicable, archived
Headers show

Commit Message

Laxman Dewangan April 16, 2013, 2:31 p.m. UTC
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>
---
Changes from V1:
Remove the ifdefs of CONFIG_OF around of_device_id structure for
defining compatible values.

 drivers/gpio/gpio-palmas.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

Comments

Stephen Warren April 16, 2013, 6:44 p.m. UTC | #1
On 04/16/2013 08:31 AM, Laxman Dewangan wrote:
> 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>;
> 		};
> 	};

So I think this patch looks fine if everyone is agreed that all the
Palmas sub-modules are represented as explicit child nodes in DT, and
the probing of the child nodes is based on the top-level Palmas device
being a bus, and enumerating its children in standard DT style, using
compatible values. (I'm not sure how the child probing/instantiation
will work for non-DT systems though).

I'm not 100% sure if an agreement on the top-level structure of the
Palmas DT bindings was reached though? Can the SlimLogic people confirm
this? I assume Laxman must be OK with it since he's sending this patch?

It might be a good idea to get the final Palmas binding documentation
reviewed and checked in before changing the drivers/.dts files to match
what the final bindings might be.
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Laxman Dewangan April 17, 2013, 6:56 a.m. UTC | #2
On Wednesday 17 April 2013 12:14 AM, Stephen Warren wrote:
> On 04/16/2013 08:31 AM, Laxman Dewangan wrote:
>> 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>;
>> 		};
>> 	};
> So I think this patch looks fine if everyone is agreed that all the
> Palmas sub-modules are represented as explicit child nodes in DT, and
> the probing of the child nodes is based on the top-level Palmas device
> being a bus, and enumerating its children in standard DT style, using
> compatible values. (I'm not sure how the child probing/instantiation
> will work for non-DT systems though).
>
> I'm not 100% sure if an agreement on the top-level structure of the
> Palmas DT bindings was reached though? Can the SlimLogic people confirm
> this? I assume Laxman must be OK with it since he's sending this patch?
>

I am fine with this dt approach.
Similar patch on palma-rtc was acked by Grant.

If Slimlogic/TI team can finalise the DT binding then it will be easy 
for me to push some more patches to have full support for palma driver 
on our Tegra platform.

--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/gpio/gpio-palmas.c b/drivers/gpio/gpio-palmas.c
index e3a4e56..5802662 100644
--- a/drivers/gpio/gpio-palmas.c
+++ b/drivers/gpio/gpio-palmas.c
@@ -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,16 @@  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"},
+	{ },
+};
+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,
 };