mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
input: edt-ft5x06: Only look at the number of points reported
Register 0x02 in the FT5x06 is TD_STATUS containing the number of valid touch points being reported. Iterate over that number of points rather than all that are supported on the device. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
This commit is contained in:
committed by
Dom Cobley
parent
43e6344cd3
commit
df14e9c81d
@@ -212,6 +212,7 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
|
||||
unsigned int active_ids = 0, known_ids = tsdata->known_ids;
|
||||
long released_ids;
|
||||
int b = 0;
|
||||
unsigned int num_points;
|
||||
|
||||
switch (tsdata->version) {
|
||||
case EDT_M06:
|
||||
@@ -260,9 +261,15 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
|
||||
|
||||
if (!edt_ft5x06_ts_check_crc(tsdata, rdbuf, datalen))
|
||||
goto out;
|
||||
num_points = tsdata->max_support_points;
|
||||
} else {
|
||||
/* Register 2 is TD_STATUS, containing the number of touch
|
||||
* points.
|
||||
*/
|
||||
num_points = min(rdbuf[2] & 0xf, tsdata->max_support_points);
|
||||
}
|
||||
|
||||
for (i = 0; i < tsdata->max_support_points; i++) {
|
||||
for (i = 0; i < num_points; i++) {
|
||||
u8 *buf = &rdbuf[i * tplen + offset];
|
||||
|
||||
type = buf[0] >> 6;
|
||||
|
||||
Reference in New Issue
Block a user