]> rtime.felk.cvut.cz Git - linux-imx.git/commitdiff
Merge branch 'upstream' into for-linus
authorJiri Kosina <jkosina@suse.cz>
Mon, 1 Oct 2012 12:37:51 +0000 (14:37 +0200)
committerJiri Kosina <jkosina@suse.cz>
Mon, 1 Oct 2012 12:37:51 +0000 (14:37 +0200)
Conflicts:
drivers/hid/usbhid/hid-quirks.c

31 files changed:
drivers/hid/Kconfig
drivers/hid/hid-a4tech.c
drivers/hid/hid-apple.c
drivers/hid/hid-aureal.c
drivers/hid/hid-belkin.c
drivers/hid/hid-cherry.c
drivers/hid/hid-core.c
drivers/hid/hid-cypress.c
drivers/hid/hid-debug.c
drivers/hid/hid-ezkey.c
drivers/hid/hid-gyration.c
drivers/hid/hid-holtekff.c
drivers/hid/hid-ids.h
drivers/hid/hid-lcpower.c
drivers/hid/hid-lenovo-tpkbd.c
drivers/hid/hid-lg.c
drivers/hid/hid-lg4ff.c
drivers/hid/hid-microsoft.c
drivers/hid/hid-monterey.c
drivers/hid/hid-ntrig.c
drivers/hid/hid-petalynx.c
drivers/hid/hid-primax.c
drivers/hid/hid-prodikeys.c
drivers/hid/hid-samsung.c
drivers/hid/hid-sony.c
drivers/hid/hid-sunplus.c
drivers/hid/hid-wacom.c
drivers/hid/hid-waltop.c
drivers/hid/hidraw.c
drivers/hid/usbhid/hid-core.c
drivers/hid/usbhid/hid-quirks.c

index bf0617e47b892434120d782f864e55d8d588c6e6..2af774ad10606b7048e70ec7218ce36f33010c77 100644 (file)
@@ -307,7 +307,6 @@ config HID_LOGITECH
 config HID_LOGITECH_DJ
        tristate "Logitech Unifying receivers full support"
        depends on HID_LOGITECH
-       default m
        ---help---
        Say Y if you want support for Logitech Unifying receivers and devices.
        Unifying receivers are capable of pairing up to 6 Logitech compliant
index 902d1dfeb1b52f82e8cfb4998e56086cf65fbe53..0a239885e67cb77e8fd40564610dfb4afc06d8d9 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  */
 
index 585344b6d33815632b8d477ebb1f0eb9e7f80818..06ebdbb6ea0207f8d92d691d15c00434f4fab21a 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby <jirislaby@gmail.com>
  */
 
index ba64b041b8bf99eafb538c0a6dd3438af5d99388..7968187ddf7b8c5834f1a7aa2b0139de451ef82a 100644 (file)
@@ -9,7 +9,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  */
 #include <linux/device.h>
index a1a765a5b08a96057cbcbbac26835045cbd51dd1..a1a5a12c3a6b9fc3e772e939908120389c069694 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  */
 
index 888ece68a47cb0bfb402a481ac1f97adfc3ee4c9..af034d3d925663200b8c08356a4e2e2c178e3892 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  */
 
