|
@@ -1373,8 +1373,10 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask)
|
|
if ((connect_mask & HID_CONNECT_HIDRAW) && !hidraw_connect(hdev))
|
|
if ((connect_mask & HID_CONNECT_HIDRAW) && !hidraw_connect(hdev))
|
|
hdev->claimed |= HID_CLAIMED_HIDRAW;
|
|
hdev->claimed |= HID_CLAIMED_HIDRAW;
|
|
|
|
|
|
- if (!hdev->claimed) {
|
|
|
|
- hid_err(hdev, "claimed by neither input, hiddev nor hidraw\n");
|
|
|
|
|
|
+ /* Drivers with the ->raw_event callback set are not required to connect
|
|
|
|
+ * to any other listener. */
|
|
|
|
+ if (!hdev->claimed && !hdev->driver->raw_event) {
|
|
|
|
+ hid_err(hdev, "device has no listeners, quitting\n");
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
}
|
|
}
|
|
|
|
|