diff --git a/kb_led.c b/kb_led.c index dd739f1..8591a94 100644 --- a/kb_led.c +++ b/kb_led.c @@ -197,11 +197,23 @@ static struct device_attribute kb_led_color_extra_dev_attr = { .store = kb_led_color_extra_store, }; +static void kb_led_enable(void) { + S76_INFO("kb_led_enable\n"); + + s76_wmbb(SET_KB_LED, 0xE007F001, NULL); +} + +static void kb_led_disable(void) { + S76_INFO("kb_led_disable\n"); + + s76_wmbb(SET_KB_LED, 0xE0003001, NULL); +} + static void kb_led_suspend(void) { S76_INFO("kb_led_suspend\n"); // Disable keyboard backlight - s76_wmbb(SET_KB_LED, 0xE0003001, NULL); + kb_led_disable(); } static void kb_led_resume(void) { @@ -210,24 +222,24 @@ static void kb_led_resume(void) { S76_INFO("kb_led_resume\n"); // Disable keyboard backlight - s76_wmbb(SET_KB_LED, 0xE0003001, NULL); + kb_led_disable(); - msleep(1000); + //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); + //msleep(1000); // Reset current brightness kb_led_set(&kb_led, kb_led_brightness); - msleep(1000); + //msleep(1000); // Enable keyboard backlight - s76_wmbb(SET_KB_LED, 0xE007F001, NULL); + kb_led_enable(); } static int __init kb_led_init(struct device *dev) { diff --git a/system76.c b/system76.c index 221787c..aa5bc08 100644 --- a/system76.c +++ b/system76.c @@ -101,48 +101,66 @@ static void s76_debug_wmi(void) { u32 val = 0; - #define DEBUG_WMI(N, V) { \ + #define DEBUG_WMI(V, N) { \ s76_wmbb(V, 0, &val); \ - S76_INFO("%s %x = %x\n", N, V, val); \ + S76_INFO("%x %s = %x\n", V, #N, val); \ } - DEBUG_WMI("?", 0x01); - DEBUG_WMI("A2", 0x05); - DEBUG_WMI("Webcam", 0x06); - DEBUG_WMI("Bluetooth", 0x07); - DEBUG_WMI("Touchpad", 0x09); - DEBUG_WMI("A4", 0x0A); - DEBUG_WMI("?", 0x10); - DEBUG_WMI("A7", 0x11); - DEBUG_WMI("?", 0x12); - DEBUG_WMI("?", 0x32); - DEBUG_WMI("?", 0x33); - DEBUG_WMI("?", 0x34); - DEBUG_WMI("?", 0x38); - DEBUG_WMI("?", 0x39); - DEBUG_WMI("?", 0x3B); - DEBUG_WMI("?", 0x3C); - DEBUG_WMI("Keyboard Backlight", 0x3D); - DEBUG_WMI("?", 0x3F); - DEBUG_WMI("?", 0x40); - DEBUG_WMI("?", 0x41); - DEBUG_WMI("?", 0x42); - DEBUG_WMI("?", 0x43); - DEBUG_WMI("?", 0x44); - DEBUG_WMI("?", 0x45); - DEBUG_WMI("?", 0x51); - DEBUG_WMI("?", 0x52); - DEBUG_WMI("VGA", 0x54); - DEBUG_WMI("?", 0x62); - DEBUG_WMI("?", 0x63); - DEBUG_WMI("?", 0x64); - DEBUG_WMI("?", 0x6E); - DEBUG_WMI("?", 0x6F); - DEBUG_WMI("?", 0x70); - DEBUG_WMI("?", 0x71); - DEBUG_WMI("?", 0x73); - DEBUG_WMI("?", 0x77); - DEBUG_WMI("?", 0x7A); + DEBUG_WMI(1, GetEvent) + DEBUG_WMI(5, GetRadioStateForWirless) + DEBUG_WMI(6, GetPowerStateForCamera) + DEBUG_WMI(7, GetPowerStateForBluetooth) + DEBUG_WMI(8, GetSRSState) + DEBUG_WMI(9, GetTouchPadState) + DEBUG_WMI(10, GetPowerStateFor3G) + DEBUG_WMI(11, GetPowerStateForODD) + DEBUG_WMI(12, GetECLiveInfo) + DEBUG_WMI(13, PackageReadEC) + DEBUG_WMI(15, GetVGA2tempThermalIC) + DEBUG_WMI(16, GetCPUPerformance) + DEBUG_WMI(17, GetCPUFANControl) + DEBUG_WMI(18, GetXMP) + DEBUG_WMI(50, GetBatteryDesignCpacity) + DEBUG_WMI(51, GetBatteryAverageTimeToFullCharge) + DEBUG_WMI(52, GetBatteryAverageTimeToEmpty) + DEBUG_WMI(53, GetCPUFANDuty) + DEBUG_WMI(54, GetVGA1FANDuty) + DEBUG_WMI(55, GetVGA2FANDuty) + DEBUG_WMI(56, GetFANCount) + DEBUG_WMI(57, GetBoardId) + DEBUG_WMI(58, GetOem1) + DEBUG_WMI(59, GetLCDResolution) + DEBUG_WMI(60, GetHDMIport) + DEBUG_WMI(61, GetWhiteLedKB) + DEBUG_WMI(62, GetGSensorMode) + DEBUG_WMI(63, GetHDPollingTime) + DEBUG_WMI(64, GetRFID) + DEBUG_WMI(66, GetBarCode) + DEBUG_WMI(67, GetBIOS_SF) + DEBUG_WMI(68, GetVolumeLED) + DEBUG_WMI(69, GetCurrentBrightness) + DEBUG_WMI(70, GetAP) + DEBUG_WMI(71, SetFactoryMode) + DEBUG_WMI(72, OS_S3_S4) + DEBUG_WMI(74, RapidStarMode) + DEBUG_WMI(80, GetACmA) + DEBUG_WMI(81, GetDCmAmV) + DEBUG_WMI(82, BIOS_special_feature_list) + DEBUG_WMI(83, GetLux) + DEBUG_WMI(84, Aero) + DEBUG_WMI(96, GetTP_SW) + DEBUG_WMI(97, GetFanStatus) + DEBUG_WMI(98, RapidStar) + DEBUG_WMI(99, Fan1Info) + DEBUG_WMI(100, Fan2Info) + DEBUG_WMI(109, AirplaneButton) + DEBUG_WMI(110, Fan3Info) + DEBUG_WMI(111, Fan4Info) + DEBUG_WMI(112, GetFan12RPM) + DEBUG_WMI(113, GetFan34RPM) + DEBUG_WMI(115, GetH2RAMData) + DEBUG_WMI(119, GetChargingStatus) + DEBUG_WMI(122, BiosSpecialFeature) } static void s76_wmi_notify(u32 value, void *context) { @@ -171,11 +189,10 @@ static void s76_wmi_notify(u32 value, void *context) { kb_led_suspend(); break; case 0x95: - //s76_debug_wmi(); - kb_led_resume(); + s76_debug_wmi(); break; case 0x9F: - kb_wmi_toggle(); + //TODO: Fn+Backspace break; case 0xF4: s76_input_airplane_wmi();