Skip to content

Commit

Permalink
Input: ALPS - rework detection of Pinnacle AGx touchpads
Browse files Browse the repository at this point in the history
The official ALPS driver uses the EC report, not the E7 report, to detect
these devices.  Also, they check for a range of values; the original
table-based code only checked for two specific ones.

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Tested-by: Dave Turvene <dturvene@dahetral.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
  • Loading branch information
Kevin Cernekee authored and Dmitry Torokhov committed Feb 14, 2013
1 parent 50e8b21 commit f673ceb
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions drivers/input/mouse/alps.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,6 @@ static const struct alps_model_info alps_model_data[] = {
{ { 0x73, 0x02, 0x50 }, 0x00, ALPS_PROTO_V2, 0xcf, 0xcf, ALPS_FOUR_BUTTONS }, /* Dell Vostro 1400 */
{ { 0x52, 0x01, 0x14 }, 0x00, ALPS_PROTO_V2, 0xff, 0xff,
ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED }, /* Toshiba Tecra A11-11L */
{ { 0x73, 0x02, 0x64 }, 0x9b, ALPS_PROTO_V3, 0x8f, 0x8f, ALPS_DUALPOINT },
{ { 0x73, 0x02, 0x64 }, 0x9d, ALPS_PROTO_V3, 0x8f, 0x8f, ALPS_DUALPOINT },
{ { 0x73, 0x02, 0x64 }, 0x8a, ALPS_PROTO_V4, 0x8f, 0x8f, 0 },
};

Expand Down Expand Up @@ -1412,6 +1410,10 @@ static int alps_hw_init_v4(struct psmouse *psmouse)

static void alps_set_defaults(struct alps_data *priv)
{
priv->byte0 = 0x8f;
priv->mask0 = 0x8f;
priv->flags = ALPS_DUALPOINT;

switch (priv->proto_version) {
case ALPS_PROTO_V1:
case ALPS_PROTO_V2:
Expand Down Expand Up @@ -1491,8 +1493,15 @@ static int alps_identify(struct psmouse *psmouse, struct alps_data *priv)
alps_exit_command_mode(psmouse))
return -EIO;

if (alps_match_table(psmouse, priv, e7, ec) == 0)
if (alps_match_table(psmouse, priv, e7, ec) == 0) {
return 0;
} else if (ec[0] == 0x88 && ec[1] == 0x07 &&
ec[2] >= 0x90 && ec[2] <= 0x9d) {
priv->proto_version = ALPS_PROTO_V3;
alps_set_defaults(priv);

return 0;
}

psmouse_info(psmouse,
"Unknown ALPS touchpad: E7=%2.2x %2.2x %2.2x, EC=%2.2x %2.2x %2.2x\n",
Expand Down

0 comments on commit f673ceb

Please sign in to comment.