]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
platform/x86/dell: Set USTT mode according to BIOS after reboot
authorShyam Sundar S K <Shyam-sundar.S-k@amd.com>
Tue, 16 Sep 2025 11:51:42 +0000 (17:21 +0530)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tue, 23 Sep 2025 09:06:31 +0000 (12:06 +0300)
After a reboot, if the user changes the thermal setting in the BIOS, the
BIOS applies this change. However, the current `dell-pc` driver does not
recognize the updated USTT value, resulting in inconsistent thermal
profiles between Windows and Linux.

To ensure alignment with Windows behavior, read the current USTT settings
during driver initialization and update the dell-pc USTT profile
accordingly whenever a change is detected.

Cc: Yijun Shen <Yijun.Shen@Dell.com>
Co-developed-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
Signed-off-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Reviewed-by: Lyndon Sanche <lsanche@lyndeno.ca>
Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
Tested-By: Yijun Shen <Yijun.Shen@Dell.com>
Link: https://patch.msgid.link/20250916115142.188535-1-Shyam-sundar.S-k@amd.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/dell/dell-pc.c

index 48cc7511905a62d2828e3a7b593b3d2dae893e34..becdd9aaef2970703b8b8c55c4ff950b66dd39aa 100644 (file)
@@ -228,6 +228,8 @@ static int thermal_platform_profile_get(struct device *dev,
 
 static int thermal_platform_profile_probe(void *drvdata, unsigned long *choices)
 {
+       int current_mode;
+
        if (supported_modes & DELL_QUIET)
                __set_bit(PLATFORM_PROFILE_QUIET, choices);
        if (supported_modes & DELL_COOL_BOTTOM)
@@ -237,6 +239,13 @@ static int thermal_platform_profile_probe(void *drvdata, unsigned long *choices)
        if (supported_modes & DELL_PERFORMANCE)
                __set_bit(PLATFORM_PROFILE_PERFORMANCE, choices);
 
+       /* Make sure that ACPI is in sync with the profile set by USTT */
+       current_mode = thermal_get_mode();
+       if (current_mode < 0)
+               return current_mode;
+
+       thermal_set_mode(current_mode);
+
        return 0;
 }