[PATCH] Input: wacom - ignore unwanted bamboo packets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Chris Bagwell <chris@xxxxxxxxxxxxxx>

Bamboo's Pen and Touch packets always start with a value
of 0x02 in first byte.  In 3rd gen Bamboo's, the hw is now
periodically sending some additional packets with unrelated data
and uses a value other than 0x02 to inform driver this.

Ignore those packets now.

This was reported by users as bad behavior in Gimp. The
invalid packets being processed made the stylus report
out of proximity for the 1 packet and this triggered some
secondary bug which caused Gimp to stop drawing until
user really took pen out of proximity of tablet.

Signed-off-by: Chris Bagwell <chris@xxxxxxxxxxxxxx>
---

This patch is for next branch; were 3rd gen Bamboo patches
are.

It was tested on 1st gen and 3rd gen Bamboo.

 drivers/input/tablet/wacom_wac.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
index 164bb55..6b9adc7 100644
--- a/drivers/input/tablet/wacom_wac.c
+++ b/drivers/input/tablet/wacom_wac.c
@@ -799,6 +799,9 @@ static int wacom_bpt_touch(struct wacom_wac *wacom)
 	unsigned char *data = wacom->data;
 	int i;
 
+	if (data[0] != 0x02)
+	    return 0;
+
 	for (i = 0; i < 2; i++) {
 		int p = data[9 * i + 2];
 		bool touch = p && !wacom->shared->stylus_in_proximity;
@@ -875,6 +878,9 @@ static int wacom_bpt3_touch(struct wacom_wac *wacom)
 	int count = data[1] & 0x03;
 	int i;
 
+	if (data[0] != 0x02)
+	    return 0;
+
 	/* data has up to 7 fixed sized 8-byte messages starting at data[2] */
 	for (i = 0; i < count; i++) {
 		int offset = (8 * i) + 2;
@@ -900,6 +906,9 @@ static int wacom_bpt_pen(struct wacom_wac *wacom)
 	unsigned char *data = wacom->data;
 	int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0;
 
+	if (data[0] != 0x02)
+	    return 0;
+
 	prox = (data[1] & 0x20) == 0x20;
 
 	/*
-- 
1.7.7

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux