0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 #ifndef SMU7_H
0025 #define SMU7_H
0026
0027 #pragma pack(push, 1)
0028
0029 #define SMU7_CONTEXT_ID_SMC 1
0030 #define SMU7_CONTEXT_ID_VBIOS 2
0031
0032
0033 #define SMU7_CONTEXT_ID_SMC 1
0034 #define SMU7_CONTEXT_ID_VBIOS 2
0035
0036 #define SMU7_MAX_LEVELS_VDDC 8
0037 #define SMU7_MAX_LEVELS_VDDCI 4
0038 #define SMU7_MAX_LEVELS_MVDD 4
0039 #define SMU7_MAX_LEVELS_VDDNB 8
0040
0041 #define SMU7_MAX_LEVELS_GRAPHICS SMU__NUM_SCLK_DPM_STATE
0042 #define SMU7_MAX_LEVELS_MEMORY SMU__NUM_MCLK_DPM_LEVELS
0043 #define SMU7_MAX_LEVELS_GIO SMU__NUM_LCLK_DPM_LEVELS
0044 #define SMU7_MAX_LEVELS_LINK SMU__NUM_PCIE_DPM_LEVELS
0045 #define SMU7_MAX_LEVELS_UVD 8
0046 #define SMU7_MAX_LEVELS_VCE 8
0047 #define SMU7_MAX_LEVELS_ACP 8
0048 #define SMU7_MAX_LEVELS_SAMU 8
0049 #define SMU7_MAX_ENTRIES_SMIO 32
0050
0051 #define DPM_NO_LIMIT 0
0052 #define DPM_NO_UP 1
0053 #define DPM_GO_DOWN 2
0054 #define DPM_GO_UP 3
0055
0056 #define SMU7_FIRST_DPM_GRAPHICS_LEVEL 0
0057 #define SMU7_FIRST_DPM_MEMORY_LEVEL 0
0058
0059 #define GPIO_CLAMP_MODE_VRHOT 1
0060 #define GPIO_CLAMP_MODE_THERM 2
0061 #define GPIO_CLAMP_MODE_DC 4
0062
0063 #define SCRATCH_B_TARG_PCIE_INDEX_SHIFT 0
0064 #define SCRATCH_B_TARG_PCIE_INDEX_MASK (0x7<<SCRATCH_B_TARG_PCIE_INDEX_SHIFT)
0065 #define SCRATCH_B_CURR_PCIE_INDEX_SHIFT 3
0066 #define SCRATCH_B_CURR_PCIE_INDEX_MASK (0x7<<SCRATCH_B_CURR_PCIE_INDEX_SHIFT)
0067 #define SCRATCH_B_TARG_UVD_INDEX_SHIFT 6
0068 #define SCRATCH_B_TARG_UVD_INDEX_MASK (0x7<<SCRATCH_B_TARG_UVD_INDEX_SHIFT)
0069 #define SCRATCH_B_CURR_UVD_INDEX_SHIFT 9
0070 #define SCRATCH_B_CURR_UVD_INDEX_MASK (0x7<<SCRATCH_B_CURR_UVD_INDEX_SHIFT)
0071 #define SCRATCH_B_TARG_VCE_INDEX_SHIFT 12
0072 #define SCRATCH_B_TARG_VCE_INDEX_MASK (0x7<<SCRATCH_B_TARG_VCE_INDEX_SHIFT)
0073 #define SCRATCH_B_CURR_VCE_INDEX_SHIFT 15
0074 #define SCRATCH_B_CURR_VCE_INDEX_MASK (0x7<<SCRATCH_B_CURR_VCE_INDEX_SHIFT)
0075 #define SCRATCH_B_TARG_ACP_INDEX_SHIFT 18
0076 #define SCRATCH_B_TARG_ACP_INDEX_MASK (0x7<<SCRATCH_B_TARG_ACP_INDEX_SHIFT)
0077 #define SCRATCH_B_CURR_ACP_INDEX_SHIFT 21
0078 #define SCRATCH_B_CURR_ACP_INDEX_MASK (0x7<<SCRATCH_B_CURR_ACP_INDEX_SHIFT)
0079 #define SCRATCH_B_TARG_SAMU_INDEX_SHIFT 24
0080 #define SCRATCH_B_TARG_SAMU_INDEX_MASK (0x7<<SCRATCH_B_TARG_SAMU_INDEX_SHIFT)
0081 #define SCRATCH_B_CURR_SAMU_INDEX_SHIFT 27
0082 #define SCRATCH_B_CURR_SAMU_INDEX_MASK (0x7<<SCRATCH_B_CURR_SAMU_INDEX_SHIFT)
0083
0084
0085 struct SMU7_PIDController
0086 {
0087 uint32_t Ki;
0088 int32_t LFWindupUL;
0089 int32_t LFWindupLL;
0090 uint32_t StatePrecision;
0091 uint32_t LfPrecision;
0092 uint32_t LfOffset;
0093 uint32_t MaxState;
0094 uint32_t MaxLfFraction;
0095 uint32_t StateShift;
0096 };
0097
0098 typedef struct SMU7_PIDController SMU7_PIDController;
0099
0100
0101 #define SMU7_MAX_PCIE_LINK_SPEEDS 3
0102
0103 #define SMU7_SCLK_DPM_CONFIG_MASK 0x01
0104 #define SMU7_VOLTAGE_CONTROLLER_CONFIG_MASK 0x02
0105 #define SMU7_THERMAL_CONTROLLER_CONFIG_MASK 0x04
0106 #define SMU7_MCLK_DPM_CONFIG_MASK 0x08
0107 #define SMU7_UVD_DPM_CONFIG_MASK 0x10
0108 #define SMU7_VCE_DPM_CONFIG_MASK 0x20
0109 #define SMU7_ACP_DPM_CONFIG_MASK 0x40
0110 #define SMU7_SAMU_DPM_CONFIG_MASK 0x80
0111 #define SMU7_PCIEGEN_DPM_CONFIG_MASK 0x100
0112
0113 #define SMU7_ACP_MCLK_HANDSHAKE_DISABLE 0x00000001
0114 #define SMU7_ACP_SCLK_HANDSHAKE_DISABLE 0x00000002
0115 #define SMU7_UVD_MCLK_HANDSHAKE_DISABLE 0x00000100
0116 #define SMU7_UVD_SCLK_HANDSHAKE_DISABLE 0x00000200
0117 #define SMU7_VCE_MCLK_HANDSHAKE_DISABLE 0x00010000
0118 #define SMU7_VCE_SCLK_HANDSHAKE_DISABLE 0x00020000
0119
0120 struct SMU7_Firmware_Header
0121 {
0122 uint32_t Digest[5];
0123 uint32_t Version;
0124 uint32_t HeaderSize;
0125 uint32_t Flags;
0126 uint32_t EntryPoint;
0127 uint32_t CodeSize;
0128 uint32_t ImageSize;
0129
0130 uint32_t Rtos;
0131 uint32_t SoftRegisters;
0132 uint32_t DpmTable;
0133 uint32_t FanTable;
0134 uint32_t CacConfigTable;
0135 uint32_t CacStatusTable;
0136
0137 uint32_t mcRegisterTable;
0138
0139 uint32_t mcArbDramTimingTable;
0140
0141 uint32_t PmFuseTable;
0142 uint32_t Globals;
0143 uint32_t Reserved[42];
0144 uint32_t Signature;
0145 };
0146
0147 typedef struct SMU7_Firmware_Header SMU7_Firmware_Header;
0148
0149 #define SMU7_FIRMWARE_HEADER_LOCATION 0x20000
0150
0151 enum DisplayConfig {
0152 PowerDown = 1,
0153 DP54x4,
0154 DP54x2,
0155 DP54x1,
0156 DP27x4,
0157 DP27x2,
0158 DP27x1,
0159 HDMI297,
0160 HDMI162,
0161 LVDS,
0162 DP324x4,
0163 DP324x2,
0164 DP324x1
0165 };
0166
0167 #pragma pack(pop)
0168
0169 #endif
0170