All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hui Wang <jason77.wang@gmail.com>
To: dmitry.torokhov@gmail.com, jiejing.zhang@freescale.com,
	shawn.guo@linaro.org
Cc: linux-input@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	devicetree-discuss@lists.ozlabs.org
Subject: [PATCH v3 1/3] Input: egalax_ts: get gpio from devicetree node
Date: Wed, 15 Aug 2012 18:31:46 +0800	[thread overview]
Message-ID: <1345026708-14139-2-git-send-email-jason77.wang@gmail.com> (raw)
In-Reply-To: <1345026708-14139-1-git-send-email-jason77.wang@gmail.com>

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 |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c
index 70524dd..54361c9 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) {
-- 
1.7.6


WARNING: multiple messages have this Message-ID (diff)
From: jason77.wang@gmail.com (Hui Wang)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 1/3] Input: egalax_ts: get gpio from devicetree node
Date: Wed, 15 Aug 2012 18:31:46 +0800	[thread overview]
Message-ID: <1345026708-14139-2-git-send-email-jason77.wang@gmail.com> (raw)
In-Reply-To: <1345026708-14139-1-git-send-email-jason77.wang@gmail.com>

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 |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c
index 70524dd..54361c9 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) {
-- 
1.7.6

  reply	other threads:[~2012-08-15 10:31 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-15 10:31 [PATCH v3 0/3] Input: egalax_ts: parse devicetree to get gpio Hui Wang
2012-08-15 10:31 ` Hui Wang
2012-08-15 10:31 ` Hui Wang [this message]
2012-08-15 10:31   ` [PATCH v3 1/3] Input: egalax_ts: get gpio from devicetree node Hui Wang
2012-08-15 10:31   ` [PATCH v3 2/3] Input: add devicetree binding note for egalax_ts Hui Wang
2012-08-15 10:31     ` Hui Wang
2012-08-15 10:31     ` [PATCH v3 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax Hui Wang
2012-08-15 10:31       ` Hui Wang
2012-08-15 13:01       ` Shawn Guo
2012-08-15 13:01         ` Shawn Guo
2012-08-16  6:53         ` Hui Wang
2012-08-16  6:53           ` Hui Wang
     [not found]     ` <1345026708-14139-3-git-send-email-jason77.wang-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-08-15 12:53       ` [PATCH v3 2/3] Input: add devicetree binding note for egalax_ts Shawn Guo
2012-08-15 12:53         ` Shawn Guo
2012-08-16  6:48         ` Hui Wang
2012-08-16  6:48           ` Hui Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1345026708-14139-2-git-send-email-jason77.wang@gmail.com \
    --to=jason77.wang@gmail.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=jiejing.zhang@freescale.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-input@vger.kernel.org \
    --cc=shawn.guo@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.