From b92ff3e998ab90fd7d9425a1685dccca29f1c8c0 Mon Sep 17 00:00:00 2001 From: Daniel Ritz Date: Thu, 3 Jul 2008 10:45:37 -0400 Subject: [PATCH] --- yaml --- r: 104215 b: refs/heads/master c: ec42d4481e36cbdb5b2801f957e678211a9e5ae2 h: refs/heads/master i: 104213: 480f25f97e4751af7180df15f7f1ea571052bfdf 104211: 65fd97bfbf002a92c1e24d7ae44113b7414505de 104207: 9bf1c90b0925fb8ed3b18de3da990019affa32d5 v: v3 --- [refs] | 2 +- .../input/touchscreen/usbtouchscreen.c | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 1db2896ce982..b63777482d03 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 89cdb8cebe6ab6590f8083877c4ca5e92303b3b0 +refs/heads/master: ec42d4481e36cbdb5b2801f957e678211a9e5ae2 diff --git a/trunk/drivers/input/touchscreen/usbtouchscreen.c b/trunk/drivers/input/touchscreen/usbtouchscreen.c index 792b2708a137..fdd645c214a2 100644 --- a/trunk/drivers/input/touchscreen/usbtouchscreen.c +++ b/trunk/drivers/input/touchscreen/usbtouchscreen.c @@ -49,6 +49,7 @@ #include #include #include +#include #define DRIVER_VERSION "v0.6" @@ -101,7 +102,7 @@ struct usbtouch_usb { /* device types */ enum { - DEVTPYE_DUMMY = -1, + DEVTYPE_IGNORE = -1, DEVTYPE_EGALAX, DEVTYPE_PANJIT, DEVTYPE_3M, @@ -115,8 +116,21 @@ enum { DEVTYPE_GOTOP, }; +#define USB_DEVICE_HID_CLASS(vend, prod) \ + .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS \ + | USB_DEVICE_ID_MATCH_DEVICE, \ + .idVendor = (vend), \ + .idProduct = (prod), \ + .bInterfaceClass = USB_INTERFACE_CLASS_HID, \ + .bInterfaceProtocol = USB_INTERFACE_PROTOCOL_MOUSE + static struct usb_device_id usbtouch_devices[] = { #ifdef CONFIG_TOUCHSCREEN_USB_EGALAX + /* ignore the HID capable devices, handled by usbhid */ + {USB_DEVICE_HID_CLASS(0x0eef, 0x0001), .driver_info = DEVTYPE_IGNORE}, + {USB_DEVICE_HID_CLASS(0x0eef, 0x0002), .driver_info = DEVTYPE_IGNORE}, + + /* normal device IDs */ {USB_DEVICE(0x3823, 0x0001), .driver_info = DEVTYPE_EGALAX}, {USB_DEVICE(0x3823, 0x0002), .driver_info = DEVTYPE_EGALAX}, {USB_DEVICE(0x0123, 0x0001), .driver_info = DEVTYPE_EGALAX}, @@ -857,6 +871,10 @@ static int usbtouch_probe(struct usb_interface *intf, struct usbtouch_device_info *type; int err = -ENOMEM; + /* some devices are ignored */ + if (id->driver_info == DEVTYPE_IGNORE) + return -ENODEV; + interface = intf->cur_altsetting; endpoint = &interface->endpoint[0].desc;