]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
platform/x86: hp-wmi: Add support for Fn+P hotkey
authorEdip Hazuri <edip@medip.dev>
Thu, 14 Aug 2025 20:45:32 +0000 (23:45 +0300)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Thu, 28 Aug 2025 15:48:42 +0000 (18:48 +0300)
Add support for the Fn+P hotkey found on newer HP Victus (and probably
newer Omen) laptops. This hotkey is intended for use with Omen Gaming Hub
to change the performance profile (see [1]).

Pressing Fn+P under linux produced the following warning in dmesg:

> hp_wmi: Unknown event_id - 27 - 0x7

Implemented a handling for this event so that the hotkey cycles between the
platform profiles when triggered.

Tested on Victus 16-s1011nt (9Z791EA, MB 8C9C).

Changes in v2:
- Make the key just switches between platform profiles instead of
  assigning a key event code.
- v1: https://lore.kernel.org/all/20250802213541.18791-2-edip@medip.dev/

[1]: https://jpcdn.it/img/adadf6c927ffeb75afd8038f95db400a.png

Signed-off-by: Edip Hazuri <edip@medip.dev>
Link: https://lore.kernel.org/r/20250814204529.18467-4-edip@medip.dev
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/hp/hp-wmi.c

index 60c8ac8d902c4f27250d293ea1d3050eba0cc9c2..8b3533d6ba091ad3c84264edd43d38fc553e9a60 100644 (file)
@@ -122,6 +122,7 @@ enum hp_wmi_event_ids {
        HPWMI_BATTERY_CHARGE_PERIOD     = 0x10,
        HPWMI_SANITIZATION_MODE         = 0x17,
        HPWMI_CAMERA_TOGGLE             = 0x1A,
+       HPWMI_FN_P_HOTKEY               = 0x1B,
        HPWMI_OMEN_KEY                  = 0x1D,
        HPWMI_SMART_EXPERIENCE_APP      = 0x21,
 };
@@ -981,6 +982,9 @@ static void hp_wmi_notify(union acpi_object *obj, void *context)
                                                key_code, 1, true))
                        pr_info("Unknown key code - 0x%x\n", key_code);
                break;
+       case HPWMI_FN_P_HOTKEY:
+               platform_profile_cycle();
+               break;
        case HPWMI_OMEN_KEY:
                if (event_data) /* Only should be true for HP Omen */
                        key_code = event_data;