HID: hid-led: add support for reading from LED devices
authorHeiner Kallweit <hkallweit1@gmail.com>
Tue, 21 Jun 2016 19:48:46 +0000 (21:48 +0200)
committerJiri Kosina <jkosina@suse.cz>
Thu, 23 Jun 2016 06:47:40 +0000 (08:47 +0200)
Add support for reading data from LED devices.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-led.c

index d5d8d941c4b0a79e614ed6fd61253318e0f3765d..4075f095c2a22820e38372d3c57a1d98c7325315 100644 (file)
@@ -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;
This page took 0.038529 seconds and 5 git commands to generate.