summaryrefslogtreecommitdiff
path: root/drivers/input/mouse
diff options
context:
space:
mode:
authorVojtech Pavlik <vojtech@suse.cz>2003-09-26 12:56:35 +0200
committerLinus Torvalds <torvalds@home.osdl.org>2003-09-26 12:56:35 +0200
commit7d9f7f7e809a0c1ef19590a5de8f4fd72d7a11ba (patch)
tree66041d78da0ed2c6015eae4c0a5a8e103b402897 /drivers/input/mouse
parentd4032a97d03001f5dccdfd258ac9ba70f7bcfda5 (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.c25
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.