aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/mouse
diff options
context:
space:
mode:
authorUlrik De Bie <ulrik.debie-os@e2big.org>2014-11-08 02:57:34 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2014-11-08 03:26:45 -0500
commit0dc1587905a50f8f61bbc29e850aa592821e4bea (patch)
tree38d2d6ac8703344013a513c02ae067605d3af194 /drivers/input/mouse
parentcaeb0d37fa3e387eb0dd22e5d497523c002033d1 (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.c19
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 */
1456static 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);