Merge tag 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford...
[cascardo/linux.git] / drivers / hid / hid-uclogic.c
index 64abd8d..1509d72 100644 (file)
@@ -938,6 +938,7 @@ static int uclogic_probe(struct hid_device *hdev,
 {
        int rc;
        struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
+       struct usb_device *udev = hid_to_usb_dev(hdev);
        struct uclogic_drvdata *drvdata;
 
        /*
@@ -988,6 +989,28 @@ static int uclogic_probe(struct hid_device *hdev,
                        drvdata->ignore_pen_usage = true;
                }
                break;
+       case USB_DEVICE_ID_UCLOGIC_TABLET_TWHA60:
+               /*
+                * If it is the three-interface version, which is known to
+                * respond to initialization.
+                */
+               if (udev->config->desc.bNumInterfaces == 3) {
+                       /* If it is the pen interface */
+                       if (intf->cur_altsetting->desc.bInterfaceNumber == 0) {
+                               rc = uclogic_tablet_enable(hdev);
+                               if (rc) {
+                                       hid_err(hdev, "tablet enabling failed\n");
+                                       return rc;
+                               }
+                               drvdata->invert_pen_inrange = true;
+
+                               rc = uclogic_button_enable(hdev);
+                               drvdata->has_virtual_pad_interface = !rc;
+                       } else {
+                               drvdata->ignore_pen_usage = true;
+                       }
+               }
+               break;
        }
 
        rc = hid_parse(hdev);