Input: tsc2007 - convert to GPIO descriptors
authorAndy Shevchenko <andy.shevchenko@gmail.com>
Mon, 15 Mar 2021 23:49:53 +0000 (16:49 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 16 Mar 2021 00:12:02 +0000 (17:12 -0700)
This converts the driver to use GPIO descriptors.

Note that it now uses logical polarity and thus nagation has been dropped.

Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20210314210951.645783-1-andy.shevchenko@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/tsc2007.h
drivers/input/touchscreen/tsc2007_core.c

index 91c60bf..69b08dd 100644 (file)
@@ -19,6 +19,8 @@
 #ifndef _TSC2007_H
 #define _TSC2007_H
 
+struct gpio_desc;
+
 #define TSC2007_MEASURE_TEMP0          (0x0 << 4)
 #define TSC2007_MEASURE_AUX            (0x2 << 4)
 #define TSC2007_MEASURE_TEMP1          (0x4 << 4)
@@ -69,7 +71,7 @@ struct tsc2007 {
        int                     fuzzy;
        int                     fuzzz;
 
-       unsigned int            gpio;
+       struct gpio_desc        *gpiod;
        int                     irq;
 
        wait_queue_head_t       wait;
index 3b80abf..d19c623 100644 (file)
 
 #include <linux/module.h>
 #include <linux/slab.h>
+#include <linux/gpio/consumer.h>
 #include <linux/input.h>
 #include <linux/interrupt.h>
 #include <linux/i2c.h>
 #include <linux/of_device.h>
-#include <linux/of_gpio.h>
 #include <linux/platform_data/tsc2007.h>
 #include "tsc2007.h"
 
@@ -226,7 +226,7 @@ static int tsc2007_get_pendown_state_gpio(struct device *dev)
        struct i2c_client *client = to_i2c_client(dev);
        struct tsc2007 *ts = i2c_get_clientdata(client);
 
-       return !gpio_get_value(ts->gpio);
+       return gpiod_get_value(ts->gpiod);
 }
 
 static int tsc2007_probe_dt(struct i2c_client *client, struct tsc2007 *ts)
@@ -266,13 +266,14 @@ static int tsc2007_probe_dt(struct i2c_client *client, struct tsc2007 *ts)
                return -EINVAL;
        }
 
-       ts->gpio = of_get_gpio(np, 0);
-       if (gpio_is_valid(ts->gpio))
+       ts->gpiod = devm_gpiod_get_optional(&client->dev, NULL, GPIOD_IN);
+       if (IS_ERR(ts->gpiod))
+               return PTR_ERR(ts->gpiod);
+
+       if (ts->gpiod)
                ts->get_pendown_state = tsc2007_get_pendown_state_gpio;
        else
-               dev_warn(&client->dev,
-                        "GPIO not specified in DT (of_get_gpio returned %d)\n",
-                        ts->gpio);
+               dev_warn(&client->dev, "Pen down GPIO not specified in DT\n");
 
        return 0;
 }