Fix resume from suspend keyboard backlight
This commit is contained in:
parent
2d2341e993
commit
7994d6ab1f
28
kb_led.c
28
kb_led.c
|
|
@ -102,7 +102,7 @@ static void kb_led_color_set(enum kb_led_region region, union kb_led_color color
|
|||
}
|
||||
|
||||
static struct led_classdev kb_led = {
|
||||
.name = "system76::kbd_backlight",
|
||||
.name = "system76::k_backlight",
|
||||
.flags = LED_BRIGHT_HW_CHANGED,
|
||||
.brightness_get = kb_led_get,
|
||||
.brightness_set_blocking = kb_led_set,
|
||||
|
|
@ -197,19 +197,37 @@ static struct device_attribute kb_led_color_extra_dev_attr = {
|
|||
.store = kb_led_color_extra_store,
|
||||
};
|
||||
|
||||
static void kb_led_suspend(void) {
|
||||
S76_INFO("kb_led_suspend\n");
|
||||
|
||||
// Disable keyboard backlight
|
||||
s76_wmbb(SET_KB_LED, 0xE0003001, NULL);
|
||||
}
|
||||
|
||||
static void kb_led_resume(void) {
|
||||
enum kb_led_region region;
|
||||
|
||||
// Enable keyboard backlight
|
||||
s76_wmbb(SET_KB_LED, 0xE007F001, NULL);
|
||||
S76_INFO("kb_led_resume\n");
|
||||
|
||||
// Reset current brightness
|
||||
kb_led_set(&kb_led, kb_led_brightness);
|
||||
// Disable keyboard backlight
|
||||
s76_wmbb(SET_KB_LED, 0xE0003001, NULL);
|
||||
|
||||
msleep(1000);
|
||||
|
||||
// Reset current color
|
||||
for (region = 0; region < sizeof(kb_led_regions)/sizeof(union kb_led_color); region++) {
|
||||
kb_led_color_set(region, kb_led_regions[region]);
|
||||
}
|
||||
|
||||
msleep(1000);
|
||||
|
||||
// Reset current brightness
|
||||
kb_led_set(&kb_led, kb_led_brightness);
|
||||
|
||||
msleep(1000);
|
||||
|
||||
// Enable keyboard backlight
|
||||
s76_wmbb(SET_KB_LED, 0xE007F001, NULL);
|
||||
}
|
||||
|
||||
static int __init kb_led_init(struct device *dev) {
|
||||
|
|
|
|||
19
system76.c
19
system76.c
|
|
@ -91,11 +91,9 @@ static int s76_wmbb(u32 method_id, u32 arg, u32 *retval) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
//#include "ec.c"
|
||||
#include "ap_led.c"
|
||||
#include "input.c"
|
||||
#include "kb_led.c"
|
||||
//#include "kb.c"
|
||||
#include "hwmon.c"
|
||||
|
||||
static void s76_debug_wmi(void) {
|
||||
|
|
@ -169,8 +167,12 @@ static void s76_wmi_notify(u32 value, void *context) {
|
|||
case 0x83:
|
||||
kb_wmi_color();
|
||||
break;
|
||||
case 0x7b:
|
||||
kb_led_suspend();
|
||||
break;
|
||||
case 0x95:
|
||||
s76_debug_wmi();
|
||||
//s76_debug_wmi();
|
||||
kb_led_resume();
|
||||
break;
|
||||
case 0x9F:
|
||||
kb_wmi_toggle();
|
||||
|
|
@ -243,7 +245,17 @@ static int s76_remove(struct platform_device *dev) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int s76_suspend(struct platform_device *dev, pm_message_t status) {
|
||||
S76_INFO("s76_suspend\n");
|
||||
|
||||
kb_led_suspend();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int s76_resume(struct platform_device *dev) {
|
||||
S76_INFO("s76_resume\n");
|
||||
|
||||
// Enable hotkey support
|
||||
s76_wmbb(0x46, 0, NULL);
|
||||
|
||||
|
|
@ -255,6 +267,7 @@ static int s76_resume(struct platform_device *dev) {
|
|||
|
||||
static struct platform_driver s76_platform_driver = {
|
||||
.remove = s76_remove,
|
||||
.suspend = s76_suspend,
|
||||
.resume = s76_resume,
|
||||
.driver = {
|
||||
.name = S76_DRIVER_NAME,
|
||||
|
|
|
|||
Loading…
Reference in New Issue