acpi: platform_profile - Add max-power profile option
Some devices, namely Lenovo Legion devices, have an "extreme" mode where power draw is at the maximum limit of the cooling hardware. Add a new "max-power" platform profile to properly reflect this operating mode. Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org> Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org> Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com> Reviewed-by: Armin Wolf <W_Armin@gmx.de> Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca> Link: https://patch.msgid.link/20251127151605.1018026-2-derekjohn.clark@gmail.com Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>pull/1354/merge
parent
0b39ce8f71
commit
5aefbf5b68
|
|
@ -23,6 +23,8 @@ Description: This file contains a space-separated list of profiles supported
|
||||||
power consumption with a slight bias
|
power consumption with a slight bias
|
||||||
towards performance
|
towards performance
|
||||||
performance High performance operation
|
performance High performance operation
|
||||||
|
max-power Higher performance operation that may exceed
|
||||||
|
internal battery draw limits when on AC power
|
||||||
custom Driver defined custom profile
|
custom Driver defined custom profile
|
||||||
==================== ========================================
|
==================== ========================================
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ static const char * const profile_names[] = {
|
||||||
[PLATFORM_PROFILE_BALANCED] = "balanced",
|
[PLATFORM_PROFILE_BALANCED] = "balanced",
|
||||||
[PLATFORM_PROFILE_BALANCED_PERFORMANCE] = "balanced-performance",
|
[PLATFORM_PROFILE_BALANCED_PERFORMANCE] = "balanced-performance",
|
||||||
[PLATFORM_PROFILE_PERFORMANCE] = "performance",
|
[PLATFORM_PROFILE_PERFORMANCE] = "performance",
|
||||||
|
[PLATFORM_PROFILE_MAX_POWER] = "max-power",
|
||||||
[PLATFORM_PROFILE_CUSTOM] = "custom",
|
[PLATFORM_PROFILE_CUSTOM] = "custom",
|
||||||
};
|
};
|
||||||
static_assert(ARRAY_SIZE(profile_names) == PLATFORM_PROFILE_LAST);
|
static_assert(ARRAY_SIZE(profile_names) == PLATFORM_PROFILE_LAST);
|
||||||
|
|
@ -506,7 +507,8 @@ int platform_profile_cycle(void)
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
if (profile == PLATFORM_PROFILE_CUSTOM ||
|
if (profile == PLATFORM_PROFILE_MAX_POWER ||
|
||||||
|
profile == PLATFORM_PROFILE_CUSTOM ||
|
||||||
profile == PLATFORM_PROFILE_LAST)
|
profile == PLATFORM_PROFILE_LAST)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
|
@ -515,7 +517,8 @@ int platform_profile_cycle(void)
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
/* never iterate into a custom if all drivers supported it */
|
/* never iterate into a custom or max power if all drivers supported it */
|
||||||
|
clear_bit(PLATFORM_PROFILE_MAX_POWER, data.aggregate);
|
||||||
clear_bit(PLATFORM_PROFILE_CUSTOM, data.aggregate);
|
clear_bit(PLATFORM_PROFILE_CUSTOM, data.aggregate);
|
||||||
|
|
||||||
next = find_next_bit_wrap(data.aggregate,
|
next = find_next_bit_wrap(data.aggregate,
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ enum platform_profile_option {
|
||||||
PLATFORM_PROFILE_BALANCED,
|
PLATFORM_PROFILE_BALANCED,
|
||||||
PLATFORM_PROFILE_BALANCED_PERFORMANCE,
|
PLATFORM_PROFILE_BALANCED_PERFORMANCE,
|
||||||
PLATFORM_PROFILE_PERFORMANCE,
|
PLATFORM_PROFILE_PERFORMANCE,
|
||||||
|
PLATFORM_PROFILE_MAX_POWER,
|
||||||
PLATFORM_PROFILE_CUSTOM,
|
PLATFORM_PROFILE_CUSTOM,
|
||||||
PLATFORM_PROFILE_LAST, /*must always be last */
|
PLATFORM_PROFILE_LAST, /*must always be last */
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue