Re: [PATCH v2] platform/x86: hp-wmi: Define known Victus S driver data

From: Ilpo Järvinen

Date: Mon Oct 12 2026 - 11:27:28 EST


On Sun, 27 Sep 2026, Suryansh Singh wrote:

> Currently, Victus S thermal parameters use the Unknown Offset for TP
> (Thermal Profile) from the EC offsets enum, even though there is a
> Victus S EC Offset in the same enum.
>
> This was done so because the EC layout is highly
> variable across this lineup of laptops. The only place where the 0x59
> offset is used is the driver data for Omen V1 models, despite it being
> labelled as the Victus S TP offset. The name clearly doesn't relate
> to the use case.
>
> However, after some downstream searching, I have found that there is
> a Victus S board which does have the expected EC layout corresponding to
> the very Victus S offset itself.
>
> Add known board parameters for the Victus S models to correctly map
> the found board (8C99) and any others in the future, and add
> required if-statements for platform profile options for the new
> parameters.
>
> Link: https://github.com/yunusemreyl/omen-space/commit/f32a76386592d1a604e574c693b323d15e978089
> Signed-off-by: Suryansh Singh <technosfan14@xxxxxxxxx>
> ---
> drivers/platform/x86/hp/hp-wmi.c | 20 +++++++++++++++++---
> 1 file changed, 17 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/platform/x86/hp/hp-wmi.c b/drivers/platform/x86/hp/hp-wmi.c
> index 7ab81ce5f8d4..7851cb607c74 100644
> --- a/drivers/platform/x86/hp/hp-wmi.c
> +++ b/drivers/platform/x86/hp/hp-wmi.c
> @@ -121,6 +121,13 @@ static const struct thermal_profile_params victus_s_thermal_params = {
> .ec_tp_offset = HP_EC_OFFSET_UNKNOWN,
> };
>
> +static const struct thermal_profile_params victus_s_known_thermal_params = {
> + .performance = HP_VICTUS_S_THERMAL_PROFILE_PERFORMANCE,
> + .balanced = HP_VICTUS_S_THERMAL_PROFILE_DEFAULT,
> + .low_power = HP_VICTUS_S_THERMAL_PROFILE_DEFAULT,
> + .ec_tp_offset = HP_VICTUS_S_EC_THERMAL_PROFILE_OFFSET,
> +};
> +
> static const struct thermal_profile_params omen_v1_thermal_params = {
> .performance = HP_OMEN_V1_THERMAL_PROFILE_PERFORMANCE,
> .balanced = HP_OMEN_V1_THERMAL_PROFILE_DEFAULT,
> @@ -164,6 +171,11 @@ static const struct hp_wmi_board_params victus_s_board_params = {
> .fan_profile = &victus_s_fan_profile_params,
> };
>
> +static const struct hp_wmi_board_params victus_s_known_board_params = {
> + .thermal_profile = &victus_s_known_thermal_params,
> + .fan_profile = &victus_s_fan_profile_params,
> +};
> +
> static const struct hp_wmi_board_params omen_v1_board_params = {
> .thermal_profile = &omen_v1_thermal_params,
> .fan_profile = &victus_s_fan_profile_params,
> @@ -316,7 +328,7 @@ static const struct dmi_system_id hp_wmi_feature_boards[] __initconst = {
> },
> {
> .matches = { DMI_MATCH(DMI_BOARD_NAME, "8C99") },
> - .driver_data = (void *)&victus_s_board_params,
> + .driver_data = (void *)&victus_s_known_board_params,
> },
> {
> .matches = { DMI_MATCH(DMI_BOARD_NAME, "8C9C") },
> @@ -2146,10 +2158,12 @@ static int platform_profile_victus_s_get_ec(enum platform_profile_option *profil
> * of these values.
> */
> if (tp == victus_s_thermal_params.performance ||
> - tp == omen_v1_thermal_params.performance) {
> + tp == omen_v1_thermal_params.performance ||
> + tp == victus_s_known_thermal_params.performance) {

Please remind me, why can't we generalize this and have to keep adding
numbers even if we should have the params now per board in struct so why
cannot we map using those numbers?

This is also misaligned.

> *profile = PLATFORM_PROFILE_PERFORMANCE;
> } else if (tp == victus_s_thermal_params.balanced ||
> - tp == omen_v1_thermal_params.balanced) {
> + tp == omen_v1_thermal_params.balanced ||
> + tp == victus_s_known_thermal_params.balanced) {

Same comments here.

> /*
> * Since both PLATFORM_PROFILE_LOW_POWER and
> * PLATFORM_PROFILE_BALANCED share the same thermal profile
>

--
i.