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 <jason77.w...@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.
> 
> Signed-off-by: Hui Wang <jason77.w...@gmail.com>
> ---
> 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
> 
> 

N�Р骒r��y����b�X�肚�v�^�)藓{.n�+�伐�{��zn�)��骅w*jg�报�����茛j/�赇z罐���2���ㄨ��&�)摺�a囤���G���h��j:+v���w��佶

Reply via email to