aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hid/hid-google-hammer.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/hid/hid-google-hammer.c b/drivers/hid/hid-google-hammer.c
index 6486469ce0f6..7b8e17b03cb8 100644
--- a/drivers/hid/hid-google-hammer.c
+++ b/drivers/hid/hid-google-hammer.c
@@ -41,6 +41,16 @@ static int hammer_kbd_brightness_set_blocking(struct led_classdev *cdev,
41 led->buf[0] = 0; 41 led->buf[0] = 0;
42 led->buf[1] = br; 42 led->buf[1] = br;
43 43
44 /*
45 * Request USB HID device to be in Full On mode, so that sending
46 * hardware output report and hardware raw request won't fail.
47 */
48 ret = hid_hw_power(led->hdev, PM_HINT_FULLON);
49 if (ret < 0) {
50 hid_err(led->hdev, "failed: device not resumed %d\n", ret);
51 return ret;
52 }
53
44 ret = hid_hw_output_report(led->hdev, led->buf, sizeof(led->buf)); 54 ret = hid_hw_output_report(led->hdev, led->buf, sizeof(led->buf));
45 if (ret == -ENOSYS) 55 if (ret == -ENOSYS)
46 ret = hid_hw_raw_request(led->hdev, 0, led->buf, 56 ret = hid_hw_raw_request(led->hdev, 0, led->buf,
@@ -50,6 +60,10 @@ static int hammer_kbd_brightness_set_blocking(struct led_classdev *cdev,
50 if (ret < 0) 60 if (ret < 0)
51 hid_err(led->hdev, "failed to set keyboard backlight: %d\n", 61 hid_err(led->hdev, "failed to set keyboard backlight: %d\n",
52 ret); 62 ret);
63
64 /* Request USB HID device back to Normal Mode. */
65 hid_hw_power(led->hdev, PM_HINT_NORMAL);
66
53 return ret; 67 return ret;
54} 68}
55 69