diff options
Diffstat (limited to 'drivers/input/touchscreen/wm831x-ts.c')
-rw-r--r-- | drivers/input/touchscreen/wm831x-ts.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/input/touchscreen/wm831x-ts.c b/drivers/input/touchscreen/wm831x-ts.c index a6121bdb635d..1022f715d3c2 100644 --- a/drivers/input/touchscreen/wm831x-ts.c +++ b/drivers/input/touchscreen/wm831x-ts.c | |||
@@ -76,9 +76,14 @@ static irqreturn_t wm831x_ts_data_irq(int irq, void *irq_data) | |||
76 | struct wm831x *wm831x = wm831x_ts->wm831x; | 76 | struct wm831x *wm831x = wm831x_ts->wm831x; |
77 | static int data_types[] = { ABS_X, ABS_Y, ABS_PRESSURE }; | 77 | static int data_types[] = { ABS_X, ABS_Y, ABS_PRESSURE }; |
78 | u16 data[3]; | 78 | u16 data[3]; |
79 | int count = wm831x_ts->pressure ? 3 : 2; | 79 | int count; |
80 | int i, ret; | 80 | int i, ret; |
81 | 81 | ||
82 | if (wm831x_ts->pressure) | ||
83 | count = 3; | ||
84 | else | ||
85 | count = 2; | ||
86 | |||
82 | wm831x_set_bits(wm831x, WM831X_INTERRUPT_STATUS_1, | 87 | wm831x_set_bits(wm831x, WM831X_INTERRUPT_STATUS_1, |
83 | WM831X_TCHDATA_EINT, WM831X_TCHDATA_EINT); | 88 | WM831X_TCHDATA_EINT, WM831X_TCHDATA_EINT); |
84 | 89 | ||
@@ -134,10 +139,11 @@ static irqreturn_t wm831x_ts_pen_down_irq(int irq, void *irq_data) | |||
134 | { | 139 | { |
135 | struct wm831x_ts *wm831x_ts = irq_data; | 140 | struct wm831x_ts *wm831x_ts = irq_data; |
136 | struct wm831x *wm831x = wm831x_ts->wm831x; | 141 | struct wm831x *wm831x = wm831x_ts->wm831x; |
137 | int ena; | 142 | int ena = 0; |
138 | 143 | ||
139 | /* Start collecting data */ | 144 | /* Start collecting data */ |
140 | ena = wm831x_ts->pressure ? WM831X_TCH_Z_ENA : 0; | 145 | if (wm831x_ts->pressure) |
146 | ena |= WM831X_TCH_Z_ENA; | ||
141 | 147 | ||
142 | wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1, | 148 | wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1, |
143 | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | WM831X_TCH_Z_ENA, | 149 | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | WM831X_TCH_Z_ENA, |
@@ -188,11 +194,13 @@ static __devinit int wm831x_ts_probe(struct platform_device *pdev) | |||
188 | struct wm831x_ts *wm831x_ts; | 194 | struct wm831x_ts *wm831x_ts; |
189 | struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent); | 195 | struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent); |
190 | struct wm831x_pdata *core_pdata = dev_get_platdata(pdev->dev.parent); | 196 | struct wm831x_pdata *core_pdata = dev_get_platdata(pdev->dev.parent); |
191 | struct wm831x_touch_pdata *pdata = | 197 | struct wm831x_touch_pdata *pdata = NULL; |
192 | core_pdata ? core_pdata->touch : NULL; | ||
193 | struct input_dev *input_dev; | 198 | struct input_dev *input_dev; |
194 | int error; | 199 | int error; |
195 | 200 | ||
201 | if (core_pdata) | ||
202 | pdata = core_pdata->touch; | ||
203 | |||
196 | wm831x_ts = kzalloc(sizeof(struct wm831x_ts), GFP_KERNEL); | 204 | wm831x_ts = kzalloc(sizeof(struct wm831x_ts), GFP_KERNEL); |
197 | input_dev = input_allocate_device(); | 205 | input_dev = input_allocate_device(); |
198 | if (!wm831x_ts || !input_dev) { | 206 | if (!wm831x_ts || !input_dev) { |