Unverified Commit 5aefbf5b authored by Derek J. Clark's avatar Derek J. Clark Committed by Ilpo Järvinen
Browse files

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: default avatarMario Limonciello (AMD) <superm1@kernel.org>
Acked-by: default avatarRafael J. Wysocki (Intel) <rafael@kernel.org>
Signed-off-by: default avatarDerek J. Clark <derekjohn.clark@gmail.com>
Reviewed-by: default avatarArmin Wolf <W_Armin@gmx.de>
Reviewed-by: default avatarMark Pearson <mpearson-lenovo@squebb.ca>
Link: https://patch.msgid.link/20251127151605.1018026-2-derekjohn.clark@gmail.com


Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
parent 0b39ce8f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ Description: This file contains a space-separated list of profiles supported
					power consumption with a slight bias
					towards performance
		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
		====================	========================================

+5 −2
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ static const char * const profile_names[] = {
	[PLATFORM_PROFILE_BALANCED] = "balanced",
	[PLATFORM_PROFILE_BALANCED_PERFORMANCE] = "balanced-performance",
	[PLATFORM_PROFILE_PERFORMANCE] = "performance",
	[PLATFORM_PROFILE_MAX_POWER] = "max-power",
	[PLATFORM_PROFILE_CUSTOM] = "custom",
};
static_assert(ARRAY_SIZE(profile_names) == PLATFORM_PROFILE_LAST);
@@ -506,7 +507,8 @@ int platform_profile_cycle(void)
		if (err)
			return err;

		if (profile == PLATFORM_PROFILE_CUSTOM ||
		if (profile == PLATFORM_PROFILE_MAX_POWER ||
		    profile == PLATFORM_PROFILE_CUSTOM ||
		    profile == PLATFORM_PROFILE_LAST)
			return -EINVAL;

@@ -515,7 +517,8 @@ int platform_profile_cycle(void)
		if (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);

		next = find_next_bit_wrap(data.aggregate,
+1 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ enum platform_profile_option {
	PLATFORM_PROFILE_BALANCED,
	PLATFORM_PROFILE_BALANCED_PERFORMANCE,
	PLATFORM_PROFILE_PERFORMANCE,
	PLATFORM_PROFILE_MAX_POWER,
	PLATFORM_PROFILE_CUSTOM,
	PLATFORM_PROFILE_LAST, /*must always be last */
};