Skip to content

Commit

Permalink
Bluetooth: hidp: implement hidinput_input_event callback
Browse files Browse the repository at this point in the history
We can re-enable hidinput_input_event to allow the leds of bluetooth
keyboards to be set.
Now the callbacks uses hid core to retrieve the right HID report to
send, so this version is safer.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Acked-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

Conflicts:
	net/bluetooth/hidp/core.c
  • Loading branch information
bentiss authored and RealJohnGalt committed Apr 27, 2016
1 parent 667489e commit fe26478
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions net/bluetooth/hidp/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,31 @@ static int hidp_send_report(struct hidp_session *session, struct hid_report *rep
return hidp_send_intr_message(session, hdr, buf, rsize);
}

static int hidp_hidinput_event(struct input_dev *dev, unsigned int type,
unsigned int code, int value)
{
struct hid_device *hid = input_get_drvdata(dev);
struct hidp_session *session = hid->driver_data;
struct hid_field *field;
int offset;

BT_DBG("session %p type %d code %d value %d",
session, type, code, value);

if (type != EV_LED)
return -1;

offset = hidinput_find_field(hid, type, code, &field);
if (offset == -1) {
hid_warn(dev, "event field not found\n");
return -1;
}

hid_set_field(field, offset, value);

return hidp_send_report(session, field->report);
}

static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, size_t count,
unsigned char report_type)
{
Expand Down Expand Up @@ -745,6 +770,7 @@ static struct hid_ll_driver hidp_hid_driver = {
.stop = hidp_stop,
.open = hidp_open,
.close = hidp_close,
.hidinput_input_event = hidp_hidinput_event,
};

static int hidp_setup_hid(struct hidp_session *session,
Expand Down

0 comments on commit fe26478

Please sign in to comment.