diff options
author | Hans de Goede <hdegoede@redhat.com> | 2015-04-03 20:20:05 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-04-05 14:48:35 -0400 |
commit | e3a79212eae6eb64ed68c78409778f8d1a84c2a1 (patch) | |
tree | 6f693f66756774e158401d0d9fe9e3cf536a957a | |
parent | 59c30afbd37c26168597e737297a1de68848c332 (diff) |
Input: alps - report V2 Dualpoint Stick events via the right evdev node
On V2 devices the DualPoint Stick reports bare packets, these should be
reported via the "AlpsPS/2 ALPS DualPoint Stick" dev2 evdev node, which also
has the INPUT_PROP_POINTING_STICK propbit set.
Note that since there is no way to distinguish these packets from an external
PS/2 mouse (insofar as these laptops have an external PS/2 port) this means
that we will be reporting PS/2 mouse events via this evdev node too, as we've
been doing in kernel 3.19 and older.
This has been tested on a Dell Latitude D620 and a Dell Latitude E6400,
which both have a V2 touchpad + a DualPoint Stick which reports bare packets.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r-- | drivers/input/mouse/alps.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c index e32625ccf8b6..27bcdbc950c9 100644 --- a/drivers/input/mouse/alps.c +++ b/drivers/input/mouse/alps.c | |||
@@ -1161,7 +1161,12 @@ static void alps_report_bare_ps2_packet(struct psmouse *psmouse, | |||
1161 | struct alps_data *priv = psmouse->private; | 1161 | struct alps_data *priv = psmouse->private; |
1162 | struct input_dev *dev; | 1162 | struct input_dev *dev; |
1163 | 1163 | ||
1164 | if (unlikely(IS_ERR_OR_NULL(priv->dev3))) { | 1164 | /* Figure out which device to use to report the bare packet */ |
1165 | if (priv->proto_version == ALPS_PROTO_V2 && | ||
1166 | (priv->flags & ALPS_DUALPOINT)) { | ||
1167 | /* On V2 devices the DualPoint Stick reports bare packets */ | ||
1168 | dev = priv->dev2; | ||
1169 | } else if (unlikely(IS_ERR_OR_NULL(priv->dev3))) { | ||
1165 | /* Register dev3 mouse if we received PS/2 packet first time */ | 1170 | /* Register dev3 mouse if we received PS/2 packet first time */ |
1166 | if (!IS_ERR(priv->dev3)) | 1171 | if (!IS_ERR(priv->dev3)) |
1167 | psmouse_queue_work(psmouse, &priv->dev3_register_work, | 1172 | psmouse_queue_work(psmouse, &priv->dev3_register_work, |