From e0016f70526a7a1f3add77951b5dd5e066704653 Mon Sep 17 00:00:00 2001 From: Pascal Terjan Date: Mon, 26 Nov 2007 14:03:52 +0100 Subject: [PATCH] --- yaml --- r: 77654 b: refs/heads/master c: 9f6b37275a9f5fbb0b6657a226a633533a1b2e09 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/hid/usbhid/hid-quirks.c | 2 ++ trunk/drivers/hid/usbhid/usbkbd.c | 6 ++++++ trunk/drivers/hid/usbhid/usbmouse.c | 6 ++++++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 51323225e0d6..d60bd02a7e62 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 628edcde87592a7ac6e72b555bb03ea265bcfbd2 +refs/heads/master: 9f6b37275a9f5fbb0b6657a226a633533a1b2e09 diff --git a/trunk/drivers/hid/usbhid/hid-quirks.c b/trunk/drivers/hid/usbhid/hid-quirks.c index dcb102d87414..23c8993a9845 100644 --- a/trunk/drivers/hid/usbhid/hid-quirks.c +++ b/trunk/drivers/hid/usbhid/hid-quirks.c @@ -911,6 +911,8 @@ u32 usbhid_lookup_quirk(const u16 idVendor, const u16 idProduct) return quirks; } +EXPORT_SYMBOL_GPL(usbhid_lookup_quirk); + /* * Cherry Cymotion keyboard have an invalid HID report descriptor, * that needs fixing before we can parse it. diff --git a/trunk/drivers/hid/usbhid/usbkbd.c b/trunk/drivers/hid/usbhid/usbkbd.c index 775a1ef28a29..a31ccb4fca09 100644 --- a/trunk/drivers/hid/usbhid/usbkbd.c +++ b/trunk/drivers/hid/usbhid/usbkbd.c @@ -235,6 +235,12 @@ static int usb_kbd_probe(struct usb_interface *iface, if (!usb_endpoint_is_int_in(endpoint)) return -ENODEV; + if (usbhid_lookup_quirk(le16_to_cpu(dev->descriptor.idVendor), + le16_to_cpu(dev->descriptor.idProduct)) + & HID_QUIRK_IGNORE) { + return -ENODEV; + } + pipe = usb_rcvintpipe(dev, endpoint->bEndpointAddress); maxp = usb_maxpacket(dev, pipe, usb_pipeout(pipe)); diff --git a/trunk/drivers/hid/usbhid/usbmouse.c b/trunk/drivers/hid/usbhid/usbmouse.c index f8ad6910d3d9..8ff1b3fe8d6d 100644 --- a/trunk/drivers/hid/usbhid/usbmouse.c +++ b/trunk/drivers/hid/usbhid/usbmouse.c @@ -131,6 +131,12 @@ static int usb_mouse_probe(struct usb_interface *intf, const struct usb_device_i if (!usb_endpoint_is_int_in(endpoint)) return -ENODEV; + if (usbhid_lookup_quirk(le16_to_cpu(dev->descriptor.idVendor), + le16_to_cpu(dev->descriptor.idProduct)) + & (HID_QUIRK_IGNORE|HID_QUIRK_IGNORE_MOUSE)) { + return -ENODEV; + } + pipe = usb_rcvintpipe(dev, endpoint->bEndpointAddress); maxp = usb_maxpacket(dev, pipe, usb_pipeout(pipe));