| From seth.forshee@canonical.com Thu Mar 8 14:57:33 2012 |
| From: Seth Forshee <seth.forshee@canonical.com> |
| Date: Thu, 8 Mar 2012 13:48:12 -0600 |
| Subject: Input: ALPS - fix touchpad detection when buttons are pressed |
| To: gregkh@linuxfoundation.org, stable@vger.kernel.org |
| Cc: zbe64533@gmail.com, dtor@mail.ru |
| Message-ID: <1331236092-12260-1-git-send-email-seth.forshee@canonical.com> |
| |
| |
| From: Akio Idehara <zbe64533@gmail.com> |
| |
| commit 99c90ab31fad855b9da9dee3a5aa6c27f263e9d6 upstream. |
| |
| ALPS touchpad detection fails if some buttons of ALPS are pressed. |
| The reason is that the "E6" query response byte is different from |
| what is expected. |
| |
| This was tested on a Toshiba Portege R500. |
| |
| Signed-off-by: Akio Idehara <zbe64533@gmail.com> |
| Tested-by: Seth Forshee <seth.forshee@canonical.com> |
| Signed-off-by: Dmitry Torokhov <dtor@mail.ru> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/input/mouse/alps.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/input/mouse/alps.c |
| +++ b/drivers/input/mouse/alps.c |
| @@ -421,7 +421,9 @@ static const struct alps_model_info *alp |
| |
| /* |
| * First try "E6 report". |
| - * ALPS should return 0,0,10 or 0,0,100 |
| + * ALPS should return 0,0,10 or 0,0,100 if no buttons are pressed. |
| + * The bits 0-2 of the first byte will be 1s if some buttons are |
| + * pressed. |
| */ |
| param[0] = 0; |
| if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES) || |
| @@ -437,7 +439,8 @@ static const struct alps_model_info *alp |
| psmouse_dbg(psmouse, "E6 report: %2.2x %2.2x %2.2x", |
| param[0], param[1], param[2]); |
| |
| - if (param[0] != 0 || param[1] != 0 || (param[2] != 10 && param[2] != 100)) |
| + if ((param[0] & 0xf8) != 0 || param[1] != 0 || |
| + (param[2] != 10 && param[2] != 100)) |
| return NULL; |
| |
| /* |