aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiner Kallweit <hkallweit1@gmail.com>2016-06-21 15:48:46 -0400
committerJiri Kosina <jkosina@suse.cz>2016-06-23 02:47:40 -0400
commit4374573008df08a3a7a84cd827ed8f1ceee9901b (patch)
treee5eef598c1e25a6aafe8315c54bbfce827db6b88
parent5bc839367bce7a609986a446bd7288409f51f1bc (diff)
HID: hid-led: add support for reading from LED devices
Add support for reading data from LED devices. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r--drivers/hid/hid-led.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/hid/hid-led.c b/drivers/hid/hid-led.c
index d5d8d941c4b0..4075f095c2a2 100644
--- a/drivers/hid/hid-led.c
+++ b/drivers/hid/hid-led.c
@@ -115,6 +115,35 @@ static int hidled_send(struct hidled_device *ldev, __u8 *buf)
115 return ret == ldev->config->report_size ? 0 : -EMSGSIZE; 115 return ret == ldev->config->report_size ? 0 : -EMSGSIZE;
116} 116}
117 117
118/* reading data is supported for report type RAW_REQUEST only */
119static int hidled_recv(struct hidled_device *ldev, __u8 *buf)
120{
121 int ret;
122
123 if (ldev->config->report_type != RAW_REQUEST)
124 return -EINVAL;
125
126 buf[0] = ldev->config->report_id;
127
128 mutex_lock(&ldev->lock);
129
130 ret = hid_hw_raw_request(ldev->hdev, buf[0], buf,
131 ldev->config->report_size,
132 HID_FEATURE_REPORT,
133 HID_REQ_SET_REPORT);
134 if (ret < 0)
135 goto err;
136
137 ret = hid_hw_raw_request(ldev->hdev, buf[0], buf,
138 ldev->config->report_size,
139 HID_FEATURE_REPORT,
140 HID_REQ_GET_REPORT);
141err:
142 mutex_unlock(&ldev->lock);
143
144 return ret < 0 ? ret : 0;
145}
146
118static u8 riso_kagaku_index(struct hidled_rgb *rgb) 147static u8 riso_kagaku_index(struct hidled_rgb *rgb)
119{ 148{
120 enum led_brightness r, g, b; 149 enum led_brightness r, g, b;