index 9072e0ed18761b9505e1d4ef9d27f1d0ee6febfe..2cd6880b6b173d79ab244335f52d9f1324513e54 100644 (file)
@@ -126,7 +126,7 @@ static int open_collection(struct hid_parser *parser, unsigned type)
 
        if (parser->collection_stack_ptr == HID_COLLECTION_STACK_SIZE) {
                hid_err(parser->device, "collection stack overflow\n");
-               return -1;
+               return -EINVAL;
        }
 
        if (parser->device->maxcollection == parser->device->collection_size) {
@@ -134,7 +134,7 @@ static int open_collection(struct hid_parser *parser, unsigned type)
                                parser->device->collection_size * 2, GFP_KERNEL);
                if (collection == NULL) {
                        hid_err(parser->device, "failed to reallocate collection array\n");
-                       return -1;
+                       return -ENOMEM;
                }
                memcpy(collection, parser->device->collection,
                        sizeof(struct hid_collection) *
@@ -170,7 +170,7 @@ static int close_collection(struct hid_parser *parser)
 {
        if (!parser->collection_stack_ptr) {
                hid_err(parser->device, "collection stack underflow\n");
-               return -1;
+               return -EINVAL;
        }
        parser->collection_stack_ptr--;
        return 0;
@@ -374,7 +374,7 @@ static int hid_parser_global(struct hid_parser *parser, struct hid_item *item)
 
        case HID_GLOBAL_ITEM_TAG_REPORT_SIZE:
                parser->global.report_size = item_udata(item);
-               if (parser->global.report_size > 96) {
+               if (parser->global.report_size > 128) {
                        hid_err(parser->device, "invalid report_size %d\n",
                                        parser->global.report_size);
                        return -1;
@@ -757,6 +757,7 @@ int hid_open_report(struct hid_device *device)
        struct hid_item item;
        unsigned int size;
        __u8 *start;
+       __u8 *buf;
        __u8 *end;
        int ret;
        static int (*dispatch_type[])(struct hid_parser *parser,
@@ -775,12 +776,21 @@ int hid_open_report(struct hid_device *device)
                return -ENODEV;
        size = device->dev_rsize;
 
+       buf = kmemdup(start, size, GFP_KERNEL);
+       if (buf == NULL)
+               return -ENOMEM;
+
        if (device->driver->report_fixup)
-               start = device->driver->report_fixup(device, start, &size);
+               start = device->driver->report_fixup(device, buf, &size);
+       else
+               start = buf;
 
-       device->rdesc = kmemdup(start, size, GFP_KERNEL);
-       if (device->rdesc == NULL)
+       start = kmemdup(start, size, GFP_KERNEL);
+       kfree(buf);
+       if (start == NULL)
                return -ENOMEM;
+
+       device->rdesc = start;
        device->rsize = size;
 
        parser = vzalloc(sizeof(struct hid_parser));
@@ -1448,7 +1458,14 @@ void hid_disconnect(struct hid_device *hdev)
 }
 EXPORT_SYMBOL_GPL(hid_disconnect);
 
-/* a list of devices for which there is a specialized driver on HID bus */
+/*
+ * A list of devices for which there is a specialized driver on HID bus.
+ *
+ * Please note that for multitouch devices (driven by hid-multitouch driver),
+ * there is a proper autodetection and autoloading in place (based on presence
+ * of HID_DG_CONTACTID), so those devices don't need to be added to this list,
+ * as we are doing the right thing in hid_scan_usage().
+ */
 static const struct hid_device_id hid_have_special_driver[] = {
        { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) },
        { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) },
@@ -1628,6 +1645,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
        { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
        { HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) },
+#if IS_ENABLED(CONFIG_HID_ROCCAT)
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ARVO) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ISKU) },
@@ -1636,6 +1654,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_PYRA_WIRED) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_PYRA_WIRELESS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_SAVU) },
+#endif
        { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_PS1000) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE) },
index 9e43aaca9774bec161aa37a6734e57fdcad2a66c..3e159a50dac724e1c974e32ea14b8a83e75153fb 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  */
 
index 01dd9a7daf7a7f27d58599ee2d1315210239a7da..933fff0fff1ffc1f2dce372eeb0f6905688a947c 100644 (file)
@@ -911,15 +911,21 @@ static void hid_dump_input_mapping(struct hid_device *hid, struct seq_file *f)
 
 }
 
