Re: [PATCH] ALPS touchpad detection fix

From: Peter Osterlund
Date: Fri Jan 07 2005 - 17:25:59 EST


Denis Vlasenko <vda@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> writes:

> On Thursday 06 January 2005 18:54, Peter Osterlund wrote:
> > My ALPS touchpad is not recognized because the device gets confused by
> > the Kensington ThinkingMouse probe. It responds with "00 00 14"
> > instead of the expected "00 00 64" to the "E6 report".
> >
> > Resetting the device before attempting the ALPS probe fixes the
> > problem.
> >
...
> > /*
> > * Try ALPS TouchPad
> > */
> > + ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS);
> > if (max_proto > PSMOUSE_IMEX && alps_detect(psmouse, set_properties) == 0) {
> > if (!set_properties || alps_init(psmouse) == 0)
> > return PSMOUSE_ALPS;
>
> You do reset even if max_proto <= PSMOUSE_IMEX and therefore
> alps_detect won't be called. Is it intended?

Not really intended. (It shouldn't harm though because the
mouse/touchpad is reset anyway before the IntelliMouse probe.)

Here is an updated patch that only does the reset when alps_detect()
is going to be called.

Signed-off-by: Peter Osterlund <petero2@xxxxxxxxx>
---

linux-petero/drivers/input/mouse/psmouse-base.c | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)

diff -puN drivers/input/mouse/psmouse-base.c~alps-fix drivers/input/mouse/psmouse-base.c
--- linux/drivers/input/mouse/psmouse-base.c~alps-fix 2005-01-06 22:43:28.000000000 +0100
+++ linux-petero/drivers/input/mouse/psmouse-base.c 2005-01-07 22:51:45.000000000 +0100
@@ -451,14 +451,16 @@ static int psmouse_extensions(struct psm
/*
* Try ALPS TouchPad
*/
- if (max_proto > PSMOUSE_IMEX && alps_detect(psmouse, set_properties) == 0) {
- if (!set_properties || alps_init(psmouse) == 0)
- return PSMOUSE_ALPS;
-
+ if (max_proto > PSMOUSE_IMEX) {
+ ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS);
+ if (alps_detect(psmouse, set_properties) == 0) {
+ if (!set_properties || alps_init(psmouse) == 0)
+ return PSMOUSE_ALPS;
/*
* Init failed, try basic relative protocols
*/
- max_proto = PSMOUSE_IMEX;
+ max_proto = PSMOUSE_IMEX;
+ }
}

if (max_proto > PSMOUSE_IMEX && genius_detect(psmouse, set_properties) == 0)
_

--
Peter Osterlund - petero2@xxxxxxxxx
http://web.telia.com/~u89404340
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/