Skip to content

Commit

Permalink
platform/x86: asus-wmi: Disable OOBE state after resume from hibernation
Browse files Browse the repository at this point in the history
ASUS firmware resets OOBE state during S4 suspend, so the keyboard
blinks during resume from hibernation. This patch disables OOBE state
after resume from hibernation.

Signed-off-by: Pavel Nikulin <pavel@noa-labs.com>
Link: https://lore.kernel.org/r/20250418140706.1691-1-pavel@noa-labs.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  • Loading branch information
Pavel Nikulin authored and Ilpo Järvinen committed Apr 23, 2025
1 parent 246f9bb commit 77bdac7
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion drivers/platform/x86/asus-wmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,7 @@ struct asus_wmi {

u32 kbd_rgb_dev;
bool kbd_rgb_state_available;
bool oobe_state_available;

u8 throttle_thermal_policy_mode;
u32 throttle_thermal_policy_dev;
Expand Down Expand Up @@ -1826,7 +1827,7 @@ static int asus_wmi_led_init(struct asus_wmi *asus)
goto error;
}

if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_OOBE)) {
if (asus->oobe_state_available) {
/*
* Disable OOBE state, so that e.g. the keyboard backlight
* works.
Expand Down Expand Up @@ -4723,6 +4724,7 @@ static int asus_wmi_add(struct platform_device *pdev)
asus->egpu_enable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU);
asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU);
asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE);
asus->oobe_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_OOBE);
asus->ally_mcu_usb_switch = acpi_has_method(NULL, ASUS_USB0_PWR_EC0_CSEE)
&& dmi_check_system(asus_ally_mcu_quirk);

Expand Down Expand Up @@ -4970,6 +4972,13 @@ static int asus_hotk_restore(struct device *device)
}
if (!IS_ERR_OR_NULL(asus->kbd_led.dev))
kbd_led_update(asus);
if (asus->oobe_state_available) {
/*
* Disable OOBE state, so that e.g. the keyboard backlight
* works.
*/
asus_wmi_set_devstate(ASUS_WMI_DEVID_OOBE, 1, NULL);
}

if (asus_wmi_has_fnlock_key(asus))
asus_wmi_fnlock_update(asus);
Expand Down

0 comments on commit 77bdac7

Please sign in to comment.