-
 static int hid_debug_rdesc_show(struct seq_file *f, void *p)
 {
        struct hid_device *hdev = f->private;
+       const __u8 *rdesc = hdev->rdesc;
+       unsigned rsize = hdev->rsize;
        int i;
 
+       if (!rdesc) {
+               rdesc = hdev->dev_rdesc;
+               rsize = hdev->dev_rsize;
+       }
+
        /* dump HID report descriptor */
-       for (i = 0; i < hdev->rsize; i++)
-               seq_printf(f, "%02x ", hdev->rdesc[i]);
+       for (i = 0; i < rsize; i++)
+               seq_printf(f, "%02x ", rdesc[i]);
        seq_printf(f, "\n\n");
 
        /* dump parsed data and input mappings */
index ca1163e9d42d68a09d186265328eccbd122468f4..6540af2871a79a345a818f5703d052fa9b0e65a0 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  */
 
index e88b951cd10df51c821aa1a17ebafc96547aed25..4442c30ef531d33182e4ad6461ad8f309727e99e 100644 (file)
@@ -4,7 +4,6 @@
  *  Copyright (c) 1999 Andreas Gal
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  *  Copyright (c) 2006-2008 Jiri Kosina
  */
index 4e7542151e222a0d711c3c844656e829fd2b2fef..ff295e60059b25e8d49d3fa31881decda3b0014c 100644 (file)
@@ -100,8 +100,7 @@ static void holtekff_send(struct holtekff_device *holtekff,
                holtekff->field->value[i] = data[i];
        }
 
-       dbg_hid("sending %02x %02x %02x %02x %02x %02x %02x\n", data[0],
-               data[1], data[2], data[3], data[4], data[5], data[6]);
+       dbg_hid("sending %*ph\n", 7, data);
 
        usbhid_submit_report(hid, holtekff->field->report, USB_DIR_OUT);
 }
