Thread (41 messages) 41 messages, 3 authors, 2014-11-14

Re: [PATCH v3 3/4] input: alps: For protocol V3, do not process data when last packet's bit7 is set

From: Pali Rohár <hidden>
Date: 2014-11-09 11:23:08
Also in: lkml

On Sunday 09 November 2014 08:50:39 Dmitry Torokhov wrote:
Hi Pali,

On Sun, Nov 02, 2014 at 12:25:09AM +0100, Pali Rohár wrote:
quoted
Sometimes on Dell Latitude laptops psmouse/alps driver
receive invalid ALPS protocol V3 packets with bit7 set in
last byte. More often it can be reproduced on Dell Latitude
E6440 or E7440 with closed lid and pushing cover above
touchpad.

If bit7 in last packet byte is set then it is not valid ALPS
packet. I was told that ALPS devices never send these
packets. It is not know yet who send those packets, it
could be Dell EC, bug in BIOS and also bug in touchpad
firmware...

With this patch alps driver does not process those invalid
packets and drops it with PSMOUSE_FULL_PACKET so psmouse
driver does not enter to out of sync state.

This patch fix problem when psmouse driver still resetting
ALPS device when laptop lid is closed because of receiving
invalid packets in out of sync state.

Signed-off-by: Pali Rohár <redacted>
Tested-by: Pali Rohár <redacted>
Cc: stable@vger.kernel.org
---

 drivers/input/mouse/alps.c |   10 ++++++++++
 1 file changed, 10 insertions(+)
diff --git a/drivers/input/mouse/alps.c
b/drivers/input/mouse/alps.c index 7c47e97..e802d28 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -1181,6 +1181,16 @@ static psmouse_ret_t
alps_process_byte(struct psmouse *psmouse)

 		return PSMOUSE_BAD_DATA;
 	
 	}

+	if (priv->proto_version == ALPS_PROTO_V3 &&
psmouse->pktcnt == psmouse->pktsize) { +		// For protocol
V3, do not process data when last packet's bit7 is set
+		if (psmouse->packet[psmouse->pktcnt - 1] & 0x80) {
+			psmouse_dbg(psmouse, "v3 discard packet[%i] = 
%x\n",
quoted
+				    psmouse->pktcnt - 1,
+				    psmouse->packet[psmouse->pktcnt - 1]);
+			return PSMOUSE_FULL_PACKET;
+		}
+	}
I wanted to apply it, but I would like some more data. Could
you please send me the dmesg with i8042.debug wit this patch
in place?

Thanks!
See attachment. It contains debug log from both i8042.debug=1 and 
psmouse.ko with applied all 4 patches.

-- 
Pali Rohár
pali.rohar@gmail.com

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