diff mbox

[v4,1/3] Input: egalax_ts: get gpio from devicetree node

Message ID 1345114051-3052-2-git-send-email-jason77.wang@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jason Wang Aug. 16, 2012, 10:47 a.m. UTC
The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
and don't support this API anymore.

The i.MX6q sabrelite platform equips an egalax touchscreen controller,
and this platform already transfered to GENERIC_GPIO framework, to
support this driver, we use a more generic way to get gpio.

Add a return value checking for waking up the controller in the probe
function, this guarantee only a workable device can pass init.

Signed-off-by: Hui Wang <jason77.wang@gmail.com>
---
 drivers/input/touchscreen/egalax_ts.c |   25 ++++++++++++++++++++++---
 1 files changed, 22 insertions(+), 3 deletions(-)

Comments

Shawn Guo Aug. 17, 2012, 12:31 a.m. UTC | #1
On Thu, Aug 16, 2012 at 06:47:29PM +0800, Hui Wang wrote:
> The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
> and don't support this API anymore.
> 
> The i.MX6q sabrelite platform equips an egalax touchscreen controller,
> and this platform already transfered to GENERIC_GPIO framework, to
> support this driver, we use a more generic way to get gpio.
> 
> Add a return value checking for waking up the controller in the probe
> function, this guarantee only a workable device can pass init.
> 
> Signed-off-by: Hui Wang <jason77.wang@gmail.com>

Reviewed-by: Shawn Guo <shawn.guo@linaro.org>
Arnd Bergmann Oct. 9, 2012, 11:58 a.m. UTC | #2
On Friday 17 August 2012, Shawn Guo wrote:
> On Thu, Aug 16, 2012 at 06:47:29PM +0800, Hui Wang wrote:
> > The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
> > and don't support this API anymore.
> > 
> > The i.MX6q sabrelite platform equips an egalax touchscreen controller,
> > and this platform already transfered to GENERIC_GPIO framework, to
> > support this driver, we use a more generic way to get gpio.
> > 
> > Add a return value checking for waking up the controller in the probe
> > function, this guarantee only a workable device can pass init.
> > 
> > Signed-off-by: Hui Wang <jason77.wang@gmail.com>
> 
> Reviewed-by: Shawn Guo <shawn.guo@linaro.org>

What's the status on this patch? I'm still getting build errors from this
driver, so I guess it was never accepted for the 3.7 merge window.

	Arnd
Jason Wang Oct. 10, 2012, 3:26 a.m. UTC | #3
Arnd Bergmann wrote:
> On Friday 17 August 2012, Shawn Guo wrote:
>   
>> On Thu, Aug 16, 2012 at 06:47:29PM +0800, Hui Wang wrote:
>>     
>>> The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
>>> and don't support this API anymore.
>>>
>>> The i.MX6q sabrelite platform equips an egalax touchscreen controller,
>>> and this platform already transfered to GENERIC_GPIO framework, to
>>> support this driver, we use a more generic way to get gpio.
>>>
>>> Add a return value checking for waking up the controller in the probe
>>> function, this guarantee only a workable device can pass init.
>>>
>>> Signed-off-by: Hui Wang <jason77.wang@gmail.com>
>>>       
>> Reviewed-by: Shawn Guo <shawn.guo@linaro.org>
>>     
>
> What's the status on this patch? I'm still getting build errors from this
> driver, so I guess it was never accepted for the 3.7 merge window.
>
> 	Arnd
>
>   
I forgot to resend this patchset After Dmitry was back to the maillist. 
I will rebase the patchset and resend them to review.

Regards,
Hui.
Arnd Bergmann Oct. 10, 2012, 6:18 a.m. UTC | #4
On Wednesday 10 October 2012, Hui Wang wrote:
> >
> > What's the status on this patch? I'm still getting build errors from this
> > driver, so I guess it was never accepted for the 3.7 merge window.
> >
> >       Arnd
> >
> >   
> I forgot to resend this patchset After Dmitry was back to the maillist. 
> I will rebase the patchset and resend them to review.
> 

Ok, thank you!

	Arnd
diff mbox

Patch

diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c
index 70524dd..8516a4e 100644
--- a/drivers/input/touchscreen/egalax_ts.c
+++ b/drivers/input/touchscreen/egalax_ts.c
@@ -28,6 +28,7 @@ 
 #include <linux/slab.h>
 #include <linux/bitops.h>
 #include <linux/input/mt.h>
+#include <linux/of_gpio.h>
 
 /*
  * Mouse Mode: some panel may configure the controller to mouse mode,
@@ -122,8 +123,15 @@  static irqreturn_t egalax_ts_interrupt(int irq, void *dev_id)
 /* wake up controller by an falling edge of interrupt gpio.  */
 static int egalax_wake_up_device(struct i2c_client *client)
 {
-	int gpio = irq_to_gpio(client->irq);
-	int ret;
+	struct device_node *np = client->dev.of_node;
+	int gpio, ret;
+
+	if (!np)
+		return -ENODEV;
+
+	gpio = of_get_named_gpio(np, "wakeup-gpios", 0);
+	if (!gpio_is_valid(gpio))
+		return -ENODEV;
 
 	ret = gpio_request(gpio, "egalax_irq");
 	if (ret < 0) {
@@ -181,7 +189,12 @@  static int __devinit egalax_ts_probe(struct i2c_client *client,
 	ts->input_dev = input_dev;
 
 	/* controller may be in sleep, wake it up. */
-	egalax_wake_up_device(client);
+	ret = egalax_wake_up_device(client);
+	if (ret < 0) {
+		dev_err(&client->dev, "Failed to wake up the controller\n");
+		error = ret;
+		goto err_free_dev;
+	}
 
 	ret = egalax_firmware_version(client);
 	if (ret < 0) {
@@ -274,11 +287,17 @@  static int egalax_ts_resume(struct device *dev)
 
 static SIMPLE_DEV_PM_OPS(egalax_ts_pm_ops, egalax_ts_suspend, egalax_ts_resume);
 
+static struct of_device_id egalax_ts_dt_ids[] = {
+	{ .compatible = "eeti,egalax_ts" },
+	{ /* sentinel */ }
+};
+
 static struct i2c_driver egalax_ts_driver = {
 	.driver = {
 		.name	= "egalax_ts",
 		.owner	= THIS_MODULE,
 		.pm	= &egalax_ts_pm_ops,
+		.of_match_table	= egalax_ts_dt_ids,
 	},
 	.id_table	= egalax_ts_id,
 	.probe		= egalax_ts_probe,