Re: [Bug #12406] 2.6.28 thinks that my PS/2 mouse is a touchpad

From: Dmitry Torokhov
Date: Tue Jan 20 2009 - 04:21:07 EST


> On Mon, Jan 19, 2009 at 10:45:42PM +0100, Rafael J. Wysocki wrote:
> > The following bug entry is on the current list of known regressions
> > introduced between 2.6.27 and 2.6.28. Please verify if it still should
> > be listed and let me know (either way).
>
> Well. Dmitry hasn't replied yet to my suggestion how to fix this as
> presented in the Patch entry. Without help from him as the Linux input
> subsystem maintainer there is not a lot I can do.
>
> This means the regression is still present in the current 2.6.29 git tree.

Sorry, must have missed that. I think it's gonna be a bit chatty if
user happens to have Logitech++ device attached, however I think if
we complement it with the patch below I think it should work OK.

--
Dmitry

Input: psmouse - move Elantech detection towards end of the list

Elantech'd detection routine misfires on Logitech's devices so let's
move it down to prevent false positives.

Signed-off-by: Dmitry Torokhov <dtor@xxxxxxx>
---

drivers/input/mouse/psmouse-base.c | 26 +++++++++++++-------------
1 files changed, 13 insertions(+), 13 deletions(-)


diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-
base.c
index f8f86de..e4106ba 100644
--- a/drivers/input/mouse/psmouse-base.c
+++ b/drivers/input/mouse/psmouse-base.c
@@ -651,19 +651,6 @@ static int psmouse_extensions(struct psmouse *psmouse,
max_proto = PSMOUSE_IMEX;
}

-/*
- * Try Elantech touchpad.
- */
- if (max_proto > PSMOUSE_IMEX &&
- elantech_detect(psmouse, set_properties) == 0) {
- if (!set_properties || elantech_init(psmouse) == 0)
- return PSMOUSE_ELANTECH;
-/*
- * Init failed, try basic relative protocols
- */
- max_proto = PSMOUSE_IMEX;
- }
-
if (max_proto > PSMOUSE_IMEX) {
if (genius_detect(psmouse, set_properties) == 0)
return PSMOUSE_GENPS;
@@ -679,6 +666,19 @@ static int psmouse_extensions(struct psmouse *psmouse,
}

/*
+ * Try Elantech touchpad.
+ */
+ if (max_proto > PSMOUSE_IMEX &&
+ elantech_detect(psmouse, set_properties) == 0) {
+ if (!set_properties || elantech_init(psmouse) == 0)
+ return PSMOUSE_ELANTECH;
+/*
+ * Init failed, try basic relative protocols
+ */
+ max_proto = PSMOUSE_IMEX;
+ }
+
+/*
* Reset to defaults in case the device got confused by extended
* protocol probes. Note that we follow up with full reset because
* some mice put themselves to sleep when they see PSMOUSE_RESET_DIS.

N?§²æìr¸?yúè?Øb²X¬¶Ç§vØ^?)Þº{.nÇ+?·¥?{±?êçzX§¶?¡Ü¨}©?²Æ zÚ&j:+v?¨¾«?êçzZ+?Ê+zf£¢·h??§~?­?Ûiÿûàz¹®w¥¢¸??¨è­Ú&¢)ߢf?ù^jÇ«y§m?á@A«a¶Úÿ 0¶ìh®å?i