|
@@ -107,17 +107,6 @@ static int huion_tablet_enable(struct hid_device *hdev)
|
|
|
static int huion_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
|
|
{
|
|
|
int ret;
|
|
|
- struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
|
|
|
-
|
|
|
- /* Ignore interfaces 1 (mouse) and 2 (keyboard) for tablet,
|
|
|
- * as they are not used
|
|
|
- */
|
|
|
- switch (id->product) {
|
|
|
- case USB_DEVICE_ID_HUION_TABLET:
|
|
|
- if (intf->cur_altsetting->desc.bInterfaceNumber != 0x00)
|
|
|
- return -ENODEV;
|
|
|
- break;
|
|
|
- }
|
|
|
|
|
|
ret = hid_parse(hdev);
|
|
|
if (ret) {
|
|
@@ -151,8 +140,13 @@ err:
|
|
|
static int huion_raw_event(struct hid_device *hdev, struct hid_report *report,
|
|
|
u8 *data, int size)
|
|
|
{
|
|
|
- /* If this is a pen input report then invert the in-range bit */
|
|
|
- if (report->type == HID_INPUT_REPORT && report->id == 0x07 && size >= 2)
|
|
|
+ struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
|
|
|
+
|
|
|
+ /* If this is a pen input report */
|
|
|
+ if (intf->cur_altsetting->desc.bInterfaceNumber == 0 &&
|
|
|
+ report->type == HID_INPUT_REPORT &&
|
|
|
+ report->id == 0x07 && size >= 2)
|
|
|
+ /* Invert the in-range bit */
|
|
|
data[1] ^= 0x40;
|
|
|
|
|
|
return 0;
|