| /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| /* | |
| * Copyright (C) 2021-2024 Advanced Micro Devices, Inc. | |
| */ | |
| #ifndef _AMD_APML_H_ | |
| #define _AMD_APML_H_ | |
| #include <linux/types.h> | |
| /* Mailbox data size for data_in and data_out */ | |
| #define AMD_SBI_MB_DATA_SIZE 4 | |
| struct apml_mbox_msg { | |
| /* | |
| * Mailbox Message ID | |
| */ | |
| __u32 cmd; | |
| /* | |
| * [0]...[3] mailbox 32bit input/output data | |
| */ | |
| __u32 mb_in_out; | |
| /* | |
| * Error code is returned in case of soft mailbox error | |
| */ | |
| __u32 fw_ret_code; | |
| }; | |
| struct apml_cpuid_msg { | |
| /* | |
| * CPUID input | |
| * [0]...[3] cpuid func, | |
| * [4][5] cpuid: thread | |
| * [6] cpuid: ext function & read eax/ebx or ecx/edx | |
| * [7:0] -> bits [7:4] -> ext function & | |
| * bit [0] read eax/ebx or ecx/edx | |
| * CPUID output | |
| */ | |
| __u64 cpu_in_out; | |
| /* | |
| * Status code for CPUID read | |
| */ | |
| __u32 fw_ret_code; | |
| __u32 pad; | |
| }; | |
| struct apml_mcamsr_msg { | |
| /* | |
| * MCAMSR input | |
| * [0]...[3] mca msr func, | |
| * [4][5] thread | |
| * MCAMSR output | |
| */ | |
| __u64 mcamsr_in_out; | |
| /* | |
| * Status code for MCA/MSR access | |
| */ | |
| __u32 fw_ret_code; | |
| __u32 pad; | |
| }; | |
| struct apml_reg_xfer_msg { | |
| /* | |
| * RMI register address offset | |
| */ | |
| __u16 reg_addr; | |
| /* | |
| * Register data for read/write | |
| */ | |
| __u8 data_in_out; | |
| /* | |
| * Register read or write | |
| */ | |
| __u8 rflag; | |
| }; | |
| struct apml_tsi_xfer_msg { | |
| __u8 reg_addr; /* TSI register address offset */ | |
| __u8 data_in_out; /* Register data for read/write */ | |
| __u8 rflag; /* Register read or write */ | |
| __u8 pad; /* Explicit padding */ | |
| }; | |
| /* | |
| * AMD sideband interface base IOCTL | |
| */ | |
| #define SB_BASE_IOCTL_NR 0xF9 | |
| /** | |
| * DOC: SBRMI_IOCTL_MBOX_CMD | |
| * | |
| * @Parameters | |
| * | |
| * @struct apml_mbox_msg | |
| * Pointer to the &struct apml_mbox_msg that will contain the protocol | |
| * information | |
| * | |
| * @Description | |
| * IOCTL command for APML messages using generic _IOWR | |
| * The IOCTL provides userspace access to AMD sideband mailbox protocol | |
| * - Mailbox message read/write(0x0~0xFF) | |
| * - returning "-EFAULT" if none of the above | |
| * "-EPROTOTYPE" error is returned to provide additional error details | |
| */ | |
| #define SBRMI_IOCTL_MBOX_CMD _IOWR(SB_BASE_IOCTL_NR, 0, struct apml_mbox_msg) | |
| /** | |
| * DOC: SBRMI_IOCTL_CPUID_CMD | |
| * | |
| * @Parameters | |
| * | |
| * @struct apml_cpuid_msg | |
| * Pointer to the &struct apml_cpuid_msg that will contain the protocol | |
| * information | |
| * | |
| * @Description | |
| * IOCTL command for APML messages using generic _IOWR | |
| * The IOCTL provides userspace access to AMD sideband cpuid protocol | |
| * - CPUID protocol to get CPU details for Function/Ext Function | |
| * at thread level | |
| * - returning "-EFAULT" if none of the above | |
| * "-EPROTOTYPE" error is returned to provide additional error details | |
| */ | |
| #define SBRMI_IOCTL_CPUID_CMD _IOWR(SB_BASE_IOCTL_NR, 1, struct apml_cpuid_msg) | |
| /** | |
| * DOC: SBRMI_IOCTL_MCAMSR_CMD | |
| * | |
| * @Parameters | |
| * | |
| * @struct apml_mcamsr_msg | |
| * Pointer to the &struct apml_mcamsr_msg that will contain the protocol | |
| * information | |
| * | |
| * @Description | |
| * IOCTL command for APML messages using generic _IOWR | |
| * The IOCTL provides userspace access to AMD sideband MCAMSR protocol | |
| * - MCAMSR protocol to get MCA bank details for Function at thread level | |
| * - returning "-EFAULT" if none of the above | |
| * "-EPROTOTYPE" error is returned to provide additional error details | |
| */ | |
| #define SBRMI_IOCTL_MCAMSR_CMD _IOWR(SB_BASE_IOCTL_NR, 2, struct apml_mcamsr_msg) | |
| /** | |
| * DOC: SBRMI_IOCTL_REG_XFER_CMD | |
| * | |
| * @Parameters | |
| * | |
| * @struct apml_reg_xfer_msg | |
| * Pointer to the &struct apml_reg_xfer_msg that will contain the protocol | |
| * information | |
| * | |
| * @Description | |
| * IOCTL command for APML messages using generic _IOWR | |
| * The IOCTL provides userspace access to AMD sideband register xfer protocol | |
| * - Register xfer protocol to get/set hardware register for given offset | |
| */ | |
| #define SBRMI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 3, struct apml_reg_xfer_msg) | |
| /** | |
| * DOC: SBTSI_IOCTL_REG_XFER_CMD | |
| * | |
| * @Parameters | |
| * | |
| * @struct apml_tsi_xfer_msg | |
| * Pointer to the &struct apml_tsi_xfer_msg that will contain the protocol | |
| * information | |
| * | |
| * @Description | |
| * IOCTL command for APML TSI messages using generic _IOWR | |
| * The IOCTL provides userspace access to AMD sideband TSI register xfer protocol | |
| * - TSI protocol to read/write temperature sensor registers | |
| */ | |
| #define SBTSI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 4, struct apml_tsi_xfer_msg) | |
| #endif /*_AMD_APML_H_*/ |