Am 08.09.2011 06:18, schrieb JJ Ding:
Hi Richard, It turns out that v2 hardware has debounce packet, too. But with different signature compared to v3. To the best of my knowledge, I can only say some models of v2 hardware have this, and others don't. So we always check for debounce. Please test this patch and see if it works for you. Please apply this on up of my v5 series. Thanks --- diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c index 38fb155..1e5ea1d 100644 --- a/drivers/input/mouse/elantech.c +++ b/drivers/input/mouse/elantech.c @@ -613,6 +613,13 @@ static int elantech_packet_check_v1(struct psmouse *psmouse) etd->parity[packet[3]] == p3; } +static int elantech_check_debounce_v2(struct psmouse *psmouse) +{ + const u8 debounce_packet[] = { 0x84, 0xff, 0xff, 0x02, 0xff, 0xff }; + unsigned char *packet = psmouse->packet; + return !memcmp(packet, debounce_packet, sizeof(debounce_packet)); +} + static int elantech_packet_check_v2(struct psmouse *psmouse) { struct elantech_data *etd = psmouse->private; @@ -708,6 +715,9 @@ static psmouse_ret_t elantech_process_byte(struct psmouse *psmouse) break; case 2: + if (elantech_check_debounce_v2(psmouse)) + return PSMOUSE_FULL_PACKET; + if (etd->paritycheck&& !elantech_packet_check_v2(psmouse)) return PSMOUSE_BAD_DATA; -- jj
Yeah, this fixes the annoying issue with multiple fingers. Now only the problem with the wrong axis ranges is remaining. -- Regards, Richard Schütz -- 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