History

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.

Roger Quadros committed 12 years ago

Commit 0dfc8d41 parent 3b36fbb2 files · +16 −2Browse files

Unified · Split

2 files
  1. drivers/input/touchscreen/pixcir_i2c_ts.c +15 −1
  2. include/linux/input/pixcir_ts.h +1 −1
drivers/input/touchscreen/pixcir_i2c_ts.c+15−1
@@ -24,6 +24,7 @@ · 23 unmodified lines
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
28struct pixcir_i2c_ts_data {29struct 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) · 57 unmodified lines
87static irqreturn_t pixcir_ts_isr(int irq, void *dev_id)88static 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, · 200 unmodified lines
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, · 24 unmodified lines
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);
include/linux/input/pixcir_ts.h+1−1
@@ -44,9 +44,9 @@ enum pixcir_int_mode { · 43 unmodified lines
44#define PIXCIR_INT_POL_HIGH (1UL << 2)44#define PIXCIR_INT_POL_HIGH (1UL << 2)
45 45
46struct pixcir_ts_platform_data {46struct 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#endif52#endif