platform/x86/amd/pmf: Store commonly used enums in the header file

Relocate commonly used enums from multiple source files into a shared
header file to simplify code structure, improve readability, and
enhance maintainability. Also, remove the initialization of the first
enum member, since it is not needed.

Add the AMD_PMF_ prefix to the laptop_placement and platform_type enums
since these names are overly generic for inclusion in a UAPI header

Co-developed-by: Sanket Goswami <Sanket.Goswami@amd.com>
Signed-off-by: Sanket Goswami <Sanket.Goswami@amd.com>
Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Link: https://patch.msgid.link/20260609081044.2416731-4-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>
This commit is contained in:
Shyam Sundar S K
2026-06-09 13:40:40 +05:30
committed by Ilpo Järvinen
parent 1983d7dee5
commit 08f3df928f
5 changed files with 100 additions and 55 deletions

View File

@@ -7,6 +7,7 @@
*
* Author: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
*/
#include <linux/amd-pmf.h>
#include <linux/amd-pmf-io.h>
#include <linux/io-64-nonatomic-lo-hi.h>
#include <linux/iopoll.h>
@@ -102,20 +103,20 @@ static int amd_sfh_mode_info(u32 *platform_type, u32 *laptop_placement)
*platform_type = mode.op_mode.devicemode;
if (mode.op_mode.ontablestate == 1) {
*laptop_placement = ON_TABLE;
*laptop_placement = AMD_PMF_ON_TABLE;
} else if (mode.op_mode.ontablestate == 2) {
*laptop_placement = ON_LAP_MOTION;
*laptop_placement = AMD_PMF_ON_LAP_MOTION;
} else if (mode.op_mode.inbagstate == 1) {
*laptop_placement = IN_BAG;
*laptop_placement = AMD_PMF_IN_BAG;
} else if (mode.op_mode.outbagstate == 1) {
*laptop_placement = OUT_OF_BAG;
*laptop_placement = AMD_PMF_OUT_OF_BAG;
} else if (mode.op_mode.ontablestate == 0 || mode.op_mode.inbagstate == 0 ||
mode.op_mode.outbagstate == 0) {
*laptop_placement = LP_UNKNOWN;
*laptop_placement = AMD_PMF_LP_UNKNOWN;
pr_warn_once("Unknown laptop placement\n");
} else if (mode.op_mode.ontablestate == 3 || mode.op_mode.inbagstate == 3 ||
mode.op_mode.outbagstate == 3) {
*laptop_placement = LP_UNDEFINED;
*laptop_placement = AMD_PMF_LP_UNDEFINED;
pr_warn_once("Undefined laptop placement\n");
}

View File

@@ -682,14 +682,6 @@ enum system_state {
SYSTEM_STATE_MAX,
};
enum ta_slider {
TA_BEST_BATTERY,
TA_BETTER_BATTERY,
TA_BETTER_PERFORMANCE,
TA_BEST_PERFORMANCE,
TA_MAX,
};
struct amd_pmf_pb_bitmap {
const char *name;
u32 bit_mask;
@@ -721,20 +713,6 @@ static const struct amd_pmf_pb_bitmap custom_bios_inputs_v1[] __used = {
{"NOTIFY_CUSTOM_BIOS_INPUT10", BIT(16)},
};
enum platform_type {
PTYPE_UNKNOWN = 0,
LID_CLOSE,
CLAMSHELL,
FLAT,
TENT,
STAND,
TABLET,
BOOK,
PRESENTATION,
PULL_FWD,
PTYPE_INVALID = 0xf,
};
/* Command ids for TA communication */
enum ta_pmf_command {
TA_PMF_COMMAND_POLICY_BUILDER_INITIALIZE,

View File

@@ -10,6 +10,7 @@
*/
#include <acpi/button.h>
#include <linux/amd-pmf.h>
#include <linux/amd-pmf-io.h>
#include <linux/cleanup.h>
#include <linux/power_supply.h>
@@ -20,21 +21,21 @@
static const char *platform_type_as_str(u16 platform_type)
{
switch (platform_type) {
case CLAMSHELL:
case AMD_PMF_CLAMSHELL:
return "CLAMSHELL";
case FLAT:
case AMD_PMF_FLAT:
return "FLAT";
case TENT:
case AMD_PMF_TENT:
return "TENT";
case STAND:
case AMD_PMF_STAND:
return "STAND";
case TABLET:
case AMD_PMF_TABLET:
return "TABLET";
case BOOK:
case AMD_PMF_BOOK:
return "BOOK";
case PRESENTATION:
case AMD_PMF_PRESENTATION:
return "PRESENTATION";
case PULL_FWD:
case AMD_PMF_PULL_FWD:
return "PULL_FWD";
default:
return "UNKNOWN";
@@ -44,13 +45,13 @@ static const char *platform_type_as_str(u16 platform_type)
static const char *laptop_placement_as_str(u16 device_state)
{
switch (device_state) {
case ON_TABLE:
case AMD_PMF_ON_TABLE:
return "ON_TABLE";
case ON_LAP_MOTION:
case AMD_PMF_ON_LAP_MOTION:
return "ON_LAP_MOTION";
case IN_BAG:
case AMD_PMF_IN_BAG:
return "IN_BAG";
case OUT_OF_BAG:
case AMD_PMF_OUT_OF_BAG:
return "OUT_OF_BAG";
default:
return "UNKNOWN";
@@ -60,11 +61,11 @@ static const char *laptop_placement_as_str(u16 device_state)
static const char *ta_slider_as_str(unsigned int state)
{
switch (state) {
case TA_BEST_PERFORMANCE:
case AMD_PMF_TA_BEST_PERFORMANCE:
return "PERFORMANCE";
case TA_BETTER_PERFORMANCE:
case AMD_PMF_TA_BETTER_PERFORMANCE:
return "BALANCED";
case TA_BEST_BATTERY:
case AMD_PMF_TA_BEST_BATTERY:
return "POWER_SAVER";
default:
return "Unknown TA Slider State";
@@ -287,14 +288,14 @@ static int amd_pmf_get_slider_info(struct amd_pmf_dev *dev, struct ta_pmf_enact_
switch (dev->current_profile) {
case PLATFORM_PROFILE_PERFORMANCE:
case PLATFORM_PROFILE_BALANCED_PERFORMANCE:
val = TA_BEST_PERFORMANCE;
val = AMD_PMF_TA_BEST_PERFORMANCE;
break;
case PLATFORM_PROFILE_BALANCED:
val = TA_BETTER_PERFORMANCE;
val = AMD_PMF_TA_BETTER_PERFORMANCE;
break;
case PLATFORM_PROFILE_LOW_POWER:
case PLATFORM_PROFILE_QUIET:
val = TA_BEST_BATTERY;
val = AMD_PMF_TA_BEST_BATTERY;
break;
default:
dev_err(dev->dev, "Unknown Platform Profile.\n");

View File

@@ -52,15 +52,6 @@ struct amd_sfh_info {
u32 laptop_placement;
};
enum laptop_placement {
LP_UNKNOWN = 0,
ON_TABLE,
ON_LAP_MOTION,
IN_BAG,
OUT_OF_BAG,
LP_UNDEFINED,
};
/**
* struct amd_pmf_npu_metrics: Get NPU metrics data from PMF driver
* @npuclk_freq: NPU clock frequency [MHz]

View File

@@ -42,6 +42,80 @@
#define AMD_PMF_FEAT_DYNAMIC_POWER_SLIDER_AC BIT(3)
#define AMD_PMF_FEAT_DYNAMIC_POWER_SLIDER_DC BIT(4)
/**
* enum amd_pmf_laptop_placement - Describes the physical placement of the laptop
* @AMD_PMF_LP_UNKNOWN: Placement cannot be determined
* @AMD_PMF_ON_TABLE: Laptop is placed on a stable surface like a table or desk
* @AMD_PMF_ON_LAP_MOTION: Laptop is on a lap with detected motion
* @AMD_PMF_IN_BAG: Laptop is detected to be inside a bag or case
* @AMD_PMF_OUT_OF_BAG: Laptop has been removed from bag or case
* @AMD_PMF_LP_UNDEFINED: Placement state is undefined
*
* This enumeration represents the physical placement state of the laptop
* as detected by platform sensors. Used for adaptive power management
* and thermal policies.
*/
enum amd_pmf_laptop_placement {
AMD_PMF_LP_UNKNOWN,
AMD_PMF_ON_TABLE,
AMD_PMF_ON_LAP_MOTION,
AMD_PMF_IN_BAG,
AMD_PMF_OUT_OF_BAG,
AMD_PMF_LP_UNDEFINED,
};
/**
* enum amd_pmf_ta_slider - Trusted Application power slider positions
* @AMD_PMF_TA_BEST_BATTERY: Maximum battery savings, minimal performance
* @AMD_PMF_TA_BETTER_BATTERY: Balanced towards battery life
* @AMD_PMF_TA_BETTER_PERFORMANCE: Balanced towards performance
* @AMD_PMF_TA_BEST_PERFORMANCE: Maximum performance, higher power consumption
* @AMD_PMF_TA_MAX: Sentinel value indicating maximum enum value
*
* This enumeration defines the power slider positions used by the
* AMD PMF Trusted Application for dynamic power management decisions.
* These correspond to the Windows power slider UI positions.
*/
enum amd_pmf_ta_slider {
AMD_PMF_TA_BEST_BATTERY,
AMD_PMF_TA_BETTER_BATTERY,
AMD_PMF_TA_BETTER_PERFORMANCE,
AMD_PMF_TA_BEST_PERFORMANCE,
AMD_PMF_TA_MAX,
};
/**
* enum amd_pmf_platform_type - Describes the physical form factor orientation
* @AMD_PMF_PTYPE_UNKNOWN: Platform type cannot be determined
* @AMD_PMF_LID_CLOSE: Laptop lid is closed
* @AMD_PMF_CLAMSHELL: Traditional laptop mode with keyboard and screen
* @AMD_PMF_FLAT: Device is lying flat on a surface
* @AMD_PMF_TENT: Device is in tent mode (keyboard folded back, standing)
* @AMD_PMF_STAND: Device is propped up in stand orientation
* @AMD_PMF_TABLET: Device is in tablet mode with keyboard hidden
* @AMD_PMF_BOOK: Device is in book reading orientation
* @AMD_PMF_PRESENTATION: Device is in presentation mode
* @AMD_PMF_PULL_FWD: Screen is pulled forward towards user
* @AMD_PMF_PTYPE_INVALID: Invalid platform type marker
*
* This enumeration describes the current physical orientation or form
* factor of convertible/2-in-1 devices. Used for optimizing power and
* thermal management based on device posture.
*/
enum amd_pmf_platform_type {
AMD_PMF_PTYPE_UNKNOWN,
AMD_PMF_LID_CLOSE,
AMD_PMF_CLAMSHELL,
AMD_PMF_FLAT,
AMD_PMF_TENT,
AMD_PMF_STAND,
AMD_PMF_TABLET,
AMD_PMF_BOOK,
AMD_PMF_PRESENTATION,
AMD_PMF_PULL_FWD,
AMD_PMF_PTYPE_INVALID = 0xf,
};
struct amd_pmf_info {
__u64 size;