at master 3.6 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2/* 3 * Copyright (C) 2021-2024 Advanced Micro Devices, Inc. 4 */ 5#ifndef _AMD_APML_H_ 6#define _AMD_APML_H_ 7 8#include <linux/types.h> 9 10/* Mailbox data size for data_in and data_out */ 11#define AMD_SBI_MB_DATA_SIZE 4 12 13struct apml_mbox_msg { 14 /* 15 * Mailbox Message ID 16 */ 17 __u32 cmd; 18 /* 19 * [0]...[3] mailbox 32bit input/output data 20 */ 21 __u32 mb_in_out; 22 /* 23 * Error code is returned in case of soft mailbox error 24 */ 25 __u32 fw_ret_code; 26}; 27 28struct apml_cpuid_msg { 29 /* 30 * CPUID input 31 * [0]...[3] cpuid func, 32 * [4][5] cpuid: thread 33 * [6] cpuid: ext function & read eax/ebx or ecx/edx 34 * [7:0] -> bits [7:4] -> ext function & 35 * bit [0] read eax/ebx or ecx/edx 36 * CPUID output 37 */ 38 __u64 cpu_in_out; 39 /* 40 * Status code for CPUID read 41 */ 42 __u32 fw_ret_code; 43 __u32 pad; 44}; 45 46struct apml_mcamsr_msg { 47 /* 48 * MCAMSR input 49 * [0]...[3] mca msr func, 50 * [4][5] thread 51 * MCAMSR output 52 */ 53 __u64 mcamsr_in_out; 54 /* 55 * Status code for MCA/MSR access 56 */ 57 __u32 fw_ret_code; 58 __u32 pad; 59}; 60 61struct apml_reg_xfer_msg { 62 /* 63 * RMI register address offset 64 */ 65 __u16 reg_addr; 66 /* 67 * Register data for read/write 68 */ 69 __u8 data_in_out; 70 /* 71 * Register read or write 72 */ 73 __u8 rflag; 74}; 75 76/* 77 * AMD sideband interface base IOCTL 78 */ 79#define SB_BASE_IOCTL_NR 0xF9 80 81/** 82 * DOC: SBRMI_IOCTL_MBOX_CMD 83 * 84 * @Parameters 85 * 86 * @struct apml_mbox_msg 87 * Pointer to the &struct apml_mbox_msg that will contain the protocol 88 * information 89 * 90 * @Description 91 * IOCTL command for APML messages using generic _IOWR 92 * The IOCTL provides userspace access to AMD sideband mailbox protocol 93 * - Mailbox message read/write(0x0~0xFF) 94 * - returning "-EFAULT" if none of the above 95 * "-EPROTOTYPE" error is returned to provide additional error details 96 */ 97#define SBRMI_IOCTL_MBOX_CMD _IOWR(SB_BASE_IOCTL_NR, 0, struct apml_mbox_msg) 98 99/** 100 * DOC: SBRMI_IOCTL_CPUID_CMD 101 * 102 * @Parameters 103 * 104 * @struct apml_cpuid_msg 105 * Pointer to the &struct apml_cpuid_msg that will contain the protocol 106 * information 107 * 108 * @Description 109 * IOCTL command for APML messages using generic _IOWR 110 * The IOCTL provides userspace access to AMD sideband cpuid protocol 111 * - CPUID protocol to get CPU details for Function/Ext Function 112 * at thread level 113 * - returning "-EFAULT" if none of the above 114 * "-EPROTOTYPE" error is returned to provide additional error details 115 */ 116#define SBRMI_IOCTL_CPUID_CMD _IOWR(SB_BASE_IOCTL_NR, 1, struct apml_cpuid_msg) 117 118/** 119 * DOC: SBRMI_IOCTL_MCAMSR_CMD 120 * 121 * @Parameters 122 * 123 * @struct apml_mcamsr_msg 124 * Pointer to the &struct apml_mcamsr_msg that will contain the protocol 125 * information 126 * 127 * @Description 128 * IOCTL command for APML messages using generic _IOWR 129 * The IOCTL provides userspace access to AMD sideband MCAMSR protocol 130 * - MCAMSR protocol to get MCA bank details for Function at thread level 131 * - returning "-EFAULT" if none of the above 132 * "-EPROTOTYPE" error is returned to provide additional error details 133 */ 134#define SBRMI_IOCTL_MCAMSR_CMD _IOWR(SB_BASE_IOCTL_NR, 2, struct apml_mcamsr_msg) 135 136/** 137 * DOC: SBRMI_IOCTL_REG_XFER_CMD 138 * 139 * @Parameters 140 * 141 * @struct apml_reg_xfer_msg 142 * Pointer to the &struct apml_reg_xfer_msg that will contain the protocol 143 * information 144 * 145 * @Description 146 * IOCTL command for APML messages using generic _IOWR 147 * The IOCTL provides userspace access to AMD sideband register xfer protocol 148 * - Register xfer protocol to get/set hardware register for given offset 149 */ 150#define SBRMI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 3, struct apml_reg_xfer_msg) 151 152#endif /*_AMD_APML_H_*/