platform/x86/amd/pmf: Move debug helper functions to UAPI header

These debug helper functions convert enumerated values to appropriate
message and can be useful for userspace tools and other kernel components
that need to interpret AMD PMF state values.

By making them inline functions in the UAPI header, they become available
to both kernel and userspace without code duplication. Also, prefix the
function names with amd_pmf_.

Also, include a case to cover unused enum entries.

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-5-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:41 +05:30
committed by Ilpo Järvinen
parent 08f3df928f
commit c7bdedfcb8
2 changed files with 63 additions and 57 deletions

View File

@@ -18,60 +18,6 @@
#include "pmf.h"
#ifdef CONFIG_AMD_PMF_DEBUG
static const char *platform_type_as_str(u16 platform_type)
{
switch (platform_type) {
case AMD_PMF_CLAMSHELL:
return "CLAMSHELL";
case AMD_PMF_FLAT:
return "FLAT";
case AMD_PMF_TENT:
return "TENT";
case AMD_PMF_STAND:
return "STAND";
case AMD_PMF_TABLET:
return "TABLET";
case AMD_PMF_BOOK:
return "BOOK";
case AMD_PMF_PRESENTATION:
return "PRESENTATION";
case AMD_PMF_PULL_FWD:
return "PULL_FWD";
default:
return "UNKNOWN";
}
}
static const char *laptop_placement_as_str(u16 device_state)
{
switch (device_state) {
case AMD_PMF_ON_TABLE:
return "ON_TABLE";
case AMD_PMF_ON_LAP_MOTION:
return "ON_LAP_MOTION";
case AMD_PMF_IN_BAG:
return "IN_BAG";
case AMD_PMF_OUT_OF_BAG:
return "OUT_OF_BAG";
default:
return "UNKNOWN";
}
}
static const char *ta_slider_as_str(unsigned int state)
{
switch (state) {
case AMD_PMF_TA_BEST_PERFORMANCE:
return "PERFORMANCE";
case AMD_PMF_TA_BETTER_PERFORMANCE:
return "BALANCED";
case AMD_PMF_TA_BEST_BATTERY:
return "POWER_SAVER";
default:
return "Unknown TA Slider State";
}
}
static u32 amd_pmf_get_ta_custom_bios_inputs(struct ta_pmf_enact_table *in, int index)
{
switch (index) {
@@ -89,7 +35,8 @@ void amd_pmf_dump_ta_inputs(struct amd_pmf_dev *dev, struct ta_pmf_enact_table *
int i;
dev_dbg(dev->dev, "==== TA inputs START ====\n");
dev_dbg(dev->dev, "Slider State: %s\n", ta_slider_as_str(in->ev_info.power_slider));
dev_dbg(dev->dev, "Slider State: %s\n",
amd_pmf_get_slider_position(in->ev_info.power_slider));
dev_dbg(dev->dev, "Power Source: %s\n", amd_pmf_source_as_str(in->ev_info.power_source));
dev_dbg(dev->dev, "Battery Percentage: %u\n", in->ev_info.bat_percentage);
dev_dbg(dev->dev, "Designed Battery Capacity: %u\n", in->ev_info.bat_design);
@@ -103,9 +50,10 @@ void amd_pmf_dump_ta_inputs(struct amd_pmf_dev *dev, struct ta_pmf_enact_table *
dev_dbg(dev->dev, "LID State: %s\n", in->ev_info.lid_state ? "close" : "open");
dev_dbg(dev->dev, "User Presence: %s\n", in->ev_info.user_present ? "Present" : "Away");
dev_dbg(dev->dev, "Ambient Light: %d\n", in->ev_info.ambient_light);
dev_dbg(dev->dev, "Platform type: %s\n", platform_type_as_str(in->ev_info.platform_type));
dev_dbg(dev->dev, "Platform type: %s\n",
amd_pmf_get_platform_type(in->ev_info.platform_type));
dev_dbg(dev->dev, "Laptop placement: %s\n",
laptop_placement_as_str(in->ev_info.device_state));
amd_pmf_get_laptop_placement(in->ev_info.device_state));
for (i = 0; i < ARRAY_SIZE(custom_bios_inputs); i++)
dev_dbg(dev->dev, "Custom BIOS input%d: %u\n", i + 1,
amd_pmf_get_ta_custom_bios_inputs(in, i));

View File

@@ -116,6 +116,64 @@ enum amd_pmf_platform_type {
AMD_PMF_PTYPE_INVALID = 0xf,
};
static inline const char *amd_pmf_get_platform_type(unsigned int platform_type)
{
switch (platform_type) {
case AMD_PMF_CLAMSHELL:
return "CLAMSHELL";
case AMD_PMF_LID_CLOSE:
return "LID_CLOSE";
case AMD_PMF_FLAT:
return "FLAT";
case AMD_PMF_TENT:
return "TENT";
case AMD_PMF_STAND:
return "STAND";
case AMD_PMF_TABLET:
return "TABLET";
case AMD_PMF_BOOK:
return "BOOK";
case AMD_PMF_PRESENTATION:
return "PRESENTATION";
case AMD_PMF_PULL_FWD:
return "PULL_FWD";
default:
return "UNKNOWN";
}
}
static inline const char *amd_pmf_get_laptop_placement(unsigned int device_state)
{
switch (device_state) {
case AMD_PMF_ON_TABLE:
return "ON_TABLE";
case AMD_PMF_ON_LAP_MOTION:
return "ON_LAP_MOTION";
case AMD_PMF_IN_BAG:
return "IN_BAG";
case AMD_PMF_OUT_OF_BAG:
return "OUT_OF_BAG";
default:
return "UNKNOWN";
}
}
static inline const char *amd_pmf_get_slider_position(unsigned int state)
{
switch (state) {
case AMD_PMF_TA_BEST_PERFORMANCE:
return "PERFORMANCE";
case AMD_PMF_TA_BETTER_PERFORMANCE:
return "BALANCED";
case AMD_PMF_TA_BEST_BATTERY:
return "POWER_SAVER";
case AMD_PMF_TA_BETTER_BATTERY:
return "BALANCED_BATTERY";
default:
return "Unknown TA Slider State";
}
}
struct amd_pmf_info {
__u64 size;