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
next prev parent 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: linkBe 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.