Re: [PATCH] platform/x86: uniwill-laptop: Remove cTGP control from unsupported devices
From: Armin Wolf
Date: Fri Nov 13 2026 - 16:53:30 EST
Am 13.11.26 um 15:47 schrieb Werner Sembach:
Some devices like the InfinityBook Pro series have Dynamic Boost support,
but the cTGP setting is actually ignored.
This commit adds the ability to still initialize DB, but hide the noop cTGP
sysfs attribute and applies this to the respective devices.
IMHO the cTGP setting only works with the official NVidia driver and nvidia-powerd running in the background. Also there currently is a tiny
issue with cTGP support, do you have a acpidump from one of the affected machines?
Thanks,
Armin Wolf
Signed-off-by: Werner Sembach <wse@xxxxxxxxxxxxxxxxxxx>
---
drivers/platform/x86/uniwill/uniwill-acpi.c | 26 ++++++++++++++-------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform/x86/uniwill/uniwill-acpi.c
index e2a6a704e942e..c0a75bc6e66db 100644
--- a/drivers/platform/x86/uniwill/uniwill-acpi.c
+++ b/drivers/platform/x86/uniwill/uniwill-acpi.c
@@ -366,10 +366,12 @@
#define UNIWILL_FEATURE_PRIMARY_FAN BIT(8)
#define UNIWILL_FEATURE_SECONDARY_FAN BIT(9)
#define UNIWILL_FEATURE_NVIDIA_CTGP_CONTROL BIT(10)
-#define UNIWILL_FEATURE_USB_C_POWER_PRIORITY BIT(11)
-#define UNIWILL_FEATURE_KEYBOARD_BACKLIGHT BIT(12)
-#define UNIWILL_FEATURE_AC_AUTO_BOOT BIT(13)
-#define UNIWILL_FEATURE_USB_POWERSHARE BIT(14)
+/* Mutually exclusive with the cTGP control feature */
+#define UNIWILL_FEATURE_NVIDIA_DB_SUPPORT_ONLY BIT(11)
+#define UNIWILL_FEATURE_USB_C_POWER_PRIORITY BIT(12)
+#define UNIWILL_FEATURE_KEYBOARD_BACKLIGHT BIT(13)
+#define UNIWILL_FEATURE_AC_AUTO_BOOT BIT(14)
+#define UNIWILL_FEATURE_USB_POWERSHARE BIT(15)
enum usb_c_power_priority_options {
USB_C_POWER_PRIORITY_CHARGING = 0,
@@ -1004,7 +1006,9 @@ static int uniwill_nvidia_ctgp_init(struct uniwill_data *data)
{
int ret;
- if (!uniwill_device_supports(data, UNIWILL_FEATURE_NVIDIA_CTGP_CONTROL))
+ if (!uniwill_device_supports_any(data,
+ UNIWILL_FEATURE_NVIDIA_CTGP_CONTROL |
+ UNIWILL_FEATURE_NVIDIA_DB_SUPPORT_ONLY))
return 0;
ret = regmap_write(data->regmap, EC_ADDR_CTGP_DB_CTGP_OFFSET, 0);
@@ -2577,7 +2581,9 @@ static int uniwill_suspend_usb_powershare(struct uniwill_data *data)
static int uniwill_suspend_nvidia_ctgp(struct uniwill_data *data)
{
- if (!uniwill_device_supports(data, UNIWILL_FEATURE_NVIDIA_CTGP_CONTROL))
+ if (!uniwill_device_supports_any(data,
+ UNIWILL_FEATURE_NVIDIA_CTGP_CONTROL |
+ UNIWILL_FEATURE_NVIDIA_DB_SUPPORT_ONLY))
return 0;
return regmap_clear_bits(data->regmap, EC_ADDR_CTGP_DB_CTRL,
@@ -2686,7 +2692,9 @@ static int uniwill_resume_usb_powershare(struct uniwill_data *data)
static int uniwill_resume_nvidia_ctgp(struct uniwill_data *data)
{
- if (!uniwill_device_supports(data, UNIWILL_FEATURE_NVIDIA_CTGP_CONTROL))
+ if (!uniwill_device_supports_any(data,
+ UNIWILL_FEATURE_NVIDIA_CTGP_CONTROL |
+ UNIWILL_FEATURE_NVIDIA_DB_SUPPORT_ONLY))
return 0;
return regmap_set_bits(data->regmap, EC_ADDR_CTGP_DB_CTRL,
@@ -2910,7 +2918,7 @@ static struct uniwill_device_descriptor phxtqxx_phxagxx_phxaqxx_phxpgxx_descript
UNIWILL_FEATURE_GPU_TEMP |
UNIWILL_FEATURE_PRIMARY_FAN |
UNIWILL_FEATURE_SECONDARY_FAN |
- UNIWILL_FEATURE_NVIDIA_CTGP_CONTROL |
+ UNIWILL_FEATURE_NVIDIA_DB_SUPPORT_ONLY |
UNIWILL_FEATURE_USB_C_POWER_PRIORITY |
UNIWILL_FEATURE_KEYBOARD_BACKLIGHT,
.kbd_led_single_color = true,
@@ -3106,7 +3114,7 @@ static int phxarxx_phxaqxx_probe(struct uniwill_data *data)
if (value & HAS_GPU)
data->features |= UNIWILL_FEATURE_GPU_TEMP |
- UNIWILL_FEATURE_NVIDIA_CTGP_CONTROL;
+ UNIWILL_FEATURE_NVIDIA_DB_SUPPORT_ONLY;
return 0;
};