diff options
-rw-r--r-- | drivers/hid/hid-google-hammer.c | 14 |
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 | ||