From: Christopher Olson <redacted>
Somewhere between 2.6.26 and 2.6.28, hidraw began connecting to HIDP
devices which don't strictly define their behavior in the HID usage
table, and without any patching on my part. These non-compliant
devices wouldn't automatically disconnect, leaving hidraw files which
did nothing.
Signed-off-by: Christopher Olson <redacted>
---
--- net/bluetooth/hidp/core.c 2009-09-10 09:32:20.000000000 -0500
+++ net/bluetooth/hidp/core.c.1 2009-09-10 09:31:37.000000000 -0500
@@ -40,6 +40,7 @@
#include <linux/input.h>
#include <linux/hid.h>
+#include <linux/hidraw.h>
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
@@ -736,6 +737,8 @@ static void hidp_stop(struct hid_device
if (hid->claimed & HID_CLAIMED_INPUT)
hidinput_disconnect(hid);
+ if (hid->claimed & HID_CLAIMED_HIDRAW)
+ hidraw_disconnect(hid);
hid->claimed = 0;
}