RE: [PATCH] 2.5.43: Fix for Logitech Wheel Mouse

From: Christopher Hoover (ch@murgatroid.com)
Date: Fri Oct 18 2002 - 12:41:25 EST


> No, it unfortunately is not a proper fix. I'll have to analyze the
> problem some more.

Would you say more? I looked at XFree86 sources and it seemed that the
ImPS/2 protocol best matched what my mouse was sending.

What about a module param/setup arg to force the mouse protocol?

> Can you send me the output of /proc/bus/input/devices on your system
> (without your fix, preferably)?

With*out* the patch:

I: Bus=0011 Vendor=0002 Product=0002 Version=0035
N: Name="PS2++ Logitech Mouse"
P: Phys=isa0060/serio1/input0
H: Handlers=mouse0 event0
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3

I: Bus=0011 Vendor=0001 Product=0002 Version=ab02
N: Name="AT Set 2 keyboard"
P: Phys=isa0060/serio0/input0
H: Handlers=kbd event1
B: EV=120003
B: KEY=4 2000000 8061f9 fbc9d621 efdfffdf ffefffff ffffffff fffffffe
B: LED=7

With the patch:

I: Bus=0011 Vendor=0002 Product=0005 Version=0035
N: Name="ImPS/2 Logitech Wheel Mouse"
P: Phys=isa0060/serio1/input0
H: Handlers=mouse0 event0
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103

I: Bus=0011 Vendor=0001 Product=0002 Version=ab02
N: Name="AT Set 2 keyboard"
P: Phys=isa0060/serio0/input0
H: Handlers=kbd event1
B: EV=120003
B: KEY=4 2000000 8061f9 fbc9d621 efdfffdf ffefffff ffffffff fffffffe
B: LED=7

-----Original Message-----
From: Vojtech Pavlik [mailto:vojtech@suse.cz]
Sent: Friday, October 18, 2002 2:06 AM
To: Christopher Hoover
Cc: linux-kernel@vger.kernel.org; vojtech@suse.cz
Subject: Re: [PATCH] 2.5.43: Fix for Logitech Wheel Mouse

On Thu, Oct 17, 2002 at 11:20:14PM -0700, Christopher Hoover wrote:
> The wheel on my Logitech mouse doesn't work under the input layer.
> The mouse was originally recognized as:
>
> input: PS2++ Logitech Mouse on isa0060/serio1
>
> In this mode, the driver also emits (just once?):
>
> psmouse.c: Received PS2++ packet #0, but don't know how to handle.
>
>
> The following patch simply swaps the order of detection of Logitech PS
> 2++ and Intellimouse protocols. Now my mouse is recognized as:
>
> input: ImPS/2 Logitech Wheel Mouse on isa0060/serio1
>
> And the wheel works properly in this mode.

Can you send me the output of /proc/bus/input/devices on your system
(without your fix, preferably)?

I'd like to know whether the driver thinks the mouse has a wheel or not.

> -ch
> ch@murgatroid.com
> ch@hpl.hp.com
>
>
> PATCH FOLLOWS
> --- linux-2.5.43/drivers/input/mouse/psmouse.c.orig Tue Oct 15
20:27:22 2002
> +++ linux-2.5.43/drivers/input/mouse/psmouse.c Thu Oct 17
22:45:05 2002
> @@ -378,40 +378,6 @@
> }
>
> /*
> - * Do Logitech PS2++ / PS2T++ magic init.
> - */
> -
> - if (psmouse->model == 97) { /* TouchPad 3 */
> -
> - set_bit(REL_WHEEL, psmouse->dev.relbit);
> - set_bit(REL_HWHEEL,
psmouse->dev.relbit);
> -
> - param[0] = 0x11; param[1] = 0x04;
param[2] = 0x68; /* Unprotect RAM */
> - psmouse_command(psmouse, param, 0x30d1);
> - param[0] = 0x11; param[1] = 0x05;
param[2] = 0x0b; /* Enable features */
> - psmouse_command(psmouse, param, 0x30d1);
> - param[0] = 0x11; param[1] = 0x09;
param[2] = 0xc3; /* Enable PS2++ */
> - psmouse_command(psmouse, param, 0x30d1);
> -
> - param[0] = 0;
> - if (!psmouse_command(psmouse, param,
0x13d1) &&
> - param[0] == 0x06 && param[1] ==
0x00 && param[2] == 0x14)
> - return PSMOUSE_PS2TPP;
> -
> - } else {
> - param[0] = param[1] = param[2] = 0;
> -
> - psmouse_ps2pp_cmd(psmouse, param, 0x39);
/* Magic knock */
> - psmouse_ps2pp_cmd(psmouse, param, 0xDB);
> -
> - if ((param[0] & 0x78) == 0x48 &&
(param[1] & 0xf3) == 0xc2 &&
> - (param[2] & 3) == ((param[1] >>
2) & 3))
> - return PSMOUSE_PS2PP;
> - }
> - }
> - }
> -
> -/*
> * Try IntelliMouse magic init.
> */
>
> @@ -450,6 +416,40 @@
>
> psmouse->name = "Wheel Mouse";
> return PSMOUSE_IMPS;
> + }
> +
> +/*
> + * Do Logitech PS2++ / PS2T++ magic init.
> + */
> +
> + if (psmouse->model == 97) { /* TouchPad 3 */
> +
> + set_bit(REL_WHEEL, psmouse->dev.relbit);
> + set_bit(REL_HWHEEL,
psmouse->dev.relbit);
> +
> + param[0] = 0x11; param[1] = 0x04;
param[2] = 0x68; /* Unprotect RAM */
> + psmouse_command(psmouse, param, 0x30d1);
> + param[0] = 0x11; param[1] = 0x05;
param[2] = 0x0b; /* Enable features */
> + psmouse_command(psmouse, param, 0x30d1);
> + param[0] = 0x11; param[1] = 0x09;
param[2] = 0xc3; /* Enable PS2++ */
> + psmouse_command(psmouse, param, 0x30d1);
> +
> + param[0] = 0;
> + if (!psmouse_command(psmouse, param,
0x13d1) &&
> + param[0] == 0x06 && param[1] ==
0x00 && param[2] == 0x14)
> + return PSMOUSE_PS2TPP;
> +
> + } else {
> + param[0] = param[1] = param[2] = 0;
> +
> + psmouse_ps2pp_cmd(psmouse, param, 0x39);
/* Magic knock */
> + psmouse_ps2pp_cmd(psmouse, param, 0xDB);
> +
> + if ((param[0] & 0x78) == 0x48 &&
(param[1] & 0xf3) == 0xc2 &&
> + (param[2] & 3) == ((param[1] >>
2) & 3))
> + return PSMOUSE_PS2PP;
> + }
> + }
> }
>
> /*

-- 
Vojtech Pavlik
SuSE Labs

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Oct 23 2002 - 22:00:43 EST