Commit bf37323c855daa113860a53f05da27059204442e
Committed by
Sekhar Nori
1 parent
75c1c42d45
Exists in
ti-lsk-linux-4.1.y
and in
5 other branches
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; |