[PATCH 7/16] Limit Synaptics rate on Toshiba Satellites

Dmitry Torokhov
2004-12-29T07:57:03Z

===================================================================

ChangeSet@1.1957.1.34, 2004-11-12 01:31:15-05:00, dtor_core@ameritech.net
Input: synaptics - use DMI to detect Toshiba Satellite notebooks
and automatically reduce touchpad reporting rate to 40 pps
as they have trouble handling high rate (80 pps).

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>

synaptics.c | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+)

===================================================================

diff -Nru a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
--- a/drivers/input/mouse/synaptics.c 2004-12-29 01:48:12 -05:00
+++ b/drivers/input/mouse/synaptics.c 2004-12-29 01:48:12 -05:00
@@ -604,6 +604,20 @@
return 0;
}

+#if defined(__i386__)
+#include <linux/dmi.h>
+static struct dmi_system_id toshiba_dmi_table[] = {
+ {
+ .ident = "Toshiba Satellite",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+ DMI_MATCH(DMI_PRODUCT_NAME , "Satellite"),
+ },
+ },
+ { }
+};
+#endif
+
int synaptics_init(struct psmouse *psmouse)
{
struct synaptics_data *priv;
@@ -636,6 +650,18 @@
psmouse->disconnect = synaptics_disconnect;
psmouse->reconnect = synaptics_reconnect;
psmouse->pktsize = 6;
+
+#if defined(__i386__)
+ /*
+ * Toshiba's KBC seems to have trouble handling data from
+ * Synaptics as full rate, switch to lower rate which is roughly
+ * thye same as rate of standard PS/2 mouse.
+ */
+ if (psmouse->rate >= 80 && dmi_check_system(toshiba_dmi_table)) {
+ printk(KERN_INFO "synaptics: Toshiba Satellite detected, limiting rate to 40pps.\n");
+ psmouse->rate = 40;
+ }
+#endif

return 0;