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