mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
platform/x86: hp-wmi: Add support for OMEN MAX 16-ak0xxx (8D87)
The HP OMEN MAX 16-ak0xxx (8D87) requires the same WMI queries as other Victus S devices, hence it has been added to the corresponding list. For this reason, platform_profile_victus_s_get_ec() will be called during thermal_profile_setup() and victus_s_powersource_event() to obtain hardware state (platform profile) by reading from the Embedded Controller, however, this particular board's EC does not seem to expose the platform profile value, unlike other boards. Hence EC readback is disabled. Testing on board 8D87 confirmed that platform profile is registered successfully and fan RPMs are readable and controllable. Tested-by: Jinyang Zhu <Jakie101@proton.me> Signed-off-by: Krishna Chomal <krishna.chomal108@gmail.com> Link: https://patch.msgid.link/20260410191039.125659-3-krishna.chomal108@gmail.com Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
parent
9d317a54e4
commit
5badf5ebcd
|
|
@ -48,6 +48,7 @@ MODULE_ALIAS("wmi:5FB7F034-2C63-45E9-BE91-3D44E2C707E4");
|
|||
|
||||
enum hp_ec_offsets {
|
||||
HP_EC_OFFSET_UNKNOWN = 0x00,
|
||||
HP_NO_THERMAL_PROFILE_OFFSET = 0x01,
|
||||
HP_VICTUS_S_EC_THERMAL_PROFILE_OFFSET = 0x59,
|
||||
HP_OMEN_EC_THERMAL_PROFILE_FLAGS_OFFSET = 0x62,
|
||||
HP_OMEN_EC_THERMAL_PROFILE_TIMER_OFFSET = 0x63,
|
||||
|
|
@ -127,6 +128,13 @@ static const struct thermal_profile_params omen_v1_legacy_thermal_params = {
|
|||
.ec_tp_offset = HP_OMEN_EC_THERMAL_PROFILE_OFFSET,
|
||||
};
|
||||
|
||||
static const struct thermal_profile_params omen_v1_no_ec_thermal_params = {
|
||||
.performance = HP_OMEN_V1_THERMAL_PROFILE_PERFORMANCE,
|
||||
.balanced = HP_OMEN_V1_THERMAL_PROFILE_DEFAULT,
|
||||
.low_power = HP_OMEN_V1_THERMAL_PROFILE_DEFAULT,
|
||||
.ec_tp_offset = HP_NO_THERMAL_PROFILE_OFFSET,
|
||||
};
|
||||
|
||||
/*
|
||||
* A generic pointer for the currently-active board's thermal profile
|
||||
* parameters.
|
||||
|
|
@ -231,6 +239,10 @@ static const struct dmi_system_id victus_s_thermal_profile_boards[] __initconst
|
|||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8D41") },
|
||||
.driver_data = (void *)&victus_s_thermal_params,
|
||||
},
|
||||
{
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8D87") },
|
||||
.driver_data = (void *)&omen_v1_no_ec_thermal_params,
|
||||
},
|
||||
{},
|
||||
};
|
||||
|
||||
|
|
@ -1837,7 +1849,8 @@ static int platform_profile_victus_s_get_ec(enum platform_profile_option *profil
|
|||
const struct thermal_profile_params *params;
|
||||
|
||||
params = active_thermal_profile_params;
|
||||
if (params->ec_tp_offset == HP_EC_OFFSET_UNKNOWN) {
|
||||
if (params->ec_tp_offset == HP_EC_OFFSET_UNKNOWN ||
|
||||
params->ec_tp_offset == HP_NO_THERMAL_PROFILE_OFFSET) {
|
||||
*profile = active_platform_profile;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -2192,7 +2205,8 @@ static int thermal_profile_setup(struct platform_device *device)
|
|||
* behaves like a wrapper around active_platform_profile, to avoid using
|
||||
* uninitialized data, we default to PLATFORM_PROFILE_BALANCED.
|
||||
*/
|
||||
if (active_thermal_profile_params->ec_tp_offset == HP_EC_OFFSET_UNKNOWN) {
|
||||
if (active_thermal_profile_params->ec_tp_offset == HP_EC_OFFSET_UNKNOWN ||
|
||||
active_thermal_profile_params->ec_tp_offset == HP_NO_THERMAL_PROFILE_OFFSET) {
|
||||
active_platform_profile = PLATFORM_PROFILE_BALANCED;
|
||||
} else {
|
||||
err = platform_profile_victus_s_get_ec(&active_platform_profile);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user