Input: elantech - adjust hw_version detection logic
This patch fixes some v3 hardware (fw_version: 0x150500) wrongly detected as v2 hardware. Reported-by: Marc Dietrich <marvin24@gmx.de> Signed-off-by: JJ Ding <jj_ding@emc.com.tw> Tested-By: Marc Dietrich <marvin24@gmx.de> Acked-by: Éric Piel <eric.piel@tremplin-utc.net> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
@@ -1210,18 +1210,28 @@ static int elantech_reconnect(struct psmouse *psmouse)
|
|||||||
*/
|
*/
|
||||||
static int elantech_set_properties(struct elantech_data *etd)
|
static int elantech_set_properties(struct elantech_data *etd)
|
||||||
{
|
{
|
||||||
|
/* This represents the version of IC body. */
|
||||||
int ver = (etd->fw_version & 0x0f0000) >> 16;
|
int ver = (etd->fw_version & 0x0f0000) >> 16;
|
||||||
|
|
||||||
|
/* Early version of Elan touchpads doesn't obey the rule. */
|
||||||
if (etd->fw_version < 0x020030 || etd->fw_version == 0x020600)
|
if (etd->fw_version < 0x020030 || etd->fw_version == 0x020600)
|
||||||
etd->hw_version = 1;
|
etd->hw_version = 1;
|
||||||
else if (etd->fw_version < 0x150600)
|
else {
|
||||||
etd->hw_version = 2;
|
switch (ver) {
|
||||||
else if (ver == 5)
|
case 2:
|
||||||
etd->hw_version = 3;
|
case 4:
|
||||||
else if (ver == 6)
|
etd->hw_version = 2;
|
||||||
etd->hw_version = 4;
|
break;
|
||||||
else
|
case 5:
|
||||||
return -1;
|
etd->hw_version = 3;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
etd->hw_version = 4;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Turn on packet checking by default.
|
* Turn on packet checking by default.
|
||||||
|
Reference in New Issue
Block a user