|
@@ -1450,6 +1450,22 @@ static int elantech_reconnect(struct psmouse *psmouse)
|
|
|
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
|
|
|
* bit 3 and/or bit 1 of r10.
|
|
@@ -1525,7 +1541,8 @@ static int elantech_set_properties(struct elantech_data *etd)
|
|
|
* The signatures of v3 and v4 packets change depending on the
|
|
|
* 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 ? */
|
|
|
etd->set_hw_resolution = !dmi_check_system(no_hw_res_dmi_table);
|