mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 15:12:13 +02:00
platform/x86: alienware-wmi-wmax: Add support for the "custom" thermal profile
All models with the "AWCC" WMAX device support a "custom" thermal profile. In some models this profile signals user-space that the user wants to manually control the fans, which are always unlocked. In other models it actually unlocks manual fan control. Reviewed-by: Armin Wolf <W_Armin@gmx.de> Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Kurt Borja <kuurtb@gmail.com> Link: https://lore.kernel.org/r/20250329-hwm-v7-6-a14ea39d8a94@gmail.com Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
parent
32b6372ddd
commit
3dde0ae1eb
|
|
@ -30,8 +30,6 @@
|
|||
#define AWCC_METHOD_THERMAL_CONTROL 0x15
|
||||
#define AWCC_METHOD_GAME_SHIFT_STATUS 0x25
|
||||
|
||||
#define AWCC_THERMAL_MODE_GMODE 0xAB
|
||||
|
||||
#define AWCC_FAILURE_CODE 0xFFFFFFFF
|
||||
#define AWCC_FAILURE_CODE_2 0xFFFFFFFE
|
||||
|
||||
|
|
@ -179,6 +177,11 @@ enum AWCC_THERMAL_TABLES {
|
|||
AWCC_THERMAL_TABLE_USTT = 0xA,
|
||||
};
|
||||
|
||||
enum AWCC_SPECIAL_THERMAL_CODES {
|
||||
AWCC_SPECIAL_PROFILE_CUSTOM = 0x00,
|
||||
AWCC_SPECIAL_PROFILE_GMODE = 0xAB,
|
||||
};
|
||||
|
||||
enum awcc_thermal_profile {
|
||||
AWCC_PROFILE_USTT_BALANCED,
|
||||
AWCC_PROFILE_USTT_BALANCED_PERFORMANCE,
|
||||
|
|
@ -599,9 +602,15 @@ static int awcc_platform_profile_get(struct device *dev,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (out_data == AWCC_THERMAL_MODE_GMODE) {
|
||||
switch (out_data) {
|
||||
case AWCC_SPECIAL_PROFILE_CUSTOM:
|
||||
*profile = PLATFORM_PROFILE_CUSTOM;
|
||||
return 0;
|
||||
case AWCC_SPECIAL_PROFILE_GMODE:
|
||||
*profile = PLATFORM_PROFILE_PERFORMANCE;
|
||||
return 0;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (!is_awcc_thermal_profile_id(out_data))
|
||||
|
|
@ -686,11 +695,17 @@ static int awcc_platform_profile_probe(void *drvdata, unsigned long *choices)
|
|||
|
||||
if (awcc->gmode) {
|
||||
priv->supported_profiles[PLATFORM_PROFILE_PERFORMANCE] =
|
||||
AWCC_THERMAL_MODE_GMODE;
|
||||
AWCC_SPECIAL_PROFILE_GMODE;
|
||||
|
||||
__set_bit(PLATFORM_PROFILE_PERFORMANCE, choices);
|
||||
}
|
||||
|
||||
/* Every model supports the "custom" profile */
|
||||
priv->supported_profiles[PLATFORM_PROFILE_CUSTOM] =
|
||||
AWCC_SPECIAL_PROFILE_CUSTOM;
|
||||
|
||||
__set_bit(PLATFORM_PROFILE_CUSTOM, choices);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user