Commit 43745730 authored by Heiner Kallweit's avatar Heiner Kallweit Committed by Jiri Kosina
Browse files

HID: hid-led: add support for reading from LED devices



Add support for reading data from LED devices.

Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 5bc83936
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -115,6 +115,35 @@ static int hidled_send(struct hidled_device *ldev, __u8 *buf)
	return ret == ldev->config->report_size ? 0 : -EMSGSIZE;
}

/* reading data is supported for report type RAW_REQUEST only */
static int hidled_recv(struct hidled_device *ldev, __u8 *buf)
{
	int ret;

	if (ldev->config->report_type != RAW_REQUEST)
		return -EINVAL;

	buf[0] = ldev->config->report_id;

	mutex_lock(&ldev->lock);

	ret = hid_hw_raw_request(ldev->hdev, buf[0], buf,
				 ldev->config->report_size,
				 HID_FEATURE_REPORT,
				 HID_REQ_SET_REPORT);
	if (ret < 0)
		goto err;

	ret = hid_hw_raw_request(ldev->hdev, buf[0], buf,
				 ldev->config->report_size,
				 HID_FEATURE_REPORT,
				 HID_REQ_GET_REPORT);
err:
	mutex_unlock(&ldev->lock);

	return ret < 0 ? ret : 0;
}

static u8 riso_kagaku_index(struct hidled_rgb *rgb)
{
	enum led_brightness r, g, b;