diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2016-06-21 15:48:46 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2016-06-23 02:47:40 -0400 |
commit | 4374573008df08a3a7a84cd827ed8f1ceee9901b (patch) | |
tree | e5eef598c1e25a6aafe8315c54bbfce827db6b88 | |
parent | 5bc839367bce7a609986a446bd7288409f51f1bc (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.c | 29 |
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 */ | ||
119 | static 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); | ||
141 | err: | ||
142 | mutex_unlock(&ldev->lock); | ||
143 | |||
144 | return ret < 0 ? ret : 0; | ||
145 | } | ||
146 | |||
118 | static u8 riso_kagaku_index(struct hidled_rgb *rgb) | 147 | static u8 riso_kagaku_index(struct hidled_rgb *rgb) |
119 | { | 148 | { |
120 | enum led_brightness r, g, b; | 149 | enum led_brightness r, g, b; |