diff options
| author | Jiri Kosina <jkosina@suse.cz> | 2009-11-26 10:20:56 -0500 |
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2009-12-03 13:34:19 -0500 |
| commit | 2da31939a42f7a676a0bc5155d6a0a39ed8451f2 (patch) | |
| tree | 2ff9006190fde6f973baa7004a565f1d07f99ab2 | |
| parent | fed4c2508b7419d0a55958fead6151b32def1683 (diff) | |
Bluetooth: Implement raw output support for HIDP layer
Implement raw output callback which is used by hidraw to send raw data to
the underlying device.
Without this patch, the userspace hidraw-based applications can't send
output reports to HID Bluetooth devices.
Reported-and-tested-by: Brian Gunn <bgunn@solekai.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
| -rw-r--r-- | net/bluetooth/hidp/core.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c index 49d8495d69be..569750010fd3 100644 --- a/net/bluetooth/hidp/core.c +++ b/net/bluetooth/hidp/core.c | |||
| @@ -280,6 +280,13 @@ static int hidp_send_report(struct hidp_session *session, struct hid_report *rep | |||
| 280 | return hidp_queue_report(session, buf, rsize); | 280 | return hidp_queue_report(session, buf, rsize); |
| 281 | } | 281 | } |
| 282 | 282 | ||
| 283 | static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, size_t count) | ||
| 284 | { | ||
| 285 | if (hidp_queue_report(hid->driver_data, data, count)) | ||
| 286 | return -ENOMEM; | ||
| 287 | return count; | ||
| 288 | } | ||
| 289 | |||
| 283 | static void hidp_idle_timeout(unsigned long arg) | 290 | static void hidp_idle_timeout(unsigned long arg) |
| 284 | { | 291 | { |
| 285 | struct hidp_session *session = (struct hidp_session *) arg; | 292 | struct hidp_session *session = (struct hidp_session *) arg; |
| @@ -785,6 +792,8 @@ static int hidp_setup_hid(struct hidp_session *session, | |||
| 785 | hid->dev.parent = hidp_get_device(session); | 792 | hid->dev.parent = hidp_get_device(session); |
| 786 | hid->ll_driver = &hidp_hid_driver; | 793 | hid->ll_driver = &hidp_hid_driver; |
| 787 | 794 | ||
| 795 | hid->hid_output_raw_report = hidp_output_raw_report; | ||
| 796 | |||
| 788 | err = hid_add_device(hid); | 797 | err = hid_add_device(hid); |
| 789 | if (err < 0) | 798 | if (err < 0) |
| 790 | goto failed; | 799 | goto failed; |
