|
@@ -694,18 +694,18 @@ static int elantech_packet_check_v3(struct psmouse *psmouse)
|
|
|
static int elantech_packet_check_v4(struct psmouse *psmouse)
|
|
|
{
|
|
|
unsigned char *packet = psmouse->packet;
|
|
|
+ unsigned char packet_type = packet[3] & 0x03;
|
|
|
|
|
|
- if ((packet[0] & 0x0c) == 0x04 &&
|
|
|
- (packet[3] & 0x1f) == 0x11)
|
|
|
+ switch (packet_type) {
|
|
|
+ case 0:
|
|
|
+ return PACKET_V4_STATUS;
|
|
|
+
|
|
|
+ case 1:
|
|
|
return PACKET_V4_HEAD;
|
|
|
|
|
|
- if ((packet[0] & 0x0c) == 0x04 &&
|
|
|
- (packet[3] & 0x1f) == 0x12)
|
|
|
+ case 2:
|
|
|
return PACKET_V4_MOTION;
|
|
|
-
|
|
|
- if ((packet[0] & 0x0c) == 0x04 &&
|
|
|
- (packet[3] & 0x1f) == 0x10)
|
|
|
- return PACKET_V4_STATUS;
|
|
|
+ }
|
|
|
|
|
|
return PACKET_UNKNOWN;
|
|
|
}
|
|
@@ -1282,6 +1282,7 @@ static int elantech_set_properties(struct elantech_data *etd)
|
|
|
etd->hw_version = 3;
|
|
|
break;
|
|
|
case 6:
|
|
|
+ case 7:
|
|
|
etd->hw_version = 4;
|
|
|
break;
|
|
|
default:
|