diff options
-rw-r--r-- | Documentation/input/alps.txt | 3 | ||||
-rw-r--r-- | drivers/input/mouse/alps.c | 7 |
2 files changed, 7 insertions, 3 deletions
diff --git a/Documentation/input/alps.txt b/Documentation/input/alps.txt index f274c28b5103..2f95308251d4 100644 --- a/Documentation/input/alps.txt +++ b/Documentation/input/alps.txt | |||
@@ -13,7 +13,8 @@ Detection | |||
13 | 13 | ||
14 | All ALPS touchpads should respond to the "E6 report" command sequence: | 14 | All ALPS touchpads should respond to the "E6 report" command sequence: |
15 | E8-E6-E6-E6-E9. An ALPS touchpad should respond with either 00-00-0A or | 15 | E8-E6-E6-E6-E9. An ALPS touchpad should respond with either 00-00-0A or |
16 | 00-00-64. | 16 | 00-00-64 if no buttons are pressed. The bits 0-2 of the first byte will be 1s |
17 | if some buttons are pressed. | ||
17 | 18 | ||
18 | If the E6 report is successful, the touchpad model is identified using the "E7 | 19 | If the E6 report is successful, the touchpad model is identified using the "E7 |
19 | report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is | 20 | report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is |
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c index bd87380bd879..4c6a72d3d48c 100644 --- a/drivers/input/mouse/alps.c +++ b/drivers/input/mouse/alps.c | |||
@@ -952,7 +952,9 @@ static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int | |||
952 | 952 | ||
953 | /* | 953 | /* |
954 | * First try "E6 report". | 954 | * First try "E6 report". |
955 | * ALPS should return 0,0,10 or 0,0,100 | 955 | * ALPS should return 0,0,10 or 0,0,100 if no buttons are pressed. |
956 | * The bits 0-2 of the first byte will be 1s if some buttons are | ||
957 | * pressed. | ||
956 | */ | 958 | */ |
957 | param[0] = 0; | 959 | param[0] = 0; |
958 | if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES) || | 960 | if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES) || |
@@ -968,7 +970,8 @@ static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int | |||
968 | psmouse_dbg(psmouse, "E6 report: %2.2x %2.2x %2.2x", | 970 | psmouse_dbg(psmouse, "E6 report: %2.2x %2.2x %2.2x", |
969 | param[0], param[1], param[2]); | 971 | param[0], param[1], param[2]); |
970 | 972 | ||
971 | if (param[0] != 0 || param[1] != 0 || (param[2] != 10 && param[2] != 100)) | 973 | if ((param[0] & 0xf8) != 0 || param[1] != 0 || |
974 | (param[2] != 10 && param[2] != 100)) | ||
972 | return NULL; | 975 | return NULL; |
973 | 976 | ||
974 | /* | 977 | /* |