1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#ifndef SMU_13_0_0_PPTABLE_H
23#define SMU_13_0_0_PPTABLE_H
24
25#pragma pack(push, 1)
26
27#define SMU_13_0_0_TABLE_FORMAT_REVISION 15
28
29
30#define SMU_13_0_0_PP_PLATFORM_CAP_POWERPLAY 0x1
31#define SMU_13_0_0_PP_PLATFORM_CAP_SBIOSPOWERSOURCE 0x2
32#define SMU_13_0_0_PP_PLATFORM_CAP_HARDWAREDC 0x4
33#define SMU_13_0_0_PP_PLATFORM_CAP_BACO 0x8
34#define SMU_13_0_0_PP_PLATFORM_CAP_MACO 0x10
35#define SMU_13_0_0_PP_PLATFORM_CAP_SHADOWPSTATE 0x20
36
37
38#define SMU_13_0_0_PP_THERMALCONTROLLER_NONE 0
39#define SMU_13_0_0_PP_THERMALCONTROLLER_NAVI21 28
40
41#define SMU_13_0_0_PP_OVERDRIVE_VERSION 0x81
42#define SMU_13_0_0_PP_POWERSAVINGCLOCK_VERSION 0x01
43
44enum SMU_13_0_0_ODFEATURE_CAP
45{
46 SMU_13_0_0_ODCAP_GFXCLK_LIMITS = 0,
47 SMU_13_0_0_ODCAP_GFXCLK_CURVE,
48 SMU_13_0_0_ODCAP_UCLK_LIMITS,
49 SMU_13_0_0_ODCAP_POWER_LIMIT,
50 SMU_13_0_0_ODCAP_FAN_ACOUSTIC_LIMIT,
51 SMU_13_0_0_ODCAP_FAN_SPEED_MIN,
52 SMU_13_0_0_ODCAP_TEMPERATURE_FAN,
53 SMU_13_0_0_ODCAP_TEMPERATURE_SYSTEM,
54 SMU_13_0_0_ODCAP_MEMORY_TIMING_TUNE,
55 SMU_13_0_0_ODCAP_FAN_ZERO_RPM_CONTROL,
56 SMU_13_0_0_ODCAP_AUTO_UV_ENGINE,
57 SMU_13_0_0_ODCAP_AUTO_OC_ENGINE,
58 SMU_13_0_0_ODCAP_AUTO_OC_MEMORY,
59 SMU_13_0_0_ODCAP_FAN_CURVE,
60 SMU_13_0_0_ODCAP_AUTO_FAN_ACOUSTIC_LIMIT,
61 SMU_13_0_0_ODCAP_POWER_MODE,
62 SMU_13_0_0_ODCAP_COUNT,
63};
64
65enum SMU_13_0_0_ODFEATURE_ID
66{
67 SMU_13_0_0_ODFEATURE_GFXCLK_LIMITS = 1 << SMU_13_0_0_ODCAP_GFXCLK_LIMITS,
68 SMU_13_0_0_ODFEATURE_GFXCLK_CURVE = 1 << SMU_13_0_0_ODCAP_GFXCLK_CURVE,
69 SMU_13_0_0_ODFEATURE_UCLK_LIMITS = 1 << SMU_13_0_0_ODCAP_UCLK_LIMITS,
70 SMU_13_0_0_ODFEATURE_POWER_LIMIT = 1 << SMU_13_0_0_ODCAP_POWER_LIMIT,
71 SMU_13_0_0_ODFEATURE_FAN_ACOUSTIC_LIMIT = 1 << SMU_13_0_0_ODCAP_FAN_ACOUSTIC_LIMIT,
72 SMU_13_0_0_ODFEATURE_FAN_SPEED_MIN = 1 << SMU_13_0_0_ODCAP_FAN_SPEED_MIN,
73 SMU_13_0_0_ODFEATURE_TEMPERATURE_FAN = 1 << SMU_13_0_0_ODCAP_TEMPERATURE_FAN,
74 SMU_13_0_0_ODFEATURE_TEMPERATURE_SYSTEM = 1 << SMU_13_0_0_ODCAP_TEMPERATURE_SYSTEM,
75 SMU_13_0_0_ODFEATURE_MEMORY_TIMING_TUNE = 1 << SMU_13_0_0_ODCAP_MEMORY_TIMING_TUNE,
76 SMU_13_0_0_ODFEATURE_FAN_ZERO_RPM_CONTROL = 1 << SMU_13_0_0_ODCAP_FAN_ZERO_RPM_CONTROL,
77 SMU_13_0_0_ODFEATURE_AUTO_UV_ENGINE = 1 << SMU_13_0_0_ODCAP_AUTO_UV_ENGINE,
78 SMU_13_0_0_ODFEATURE_AUTO_OC_ENGINE = 1 << SMU_13_0_0_ODCAP_AUTO_OC_ENGINE,
79 SMU_13_0_0_ODFEATURE_AUTO_OC_MEMORY = 1 << SMU_13_0_0_ODCAP_AUTO_OC_MEMORY,
80 SMU_13_0_0_ODFEATURE_FAN_CURVE = 1 << SMU_13_0_0_ODCAP_FAN_CURVE,
81 SMU_13_0_0_ODFEATURE_AUTO_FAN_ACOUSTIC_LIMIT = 1 << SMU_13_0_0_ODCAP_AUTO_FAN_ACOUSTIC_LIMIT,
82 SMU_13_0_0_ODFEATURE_POWER_MODE = 1 << SMU_13_0_0_ODCAP_POWER_MODE,
83 SMU_13_0_0_ODFEATURE_COUNT = 16,
84};
85
86#define SMU_13_0_0_MAX_ODFEATURE 32
87
88enum SMU_13_0_0_ODSETTING_ID
89{
90 SMU_13_0_0_ODSETTING_GFXCLKFMAX = 0,
91 SMU_13_0_0_ODSETTING_GFXCLKFMIN,
92 SMU_13_0_0_ODSETTING_CUSTOM_GFX_VF_CURVE_A,
93 SMU_13_0_0_ODSETTING_CUSTOM_GFX_VF_CURVE_B,
94 SMU_13_0_0_ODSETTING_CUSTOM_GFX_VF_CURVE_C,
95 SMU_13_0_0_ODSETTING_CUSTOM_CURVE_VFT_FMIN,
96 SMU_13_0_0_ODSETTING_UCLKFMIN,
97 SMU_13_0_0_ODSETTING_UCLKFMAX,
98 SMU_13_0_0_ODSETTING_POWERPERCENTAGE,
99 SMU_13_0_0_ODSETTING_FANRPMMIN,
100 SMU_13_0_0_ODSETTING_FANRPMACOUSTICLIMIT,
101 SMU_13_0_0_ODSETTING_FANTARGETTEMPERATURE,
102 SMU_13_0_0_ODSETTING_OPERATINGTEMPMAX,
103 SMU_13_0_0_ODSETTING_ACTIMING,
104 SMU_13_0_0_ODSETTING_FAN_ZERO_RPM_CONTROL,
105 SMU_13_0_0_ODSETTING_AUTOUVENGINE,
106 SMU_13_0_0_ODSETTING_AUTOOCENGINE,
107 SMU_13_0_0_ODSETTING_AUTOOCMEMORY,
108 SMU_13_0_0_ODSETTING_FAN_CURVE_TEMPERATURE_1,
109 SMU_13_0_0_ODSETTING_FAN_CURVE_SPEED_1,
110 SMU_13_0_0_ODSETTING_FAN_CURVE_TEMPERATURE_2,
111 SMU_13_0_0_ODSETTING_FAN_CURVE_SPEED_2,
112 SMU_13_0_0_ODSETTING_FAN_CURVE_TEMPERATURE_3,
113 SMU_13_0_0_ODSETTING_FAN_CURVE_SPEED_3,
114 SMU_13_0_0_ODSETTING_FAN_CURVE_TEMPERATURE_4,
115 SMU_13_0_0_ODSETTING_FAN_CURVE_SPEED_4,
116 SMU_13_0_0_ODSETTING_FAN_CURVE_TEMPERATURE_5,
117 SMU_13_0_0_ODSETTING_FAN_CURVE_SPEED_5,
118 SMU_13_0_0_ODSETTING_AUTO_FAN_ACOUSTIC_LIMIT,
119 SMU_13_0_0_ODSETTING_POWER_MODE,
120 SMU_13_0_0_ODSETTING_COUNT,
121};
122#define SMU_13_0_0_MAX_ODSETTING 64
123
124enum SMU_13_0_0_PWRMODE_SETTING
125{
126 SMU_13_0_0_PMSETTING_POWER_LIMIT_QUIET = 0,
127 SMU_13_0_0_PMSETTING_POWER_LIMIT_BALANCE,
128 SMU_13_0_0_PMSETTING_POWER_LIMIT_TURBO,
129 SMU_13_0_0_PMSETTING_POWER_LIMIT_RAGE,
130 SMU_13_0_0_PMSETTING_ACOUSTIC_TEMP_QUIET,
131 SMU_13_0_0_PMSETTING_ACOUSTIC_TEMP_BALANCE,
132 SMU_13_0_0_PMSETTING_ACOUSTIC_TEMP_TURBO,
133 SMU_13_0_0_PMSETTING_ACOUSTIC_TEMP_RAGE,
134 SMU_13_0_0_PMSETTING_ACOUSTIC_TARGET_RPM_QUIET,
135 SMU_13_0_0_PMSETTING_ACOUSTIC_TARGET_RPM_BALANCE,
136 SMU_13_0_0_PMSETTING_ACOUSTIC_TARGET_RPM_TURBO,
137 SMU_13_0_0_PMSETTING_ACOUSTIC_TARGET_RPM_RAGE,
138 SMU_13_0_0_PMSETTING_ACOUSTIC_LIMIT_RPM_QUIET,
139 SMU_13_0_0_PMSETTING_ACOUSTIC_LIMIT_RPM_BALANCE,
140 SMU_13_0_0_PMSETTING_ACOUSTIC_LIMIT_RPM_TURBO,
141 SMU_13_0_0_PMSETTING_ACOUSTIC_LIMIT_RPM_RAGE,
142};
143#define SMU_13_0_0_MAX_PMSETTING 32
144
145struct smu_13_0_0_overdrive_table
146{
147 uint8_t revision;
148 uint8_t reserve[3];
149 uint32_t feature_count;
150 uint32_t setting_count;
151 uint8_t cap[SMU_13_0_0_MAX_ODFEATURE];
152 uint32_t max[SMU_13_0_0_MAX_ODSETTING];
153 uint32_t min[SMU_13_0_0_MAX_ODSETTING];
154 int16_t pm_setting[SMU_13_0_0_MAX_PMSETTING];
155};
156
157enum SMU_13_0_0_PPCLOCK_ID
158{
159 SMU_13_0_0_PPCLOCK_GFXCLK = 0,
160 SMU_13_0_0_PPCLOCK_SOCCLK,
161 SMU_13_0_0_PPCLOCK_UCLK,
162 SMU_13_0_0_PPCLOCK_FCLK,
163 SMU_13_0_0_PPCLOCK_DCLK_0,
164 SMU_13_0_0_PPCLOCK_VCLK_0,
165 SMU_13_0_0_PPCLOCK_DCLK_1,
166 SMU_13_0_0_PPCLOCK_VCLK_1,
167 SMU_13_0_0_PPCLOCK_DCEFCLK,
168 SMU_13_0_0_PPCLOCK_DISPCLK,
169 SMU_13_0_0_PPCLOCK_PIXCLK,
170 SMU_13_0_0_PPCLOCK_PHYCLK,
171 SMU_13_0_0_PPCLOCK_DTBCLK,
172 SMU_13_0_0_PPCLOCK_COUNT,
173};
174#define SMU_13_0_0_MAX_PPCLOCK 16
175
176struct smu_13_0_0_powerplay_table
177{
178 struct atom_common_table_header header;
179 uint8_t table_revision;
180 uint8_t padding;
181 uint16_t table_size;
182 uint32_t golden_pp_id;
183 uint32_t golden_revision;
184 uint16_t format_id;
185 uint32_t platform_caps;
186
187 uint8_t thermal_controller_type;
188
189 uint16_t small_power_limit1;
190 uint16_t small_power_limit2;
191 uint16_t boost_power_limit;
192 uint16_t software_shutdown_temp;
193
194 uint32_t reserve[45];
195
196 struct smu_13_0_0_overdrive_table overdrive_table;
197 uint8_t padding1;
198 PPTable_t smc_pptable;
199};
200
201#pragma pack(pop)
202
203#endif
204