Re: [PATCH 1/2] Input: egalax_ts: get gpio from devicetree node
From: Zhang Jiejing-B33651 <hidden>
Date: 2012-08-08 03:44:00
Also in:
linux-devicetree
Hi Hui, You patch looks good to me, but can you add a check when it calling the egalax_wake_up_device() function in egalax_ts_probe() ? If some configure gose wrong, the probe of driver will exit, rather than the suspend failure every time. BR, Jiejing 在 2012-8-7,下午5:39,Hui Wang [off-list ref] 写道:
quoted hunk ↗ jump to hunk
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. Signed-off-by: Hui Wang <redacted> --- drivers/input/touchscreen/egalax_ts.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-)diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c index 70524dd..b94eb50 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, "irq-gpio", 0); + if (!gpio_is_valid(gpio)) + return -ENODEV; ret = gpio_request(gpio, "egalax_irq"); if (ret < 0) { -- 1.7.6