Merge branch 'for-4.19/fixes' into for-linus
authorJiri Kosina <jkosina@suse.cz>
Tue, 23 Oct 2018 11:15:57 +0000 (13:15 +0200)
committerJiri Kosina <jkosina@suse.cz>
Tue, 23 Oct 2018 11:15:57 +0000 (13:15 +0200)
A few device ID-specific quirks

drivers/hid/hid-elan.c
drivers/hid/hid-ids.h
drivers/hid/hid-quirks.c
drivers/hid/wacom_wac.c

index 07e26c3..0bfd6d1 100644 (file)
@@ -497,7 +497,7 @@ static int elan_probe(struct hid_device *hdev, const struct hid_device_id *id)
                return 0;
 
        if (!drvdata->input) {
-               hid_err(hdev, "Input device is not registred\n");
+               hid_err(hdev, "Input device is not registered\n");
                ret = -ENAVAIL;
                goto err;
        }
index bc49909..0e0aa7f 100644 (file)
 #define USB_DEVICE_ID_DMI_ENC          0x5fab
 
 #define USB_VENDOR_ID_DRAGONRISE               0x0079
+#define USB_DEVICE_ID_REDRAGON_SEYMUR2         0x0006
 #define USB_DEVICE_ID_DRAGONRISE_WIIU          0x1800
 #define USB_DEVICE_ID_DRAGONRISE_PS3           0x1801
 #define USB_DEVICE_ID_DRAGONRISE_DOLPHINBAR    0x1803
index 249d49b..52c3b01 100644 (file)
@@ -70,6 +70,7 @@ static const struct hid_device_id hid_quirks[] = {
        { HID_USB_DEVICE(USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC), HID_QUIRK_NOGET },
        { HID_USB_DEVICE(USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_2NES2SNES), HID_QUIRK_MULTI_INPUT },
        { HID_USB_DEVICE(USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_4NES4SNES), HID_QUIRK_MULTI_INPUT },
+       { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_REDRAGON_SEYMUR2), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
        { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_DOLPHINBAR), HID_QUIRK_MULTI_INPUT },
        { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE1), HID_QUIRK_MULTI_INPUT },
        { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3), HID_QUIRK_MULTI_INPUT },
index e0a06be..5dd3a82 100644 (file)
@@ -3335,6 +3335,7 @@ static void wacom_setup_intuos(struct wacom_wac *wacom_wac)
 
 void wacom_setup_device_quirks(struct wacom *wacom)
 {
+       struct wacom_wac *wacom_wac = &wacom->wacom_wac;
        struct wacom_features *features = &wacom->wacom_wac.features;
 
        /* The pen and pad share the same interface on most devices */
@@ -3464,6 +3465,24 @@ void wacom_setup_device_quirks(struct wacom *wacom)
 
        if (features->type == REMOTE)
                features->device_type |= WACOM_DEVICETYPE_WL_MONITOR;
+
+       /* HID descriptor for DTK-2451 / DTH-2452 claims to report lots
+        * of things it shouldn't. Lets fix up the damage...
+        */
+       if (wacom->hdev->product == 0x382 || wacom->hdev->product == 0x37d) {
+               features->quirks &= ~WACOM_QUIRK_TOOLSERIAL;
+               __clear_bit(BTN_TOOL_BRUSH, wacom_wac->pen_input->keybit);
+               __clear_bit(BTN_TOOL_PENCIL, wacom_wac->pen_input->keybit);
+               __clear_bit(BTN_TOOL_AIRBRUSH, wacom_wac->pen_input->keybit);
+               __clear_bit(ABS_Z, wacom_wac->pen_input->absbit);
+               __clear_bit(ABS_DISTANCE, wacom_wac->pen_input->absbit);
+               __clear_bit(ABS_TILT_X, wacom_wac->pen_input->absbit);
+               __clear_bit(ABS_TILT_Y, wacom_wac->pen_input->absbit);
+               __clear_bit(ABS_WHEEL, wacom_wac->pen_input->absbit);
+               __clear_bit(ABS_MISC, wacom_wac->pen_input->absbit);
+               __clear_bit(MSC_SERIAL, wacom_wac->pen_input->mscbit);
+               __clear_bit(EV_MSC, wacom_wac->pen_input->evbit);
+       }
 }
 
 int wacom_setup_pen_input_capabilities(struct input_dev *input_dev,