index a534375fdf2e37fd042e032b939ebdef6d912cf0..c1da94a81a0dbb8403073741906802fc6b020685 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  */
 
 /*
 #define USB_VENDOR_ID_EZKEY            0x0518
 #define USB_DEVICE_ID_BTC_8193         0x0002
 
+#define USB_VENDOR_ID_FREESCALE                0x15A2
+#define USB_DEVICE_ID_FREESCALE_MX28   0x004F
+
 #define USB_VENDOR_ID_FRUCTEL  0x25B6
 #define USB_DEVICE_ID_GAMETEL_MT_MODE  0x0002
 
 #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH             0x3000
 #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001                0x3001
 #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008                0x3008
-#define USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN  0x3001
 
 #define USB_VENDOR_ID_ROCCAT           0x1e7d
 #define USB_DEVICE_ID_ROCCAT_ARVO      0x30d4
index c4fe9bd095b7f2c255c44b031624d167c3c0eb69..22bc14abdfa3d23e0f187d0cf8eb2efb7cef223f 100644 (file)
@@ -24,7 +24,7 @@ static int ts_input_mapping(struct hid_device *hdev, struct hid_input *hi,
                struct hid_field *field, struct hid_usage *usage,
                unsigned long **bit, int *max)
 {
-       if ((usage->hid & HID_USAGE_PAGE) != 0x0ffbc0000)
+       if ((usage->hid & HID_USAGE_PAGE) != HID_UP_LOGIVENDOR)
                return 0;
 
        switch (usage->hid & HID_USAGE) {
index 60c4e1e85913fd435ba7c3fe977db50e4fb00f6c..cea016e94f43e336ec1a4d73eb2cbbdba9e1ace7 100644 (file)
@@ -56,9 +56,8 @@ static int tpkbd_input_mapping(struct hid_device *hdev,
 static int tpkbd_features_set(struct hid_device *hdev)
 {
        struct hid_report *report;
-       struct tpkbd_data_pointer *data_pointer;
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
 
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
        report = hdev->report_enum[HID_FEATURE_REPORT].report_id_hash[4];
 
        report->field[0]->value[0]  = data_pointer->press_to_select   ? 0x01 : 0x02;
@@ -77,14 +76,8 @@ static ssize_t pointer_press_to_select_show(struct device *dev,
                struct device_attribute *attr,
                char *buf)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
-
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
 
        return snprintf(buf, PAGE_SIZE, "%u\n", data_pointer->press_to_select);
 }
@@ -94,16 +87,10 @@ static ssize_t pointer_press_to_select_store(struct device *dev,
                const char *buf,
                size_t count)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
        int value;
 
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
-
        if (kstrtoint(buf, 10, &value))
                return -EINVAL;
        if (value < 0 || value > 1)
@@ -119,14 +106,8 @@ static ssize_t pointer_dragging_show(struct device *dev,
                struct device_attribute *attr,
                char *buf)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
-
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
 
        return snprintf(buf, PAGE_SIZE, "%u\n", data_pointer->dragging);
 }
@@ -136,16 +117,10 @@ static ssize_t pointer_dragging_store(struct device *dev,
                const char *buf,
                size_t count)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
        int value;
 
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
-
        if (kstrtoint(buf, 10, &value))
                return -EINVAL;
        if (value < 0 || value > 1)
@@ -161,14 +136,8 @@ static ssize_t pointer_release_to_select_show(struct device *dev,
                struct device_attribute *attr,
                char *buf)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
-
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
 
        return snprintf(buf, PAGE_SIZE, "%u\n", data_pointer->release_to_select);
 }
@@ -178,16 +147,10 @@ static ssize_t pointer_release_to_select_store(struct device *dev,
                const char *buf,
                size_t count)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
        int value;
 
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
-
        if (kstrtoint(buf, 10, &value))
                return -EINVAL;
        if (value < 0 || value > 1)
@@ -203,14 +166,8 @@ static ssize_t pointer_select_right_show(struct device *dev,
                struct device_attribute *attr,
                char *buf)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
-
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
 
        return snprintf(buf, PAGE_SIZE, "%u\n", data_pointer->select_right);
 }
@@ -220,16 +177,10 @@ static ssize_t pointer_select_right_store(struct device *dev,
                const char *buf,
                size_t count)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
        int value;
 
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
-
        if (kstrtoint(buf, 10, &value))
                return -EINVAL;
        if (value < 0 || value > 1)
@@ -245,14 +196,8 @@ static ssize_t pointer_sensitivity_show(struct device *dev,
                struct device_attribute *attr,
                char *buf)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
-
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
 
        return snprintf(buf, PAGE_SIZE, "%u\n",
                data_pointer->sensitivity);
@@ -263,16 +208,10 @@ static ssize_t pointer_sensitivity_store(struct device *dev,
                const char *buf,
                size_t count)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
        int value;
 
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
-
        if (kstrtoint(buf, 10, &value) || value < 1 || value > 255)
                return -EINVAL;
 
@@ -286,14 +225,10 @@ static ssize_t pointer_press_speed_show(struct device *dev,
                struct device_attribute *attr,
                char *buf)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
 
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
+       data_pointer = hid_get_drvdata(hdev);
 
        return snprintf(buf, PAGE_SIZE, "%u\n",
                data_pointer->press_speed);
@@ -304,16 +239,10 @@ static ssize_t pointer_press_speed_store(struct device *dev,
                const char *buf,
                size_t count)
 {
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
        int value;
 
-       hdev = container_of(dev, struct hid_device, dev);
-       if (hdev == NULL)
-               return -ENODEV;
-
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
-
        if (kstrtoint(buf, 10, &value) || value < 1 || value > 255)
                return -EINVAL;
 
@@ -370,15 +299,11 @@ static const struct attribute_group tpkbd_attr_group_pointer = {
 static enum led_brightness tpkbd_led_brightness_get(
                        struct led_classdev *led_cdev)
 {
-       struct device *dev;
-       struct hid_device *hdev;
-       struct tpkbd_data_pointer *data_pointer;
+       struct device *dev = led_cdev->dev->parent;
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
        int led_nr = 0;
 
-       dev = led_cdev->dev->parent;
-       hdev = container_of(dev, struct hid_device, dev);
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
-
        if (led_cdev == &data_pointer->led_micmute)
                led_nr = 1;
 
@@ -390,16 +315,12 @@ static enum led_brightness tpkbd_led_brightness_get(
 static void tpkbd_led_brightness_set(struct led_classdev *led_cdev,
                        enum led_brightness value)
 {
-       struct device *dev;
-       struct hid_device *hdev;
+       struct device *dev = led_cdev->dev->parent;
+       struct hid_device *hdev = container_of(dev, struct hid_device, dev);
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
        struct hid_report *report;
-       struct tpkbd_data_pointer *data_pointer;
        int led_nr = 0;
 
-       dev = led_cdev->dev->parent;
-       hdev = container_of(dev, struct hid_device, dev);
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
-
        if (led_cdev == &data_pointer->led_micmute)
                led_nr = 1;
 
@@ -508,13 +429,11 @@ err_free:
 
 static void tpkbd_remove_tp(struct hid_device *hdev)
 {
-       struct tpkbd_data_pointer *data_pointer;
+       struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
 
        sysfs_remove_group(&hdev->dev.kobj,
                        &tpkbd_attr_group_pointer);
 
-       data_pointer = (struct tpkbd_data_pointer *) hid_get_drvdata(hdev);
-
        led_classdev_unregister(&data_pointer->led_micmute);
        led_classdev_unregister(&data_pointer->led_mute);
 
index afc4de389f81a715828170e7e0380745d1f6d53a..a2f8e88b9fa2503ed1a6a1dcb63f92f38372bc80 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  *  Copyright (c) 2010 Hendrik Iben
  */
