diff options
author | Ulrik De Bie <ulrik.debie-os@e2big.org> | 2014-11-08 02:57:34 -0500 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2014-11-08 03:26:45 -0500 |
commit | 0dc1587905a50f8f61bbc29e850aa592821e4bea (patch) | |
tree | 38d2d6ac8703344013a513c02ae067605d3af194 /drivers/input/mouse | |
parent | caeb0d37fa3e387eb0dd22e5d497523c002033d1 (diff) |
Input: elantech - fix crc_enabled for Fujitsu H730
The Fujitsu H730 does not work with crc_enabled = 0, even though the
crc_enabled bit in the firmware version indicated it would. When switching
this value to crc_enabled to 1, the touchpad works. This patch uses DMI to
detect H730.
Reported-by: Stefan Valouch <stefan@valouch.com>
Tested-by: Stefan Valouch <stefan@valouch.com>
Tested-by: Alfredo Gemma <alfredo.gemma@gmail.com>
Signed-off-by: Ulrik De Bie <ulrik.debie-os@e2big.org>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/mouse')
-rw-r--r-- | drivers/input/mouse/elantech.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c index 53ddff91ab2e..ce699eba9adc 100644 --- a/drivers/input/mouse/elantech.c +++ b/drivers/input/mouse/elantech.c | |||
@@ -1451,6 +1451,22 @@ static int elantech_reconnect(struct psmouse *psmouse) | |||
1451 | } | 1451 | } |
1452 | 1452 | ||
1453 | /* | 1453 | /* |
1454 | * Some hw_version 4 models do not work with crc_disabled | ||
1455 | */ | ||
1456 | static const struct dmi_system_id elantech_dmi_force_crc_enabled[] = { | ||
1457 | #if defined(CONFIG_DMI) && defined(CONFIG_X86) | ||
1458 | { | ||
1459 | /* Fujitsu H730 does not work with crc_enabled == 0 */ | ||
1460 | .matches = { | ||
1461 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), | ||
1462 | DMI_MATCH(DMI_PRODUCT_NAME, "CELSIUS H730"), | ||
1463 | }, | ||
1464 | }, | ||
1465 | #endif | ||
1466 | { } | ||
1467 | }; | ||
1468 | |||
1469 | /* | ||
1454 | * Some hw_version 3 models go into error state when we try to set | 1470 | * Some hw_version 3 models go into error state when we try to set |
1455 | * bit 3 and/or bit 1 of r10. | 1471 | * bit 3 and/or bit 1 of r10. |
1456 | */ | 1472 | */ |
@@ -1525,7 +1541,8 @@ static int elantech_set_properties(struct elantech_data *etd) | |||
1525 | * The signatures of v3 and v4 packets change depending on the | 1541 | * The signatures of v3 and v4 packets change depending on the |
1526 | * value of this hardware flag. | 1542 | * value of this hardware flag. |
1527 | */ | 1543 | */ |
1528 | etd->crc_enabled = ((etd->fw_version & 0x4000) == 0x4000); | 1544 | etd->crc_enabled = (etd->fw_version & 0x4000) == 0x4000 || |
1545 | dmi_check_system(elantech_dmi_force_crc_enabled); | ||
1529 | 1546 | ||
1530 | /* Enable real hardware resolution on hw_version 3 ? */ | 1547 | /* Enable real hardware resolution on hw_version 3 ? */ |
1531 | etd->set_hw_resolution = !dmi_check_system(no_hw_res_dmi_table); | 1548 | etd->set_hw_resolution = !dmi_check_system(no_hw_res_dmi_table); |