xref: /linux/include/uapi/misc/amd-apml.h (revision c26f4fbd58375bd6ef74f95eb73d61762ad97c59)
135ac2034SAkshay Gupta /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
235ac2034SAkshay Gupta /*
335ac2034SAkshay Gupta  * Copyright (C) 2021-2024 Advanced Micro Devices, Inc.
435ac2034SAkshay Gupta  */
535ac2034SAkshay Gupta #ifndef _AMD_APML_H_
635ac2034SAkshay Gupta #define _AMD_APML_H_
735ac2034SAkshay Gupta 
835ac2034SAkshay Gupta #include <linux/types.h>
935ac2034SAkshay Gupta 
1035ac2034SAkshay Gupta /* Mailbox data size for data_in and data_out */
1135ac2034SAkshay Gupta #define AMD_SBI_MB_DATA_SIZE		4
1235ac2034SAkshay Gupta 
1335ac2034SAkshay Gupta struct apml_mbox_msg {
1435ac2034SAkshay Gupta 	/*
1535ac2034SAkshay Gupta 	 * Mailbox Message ID
1635ac2034SAkshay Gupta 	 */
1735ac2034SAkshay Gupta 	__u32 cmd;
1835ac2034SAkshay Gupta 	/*
1935ac2034SAkshay Gupta 	 * [0]...[3] mailbox 32bit input/output data
2035ac2034SAkshay Gupta 	 */
2135ac2034SAkshay Gupta 	__u32 mb_in_out;
2235ac2034SAkshay Gupta 	/*
2335ac2034SAkshay Gupta 	 * Error code is returned in case of soft mailbox error
2435ac2034SAkshay Gupta 	 */
2535ac2034SAkshay Gupta 	__u32 fw_ret_code;
2635ac2034SAkshay Gupta };
2735ac2034SAkshay Gupta 
28bb13a84eSAkshay Gupta struct apml_cpuid_msg {
29bb13a84eSAkshay Gupta 	/*
30bb13a84eSAkshay Gupta 	 * CPUID input
31bb13a84eSAkshay Gupta 	 * [0]...[3] cpuid func,
32bb13a84eSAkshay Gupta 	 * [4][5] cpuid: thread
33bb13a84eSAkshay Gupta 	 * [6] cpuid: ext function & read eax/ebx or ecx/edx
34bb13a84eSAkshay Gupta 	 *	[7:0] -> bits [7:4] -> ext function &
35bb13a84eSAkshay Gupta 	 *	bit [0] read eax/ebx or ecx/edx
36bb13a84eSAkshay Gupta 	 * CPUID output
37bb13a84eSAkshay Gupta 	 */
38bb13a84eSAkshay Gupta 	__u64 cpu_in_out;
39bb13a84eSAkshay Gupta 	/*
40bb13a84eSAkshay Gupta 	 * Status code for CPUID read
41bb13a84eSAkshay Gupta 	 */
42bb13a84eSAkshay Gupta 	__u32 fw_ret_code;
43bb13a84eSAkshay Gupta 	__u32 pad;
44bb13a84eSAkshay Gupta };
45bb13a84eSAkshay Gupta 
4669b1ba83SAkshay Gupta struct apml_mcamsr_msg {
4769b1ba83SAkshay Gupta 	/*
4869b1ba83SAkshay Gupta 	 * MCAMSR input
4969b1ba83SAkshay Gupta 	 * [0]...[3] mca msr func,
5069b1ba83SAkshay Gupta 	 * [4][5] thread
5169b1ba83SAkshay Gupta 	 * MCAMSR output
5269b1ba83SAkshay Gupta 	 */
5369b1ba83SAkshay Gupta 	__u64 mcamsr_in_out;
5469b1ba83SAkshay Gupta 	/*
5569b1ba83SAkshay Gupta 	 * Status code for MCA/MSR access
5669b1ba83SAkshay Gupta 	 */
5769b1ba83SAkshay Gupta 	__u32 fw_ret_code;
5869b1ba83SAkshay Gupta 	__u32 pad;
5969b1ba83SAkshay Gupta };
6069b1ba83SAkshay Gupta 
61*cf141287SAkshay Gupta struct apml_reg_xfer_msg {
62*cf141287SAkshay Gupta 	/*
63*cf141287SAkshay Gupta 	 * RMI register address offset
64*cf141287SAkshay Gupta 	 */
65*cf141287SAkshay Gupta 	__u16 reg_addr;
66*cf141287SAkshay Gupta 	/*
67*cf141287SAkshay Gupta 	 * Register data for read/write
68*cf141287SAkshay Gupta 	 */
69*cf141287SAkshay Gupta 	__u8 data_in_out;
70*cf141287SAkshay Gupta 	/*
71*cf141287SAkshay Gupta 	 * Register read or write
72*cf141287SAkshay Gupta 	 */
73*cf141287SAkshay Gupta 	__u8 rflag;
74*cf141287SAkshay Gupta };
75*cf141287SAkshay Gupta 
7635ac2034SAkshay Gupta /*
7735ac2034SAkshay Gupta  * AMD sideband interface base IOCTL
7835ac2034SAkshay Gupta  */
7935ac2034SAkshay Gupta #define SB_BASE_IOCTL_NR	0xF9
8035ac2034SAkshay Gupta 
8135ac2034SAkshay Gupta /**
8235ac2034SAkshay Gupta  * DOC: SBRMI_IOCTL_MBOX_CMD
8335ac2034SAkshay Gupta  *
8435ac2034SAkshay Gupta  * @Parameters
8535ac2034SAkshay Gupta  *
8635ac2034SAkshay Gupta  * @struct apml_mbox_msg
8735ac2034SAkshay Gupta  *	Pointer to the &struct apml_mbox_msg that will contain the protocol
8835ac2034SAkshay Gupta  *	information
8935ac2034SAkshay Gupta  *
9035ac2034SAkshay Gupta  * @Description
9135ac2034SAkshay Gupta  * IOCTL command for APML messages using generic _IOWR
9235ac2034SAkshay Gupta  * The IOCTL provides userspace access to AMD sideband mailbox protocol
9335ac2034SAkshay Gupta  * - Mailbox message read/write(0x0~0xFF)
9435ac2034SAkshay Gupta  * - returning "-EFAULT" if none of the above
9535ac2034SAkshay Gupta  * "-EPROTOTYPE" error is returned to provide additional error details
9635ac2034SAkshay Gupta  */
9735ac2034SAkshay Gupta #define SBRMI_IOCTL_MBOX_CMD		_IOWR(SB_BASE_IOCTL_NR, 0, struct apml_mbox_msg)
9835ac2034SAkshay Gupta 
99bb13a84eSAkshay Gupta /**
100bb13a84eSAkshay Gupta  * DOC: SBRMI_IOCTL_CPUID_CMD
101bb13a84eSAkshay Gupta  *
102bb13a84eSAkshay Gupta  * @Parameters
103bb13a84eSAkshay Gupta  *
104bb13a84eSAkshay Gupta  * @struct apml_cpuid_msg
105bb13a84eSAkshay Gupta  *	Pointer to the &struct apml_cpuid_msg that will contain the protocol
106bb13a84eSAkshay Gupta  *	information
107bb13a84eSAkshay Gupta  *
108bb13a84eSAkshay Gupta  * @Description
109bb13a84eSAkshay Gupta  * IOCTL command for APML messages using generic _IOWR
110bb13a84eSAkshay Gupta  * The IOCTL provides userspace access to AMD sideband cpuid protocol
111bb13a84eSAkshay Gupta  * - CPUID protocol to get CPU details for Function/Ext Function
112bb13a84eSAkshay Gupta  * at thread level
113bb13a84eSAkshay Gupta  * - returning "-EFAULT" if none of the above
114bb13a84eSAkshay Gupta  * "-EPROTOTYPE" error is returned to provide additional error details
115bb13a84eSAkshay Gupta  */
116bb13a84eSAkshay Gupta #define SBRMI_IOCTL_CPUID_CMD		_IOWR(SB_BASE_IOCTL_NR, 1, struct apml_cpuid_msg)
117bb13a84eSAkshay Gupta 
11869b1ba83SAkshay Gupta /**
11969b1ba83SAkshay Gupta  * DOC: SBRMI_IOCTL_MCAMSR_CMD
12069b1ba83SAkshay Gupta  *
12169b1ba83SAkshay Gupta  * @Parameters
12269b1ba83SAkshay Gupta  *
12369b1ba83SAkshay Gupta  * @struct apml_mcamsr_msg
12469b1ba83SAkshay Gupta  *	Pointer to the &struct apml_mcamsr_msg that will contain the protocol
12569b1ba83SAkshay Gupta  *	information
12669b1ba83SAkshay Gupta  *
12769b1ba83SAkshay Gupta  * @Description
12869b1ba83SAkshay Gupta  * IOCTL command for APML messages using generic _IOWR
12969b1ba83SAkshay Gupta  * The IOCTL provides userspace access to AMD sideband MCAMSR protocol
13069b1ba83SAkshay Gupta  * - MCAMSR protocol to get MCA bank details for Function at thread level
13169b1ba83SAkshay Gupta  * - returning "-EFAULT" if none of the above
13269b1ba83SAkshay Gupta  * "-EPROTOTYPE" error is returned to provide additional error details
13369b1ba83SAkshay Gupta  */
13469b1ba83SAkshay Gupta #define SBRMI_IOCTL_MCAMSR_CMD		_IOWR(SB_BASE_IOCTL_NR, 2, struct apml_mcamsr_msg)
13569b1ba83SAkshay Gupta 
136*cf141287SAkshay Gupta /**
137*cf141287SAkshay Gupta  * DOC: SBRMI_IOCTL_REG_XFER_CMD
138*cf141287SAkshay Gupta  *
139*cf141287SAkshay Gupta  * @Parameters
140*cf141287SAkshay Gupta  *
141*cf141287SAkshay Gupta  * @struct apml_reg_xfer_msg
142*cf141287SAkshay Gupta  *	Pointer to the &struct apml_reg_xfer_msg that will contain the protocol
143*cf141287SAkshay Gupta  *	information
144*cf141287SAkshay Gupta  *
145*cf141287SAkshay Gupta  * @Description
146*cf141287SAkshay Gupta  * IOCTL command for APML messages using generic _IOWR
147*cf141287SAkshay Gupta  * The IOCTL provides userspace access to AMD sideband register xfer protocol
148*cf141287SAkshay Gupta  * - Register xfer protocol to get/set hardware register for given offset
149*cf141287SAkshay Gupta  */
150*cf141287SAkshay Gupta #define SBRMI_IOCTL_REG_XFER_CMD	_IOWR(SB_BASE_IOCTL_NR, 3, struct apml_reg_xfer_msg)
151*cf141287SAkshay Gupta 
15235ac2034SAkshay Gupta #endif /*_AMD_APML_H_*/
153