@@ -109,7 +108,7 @@ static __u8 dfp_rdesc_fixed[] = {
 static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
-       struct lg_drv_data *drv_data = (struct lg_drv_data *)hid_get_drvdata(hdev);
+       struct lg_drv_data *drv_data = hid_get_drvdata(hdev);
 
        if ((drv_data->quirks & LG_RDESC) && *rsize >= 90 && rdesc[83] == 0x26 &&
                        rdesc[84] == 0x8c && rdesc[85] == 0x02) {
@@ -278,7 +277,7 @@ static int lg_input_mapping(struct hid_device *hdev, struct hid_input *hi,
                  0,  0,  0,  0,  0,183,184,185,186,187,
                188,189,190,191,192,193,194,  0,  0,  0
        };
-       struct lg_drv_data *drv_data = (struct lg_drv_data *)hid_get_drvdata(hdev);
+       struct lg_drv_data *drv_data = hid_get_drvdata(hdev);
        unsigned int hid = usage->hid;
 
        if (hdev->product == USB_DEVICE_ID_LOGITECH_RECEIVER &&
@@ -319,7 +318,7 @@ static int lg_input_mapped(struct hid_device *hdev, struct hid_input *hi,
                struct hid_field *field, struct hid_usage *usage,
                unsigned long **bit, int *max)
 {
-       struct lg_drv_data *drv_data = (struct lg_drv_data *)hid_get_drvdata(hdev);
+       struct lg_drv_data *drv_data = hid_get_drvdata(hdev);
 
        if ((drv_data->quirks & LG_BAD_RELATIVE_KEYS) && usage->type == EV_KEY &&
                        (field->flags & HID_MAIN_ITEM_RELATIVE))
@@ -335,7 +334,7 @@ static int lg_input_mapped(struct hid_device *hdev, struct hid_input *hi,
 static int lg_event(struct hid_device *hdev, struct hid_field *field,
                struct hid_usage *usage, __s32 value)
 {
-       struct lg_drv_data *drv_data = (struct lg_drv_data *)hid_get_drvdata(hdev);
+       struct lg_drv_data *drv_data = hid_get_drvdata(hdev);
 
        if ((drv_data->quirks & LG_INVERT_HWHEEL) && usage->code == REL_HWHEEL) {
                input_event(field->hidinput->input, usage->type, usage->code,
@@ -419,7 +418,7 @@ err_free:
 
 static void lg_remove(struct hid_device *hdev)
 {
-       struct lg_drv_data *drv_data = (struct lg_drv_data *)hid_get_drvdata(hdev);
+       struct lg_drv_data *drv_data = hid_get_drvdata(hdev);
        if (drv_data->quirks & LG_FF4)
                lg4ff_deinit(hdev);
 
index 4fb4a80928c8fe2ea6d18a7cd8a67af5276868ac..d7947c701f3063ac6c3683c29d3eca333b7ca1b0 100644 (file)
@@ -423,7 +423,7 @@ static void lg4ff_led_set_brightness(struct led_classdev *led_cdev,
 {
        struct device *dev = led_cdev->dev->parent;
        struct hid_device *hid = container_of(dev, struct hid_device, dev);
-       struct lg_drv_data *drv_data = (struct lg_drv_data *)hid_get_drvdata(hid);
+       struct lg_drv_data *drv_data = hid_get_drvdata(hid);
        struct lg4ff_device_entry *entry;
        int i, state = 0;
 
@@ -458,7 +458,7 @@ static enum led_brightness lg4ff_led_get_brightness(struct led_classdev *led_cde
 {
        struct device *dev = led_cdev->dev->parent;
        struct hid_device *hid = container_of(dev, struct hid_device, dev);
-       struct lg_drv_data *drv_data = (struct lg_drv_data *)hid_get_drvdata(hid);
+       struct lg_drv_data *drv_data = hid_get_drvdata(hid);
        struct lg4ff_device_entry *entry;
        int i, value = 0;
 
index e5c699b6c6f30656e8150a012eac160fccfd26e6..3acdcfcc17df24f696ed7b440f6a29540456e33e 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  */
 
index dedf757781ae1c9f907ad1e4d390ddc4b9c997cc..cd3643e06fa657f4735b3f1e76a6fd95d59549ed 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  */
 
index 9fae2ebdd7586c0cbc49830763a1d9fd232f95db..86a969f6329297f9b34c9866b1bb39c5a0c85638 100644 (file)
@@ -882,10 +882,10 @@ static int ntrig_probe(struct hid_device *hdev, const struct hid_device_id *id)
        nd->activate_slack = activate_slack;
        nd->act_state = activate_slack;
        nd->deactivate_slack = -deactivate_slack;
-       nd->sensor_logical_width = 0;
-       nd->sensor_logical_height = 0;
-       nd->sensor_physical_width = 0;
-       nd->sensor_physical_height = 0;
+       nd->sensor_logical_width = 1;
+       nd->sensor_logical_height = 1;
+       nd->sensor_physical_width = 1;
+       nd->sensor_physical_height = 1;
 
        hid_set_drvdata(hdev, nd);
 
index f1ea3ff8a98d8a26eb08b3a73ebe82e4b3047805..4c521de4e7e646f913e2db76fc76645ecc56771a 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  */
 
index 4d3c60d883183833fde0ed829197793a1db7b2c1..c15adb0c98a1d9a74475988360bc0182f63462e6 100644 (file)
@@ -64,29 +64,6 @@ static int px_raw_event(struct hid_device *hid, struct hid_report *report,
        return 0;
 }
 
-static int px_probe(struct hid_device *hid, const struct hid_device_id *id)
-{
-       int ret;
-
-       ret = hid_parse(hid);
-       if (ret) {
-               hid_err(hid, "parse failed\n");
-               goto fail;
-       }
-
-       ret = hid_hw_start(hid, HID_CONNECT_DEFAULT);
-       if (ret)
-               hid_err(hid, "hw start failed\n");
-
-fail:
-       return ret;
-}
-
-static void px_remove(struct hid_device *hid)
-{
-       hid_hw_stop(hid);
-}
-
 static const struct hid_device_id px_devices[] = {
        { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) },
        { }
@@ -97,8 +74,6 @@ static struct hid_driver px_driver = {
        .name = "primax",
        .id_table = px_devices,
        .raw_event = px_raw_event,
-       .probe = px_probe,
-       .remove = px_remove,
 };
 
 static int __init px_init(void)
index b71b77ab0dc759d1524b8302a7843583c2ff861b..ec8ca3336315ecd373a5eecdad4da847fa46c01f 100644 (file)
@@ -105,7 +105,7 @@ static ssize_t show_channel(struct device *dev,
        struct device_attribute *attr, char *buf)
 {
        struct hid_device *hdev = container_of(dev, struct hid_device, dev);
-       struct pk_device *pk = (struct pk_device *)hid_get_drvdata(hdev);
+       struct pk_device *pk = hid_get_drvdata(hdev);
 
        dbg_hid("pcmidi sysfs read channel=%u\n", pk->pm->midi_channel);
 
@@ -118,7 +118,7 @@ static ssize_t store_channel(struct device *dev,
        struct device_attribute *attr, const char *buf, size_t count)
 {
        struct hid_device *hdev = container_of(dev, struct hid_device, dev);
-       struct pk_device *pk = (struct pk_device *)hid_get_drvdata(hdev);
+       struct pk_device *pk = hid_get_drvdata(hdev);
 
        unsigned channel = 0;
 
@@ -142,7 +142,7 @@ static ssize_t show_sustain(struct device *dev,
  struct device_attribute *attr, char *buf)
 {
        struct hid_device *hdev = container_of(dev, struct hid_device, dev);
-       struct pk_device *pk = (struct pk_device *)hid_get_drvdata(hdev);
+       struct pk_device *pk = hid_get_drvdata(hdev);
 
        dbg_hid("pcmidi sysfs read sustain=%u\n", pk->pm->midi_sustain);
 
@@ -155,7 +155,7 @@ static ssize_t store_sustain(struct device *dev,
        struct device_attribute *attr, const char *buf, size_t count)
 {
        struct hid_device *hdev = container_of(dev, struct hid_device, dev);
-       struct pk_device *pk = (struct pk_device *)hid_get_drvdata(hdev);
+       struct pk_device *pk = hid_get_drvdata(hdev);
 
        unsigned sustain = 0;
 
@@ -181,7 +181,7 @@ static ssize_t show_octave(struct device *dev,
        struct device_attribute *attr, char *buf)
 {
        struct hid_device *hdev = container_of(dev, struct hid_device, dev);
-       struct pk_device *pk = (struct pk_device *)hid_get_drvdata(hdev);
+       struct pk_device *pk = hid_get_drvdata(hdev);
 
        dbg_hid("pcmidi sysfs read octave=%d\n", pk->pm->midi_octave);
 
@@ -194,7 +194,7 @@ static ssize_t store_octave(struct device *dev,
        struct device_attribute *attr, const char *buf, size_t count)
 {
        struct hid_device *hdev = container_of(dev, struct hid_device, dev);
-       struct pk_device *pk = (struct pk_device *)hid_get_drvdata(hdev);
+       struct pk_device *pk = hid_get_drvdata(hdev);
 
        int octave = 0;
 
@@ -759,7 +759,7 @@ static int pk_input_mapping(struct hid_device *hdev, struct hid_input *hi,
                struct hid_field *field, struct hid_usage *usage,
                unsigned long **bit, int *max)
 {
-       struct pk_device *pk = (struct pk_device *)hid_get_drvdata(hdev);
+       struct pk_device *pk = hid_get_drvdata(hdev);
        struct pcmidi_snd *pm;
 
        pm = pk->pm;
@@ -777,7 +777,7 @@ static int pk_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 static int pk_raw_event(struct hid_device *hdev, struct hid_report *report,
        u8 *data, int size)
 {
-       struct pk_device *pk = (struct pk_device *)hid_get_drvdata(hdev);
+       struct pk_device *pk = hid_get_drvdata(hdev);
        int ret = 0;
 
        if (1 == pk->pm->ifnum) {
@@ -858,7 +858,7 @@ err_free_pk:
 
 static void pk_remove(struct hid_device *hdev)
 {
-       struct pk_device *pk = (struct pk_device *)hid_get_drvdata(hdev);
+       struct pk_device *pk = hid_get_drvdata(hdev);
        struct pcmidi_snd *pm;
 
        pm = pk->pm;
index 3c1fd8af5e0c37495a25e98dbbfc19db9b22bb99..a5821d31722932a1df634343421b562f05d93d20 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  *  Copyright (c) 2010 Don Prince <dhprince.devel@yahoo.co.uk>
  *
index 5cd25bd907f87bff488b2d6f1d9c780df610b00e..7f33ebf299c220fae74806f2d3aa44dd73c2507a 100644 (file)
@@ -4,7 +4,6 @@
  *  Copyright (c) 1999 Andreas Gal
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  *  Copyright (c) 2006-2008 Jiri Kosina
  */
index d484a0043dd43572238c3f4b9cb0f84f1e355bfb..45b4b066a2621dced695d55d7fd79462de4c5f0a 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby
  */
 
index 75b970f116ee893d69068c9202e0693616063df5..2f60da9ed066539a5b4c2e479118ec0763a1b9f0 100644 (file)
@@ -5,7 +5,6 @@
  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
  *  Copyright (c) 2006-2007 Jiri Kosina
- *  Copyright (c) 2007 Paul Walmsley
  *  Copyright (c) 2008 Jiri Slaby <jirislaby@gmail.com>
  *  Copyright (c) 2006 Andrew Zabolotny <zap@homelink.ru>
  *  Copyright (c) 2009 Bastien Nocera <hadess@hadess.net>
index 745e4e9a8cf21d3b24840ac47050b563ae8bc3fb..bb536ab5941e413a7cbb624ef019d73aec847197 100644 (file)
@@ -638,28 +638,6 @@ static __u8 sirius_battery_free_tablet_rdesc_fixed[] = {
        0xC0                /*  End Collection                      */
 };
 
-static int waltop_probe(struct hid_device *hdev,
-                       const struct hid_device_id *id)
-{
-       int ret;
-
-       ret = hid_parse(hdev);
-       if (ret) {
-               hid_err(hdev, "parse failed\n");
-               goto err;
-       }
-
-       ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
-       if (ret) {
-               hid_err(hdev, "hw start failed\n");
-               goto err;
-       }
-
-       return 0;
-err:
-       return ret;
-}
-
 static __u8 *waltop_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
@@ -776,11 +754,6 @@ static int waltop_raw_event(struct hid_device *hdev, struct hid_report *report,
        return 0;
 }
 
-static void waltop_remove(struct hid_device *hdev)
-{
-       hid_hw_stop(hdev);
-}
-
 static const struct hid_device_id waltop_devices[] = {
        { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP,
                                USB_DEVICE_ID_WALTOP_SLIM_TABLET_5_8_INCH) },
@@ -803,10 +776,8 @@ MODULE_DEVICE_TABLE(hid, waltop_devices);
 static struct hid_driver waltop_driver = {
        .name = "waltop",
        .id_table = waltop_devices,
-       .probe = waltop_probe,
        .report_fixup = waltop_report_fixup,
        .raw_event = waltop_raw_event,
-       .remove = waltop_remove,
 };
 
 static int __init waltop_init(void)
index c46c5f1037f4bfaed739e5ca9d164df326fbeb0b..17d15bb610d15ac4b544e11af3007cd5b6357fd8 100644 (file)
@@ -522,21 +522,28 @@ int __init hidraw_init(void)
 
        if (result < 0) {
                pr_warn("can't get major number\n");
-               result = 0;
                goto out;
        }
 
        hidraw_class = class_create(THIS_MODULE, "hidraw");
        if (IS_ERR(hidraw_class)) {
                result = PTR_ERR(hidraw_class);
-               unregister_chrdev(hidraw_major, "hidraw");
-               goto out;
+               goto error_cdev;
        }
 
         cdev_init(&hidraw_cdev, &hidraw_ops);
-        cdev_add(&hidraw_cdev, dev_id, HIDRAW_MAX_DEVICES);
+       result = cdev_add(&hidraw_cdev, dev_id, HIDRAW_MAX_DEVICES);
+       if (result < 0)
+               goto error_class;
+
 out:
        return result;
+
+error_class:
+       class_destroy(hidraw_class);
+error_cdev:
+       unregister_chrdev_region(dev_id, HIDRAW_MAX_DEVICES);
+       goto out;
 }
 
 void hidraw_exit(void)
index dedd8e4e5c6ddeaff6db3eb8dab01e1dffe20574..8e0c4bf94ebc44b8a3cf214bfd82b9000a7b874a 100644 (file)
@@ -1415,20 +1415,20 @@ static int hid_post_reset(struct usb_interface *intf)
         * configuration descriptors passed, we already know that
         * the size of the HID report descriptor has not changed.
         */
-       rdesc = kmalloc(hid->rsize, GFP_KERNEL);
+       rdesc = kmalloc(hid->dev_rsize, GFP_KERNEL);
        if (!rdesc) {
                dbg_hid("couldn't allocate rdesc memory (post_reset)\n");
                return 1;
        }
        status = hid_get_class_descriptor(dev,
                                interface->desc.bInterfaceNumber,
-                               HID_DT_REPORT, rdesc, hid->rsize);
+                               HID_DT_REPORT, rdesc, hid->dev_rsize);
        if (status < 0) {
                dbg_hid("reading report descriptor failed (post_reset)\n");
                kfree(rdesc);
                return 1;
        }
-       status = memcmp(rdesc, hid->rdesc, hid->rsize);
+       status = memcmp(rdesc, hid->dev_rdesc, hid->dev_rsize);
        kfree(rdesc);
        if (status != 0) {
                dbg_hid("report descriptor changed\n");
index 991e85c7325c849d4e7c287afe28364a8e3351e6..11c7932dc7e6c5628f940d141b50366ca57008ad 100644 (file)
@@ -70,12 +70,13 @@ static const struct hid_blacklist {
        { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_AXIS_295, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET },
+       { USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN1, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN2, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS, HID_QUIRK_NOGET },
-       { USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN, HID_QUIRK_NOGET },
+       { USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_SENNHEISER, USB_DEVICE_ID_SENNHEISER_BTD500USB, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET },