summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Gerecke <killertofu@gmail.com>2015-12-16 13:37:35 -0800
committerJiri Kosina <jkosina@suse.cz>2015-12-18 00:03:07 +0100
commitaaae03e4f7f0c641a258dde855ab677c9b58b155 (patch)
tree1fdae5edfc67e64864b11b2a7cf905833fc9b2c5
parent03a0dc546be3fa6091214bd2c05d678d3e8d67df (diff)
downloadlinux-aaae03e4f7f0c641a258dde855ab677c9b58b155.tar.bz2
HID: wacom: Fix touchring value reporting
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. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r--drivers/hid/wacom_wac.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index 94dffde5f3d5..23212af7fa76 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -560,8 +560,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);