|
@@ -76,9 +76,14 @@ static irqreturn_t wm831x_ts_data_irq(int irq, void *irq_data)
|
|
|
struct wm831x *wm831x = wm831x_ts->wm831x;
|
|
|
static int data_types[] = { ABS_X, ABS_Y, ABS_PRESSURE };
|
|
|
u16 data[3];
|
|
|
- int count = wm831x_ts->pressure ? 3 : 2;
|
|
|
+ int count;
|
|
|
int i, ret;
|
|
|
|
|
|
+ if (wm831x_ts->pressure)
|
|
|
+ count = 3;
|
|
|
+ else
|
|
|
+ count = 2;
|
|
|
+
|
|
|
wm831x_set_bits(wm831x, WM831X_INTERRUPT_STATUS_1,
|
|
|
WM831X_TCHDATA_EINT, WM831X_TCHDATA_EINT);
|
|
|
|
|
@@ -134,10 +139,11 @@ static irqreturn_t wm831x_ts_pen_down_irq(int irq, void *irq_data)
|
|
|
{
|
|
|
struct wm831x_ts *wm831x_ts = irq_data;
|
|
|
struct wm831x *wm831x = wm831x_ts->wm831x;
|
|
|
- int ena;
|
|
|
+ int ena = 0;
|
|
|
|
|
|
/* Start collecting data */
|
|
|
- ena = wm831x_ts->pressure ? WM831X_TCH_Z_ENA : 0;
|
|
|
+ if (wm831x_ts->pressure)
|
|
|
+ ena |= WM831X_TCH_Z_ENA;
|
|
|
|
|
|
wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
|
|
|
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)
|
|
|
struct wm831x_ts *wm831x_ts;
|
|
|
struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent);
|
|
|
struct wm831x_pdata *core_pdata = dev_get_platdata(pdev->dev.parent);
|
|
|
- struct wm831x_touch_pdata *pdata =
|
|
|
- core_pdata ? core_pdata->touch : NULL;
|
|
|
+ struct wm831x_touch_pdata *pdata = NULL;
|
|
|
struct input_dev *input_dev;
|
|
|
int error;
|
|
|
|
|
|
+ if (core_pdata)
|
|
|
+ pdata = core_pdata->touch;
|
|
|
+
|
|
|
wm831x_ts = kzalloc(sizeof(struct wm831x_ts), GFP_KERNEL);
|
|
|
input_dev = input_allocate_device();
|
|
|
if (!wm831x_ts || !input_dev) {
|