[PATCH] platform/x86: hp-wmi: add cTGP and PPAB support for Omen
From: ShaunV334
Date: Thu Sep 03 2026 - 16:07:11 EST
From: Shaun Varghese <shaunvarghese43@xxxxxxxxx>
On supported Omen systems, the GPU can be limited to a lower power
limit because cTGP and PPAB are not configured when changing the
platform profile.
Configure the GPU cTGP and PPAB settings through the existing WMI 0x22
GPU thermal profile interface. Performance enables both cTGP and PPAB,
Balanced enables PPAB, and Cool disables both.
This allows the NVIDIA GPU to make use of the additional power budget
provided by the platform, improving GPU performance compared to the
lower power limit.
Tested on an HP Omen Transcend 14 (board 8C58) RTX 4060.
The GPU was limited to 35 W before this change. With cTGP/PPAB
enabled, the GPU was able to reach and maintain its boost clocks, with
power draw increasing to 57 W, benchmark performance improving by
approximately 10–15%.
Signed-off-by: Shaun Varghese <shaunvarghese43@xxxxxxxxx>
---
drivers/platform/x86/hp/hp-wmi.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/drivers/platform/x86/hp/hp-wmi.c b/drivers/platform/x86/hp/hp-wmi.c
index b2773fc1aca4..54887a476c8e 100644
--- a/drivers/platform/x86/hp/hp-wmi.c
+++ b/drivers/platform/x86/hp/hp-wmi.c
@@ -1771,9 +1771,15 @@ inline int omen_thermal_profile_ec_timer_set(u8 value)
return ec_write(HP_OMEN_EC_THERMAL_PROFILE_TIMER_OFFSET, value);
}
+static int victus_s_gpu_thermal_profile_set(bool ctgp_enable,
+ bool ppab_enable,
+ u8 dstate);
+
static int platform_profile_omen_set_ec(enum platform_profile_option profile)
{
int err, tp, tp_version;
+ bool gpu_ctgp_enable;
+ bool gpu_ppab_enable;
enum hp_thermal_profile_omen_flags flags = 0;
tp_version = omen_get_thermal_policy_version();
@@ -1787,19 +1793,31 @@ static int platform_profile_omen_set_ec(enum platform_profile_option profile)
tp = HP_OMEN_V0_THERMAL_PROFILE_PERFORMANCE;
else
tp = HP_OMEN_V1_THERMAL_PROFILE_PERFORMANCE;
+
+ gpu_ctgp_enable = true;
+ gpu_ppab_enable = true;
break;
+
case PLATFORM_PROFILE_BALANCED:
if (tp_version == 0)
tp = HP_OMEN_V0_THERMAL_PROFILE_DEFAULT;
else
tp = HP_OMEN_V1_THERMAL_PROFILE_DEFAULT;
+
+ gpu_ctgp_enable = false;
+ gpu_ppab_enable = true;
break;
+
case PLATFORM_PROFILE_COOL:
if (tp_version == 0)
tp = HP_OMEN_V0_THERMAL_PROFILE_COOL;
else
tp = HP_OMEN_V1_THERMAL_PROFILE_COOL;
+
+ gpu_ctgp_enable = false;
+ gpu_ppab_enable = false;
break;
+
default:
return -EOPNOTSUPP;
}
@@ -1808,6 +1826,18 @@ static int platform_profile_omen_set_ec(enum platform_profile_option profile)
if (err < 0)
return err;
+ /*
+ * Configure GPU cTGP / PPAB through WMI 0x22 according to
+ * the selected platform profile.
+ */
+ err = victus_s_gpu_thermal_profile_set(gpu_ctgp_enable,
+ gpu_ppab_enable,
+ 1);
+ if (err < 0) {
+ pr_debug("hp-wmi: GPU cTGP/PPAB set returned %d\n", err);
+ return err;
+ }
+
if (has_omen_thermal_profile_ec_timer()) {
err = omen_thermal_profile_ec_timer_set(0);
if (err < 0)
--
2.55.0