diff options
author | Roger Quadros <rogerq@ti.com> | 2014-05-19 01:46:43 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2014-05-19 02:25:57 -0400 |
commit | 0dfc8d41bfa091a61354eea73199a5af0eaae9c0 (patch) | |
tree | b251f6c4742b622a5b5229a5f2bd2f97cdcdc267 | |
parent | 3b36fbb01dc50f58e7803006f5a99683daf26c8c (diff) |
Input: pixcir_i2c_ts - get rid of pdata->attb_read_val()
Get rid of the attb_read_val() platform hook. Instead, read the ATTB gpio
directly from the driver.
Fail if valid ATTB gpio is not provided by patform data.
Signed-off-by: Roger Quadros <rogerq@ti.com>
Acked-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r-- | drivers/input/touchscreen/pixcir_i2c_ts.c | 16 | ||||
-rw-r--r-- | include/linux/input/pixcir_ts.h | 2 |
2 files changed, 16 insertions, 2 deletions
diff --git a/drivers/input/touchscreen/pixcir_i2c_ts.c b/drivers/input/touchscreen/pixcir_i2c_ts.c index 6c6f6dacb858..f2c0ae18e24a 100644 --- a/drivers/input/touchscreen/pixcir_i2c_ts.c +++ b/drivers/input/touchscreen/pixcir_i2c_ts.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/i2c.h> | 24 | #include <linux/i2c.h> |
25 | #include <linux/input.h> | 25 | #include <linux/input.h> |
26 | #include <linux/input/pixcir_ts.h> | 26 | #include <linux/input/pixcir_ts.h> |
27 | #include <linux/gpio.h> | ||
27 | 28 | ||
28 | struct pixcir_i2c_ts_data { | 29 | struct pixcir_i2c_ts_data { |
29 | struct i2c_client *client; | 30 | struct i2c_client *client; |
@@ -87,11 +88,12 @@ static void pixcir_ts_poscheck(struct pixcir_i2c_ts_data *data) | |||
87 | static irqreturn_t pixcir_ts_isr(int irq, void *dev_id) | 88 | static irqreturn_t pixcir_ts_isr(int irq, void *dev_id) |
88 | { | 89 | { |
89 | struct pixcir_i2c_ts_data *tsdata = dev_id; | 90 | struct pixcir_i2c_ts_data *tsdata = dev_id; |
91 | const struct pixcir_ts_platform_data *pdata = tsdata->chip; | ||
90 | 92 | ||
91 | while (tsdata->running) { | 93 | while (tsdata->running) { |
92 | pixcir_ts_poscheck(tsdata); | 94 | pixcir_ts_poscheck(tsdata); |
93 | 95 | ||
94 | if (tsdata->chip->attb_read_val()) | 96 | if (gpio_get_value(pdata->gpio_attb)) |
95 | break; | 97 | break; |
96 | 98 | ||
97 | msleep(20); | 99 | msleep(20); |
@@ -298,6 +300,11 @@ static int pixcir_i2c_ts_probe(struct i2c_client *client, | |||
298 | return -EINVAL; | 300 | return -EINVAL; |
299 | } | 301 | } |
300 | 302 | ||
303 | if (!gpio_is_valid(pdata->gpio_attb)) { | ||
304 | dev_err(dev, "Invalid gpio_attb in pdata\n"); | ||
305 | return -EINVAL; | ||
306 | } | ||
307 | |||
301 | tsdata = devm_kzalloc(dev, sizeof(*tsdata), GFP_KERNEL); | 308 | tsdata = devm_kzalloc(dev, sizeof(*tsdata), GFP_KERNEL); |
302 | if (!tsdata) | 309 | if (!tsdata) |
303 | return -ENOMEM; | 310 | return -ENOMEM; |
@@ -328,6 +335,13 @@ static int pixcir_i2c_ts_probe(struct i2c_client *client, | |||
328 | 335 | ||
329 | input_set_drvdata(input, tsdata); | 336 | input_set_drvdata(input, tsdata); |
330 | 337 | ||
338 | error = devm_gpio_request_one(dev, pdata->gpio_attb, | ||
339 | GPIOF_DIR_IN, "pixcir_i2c_attb"); | ||
340 | if (error) { | ||
341 | dev_err(dev, "Failed to request ATTB gpio\n"); | ||
342 | return error; | ||
343 | } | ||
344 | |||
331 | error = devm_request_threaded_irq(dev, client->irq, NULL, pixcir_ts_isr, | 345 | error = devm_request_threaded_irq(dev, client->irq, NULL, pixcir_ts_isr, |
332 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, | 346 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, |
333 | client->name, tsdata); | 347 | client->name, tsdata); |
diff --git a/include/linux/input/pixcir_ts.h b/include/linux/input/pixcir_ts.h index 7942804464d3..160cf353aa39 100644 --- a/include/linux/input/pixcir_ts.h +++ b/include/linux/input/pixcir_ts.h | |||
@@ -44,9 +44,9 @@ enum pixcir_int_mode { | |||
44 | #define PIXCIR_INT_POL_HIGH (1UL << 2) | 44 | #define PIXCIR_INT_POL_HIGH (1UL << 2) |
45 | 45 | ||
46 | struct pixcir_ts_platform_data { | 46 | struct pixcir_ts_platform_data { |
47 | int (*attb_read_val)(void); | ||
48 | int x_max; | 47 | int x_max; |
49 | int y_max; | 48 | int y_max; |
49 | int gpio_attb; /* GPIO connected to ATTB line */ | ||
50 | }; | 50 | }; |
51 | 51 | ||
52 | #endif | 52 | #endif |