From 7c3021f6e4342d0c6a5bcf7b3ca5f504fa10ea5b Mon Sep 17 00:00:00 2001 From: Alan Stern Date: Mon, 15 May 2006 14:49:04 -0400 Subject: [PATCH] --- yaml --- r: 28328 b: refs/heads/master c: 0f28b55db543001d360e4319bfc3f2c4e28ba05f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/input/hid-core.c | 8 ++++++++ trunk/drivers/usb/input/hid.h | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index b8d9fde224f7..db1c33594998 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a82e49b8aeb9f8dafdf6cf2e617c8b95bf056257 +refs/heads/master: 0f28b55db543001d360e4319bfc3f2c4e28ba05f diff --git a/trunk/drivers/usb/input/hid-core.c b/trunk/drivers/usb/input/hid-core.c index bb1f5211ff9d..061002fc66fc 100644 --- a/trunk/drivers/usb/input/hid-core.c +++ b/trunk/drivers/usb/input/hid-core.c @@ -1797,6 +1797,14 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) (hid_blacklist[n].idProduct == le16_to_cpu(dev->descriptor.idProduct))) quirks = hid_blacklist[n].quirks; + /* Many keyboards and mice don't like to be polled for reports, + * so we will always set the HID_QUIRK_NOGET flag for them. */ + if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT) { + if (interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_KEYBOARD || + interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE) + quirks |= HID_QUIRK_NOGET; + } + if (quirks & HID_QUIRK_IGNORE) return NULL; diff --git a/trunk/drivers/usb/input/hid.h b/trunk/drivers/usb/input/hid.h index 7efbfff8adde..778e575de352 100644 --- a/trunk/drivers/usb/input/hid.h +++ b/trunk/drivers/usb/input/hid.h @@ -40,6 +40,14 @@ #define USB_INTERFACE_CLASS_HID 3 +/* + * USB HID interface subclass and protocol codes + */ + +#define USB_INTERFACE_SUBCLASS_BOOT 1 +#define USB_INTERFACE_PROTOCOL_KEYBOARD 1 +#define USB_INTERFACE_PROTOCOL_MOUSE 2 + /* * HID class requests */