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 /drivers/input/touchscreen | |
| 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>
Diffstat (limited to 'drivers/input/touchscreen')
| -rw-r--r-- | drivers/input/touchscreen/pixcir_i2c_ts.c | 16 |
1 files changed, 15 insertions, 1 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); |
