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-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html