[RFT/PATCH] Toshiba Satellite, Synaptics & keyboard problems

From: Dmitry Torokhov
Date: Mon Nov 08 2004 - 01:56:48 EST


Hi,

If anyone experiencing keyboard getting "stuck" when you use Synaptics
touchpad in native mode on Toshiba Satellite type notebooks it seems that
lowering rate to 40 pps (which is roughly the same as standard PS/2 rate
bytewise) helps.

Please try the patch below (should apply to -mm tree) and see if it helps
any. If not using -mm tree just use "psmouse.rate=40" or "modprobe psmouse
rate=40" to check if fix is working for you and let me know.

Thanks!

--
Dmitry


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


ChangeSet@xxxxxx, 2004-11-08 01:51:37-05:00, dtor_core@xxxxxxxxxxxxx
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@xxxxxxx>


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-11-08 01:52:54 -05:00
+++ b/drivers/input/mouse/synaptics.c 2004-11-08 01:52:54 -05:00
@@ -604,6 +604,20 @@
return 0;
}

+#if defined(__i386__)
+#include <linux/dmi.h>
+static struct dmi_system_id synaptics_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 (dmi_check_system(synaptics_dmi_table)) {
+ printk(KERN_INFO "synaptics: Toshiba Satellite detected, limiting rate to 40pps.\n");
+ psmouse->rate = 40;
+ }
+#endif

return 0;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/