Commit 5a3ffe3b authored by Ulrik De Bie's avatar Ulrik De Bie Committed by Luis Henriques

Input: elantech - fix crc_enabled for Fujitsu H730

commit 0dc15879 upstream.

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: default avatarStefan Valouch <stefan@valouch.com>
Tested-by: default avatarStefan Valouch <stefan@valouch.com>
Tested-by: default avatarAlfredo Gemma <alfredo.gemma@gmail.com>
Signed-off-by: default avatarUlrik De Bie <ulrik.debie-os@e2big.org>
Acked-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent 3ba0732b
...@@ -1373,6 +1373,22 @@ static int elantech_reconnect(struct psmouse *psmouse) ...@@ -1373,6 +1373,22 @@ static int elantech_reconnect(struct psmouse *psmouse)
return 0; return 0;
} }
/*
* Some hw_version 4 models do not work with crc_disabled
*/
static const struct dmi_system_id elantech_dmi_force_crc_enabled[] = {
#if defined(CONFIG_DMI) && defined(CONFIG_X86)
{
/* Fujitsu H730 does not work with crc_enabled == 0 */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
DMI_MATCH(DMI_PRODUCT_NAME, "CELSIUS H730"),
},
},
#endif
{ }
};
/* /*
* Some hw_version 3 models go into error state when we try to set * Some hw_version 3 models go into error state when we try to set
* bit 3 and/or bit 1 of r10. * bit 3 and/or bit 1 of r10.
...@@ -1450,7 +1466,8 @@ static int elantech_set_properties(struct elantech_data *etd) ...@@ -1450,7 +1466,8 @@ static int elantech_set_properties(struct elantech_data *etd)
* The signatures of v3 and v4 packets change depending on the * The signatures of v3 and v4 packets change depending on the
* value of this hardware flag. * value of this hardware flag.
*/ */
etd->crc_enabled = ((etd->fw_version & 0x4000) == 0x4000); etd->crc_enabled = (etd->fw_version & 0x4000) == 0x4000 ||
dmi_check_system(elantech_dmi_force_crc_enabled);
/* Enable real hardware resolution on hw_version 3 ? */ /* Enable real hardware resolution on hw_version 3 ? */
etd->set_hw_resolution = !dmi_check_system(no_hw_res_dmi_table); etd->set_hw_resolution = !dmi_check_system(no_hw_res_dmi_table);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment