Bug#376436: kernel-source-2.6.8: Trust MI-2100 ps2 optical mouse does not work
Package: kernel-source-2.6.8
Version: 2.6.8-16sarge3
Severity: normal
I've got a cheap ps2 optical mouse from Trust, the MI 2100. The current driver
in kernel 2.6.8-16sarge3 disables the laser and renders the mouse unusable.
I attach a patch to psmouse-base.c which adds a 'dontdisable' parameter to
psmouse.ko; loading the driver with 'modprobe psmouse dontdisable=1'
successfully solves the problem for me.
A long term solution would probably involve some refining in the probing code
inside psmouse-base.c.
Regards,
Antonio Galea
-- System Information:
Debian Release: 3.1
Architecture: i386 (i686)
Kernel: Linux 2.6.8-3-686
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Versions of packages kernel-source-2.6.8 depends on:
ii binutils 2.15-6 The GNU assembler, linker and bina
ii bzip2 1.0.2-7 high-quality block-sorting file co
ii coreutils [fileutils] 5.2.1-2 The GNU core utilities
-- no debconf information
----------------------------------------------------------------
Net Wise webmail system - http://www.netwise.it
This message was sent using IMP, the Internet Messaging Program.
--- /usr/src/kernel-source-2.6.8/drivers/input/mouse/psmouse-base.c 2004-08-14 07:36:32.000000000 +0200
+++ mouse/psmouse-base.c 2006-07-02 23:16:36.421866656 +0200
@@ -47,6 +47,10 @@
module_param_named(resetafter, psmouse_resetafter, uint, 0);
MODULE_PARM_DESC(resetafter, "Reset device after so many bad packets (0 = never).");
+static unsigned int psmouse_dontdisable;
+module_param_named(dontdisable, psmouse_dontdisable, uint, 0);
+MODULE_PARM_DESC(dontdisable, "Do not disable device upon recognition; useful for some optical Trust mice, notably MI-2100 (default 0).");
+
__obsolete_setup("psmouse_noext");
__obsolete_setup("psmouse_resolution=");
__obsolete_setup("psmouse_smartscroll=");
@@ -527,10 +531,10 @@
/*
* Then we reset and disable the mouse so that it doesn't generate events.
*/
-
- if (psmouse_command(psmouse, NULL, PSMOUSE_CMD_RESET_DIS))
- printk(KERN_WARNING "psmouse.c: Failed to reset mouse on %s\n", psmouse->serio->phys);
-
+ if(!psmouse_dontdisable){
+ if (psmouse_command(psmouse, NULL, PSMOUSE_CMD_RESET_DIS))
+ printk(KERN_WARNING "psmouse.c: Failed to reset mouse on %s\n", psmouse->serio->phys);
+ }
return 0;
}
Reply to: