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
2424 #include <linux/i2c.h>
2525 #include <linux/input.h>
2626 #include <linux/input/pixcir_ts.h>
27+#include <linux/gpio.h>
2728
2829 struct pixcir_i2c_ts_data {
2930 struct i2c_client *client;
@@ -87,11 +88,12 @@ static void pixcir_ts_poscheck(struct pixcir_i2c_ts_data *data) · 57 unmodified lines
8788 static irqreturn_t pixcir_ts_isr(int irq, void *dev_id)
8889 {
8990 struct pixcir_i2c_ts_data *tsdata = dev_id;
91+ const struct pixcir_ts_platform_data *pdata = tsdata->chip;
9092
9193 while (tsdata->running) {
9294 pixcir_ts_poscheck(tsdata);
9395
94− if (tsdata->chip->attb_read_val())
96+ if (gpio_get_value(pdata->gpio_attb))
9597 break;
9698
9799 msleep(20);
@@ -298,6 +300,11 @@ static int pixcir_i2c_ts_probe(struct i2c_client *client, · 200 unmodified lines
298300 return -EINVAL;
299301 }
300302
303+ if (!gpio_is_valid(pdata->gpio_attb)) {
304+ dev_err(dev, "Invalid gpio_attb in pdata\n");
305+ return -EINVAL;
306+ }
307+
301308 tsdata = devm_kzalloc(dev, sizeof(*tsdata), GFP_KERNEL);
302309 if (!tsdata)
303310 return -ENOMEM;
@@ -328,6 +335,13 @@ static int pixcir_i2c_ts_probe(struct i2c_client *client, · 24 unmodified lines
328335
329336 input_set_drvdata(input, tsdata);
330337
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+
331345 error = devm_request_threaded_irq(dev, client->irq, NULL, pixcir_ts_isr,
332346 IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
333347 client->name, tsdata);
include/linux/input/pixcir_ts.h+1−1
@@ -44,9 +44,9 @@ enum pixcir_int_mode { · 43 unmodified lines
4444 #define PIXCIR_INT_POL_HIGH (1UL << 2)
4545
4646 struct pixcir_ts_platform_data {
47− int (*attb_read_val)(void);
4847 int x_max;
4948 int y_max;
49+ int gpio_attb; /* GPIO connected to ATTB line */
5050 };
5151
5252 #endif