Thread (24 messages) 24 messages, 4 authors, 2016-05-26

Re: Dell Latitude E7470 touchpad status

From: Ben Gamari <hidden>
Date: 2016-05-25 12:32:36
Subsystem: alps ps/2 touchpad driver, input (keyboard, mouse, joystick, touchscreen) drivers, the rest · Maintainers: Dmitry Torokhov, Linus Torvalds

Possibly related (same subject, not in this thread)

Pali Rohár [off-list ref] writes:
Hi Allen, thank you for confirmation.

Ben, V8 protocol is supported by linux kernel since version 4.1. Do you
have needed version? If yes and your touchpad does not work, please
compile psmouse.ko in debug mode and send us dmesg output. Maybe there
can be something interesting...
The first attached patch gets me partly there; I see multitouch events,
the pressure appears to reflect reality, and things generally work as
expected. That is, until I try to touch the touchstick, which causes the
pointer to jump around wildly.

The second attached patch makes things behave slightly better, but the
touchstick still does not work as expected. Settting
ALPS_PS2_INTERLEAVED as well doesn't appear to change anything.

Ideas?

Cheers,

- Ben



From 73f99f86c77d39ff512f2064ca9f2002c6404dd9 Mon Sep 17 00:00:00 2001
From: Ben Gamari <redacted>
Date: Wed, 25 May 2016 14:19:53 +0200
Subject: [PATCH 1/2] alps: Add touchpad for Dell Latitude E7470

However, this still isn't quite right as the touchstick appears to
corrupt the event stream.
---
 drivers/input/mouse/alps.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 936f07a..a0c5dfe 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -2767,6 +2767,9 @@ static int alps_identify(struct psmouse *psmouse, struct alps_data *priv)
 		} else if (e7[0] == 0x73 && e7[1] == 0x03 &&
 			   e7[2] == 0x14 && ec[1] == 0x02) {
 			protocol = &alps_v8_protocol_data;
+		} else if (e7[0] == 0x73 && e7[1] == 0x03 &&
+               e7[2] == 0x28 && ec[1] == 0x01) {
+      protocol = &alps_v8_protocol_data;
 		} else {
 			psmouse_dbg(psmouse,
 				    "Likely not an ALPS touchpad: E7=%3ph, EC=%3ph\n", e7, ec);
-- 
2.8.1



From ea668a46bfbc4165841368a75b197febb09c5b33 Mon Sep 17 00:00:00 2001
From: Ben Gamari <ben@smart-cactus.org>
Date: Wed, 25 May 2016 14:22:05 +0200
Subject: [PATCH 2/2] Try setting ALPS_DUALPOINT

---
 drivers/input/mouse/alps.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index a0c5dfe..a034933 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -138,6 +138,7 @@ static const struct alps_model_info alps_model_data[] = {
 	{ { 0x52, 0x01, 0x14 }, 0x00, { ALPS_PROTO_V2, 0xff, 0xff,
 		ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED } },				/* Toshiba Tecra A11-11L */
 	{ { 0x73, 0x02, 0x64 }, 0x8a, { ALPS_PROTO_V4, 0x8f, 0x8f, 0 } },
+	{ { 0x73, 0x03, 0x28 }, 0x00, { ALPS_PROTO_V8, 0x18, 0x18, ALPS_DUALPOINT } }, /* Dell Latitude E7470 */
 };
 
 static const struct alps_protocol_info alps_v3_protocol_data = {
@@ -2767,9 +2768,6 @@ static int alps_identify(struct psmouse *psmouse, struct alps_data *priv)
 		} else if (e7[0] == 0x73 && e7[1] == 0x03 &&
 			   e7[2] == 0x14 && ec[1] == 0x02) {
 			protocol = &alps_v8_protocol_data;
-		} else if (e7[0] == 0x73 && e7[1] == 0x03 &&
-               e7[2] == 0x28 && ec[1] == 0x01) {
-      protocol = &alps_v8_protocol_data;
 		} else {
 			psmouse_dbg(psmouse,
 				    "Likely not an ALPS touchpad: E7=%3ph, EC=%3ph\n", e7, ec);
-- 
2.8.1

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help