xref: /linux/Documentation/ABI/testing/amdpmf-interface (revision 5b05bb3f6c5716fab6911e12d60dd1f43ad9806a)
1*f6ee11d7SShyam Sundar S KWhat:		/dev/amdpmf_interface
2*f6ee11d7SShyam Sundar S KDate:		June 2026
3*f6ee11d7SShyam Sundar S KKernelVersion:	7.2
4*f6ee11d7SShyam Sundar S KContact:	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
5*f6ee11d7SShyam Sundar S KDescription:
6*f6ee11d7SShyam Sundar S K		The AMD Platform Management Framework (PMF) util layer exposes a
7*f6ee11d7SShyam Sundar S K		minimal user-space interface via a character device for feature
8*f6ee11d7SShyam Sundar S K		discovery and metrics monitoring.
9*f6ee11d7SShyam Sundar S K
10*f6ee11d7SShyam Sundar S K		When CONFIG_AMD_PMF_UTIL_SUPPORT is enabled, the driver creates
11*f6ee11d7SShyam Sundar S K		a character device:
12*f6ee11d7SShyam Sundar S K
13*f6ee11d7SShyam Sundar S K		======================
14*f6ee11d7SShyam Sundar S K		/dev/amdpmf_interface
15*f6ee11d7SShyam Sundar S K		======================
16*f6ee11d7SShyam Sundar S K
17*f6ee11d7SShyam Sundar S K		The interface supports a single ioctl:
18*f6ee11d7SShyam Sundar S K
19*f6ee11d7SShyam Sundar S K		============================ =======================================
20*f6ee11d7SShyam Sundar S K		IOCTL			     Usage
21*f6ee11d7SShyam Sundar S K		IOCTL_AMD_PMF_POPULATE_DATA  User passes a struct amd_pmf_info with
22*f6ee11d7SShyam Sundar S K					     the size field set to sizeof(struct
23*f6ee11d7SShyam Sundar S K					     amd_pmf_info). The driver returns all
24*f6ee11d7SShyam Sundar S K					     available metrics and feature status
25*f6ee11d7SShyam Sundar S K					     in the structure.
26*f6ee11d7SShyam Sundar S K		============================ =======================================
27*f6ee11d7SShyam Sundar S K
28*f6ee11d7SShyam Sundar S K		struct amd_pmf_info layout:
29*f6ee11d7SShyam Sundar S K
30*f6ee11d7SShyam Sundar S K		======================= ========== ================================
31*f6ee11d7SShyam Sundar S K		Field			Type	   Description
32*f6ee11d7SShyam Sundar S K		size			__u64	   Structure size for versioning
33*f6ee11d7SShyam Sundar S K		features_supported	__u32	   Bitmask of supported features
34*f6ee11d7SShyam Sundar S K		platform_type		__u32	   Platform form factor orientation
35*f6ee11d7SShyam Sundar S K		power_source		__u32	   AC/DC power source
36*f6ee11d7SShyam Sundar S K		laptop_placement	__u32	   Device placement state
37*f6ee11d7SShyam Sundar S K		lid_state		__u32	   Lid open/closed status
38*f6ee11d7SShyam Sundar S K		user_presence		__u32	   User presence detection
39*f6ee11d7SShyam Sundar S K		slider_position		__u32	   Current power slider position
40*f6ee11d7SShyam Sundar S K		skin_temp		__s32	   Skin temperature (centidegrees)
41*f6ee11d7SShyam Sundar S K		gfx_busy		__u32	   Graphics workload percentage
42*f6ee11d7SShyam Sundar S K		ambient_light		__s32	   Ambient light sensor reading
43*f6ee11d7SShyam Sundar S K		avg_c0_residency	__u32	   Average C0 state residency
44*f6ee11d7SShyam Sundar S K		max_c0_residency	__u32	   Maximum C0 state residency
45*f6ee11d7SShyam Sundar S K		socket_power		__u32	   Socket power consumption
46*f6ee11d7SShyam Sundar S K		bios_input[10]		__u32	   Custom BIOS input parameters
47*f6ee11d7SShyam Sundar S K		bios_output[10]		__u32	   Custom BIOS output parameters
48*f6ee11d7SShyam Sundar S K		======================= ========== ================================
49*f6ee11d7SShyam Sundar S K
50*f6ee11d7SShyam Sundar S K		Feature Support Flags (features_supported bitmask):
51*f6ee11d7SShyam Sundar S K
52*f6ee11d7SShyam Sundar S K		=====================================    ====  =============================
53*f6ee11d7SShyam Sundar S K		Flag				         Bit   Description
54*f6ee11d7SShyam Sundar S K		AMD_PMF_FEAT_AUTO_MODE		         0     Auto Mode feature support
55*f6ee11d7SShyam Sundar S K		AMD_PMF_FEAT_STATIC_POWER_SLIDER         1     Static Power Slider support
56*f6ee11d7SShyam Sundar S K		AMD_PMF_FEAT_POLICY_BUILDER	         2     Policy Builder (Smart PC)
57*f6ee11d7SShyam Sundar S K		AMD_PMF_FEAT_DYNAMIC_POWER_SLIDER_AC     3     Dynamic slider on AC
58*f6ee11d7SShyam Sundar S K		AMD_PMF_FEAT_DYNAMIC_POWER_SLIDER_DC     4     Dynamic slider on DC
59*f6ee11d7SShyam Sundar S K		=====================================    ====  =============================
60*f6ee11d7SShyam Sundar S K
61*f6ee11d7SShyam Sundar S K		Return codes:
62*f6ee11d7SShyam Sundar S K
63*f6ee11d7SShyam Sundar S K		============= ============================================================
64*f6ee11d7SShyam Sundar S K		Return code   Description
65*f6ee11d7SShyam Sundar S K		0	      Success
66*f6ee11d7SShyam Sundar S K		EINVAL	      Invalid size or parameter
67*f6ee11d7SShyam Sundar S K		EFAULT	      copy_to_user/copy_from_user failures
68*f6ee11d7SShyam Sundar S K		ENODEV	      PMF device not available
69*f6ee11d7SShyam Sundar S K		ENOTTY	      Unknown ioctl command
70*f6ee11d7SShyam Sundar S K		============= ============================================================
71*f6ee11d7SShyam Sundar S K
72*f6ee11d7SShyam Sundar S K		User-space tools integrating with AMD PMF to discover capabilities and
73*f6ee11d7SShyam Sundar S K		monitor real-time metrics for thermal and power management validation.
74