Unverified Commit 77bdac73 authored by Pavel Nikulin's avatar Pavel Nikulin Committed by Ilpo Järvinen
Browse files

platform/x86: asus-wmi: Disable OOBE state after resume from hibernation



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: default avatarPavel Nikulin <pavel@noa-labs.com>
Link: https://lore.kernel.org/r/20250418140706.1691-1-pavel@noa-labs.com


Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
parent 246f9bb6
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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.
@@ -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);

@@ -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);