| From 276559d8d02c2709281578976ca2f53bc62063d4 Mon Sep 17 00:00:00 2001 |
| From: Ping Cheng <pinglinux@gmail.com> |
| Date: Thu, 11 Mar 2021 11:30:09 -0800 |
| Subject: HID: wacom: set EV_KEY and EV_ABS only for non-HID_GENERIC type of devices |
| |
| From: Ping Cheng <pinglinux@gmail.com> |
| |
| commit 276559d8d02c2709281578976ca2f53bc62063d4 upstream. |
| |
| Valid HID_GENERIC type of devices set EV_KEY and EV_ABS by wacom_map_usage. |
| When *_input_capabilities are reached, those devices should already have |
| their proper EV_* set. EV_KEY and EV_ABS only need to be set for |
| non-HID_GENERIC type of devices in *_input_capabilities. |
| |
| Devices that don't support HID descitoprs will pass back to hid-input for |
| registration without being accidentally rejected by the introduction of |
| patch: "Input: refuse to register absolute devices without absinfo" |
| |
| Fixes: 6ecfe51b4082 ("Input: refuse to register absolute devices without absinfo") |
| Signed-off-by: Ping Cheng <ping.cheng@wacom.com> |
| Reviewed-by: Jason Gerecke <Jason.Gerecke@wacom.com> |
| Tested-by: Juan Garrido <Juan.Garrido@wacom.com> |
| CC: stable@vger.kernel.org |
| Signed-off-by: Jiri Kosina <jkosina@suse.cz> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/hid/wacom_wac.c | 6 ++---- |
| 1 file changed, 2 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/hid/wacom_wac.c |
| +++ b/drivers/hid/wacom_wac.c |
| @@ -3574,8 +3574,6 @@ int wacom_setup_pen_input_capabilities(s |
| { |
| struct wacom_features *features = &wacom_wac->features; |
| |
| - input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); |
| - |
| if (!(features->device_type & WACOM_DEVICETYPE_PEN)) |
| return -ENODEV; |
| |
| @@ -3590,6 +3588,7 @@ int wacom_setup_pen_input_capabilities(s |
| return 0; |
| } |
| |
| + input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); |
| __set_bit(BTN_TOUCH, input_dev->keybit); |
| __set_bit(ABS_MISC, input_dev->absbit); |
| |
| @@ -3742,8 +3741,6 @@ int wacom_setup_touch_input_capabilities |
| { |
| struct wacom_features *features = &wacom_wac->features; |
| |
| - input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); |
| - |
| if (!(features->device_type & WACOM_DEVICETYPE_TOUCH)) |
| return -ENODEV; |
| |
| @@ -3756,6 +3753,7 @@ int wacom_setup_touch_input_capabilities |
| /* setup has already been done */ |
| return 0; |
| |
| + input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); |
| __set_bit(BTN_TOUCH, input_dev->keybit); |
| |
| if (features->touch_max == 1) { |