Commit c7f0522 reports incorrect touchring values to userspace. This is
due to its incorrect handling of the 'touched' bit present in the 'ring1'
and 'ring2' variables. Instead of using this bit when determining if a
value should be sent, the ABS_WHEEL and ABS_INPUT check (different?!)
portions of the position bits. Furthermore, the full values of 'ring1'
and 'ring2' are reported to userspace, despite the 'touched' flag
needing to be trimmed beforehand. This commit addresses both issues.

NOTE: This patch was backported earlier, but only as far back as 2.6.38.
To make backporting the next few patches easier, we complete this backport
all the way to 2.6.30.

Signed-off-by: Jason Gerecke <jason.gere...@wacom.com>
Signed-off-by: Jiri Kosina <jkos...@suse.cz>
[jason.gere...@wacom.com: Imported into input-wacom repository (aaae03e)]
Signed-off-by: Jason Gerecke <jason.gere...@wacom.com>
[jason.gere...@wacom.com: backported from input-wacom 71cfd59]
Signed-off-by: Jason Gerecke <jason.gere...@wacom.com>
[jason.gere...@wacom.com: backported from input-wacom (ca1abfd)]
Signed-off-by: Jason Gerecke <jason.gere...@wacom.com>
---
 2.6.30/wacom_wac.c | 4 ++--
 2.6.36/wacom_wac.c | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/2.6.30/wacom_wac.c b/2.6.30/wacom_wac.c
index 008b0a6..8b9060c 100644
--- a/2.6.30/wacom_wac.c
+++ b/2.6.30/wacom_wac.c
@@ -750,8 +750,8 @@ static int wacom_intuos_pad(struct wacom_wac *wacom)
        input_report_abs(input, ABS_RX, strip1);
        input_report_abs(input, ABS_RY, strip2);
 
-       input_report_abs(input, ABS_WHEEL,    ring1 & 0x7f ? ring1 : 0);
-       input_report_abs(input, ABS_THROTTLE, ring2 & 0x07 ? ring2 : 0);
+       input_report_abs(input, ABS_WHEEL,    (ring1 & 0x80) ? (ring1 & 0x7f) : 
0);
+       input_report_abs(input, ABS_THROTTLE, (ring2 & 0x80) ? (ring2 & 0x7f) : 
0);
 
        input_report_key(input, wacom->tool[1], prox ? 1 : 0);
        input_report_abs(input, ABS_MISC, prox ? PAD_DEVICE_ID : 0);
diff --git a/2.6.36/wacom_wac.c b/2.6.36/wacom_wac.c
index a39aa57..a69b30b 100644
--- a/2.6.36/wacom_wac.c
+++ b/2.6.36/wacom_wac.c
@@ -548,8 +548,8 @@ static int wacom_intuos_pad(struct wacom_wac *wacom)
        input_report_abs(input, ABS_RX, strip1);
        input_report_abs(input, ABS_RY, strip2);
 
-       input_report_abs(input, ABS_WHEEL,    ring1 & 0x7f ? ring1 : 0);
-       input_report_abs(input, ABS_THROTTLE, ring2 & 0x07 ? ring2 : 0);
+       input_report_abs(input, ABS_WHEEL,    (ring1 & 0x80) ? (ring1 & 0x7f) : 
0);
+       input_report_abs(input, ABS_THROTTLE, (ring2 & 0x80) ? (ring2 & 0x7f) : 
0);
 
        input_report_key(input, wacom->tool[1], prox ? 1 : 0);
        input_report_abs(input, ABS_MISC, prox ? PAD_DEVICE_ID : 0);
-- 
2.10.2


------------------------------------------------------------------------------
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to