diff options
author | Benjamin Tissoires <benjamin.tissoires@redhat.com> | 2015-03-03 12:44:04 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2015-03-03 15:31:55 -0500 |
commit | aa2121ac477845eb64d46278e93765b82a005c90 (patch) | |
tree | c74f3c29a908d9a21e13ea670a5ac283011d3ef8 | |
parent | 002a82ded6a7f4e402b1f9b953d7393ec290b709 (diff) |
HID: uclogic: discard the extra Pen input node on Huion tablets
Some Huion tablets present 2 HID Pen interfaces. Only one is used, so
we can drop the unused one.
Reviewed-by: Nikolai Kondrashov <spbnick@gmail.com>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r-- | drivers/hid/hid-uclogic.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/hid/hid-uclogic.c b/drivers/hid/hid-uclogic.c index ada8a9437e3e..f44e72bc1a0a 100644 --- a/drivers/hid/hid-uclogic.c +++ b/drivers/hid/hid-uclogic.c | |||
@@ -713,6 +713,25 @@ static __u8 *uclogic_report_fixup(struct hid_device *hdev, __u8 *rdesc, | |||
713 | return rdesc; | 713 | return rdesc; |
714 | } | 714 | } |
715 | 715 | ||
716 | static int uclogic_input_mapping(struct hid_device *hdev, struct hid_input *hi, | ||
717 | struct hid_field *field, struct hid_usage *usage, | ||
718 | unsigned long **bit, int *max) | ||
719 | { | ||
720 | struct usb_interface *intf; | ||
721 | |||
722 | if (hdev->product == USB_DEVICE_ID_HUION_TABLET) { | ||
723 | intf = to_usb_interface(hdev->dev.parent); | ||
724 | |||
725 | /* discard the unused pen interface */ | ||
726 | if ((intf->cur_altsetting->desc.bInterfaceNumber != 0) && | ||
727 | (field->application == HID_DG_PEN)) | ||
728 | return -1; | ||
729 | } | ||
730 | |||
731 | /* let hid-core decide what to do */ | ||
732 | return 0; | ||
733 | } | ||
734 | |||
716 | static void uclogic_input_configured(struct hid_device *hdev, | 735 | static void uclogic_input_configured(struct hid_device *hdev, |
717 | struct hid_input *hi) | 736 | struct hid_input *hi) |
718 | { | 737 | { |
@@ -947,6 +966,7 @@ static struct hid_driver uclogic_driver = { | |||
947 | .probe = uclogic_probe, | 966 | .probe = uclogic_probe, |
948 | .report_fixup = uclogic_report_fixup, | 967 | .report_fixup = uclogic_report_fixup, |
949 | .raw_event = uclogic_raw_event, | 968 | .raw_event = uclogic_raw_event, |
969 | .input_mapping = uclogic_input_mapping, | ||
950 | .input_configured = uclogic_input_configured, | 970 | .input_configured = uclogic_input_configured, |
951 | }; | 971 | }; |
952 | module_hid_driver(uclogic_driver); | 972 | module_hid_driver(uclogic_driver); |