HID: wacom: generic: only switch the mode on devices with LEDs
commit d8e9806005f28bbb49899dab2068e3359e22ba35 upstream.
Currently, the driver will attempt to set the mode on all
devices with a center button, but some devices with a center
button lack LEDs, and attempting to set the LEDs on devices
without LEDs results in the kernel error message of the form:
"leds input8::wacom-0.1: Setting an LED's brightness failed (-32)"
This is because the generic codepath erroneously assumes that the
BUTTON_CENTER usage indicates that the device has LEDs, the
previously ignored TOUCH_RING_SETTING usage is a more accurate
indication of the existence of LEDs on the device.
Fixes: 10c55cacb8
("HID: wacom: generic: support LEDs")
Cc: <stable@vger.kernel.org> # v4.11+
Signed-off-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
Reviewed-by: Jason Gerecke <jason.gerecke@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
cb4c2b94f6
commit
46f71a15ab
3 changed files with 4 additions and 2 deletions
|
@ -275,6 +275,9 @@ static void wacom_feature_mapping(struct hid_device *hdev,
|
|||
wacom_hid_usage_quirk(hdev, field, usage);
|
||||
|
||||
switch (equivalent_usage) {
|
||||
case WACOM_HID_WD_TOUCH_RING_SETTING:
|
||||
wacom->generic_has_leds = true;
|
||||
break;
|
||||
case HID_DG_CONTACTMAX:
|
||||
/* leave touch_max as is if predefined */
|
||||
if (!features->touch_max) {
|
||||
|
|
|
@ -1928,8 +1928,6 @@ static void wacom_wac_pad_usage_mapping(struct hid_device *hdev,
|
|||
features->device_type |= WACOM_DEVICETYPE_PAD;
|
||||
break;
|
||||
case WACOM_HID_WD_BUTTONCENTER:
|
||||
wacom->generic_has_leds = true;
|
||||
/* fall through */
|
||||
case WACOM_HID_WD_BUTTONHOME:
|
||||
case WACOM_HID_WD_BUTTONUP:
|
||||
case WACOM_HID_WD_BUTTONDOWN:
|
||||
|
|
|
@ -145,6 +145,7 @@
|
|||
#define WACOM_HID_WD_OFFSETBOTTOM (WACOM_HID_UP_WACOMDIGITIZER | 0x0d33)
|
||||
#define WACOM_HID_WD_DATAMODE (WACOM_HID_UP_WACOMDIGITIZER | 0x1002)
|
||||
#define WACOM_HID_WD_DIGITIZERINFO (WACOM_HID_UP_WACOMDIGITIZER | 0x1013)
|
||||
#define WACOM_HID_WD_TOUCH_RING_SETTING (WACOM_HID_UP_WACOMDIGITIZER | 0x1032)
|
||||
#define WACOM_HID_UP_G9 0xff090000
|
||||
#define WACOM_HID_G9_PEN (WACOM_HID_UP_G9 | 0x02)
|
||||
#define WACOM_HID_G9_TOUCHSCREEN (WACOM_HID_UP_G9 | 0x11)
|
||||
|
|
Loading…
Reference in a new issue