Commit bf37323c855daa113860a53f05da27059204442e

Authored by Franklin S Cooper Jr
Committed by Sekhar Nori
1 parent 75c1c42d45

Input: edt-ft5x06 - Work around FT5506 firmware bug

In the touchscreen controller ISR, reading the tsc starting from
register 0x2 causes the tsc to very infrequently update the detected
finger movement coordinates. The irq pin toogles at a fast rate to
indicate touch events are happening but when reading the coordinates
from the tsc the are only updated/change at at rate of ~100 ms.

Example:
X: 10 , Y: 30
X: 10 , Y: 30
X: 10,  Y: 30
..
// After 100 ms
X: 300, Y: 300
X: 300, y: 300
..
// After 100 ms
X: 1743, Y: 621
X: 1743, Y: 621

For some reason if instead of starting to read at register 0x2 you
start reading at register 0x0 this issue isn't seen. This seems like
a quirk only seen in the EDT FT5506 so to fix this issue simply
adjust the code to start reading from 0x0. Since there is technically
nothing wrong with doing this no regressions should be seen with other
touchscreen controllers supported by this driver.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>

Showing 1 changed file with 3 additions and 3 deletions Side-by-side Diff

drivers/input/touchscreen/edt-ft5x06.c
... ... @@ -174,7 +174,7 @@
174 174 struct edt_ft5x06_ts_data *tsdata = dev_id;
175 175 struct device *dev = &tsdata->client->dev;
176 176 u8 cmd;
177   - u8 rdbuf[59];
  177 + u8 rdbuf[61];
178 178 int i, type, x, y, id;
179 179 int offset, tplen, datalen;
180 180 int error;
... ... @@ -190,8 +190,8 @@
190 190 break;
191 191  
192 192 case M09:
193   - cmd = 0x02;
194   - offset = 1;
  193 + cmd = 0x0;
  194 + offset = 3;
195 195 tplen = 6;
196 196 datalen = tplen * tsdata->max_support_points + 1 - cmd;
197 197 break;