aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hid/hid-core.c')
-rw-r--r--drivers/hid/hid-core.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index af08ce7207d9..05a0c9a35bf2 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1232,7 +1232,6 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask)
1232 hdev->claimed |= HID_CLAIMED_INPUT; 1232 hdev->claimed |= HID_CLAIMED_INPUT;
1233 if (hdev->quirks & HID_QUIRK_MULTITOUCH) { 1233 if (hdev->quirks & HID_QUIRK_MULTITOUCH) {
1234 /* this device should be handled by hid-multitouch, skip it */ 1234 /* this device should be handled by hid-multitouch, skip it */
1235 hdev->quirks &= ~HID_QUIRK_MULTITOUCH;
1236 return -ENODEV; 1235 return -ENODEV;
1237 } 1236 }
1238 1237
@@ -1409,6 +1408,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
1409 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D) }, 1408 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D) },
1410 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E) }, 1409 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E) },
1411 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C) }, 1410 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C) },
1411 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7224) },
1412 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_725E) },
1412 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B) }, 1413 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B) },
1413 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1) }, 1414 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1) },
1414 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302) }, 1415 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302) },
@@ -1501,6 +1502,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
1501 { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18) }, 1502 { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18) },
1502 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) }, 1503 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) },
1503 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) }, 1504 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
1505 { HID_USB_DEVICE(USB_VENDOR_ID_PANASONIC, USB_DEVICE_ID_PANABOARD_UBT780) },
1506 { HID_USB_DEVICE(USB_VENDOR_ID_PANASONIC, USB_DEVICE_ID_PANABOARD_UBT880) },
1504 { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_PCI) }, 1507 { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_PCI) },
1505 { HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) }, 1508 { HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
1506 { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN) }, 1509 { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN) },
@@ -1663,6 +1666,10 @@ static int hid_bus_match(struct device *dev, struct device_driver *drv)
1663 struct hid_driver *hdrv = container_of(drv, struct hid_driver, driver); 1666 struct hid_driver *hdrv = container_of(drv, struct hid_driver, driver);
1664 struct hid_device *hdev = container_of(dev, struct hid_device, dev); 1667 struct hid_device *hdev = container_of(dev, struct hid_device, dev);
1665 1668
1669 if ((hdev->quirks & HID_QUIRK_MULTITOUCH) &&
1670 !strncmp(hdrv->name, "hid-multitouch", 14))
1671 return 1;
1672
1666 if (!hid_match_device(hdev, hdrv)) 1673 if (!hid_match_device(hdev, hdrv))
1667 return 0; 1674 return 0;
1668 1675
@@ -1687,8 +1694,11 @@ static int hid_device_probe(struct device *dev)
1687 if (!hdev->driver) { 1694 if (!hdev->driver) {
1688 id = hid_match_device(hdev, hdrv); 1695 id = hid_match_device(hdev, hdrv);
1689 if (id == NULL) { 1696 if (id == NULL) {
1690 ret = -ENODEV; 1697 if (!((hdev->quirks & HID_QUIRK_MULTITOUCH) &&
1691 goto unlock; 1698 !strncmp(hdrv->name, "hid-multitouch", 14))) {
1699 ret = -ENODEV;
1700 goto unlock;
1701 }
1692 } 1702 }
1693 1703
1694 hdev->driver = hdrv; 1704 hdev->driver = hdrv;