|
@@ -1232,7 +1232,6 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask)
|
|
|
hdev->claimed |= HID_CLAIMED_INPUT;
|
|
|
if (hdev->quirks & HID_QUIRK_MULTITOUCH) {
|
|
|
/* this device should be handled by hid-multitouch, skip it */
|
|
|
- hdev->quirks &= ~HID_QUIRK_MULTITOUCH;
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|
|
@@ -1667,6 +1666,10 @@ static int hid_bus_match(struct device *dev, struct device_driver *drv)
|
|
|
struct hid_driver *hdrv = container_of(drv, struct hid_driver, driver);
|
|
|
struct hid_device *hdev = container_of(dev, struct hid_device, dev);
|
|
|
|
|
|
+ if ((hdev->quirks & HID_QUIRK_MULTITOUCH) &&
|
|
|
+ !strncmp(hdrv->name, "hid-multitouch", 14))
|
|
|
+ return 1;
|
|
|
+
|
|
|
if (!hid_match_device(hdev, hdrv))
|
|
|
return 0;
|
|
|
|
|
@@ -1691,8 +1694,11 @@ static int hid_device_probe(struct device *dev)
|
|
|
if (!hdev->driver) {
|
|
|
id = hid_match_device(hdev, hdrv);
|
|
|
if (id == NULL) {
|
|
|
- ret = -ENODEV;
|
|
|
- goto unlock;
|
|
|
+ if (!((hdev->quirks & HID_QUIRK_MULTITOUCH) &&
|
|
|
+ !strncmp(hdrv->name, "hid-multitouch", 14))) {
|
|
|
+ ret = -ENODEV;
|
|
|
+ goto unlock;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
hdev->driver = hdrv;
|