Skip to contentSkip to conversation

HID: wacom: Do not completely map WACOM_HID_WD_TOUCHRINGSTATUS usage

PATCH Applied Jason Gerecke 2 participants 2 messages Aug 4, 2017 – Aug 8, 2017

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 HID: wacom: Do not completely map WACOM_HID_WD_TOUCHRINGSTATUS usage

The WACOM_HID_WD_TOUCHRINGSTATUS usage is a single bit which tells us whether the touchring is currently in use or not. Because we need to reset the axis value to 0 when the finger is removed, we call 'wacom_map_usage' to ensure that the required type/code values are associated with the usage. The 'wacom_map_usage' also sets up the axis range and resolution, however, which is not desired in this particular case.

Although xf86-input-wacom doesn't do really do anything with the ring's range or resolution, the libinput driver (for Wayland environments) uses these values to provide proper angle indications to userspace.

Fixes 60a2218698 ("HID: wacom: generic: add support for touchring")
---
 drivers/hid/wacom_wac.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/hid/wacom_wac.c +7 -1
index 149bdff28d32..40d129f8d7e0 100644
@@ -1845,7 +1845,13 @@ static void wacom_wac_pad_usage_mapping(struct hid_device *hdev,
 		features->device_type |= WACOM_DEVICETYPE_PAD;
 		break;
 	case WACOM_HID_WD_TOUCHRINGSTATUS:
-		wacom_map_usage(input, usage, field, EV_ABS, ABS_WHEEL, 0);
+		/*
+		 * Only set up type/code association. Completely mapping
+		 * this usage may overwrite the axis resolution and range.
+		 */
+		usage->type = EV_ABS;
+		usage->code = ABS_WHEEL;
+		set_bit(EV_ABS, input->evbit);
 		features->device_type |= WACOM_DEVICETYPE_PAD;
 		break;
 	case WACOM_HID_WD_BUTTONCONFIG:
Signature · 1 line
2.13.4
maintainer Applied
#1 lore raw
Quoted 8 lines · Jason Gerecke

The WACOM_HID_WD_TOUCHRINGSTATUS usage is a single bit which tells us whether the touchring is currently in use or not. Because we need to reset the axis value to 0 when the finger is removed, we call 'wacom_map_usage' to ensure that the required type/code values are associated with the usage. The 'wacom_map_usage' also sets up the axis range and resolution, however, which is not desired in this particular case.

Quoted 7 lines

Although xf86-input-wacom doesn't do really do anything with the ring's range or resolution, the libinput driver (for Wayland environments) uses these values to provide proper angle indications to userspace.

Fixes 60a2218698 ("HID: wacom: generic: add support for touchring")

Applied to for-4.13/upstream-fixes. Thanks,

Signature · 2 lines
Jiri Kosina
SUSE Labs