diff options
| author | Vojtech Pavlik <vojtech@suse.cz> | 2003-09-26 12:56:35 +0200 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.osdl.org> | 2003-09-26 12:56:35 +0200 |
| commit | 7d9f7f7e809a0c1ef19590a5de8f4fd72d7a11ba (patch) | |
| tree | 66041d78da0ed2c6015eae4c0a5a8e103b402897 /drivers/input/mouse | |
| parent | d4032a97d03001f5dccdfd258ac9ba70f7bcfda5 (diff) | |
input: Change AT keyboard to use hardware autorepeat and move
untranslating to the AT keyboard driver as well. Lower
PS/2 mouse default report rate. Fix repeat rate adjustment
ioctls accordingly, and update other files to reflect the
changes. This should fix most known keyboard problems in 2.6.
Diffstat (limited to 'drivers/input/mouse')
| -rw-r--r-- | drivers/input/mouse/psmouse-base.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c index 86ee54a4df78..13550cd4719f 100644 --- a/drivers/input/mouse/psmouse-base.c +++ b/drivers/input/mouse/psmouse-base.c @@ -28,6 +28,8 @@ MODULE_PARM(psmouse_noext, "1i"); MODULE_PARM_DESC(psmouse_noext, "Disable any protocol extensions. Useful for KVM switches."); MODULE_PARM(psmouse_resolution, "i"); MODULE_PARM_DESC(psmouse_resolution, "Resolution, in dpi."); +MODULE_PARM(psmouse_rate, "i"); +MODULE_PARM_DESC(psmouse_rate, "Report rate, in reports per second."); MODULE_PARM(psmouse_smartscroll, "i"); MODULE_PARM_DESC(psmouse_smartscroll, "Logitech Smartscroll autorepeat, 1 = enabled (default), 0 = disabled."); MODULE_PARM(psmouse_resetafter, "i"); @@ -38,6 +40,7 @@ MODULE_LICENSE("GPL"); static int psmouse_noext; int psmouse_resolution; +unsigned int psmouse_rate = 60; int psmouse_smartscroll = PSMOUSE_LOGITECH_SMARTSCROLL; unsigned int psmouse_resetafter; @@ -443,22 +446,32 @@ static void psmouse_set_resolution(struct psmouse *psmouse) } /* + * Here we set the mouse report rate. + */ + +static void psmouse_set_rate(struct psmouse *psmouse) +{ + unsigned char rates[] = { 200, 100, 80, 60, 40, 20, 10, 0 }; + int i = 0; + + while (rates[i] > psmouse_rate) i++; + psmouse_command(psmouse, rates + i, PSMOUSE_CMD_SETRATE); +} + +/* * psmouse_initialize() initializes the mouse to a sane state. */ static void psmouse_initialize(struct psmouse *psmouse) { unsigned char param[2]; + /* - * We set the mouse report rate to a highest possible value. - * We try 100 first in case mouse fails to set 200. + * We set the mouse report rate. */ - param[0] = 100; - psmouse_command(psmouse, param, PSMOUSE_CMD_SETRATE); - param[0] = 200; - psmouse_command(psmouse, param, PSMOUSE_CMD_SETRATE); + psmouse_set_rate(psmouse); /* * We also set the resolution and scaling. |
