[PATCH 1/2] platform/x86: acer-wmi: Cycle platform profile on mode key 0x4

From: Dennis Nilsson via B4 Relay

Date: Sat Oct 17 2026 - 04:35:35 EST


From: Dennis Nilsson <kontakt@xxxxxxxxxxxxxxxx>

On some Nitro models using the Predator Sense v4 interface, such as the
Nitro AN16-41, the mode key raises WMID_GAMING_TURBO_KEY_EVENT with
key_num 0x4 instead of 0x5. The driver routes key_num 0x4 to
acer_toggle_turbo(), which returns immediately on machines without
ACER_CAP_TURBO_LED because WMID_gaming_get_u64() rejects the missing
capability, so the key press is silently dropped.

Only toggle turbo for key_num 0x4 when the turbo LED capability is
present, and cycle the platform profile otherwise. Machines with the
turbo quirk keep their current behaviour, and on every other machine
key_num 0x4 was previously a no-op.

Tested on an Acer Nitro AN16-41 (BIOS V1.03), where the mode key sends
the event payload 07 04 01 00 and now cycles the platform profile.

Assisted-by: LLM
Signed-off-by: Dennis Nilsson <kontakt@xxxxxxxxxxxxxxxx>
---
drivers/platform/x86/acer-wmi.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
index 9e3758c57..323179c43 100644
--- a/drivers/platform/x86/acer-wmi.c
+++ b/drivers/platform/x86/acer-wmi.c
@@ -2564,8 +2564,13 @@ static void acer_wmi_notify(union acpi_object *obj, void *context)
acer_kbd_dock_event(&return_value);
break;
case WMID_GAMING_TURBO_KEY_EVENT:
- if (return_value.key_num == 0x4)
- acer_toggle_turbo();
+ if (return_value.key_num == 0x4) {
+ /* Models without a turbo button report their mode key as 0x4 */
+ if (has_cap(ACER_CAP_TURBO_LED))
+ acer_toggle_turbo();
+ else if (has_cap(ACER_CAP_PLATFORM_PROFILE))
+ acer_thermal_profile_change();
+ }
if (return_value.key_num == 0x5 && has_cap(ACER_CAP_PLATFORM_PROFILE))
acer_thermal_profile_change();
break;

--
2.53.0