
Fix a platform profile option switch/getter bug on some Omen and Victus laptops dismissing userspace choice when selecting performance mode in inadequate conditions (e.g. by being disconnected from the AC power plug) by - hooking an ACPI notify handler through the omen_register_powersource_event_handler method that listens to AC power source changes (plugging in/out the AC power plug) - keeping an intermediate active_platform_profile variable that is set when userspace changes the platform profile setting - restoring the selected platform profile kept in active_platform_profile when AC power is plugged back into the laptop through the power_supply_is_system_supplied call check, unless if the user decided to alter the platform profile mid-way Add a dependency to the POWER_SUPPLY subsystem to be able to check for power_supply_is_system_supplied. Introduce intermediary functions to leverage platform profile <-> internal thermal profile translation code from platform_profile_omen_set and callers. These changes makes the module compliant with the principles defined in the Platform Profile Selection page of the Kernel documentation on those kind of laptops; which is to not "(...) let userspace know about any sub-optimal conditions which are impeding reaching the requested performance level". Since the Omen and Victus laptops share the same embedded controller system, the fix is applicable to both categories of laptops. Signed-off-by: Alexis Belmonte <alexbelm48@gmail.com> Link: https://lore.kernel.org/r/Zovh22-7B1jI7sfF@alexis-pc [ij: Made active_platform_profile_lock static] Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2.4 KiB
SPDX-License-Identifier: GPL-2.0-only
X86 Platform Specific Drivers
menuconfig X86_PLATFORM_DRIVERS_HP bool "HP X86 Platform Specific Device Drivers" depends on X86_PLATFORM_DEVICES help Say Y here to get to see options for device drivers for various HP x86 platforms, including vendor-specific laptop extension drivers. This option alone does not add any kernel code.
If you say N, all options in this submenu will be skipped and disabled.
if X86_PLATFORM_DRIVERS_HP
config HP_ACCEL tristate "HP laptop accelerometer" default m depends on INPUT && ACPI depends on SERIO_I8042 select SENSORS_LIS3LV02D select NEW_LEDS select LEDS_CLASS help This driver provides support for the "Mobile Data Protection System 3D" or "3D DriveGuard" feature of HP laptops. On such systems the driver should load automatically (via ACPI alias).
Support for a led indicating disk protection will be provided as
hp::hddprotect. For more information on the feature, refer to
Documentation/misc-devices/lis3lv02d.rst.
To compile this driver as a module, choose M here: the module will
be called hp_accel.
config HP_WMI tristate "HP WMI extras" default m depends on ACPI_WMI depends on INPUT depends on RFKILL || RFKILL = n select POWER_SUPPLY select INPUT_SPARSEKMAP select ACPI_PLATFORM_PROFILE select HWMON help Say Y here if you want to support WMI-based hotkeys on HP laptops and to read data from WMI such as docking or ambient light sensor state.
To compile this driver as a module, choose M here: the module will
be called hp-wmi.
config TC1100_WMI tristate "HP Compaq TC1100 Tablet WMI Extras" default m depends on !X86_64 depends on ACPI depends on ACPI_WMI help This is a driver for the WMI extensions (wireless and bluetooth power control) of the HP Compaq TC1100 tablet.
config HP_BIOSCFG tristate "HP BIOS Configuration Driver" default m depends on ACPI_WMI select NLS select FW_ATTR_CLASS help This driver enables administrators to securely manage BIOS settings using digital certificates and public-key cryptography that eliminate the need for passwords for both remote and local management. It supports changing BIOS settings on many HP machines from 2018 and newer without the use of any additional software.
To compile this driver as a module, choose M here: the module will
be called hp-bioscfg.
endif # X86_PLATFORM_DRIVERS_HP