[PATCH 2/2] input: edt-ft5x06: Perform register read from the very beginning (reg 0x0)

From: Rostislav Lisovy
Date: Tue Apr 21 2015 - 07:20:34 EST


When the touch controller detects a touch event, it raises
an interrupt. The driver then reads the touch controller
registers in its ISR. When register readout is started with the
register 0x02, some devices (tested with the register-compatible
FT5316) return 'garbage' (on single touch, "number of touchpoints"
is 5, all the other registers are either 0xFF, 0x0F or 0x00)
and since the device thinks the interrupt event was not handled
properly (by proper register read), the interrupt is being invoked
cca 60--70 times.

By starting the register read with the register 0x00 (X and Y
coordinated are at the offset 3), valid data are read and the
interrupt event is properly handled.

Signed-off-by: Rostislav Lisovy <lisovy@xxxxxxxxxxxx>
---
drivers/input/touchscreen/edt-ft5x06.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index c938d4b..72bd74c 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -187,10 +187,10 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
break;

case M09:
- cmd = 0x02;
- offset = 1;
+ cmd = 0x00;
+ offset = 3;
tplen = 6;
- datalen = 29;
+ datalen = 31;
break;

default:
--
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/