From: Dmitry Torokhov Allow switching between high and low reporting rate for Synaptics touchpads in native mode. Synaptics support 2 report rates - 40 and 80 packets/sec; report rate must be set using Synaptics mode set command. Rate is controlled by psmouse.rate parameter, values greater or equal 80 will set 'high' rate. (psmouse.rate defaults to 100). Using low report rate should help slower systems or systems spending too much time in SCI (ACPI). --- drivers/input/mouse/psmouse.h | 1 + drivers/input/mouse/synaptics.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff -puN drivers/input/mouse/psmouse.h~synaptics-rate-switching drivers/input/mouse/psmouse.h --- 25/drivers/input/mouse/psmouse.h~synaptics-rate-switching 2004-01-10 01:01:30.000000000 -0800 +++ 25-akpm/drivers/input/mouse/psmouse.h 2004-01-10 01:01:30.000000000 -0800 @@ -67,6 +67,7 @@ struct psmouse { int psmouse_command(struct psmouse *psmouse, unsigned char *param, int command); extern int psmouse_smartscroll; +extern unsigned int psmouse_rate; extern unsigned int psmouse_resetafter; #endif /* _PSMOUSE_H */ diff -puN drivers/input/mouse/synaptics.c~synaptics-rate-switching drivers/input/mouse/synaptics.c --- 25/drivers/input/mouse/synaptics.c~synaptics-rate-switching 2004-01-10 01:01:30.000000000 -0800 +++ 25-akpm/drivers/input/mouse/synaptics.c 2004-01-10 01:01:30.000000000 -0800 @@ -214,7 +214,9 @@ static int synaptics_set_mode(struct psm { struct synaptics_data *priv = psmouse->private; - mode |= SYN_BIT_ABSOLUTE_MODE | SYN_BIT_HIGH_RATE; + mode |= SYN_BIT_ABSOLUTE_MODE; + if (psmouse_rate >= 80) + mode |= SYN_BIT_HIGH_RATE; if (SYN_ID_MAJOR(priv->identity) >= 4) mode |= SYN_BIT_DISABLE_GESTURE; if (SYN_CAP_EXTENDED(priv->capabilities)) _