From: Christopher Olson <[email protected]>
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 <[email protected]>
---
--- 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;
}
Hi Christopher,
> 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 <[email protected]>
>
> ---
>
> --- 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;
> }
I am pretty sure such a patch or similar is in net-next-2.6 already.
Regards
Marcel