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; }