1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #ifndef _VEGA10_PPTABLE_H_
24 #define _VEGA10_PPTABLE_H_
25
26 #pragma pack(push, 1)
27
28 #define ATOM_VEGA10_PP_FANPARAMETERS_TACHOMETER_PULSES_PER_REVOLUTION_MASK 0x0f
29 #define ATOM_VEGA10_PP_FANPARAMETERS_NOFAN 0x80
30
31 #define ATOM_VEGA10_PP_THERMALCONTROLLER_NONE 0
32 #define ATOM_VEGA10_PP_THERMALCONTROLLER_LM96163 17
33 #define ATOM_VEGA10_PP_THERMALCONTROLLER_VEGA10 24
34
35 #define ATOM_VEGA10_PP_THERMALCONTROLLER_ADT7473_WITH_INTERNAL 0x89
36 #define ATOM_VEGA10_PP_THERMALCONTROLLER_EMC2103_WITH_INTERNAL 0x8D
37
38 #define ATOM_VEGA10_PP_PLATFORM_CAP_POWERPLAY 0x1
39 #define ATOM_VEGA10_PP_PLATFORM_CAP_SBIOSPOWERSOURCE 0x2
40 #define ATOM_VEGA10_PP_PLATFORM_CAP_HARDWAREDC 0x4
41 #define ATOM_VEGA10_PP_PLATFORM_CAP_BACO 0x8
42 #define ATOM_VEGA10_PP_PLATFORM_COMBINE_PCC_WITH_THERMAL_SIGNAL 0x10
43
44
45
46 #define ATOM_PPLIB_CLASSIFICATION_UI_MASK 0x0007
47 #define ATOM_PPLIB_CLASSIFICATION_UI_SHIFT 0
48 #define ATOM_PPLIB_CLASSIFICATION_UI_NONE 0
49 #define ATOM_PPLIB_CLASSIFICATION_UI_BATTERY 1
50 #define ATOM_PPLIB_CLASSIFICATION_UI_BALANCED 3
51 #define ATOM_PPLIB_CLASSIFICATION_UI_PERFORMANCE 5
52
53
54 #define ATOM_PPLIB_CLASSIFICATION_BOOT 0x0008
55 #define ATOM_PPLIB_CLASSIFICATION_THERMAL 0x0010
56 #define ATOM_PPLIB_CLASSIFICATION_LIMITEDPOWERSOURCE 0x0020
57 #define ATOM_PPLIB_CLASSIFICATION_REST 0x0040
58 #define ATOM_PPLIB_CLASSIFICATION_FORCED 0x0080
59 #define ATOM_PPLIB_CLASSIFICATION_ACPI 0x1000
60
61
62 #define ATOM_PPLIB_CLASSIFICATION2_LIMITEDPOWERSOURCE_2 0x0001
63
64 #define ATOM_Vega10_DISALLOW_ON_DC 0x00004000
65 #define ATOM_Vega10_ENABLE_VARIBRIGHT 0x00008000
66
67 #define ATOM_Vega10_TABLE_REVISION_VEGA10 8
68
69 #define ATOM_Vega10_VoltageMode_AVFS_Interpolate 0
70 #define ATOM_Vega10_VoltageMode_AVFS_WorstCase 1
71 #define ATOM_Vega10_VoltageMode_Static 2
72
73 typedef struct _ATOM_Vega10_POWERPLAYTABLE {
74 struct atom_common_table_header sHeader;
75 UCHAR ucTableRevision;
76 USHORT usTableSize;
77 ULONG ulGoldenPPID;
78 ULONG ulGoldenRevision;
79 USHORT usFormatID;
80 ULONG ulPlatformCaps;
81 ULONG ulMaxODEngineClock;
82 ULONG ulMaxODMemoryClock;
83 USHORT usPowerControlLimit;
84 USHORT usUlvVoltageOffset;
85 USHORT usUlvSmnclkDid;
86 USHORT usUlvMp1clkDid;
87 USHORT usUlvGfxclkBypass;
88 USHORT usGfxclkSlewRate;
89 UCHAR ucGfxVoltageMode;
90 UCHAR ucSocVoltageMode;
91 UCHAR ucUclkVoltageMode;
92 UCHAR ucUvdVoltageMode;
93 UCHAR ucVceVoltageMode;
94 UCHAR ucMp0VoltageMode;
95 UCHAR ucDcefVoltageMode;
96 USHORT usStateArrayOffset;
97 USHORT usFanTableOffset;
98 USHORT usThermalControllerOffset;
99 USHORT usSocclkDependencyTableOffset;
100 USHORT usMclkDependencyTableOffset;
101 USHORT usGfxclkDependencyTableOffset;
102 USHORT usDcefclkDependencyTableOffset;
103 USHORT usVddcLookupTableOffset;
104 USHORT usVddmemLookupTableOffset;
105 USHORT usMMDependencyTableOffset;
106 USHORT usVCEStateTableOffset;
107 USHORT usReserve;
108 USHORT usPowerTuneTableOffset;
109 USHORT usHardLimitTableOffset;
110 USHORT usVddciLookupTableOffset;
111 USHORT usPCIETableOffset;
112 USHORT usPixclkDependencyTableOffset;
113 USHORT usDispClkDependencyTableOffset;
114 USHORT usPhyClkDependencyTableOffset;
115 } ATOM_Vega10_POWERPLAYTABLE;
116
117 typedef struct _ATOM_Vega10_State {
118 UCHAR ucSocClockIndexHigh;
119 UCHAR ucSocClockIndexLow;
120 UCHAR ucGfxClockIndexHigh;
121 UCHAR ucGfxClockIndexLow;
122 UCHAR ucMemClockIndexHigh;
123 UCHAR ucMemClockIndexLow;
124 USHORT usClassification;
125 ULONG ulCapsAndSettings;
126 USHORT usClassification2;
127 } ATOM_Vega10_State;
128
129 typedef struct _ATOM_Vega10_State_Array {
130 UCHAR ucRevId;
131 UCHAR ucNumEntries;
132 ATOM_Vega10_State states[1];
133 } ATOM_Vega10_State_Array;
134
135 typedef struct _ATOM_Vega10_CLK_Dependency_Record {
136 ULONG ulClk;
137 UCHAR ucVddInd;
138 } ATOM_Vega10_CLK_Dependency_Record;
139
140 typedef struct _ATOM_Vega10_GFXCLK_Dependency_Record {
141 ULONG ulClk;
142 UCHAR ucVddInd;
143 USHORT usCKSVOffsetandDisable;
144 USHORT usAVFSOffset;
145 } ATOM_Vega10_GFXCLK_Dependency_Record;
146
147 typedef struct _ATOM_Vega10_GFXCLK_Dependency_Record_V2 {
148 ULONG ulClk;
149 UCHAR ucVddInd;
150 USHORT usCKSVOffsetandDisable;
151 USHORT usAVFSOffset;
152 UCHAR ucACGEnable;
153 UCHAR ucReserved[3];
154 } ATOM_Vega10_GFXCLK_Dependency_Record_V2;
155
156 typedef struct _ATOM_Vega10_MCLK_Dependency_Record {
157 ULONG ulMemClk;
158 UCHAR ucVddInd;
159 UCHAR ucVddMemInd;
160 UCHAR ucVddciInd;
161 } ATOM_Vega10_MCLK_Dependency_Record;
162
163 typedef struct _ATOM_Vega10_GFXCLK_Dependency_Table {
164 UCHAR ucRevId;
165 UCHAR ucNumEntries;
166 ATOM_Vega10_GFXCLK_Dependency_Record entries[1];
167 } ATOM_Vega10_GFXCLK_Dependency_Table;
168
169 typedef struct _ATOM_Vega10_MCLK_Dependency_Table {
170 UCHAR ucRevId;
171 UCHAR ucNumEntries;
172 ATOM_Vega10_MCLK_Dependency_Record entries[1];
173 } ATOM_Vega10_MCLK_Dependency_Table;
174
175 typedef struct _ATOM_Vega10_SOCCLK_Dependency_Table {
176 UCHAR ucRevId;
177 UCHAR ucNumEntries;
178 ATOM_Vega10_CLK_Dependency_Record entries[1];
179 } ATOM_Vega10_SOCCLK_Dependency_Table;
180
181 typedef struct _ATOM_Vega10_DCEFCLK_Dependency_Table {
182 UCHAR ucRevId;
183 UCHAR ucNumEntries;
184 ATOM_Vega10_CLK_Dependency_Record entries[1];
185 } ATOM_Vega10_DCEFCLK_Dependency_Table;
186
187 typedef struct _ATOM_Vega10_PIXCLK_Dependency_Table {
188 UCHAR ucRevId;
189 UCHAR ucNumEntries;
190 ATOM_Vega10_CLK_Dependency_Record entries[1];
191 } ATOM_Vega10_PIXCLK_Dependency_Table;
192
193 typedef struct _ATOM_Vega10_DISPCLK_Dependency_Table {
194 UCHAR ucRevId;
195 UCHAR ucNumEntries;
196 ATOM_Vega10_CLK_Dependency_Record entries[1];
197 } ATOM_Vega10_DISPCLK_Dependency_Table;
198
199 typedef struct _ATOM_Vega10_PHYCLK_Dependency_Table {
200 UCHAR ucRevId;
201 UCHAR ucNumEntries;
202 ATOM_Vega10_CLK_Dependency_Record entries[1];
203 } ATOM_Vega10_PHYCLK_Dependency_Table;
204
205 typedef struct _ATOM_Vega10_MM_Dependency_Record {
206 UCHAR ucVddcInd;
207 ULONG ulDClk;
208 ULONG ulVClk;
209 ULONG ulEClk;
210 ULONG ulPSPClk;
211 } ATOM_Vega10_MM_Dependency_Record;
212
213 typedef struct _ATOM_Vega10_MM_Dependency_Table {
214 UCHAR ucRevId;
215 UCHAR ucNumEntries;
216 ATOM_Vega10_MM_Dependency_Record entries[1];
217 } ATOM_Vega10_MM_Dependency_Table;
218
219 typedef struct _ATOM_Vega10_PCIE_Record {
220 ULONG ulLCLK;
221 UCHAR ucPCIEGenSpeed;
222 UCHAR ucPCIELaneWidth;
223 } ATOM_Vega10_PCIE_Record;
224
225 typedef struct _ATOM_Vega10_PCIE_Table {
226 UCHAR ucRevId;
227 UCHAR ucNumEntries;
228 ATOM_Vega10_PCIE_Record entries[1];
229 } ATOM_Vega10_PCIE_Table;
230
231 typedef struct _ATOM_Vega10_Voltage_Lookup_Record {
232 USHORT usVdd;
233 } ATOM_Vega10_Voltage_Lookup_Record;
234
235 typedef struct _ATOM_Vega10_Voltage_Lookup_Table {
236 UCHAR ucRevId;
237 UCHAR ucNumEntries;
238 ATOM_Vega10_Voltage_Lookup_Record entries[1];
239 } ATOM_Vega10_Voltage_Lookup_Table;
240
241 typedef struct _ATOM_Vega10_Fan_Table {
242 UCHAR ucRevId;
243 USHORT usFanOutputSensitivity;
244 USHORT usFanRPMMax;
245 USHORT usThrottlingRPM;
246 USHORT usFanAcousticLimit;
247 USHORT usTargetTemperature;
248 USHORT usMinimumPWMLimit;
249 USHORT usTargetGfxClk;
250 USHORT usFanGainEdge;
251 USHORT usFanGainHotspot;
252 USHORT usFanGainLiquid;
253 USHORT usFanGainVrVddc;
254 USHORT usFanGainVrMvdd;
255 USHORT usFanGainPlx;
256 USHORT usFanGainHbm;
257 UCHAR ucEnableZeroRPM;
258 USHORT usFanStopTemperature;
259 USHORT usFanStartTemperature;
260 } ATOM_Vega10_Fan_Table;
261
262 typedef struct _ATOM_Vega10_Fan_Table_V2 {
263 UCHAR ucRevId;
264 USHORT usFanOutputSensitivity;
265 USHORT usFanAcousticLimitRpm;
266 USHORT usThrottlingRPM;
267 USHORT usTargetTemperature;
268 USHORT usMinimumPWMLimit;
269 USHORT usTargetGfxClk;
270 USHORT usFanGainEdge;
271 USHORT usFanGainHotspot;
272 USHORT usFanGainLiquid;
273 USHORT usFanGainVrVddc;
274 USHORT usFanGainVrMvdd;
275 USHORT usFanGainPlx;
276 USHORT usFanGainHbm;
277 UCHAR ucEnableZeroRPM;
278 USHORT usFanStopTemperature;
279 USHORT usFanStartTemperature;
280 UCHAR ucFanParameters;
281 UCHAR ucFanMinRPM;
282 UCHAR ucFanMaxRPM;
283 } ATOM_Vega10_Fan_Table_V2;
284
285 typedef struct _ATOM_Vega10_Fan_Table_V3 {
286 UCHAR ucRevId;
287 USHORT usFanOutputSensitivity;
288 USHORT usFanAcousticLimitRpm;
289 USHORT usThrottlingRPM;
290 USHORT usTargetTemperature;
291 USHORT usMinimumPWMLimit;
292 USHORT usTargetGfxClk;
293 USHORT usFanGainEdge;
294 USHORT usFanGainHotspot;
295 USHORT usFanGainLiquid;
296 USHORT usFanGainVrVddc;
297 USHORT usFanGainVrMvdd;
298 USHORT usFanGainPlx;
299 USHORT usFanGainHbm;
300 UCHAR ucEnableZeroRPM;
301 USHORT usFanStopTemperature;
302 USHORT usFanStartTemperature;
303 UCHAR ucFanParameters;
304 UCHAR ucFanMinRPM;
305 UCHAR ucFanMaxRPM;
306 USHORT usMGpuThrottlingRPM;
307 } ATOM_Vega10_Fan_Table_V3;
308
309 typedef struct _ATOM_Vega10_Thermal_Controller {
310 UCHAR ucRevId;
311 UCHAR ucType;
312 UCHAR ucI2cLine;
313 UCHAR ucI2cAddress;
314 UCHAR ucFanParameters;
315 UCHAR ucFanMinRPM;
316 UCHAR ucFanMaxRPM;
317 UCHAR ucFlags;
318 } ATOM_Vega10_Thermal_Controller;
319
320 typedef struct _ATOM_Vega10_VCE_State_Record
321 {
322 UCHAR ucVCEClockIndex;
323 UCHAR ucFlag;
324 UCHAR ucSCLKIndex;
325 UCHAR ucMCLKIndex;
326 } ATOM_Vega10_VCE_State_Record;
327
328 typedef struct _ATOM_Vega10_VCE_State_Table
329 {
330 UCHAR ucRevId;
331 UCHAR ucNumEntries;
332 ATOM_Vega10_VCE_State_Record entries[1];
333 } ATOM_Vega10_VCE_State_Table;
334
335 typedef struct _ATOM_Vega10_PowerTune_Table {
336 UCHAR ucRevId;
337 USHORT usSocketPowerLimit;
338 USHORT usBatteryPowerLimit;
339 USHORT usSmallPowerLimit;
340 USHORT usTdcLimit;
341 USHORT usEdcLimit;
342 USHORT usSoftwareShutdownTemp;
343 USHORT usTemperatureLimitHotSpot;
344 USHORT usTemperatureLimitLiquid1;
345 USHORT usTemperatureLimitLiquid2;
346 USHORT usTemperatureLimitHBM;
347 USHORT usTemperatureLimitVrSoc;
348 USHORT usTemperatureLimitVrMem;
349 USHORT usTemperatureLimitPlx;
350 USHORT usLoadLineResistance;
351 UCHAR ucLiquid1_I2C_address;
352 UCHAR ucLiquid2_I2C_address;
353 UCHAR ucVr_I2C_address;
354 UCHAR ucPlx_I2C_address;
355 UCHAR ucLiquid_I2C_LineSCL;
356 UCHAR ucLiquid_I2C_LineSDA;
357 UCHAR ucVr_I2C_LineSCL;
358 UCHAR ucVr_I2C_LineSDA;
359 UCHAR ucPlx_I2C_LineSCL;
360 UCHAR ucPlx_I2C_LineSDA;
361 USHORT usTemperatureLimitTedge;
362 } ATOM_Vega10_PowerTune_Table;
363
364 typedef struct _ATOM_Vega10_PowerTune_Table_V2
365 {
366 UCHAR ucRevId;
367 USHORT usSocketPowerLimit;
368 USHORT usBatteryPowerLimit;
369 USHORT usSmallPowerLimit;
370 USHORT usTdcLimit;
371 USHORT usEdcLimit;
372 USHORT usSoftwareShutdownTemp;
373 USHORT usTemperatureLimitHotSpot;
374 USHORT usTemperatureLimitLiquid1;
375 USHORT usTemperatureLimitLiquid2;
376 USHORT usTemperatureLimitHBM;
377 USHORT usTemperatureLimitVrSoc;
378 USHORT usTemperatureLimitVrMem;
379 USHORT usTemperatureLimitPlx;
380 USHORT usLoadLineResistance;
381 UCHAR ucLiquid1_I2C_address;
382 UCHAR ucLiquid2_I2C_address;
383 UCHAR ucLiquid_I2C_Line;
384 UCHAR ucVr_I2C_address;
385 UCHAR ucVr_I2C_Line;
386 UCHAR ucPlx_I2C_address;
387 UCHAR ucPlx_I2C_Line;
388 USHORT usTemperatureLimitTedge;
389 } ATOM_Vega10_PowerTune_Table_V2;
390
391 typedef struct _ATOM_Vega10_PowerTune_Table_V3
392 {
393 UCHAR ucRevId;
394 USHORT usSocketPowerLimit;
395 USHORT usBatteryPowerLimit;
396 USHORT usSmallPowerLimit;
397 USHORT usTdcLimit;
398 USHORT usEdcLimit;
399 USHORT usSoftwareShutdownTemp;
400 USHORT usTemperatureLimitHotSpot;
401 USHORT usTemperatureLimitLiquid1;
402 USHORT usTemperatureLimitLiquid2;
403 USHORT usTemperatureLimitHBM;
404 USHORT usTemperatureLimitVrSoc;
405 USHORT usTemperatureLimitVrMem;
406 USHORT usTemperatureLimitPlx;
407 USHORT usLoadLineResistance;
408 UCHAR ucLiquid1_I2C_address;
409 UCHAR ucLiquid2_I2C_address;
410 UCHAR ucLiquid_I2C_Line;
411 UCHAR ucVr_I2C_address;
412 UCHAR ucVr_I2C_Line;
413 UCHAR ucPlx_I2C_address;
414 UCHAR ucPlx_I2C_Line;
415 USHORT usTemperatureLimitTedge;
416 USHORT usBoostStartTemperature;
417 USHORT usBoostStopTemperature;
418 ULONG ulBoostClock;
419 ULONG Reserved[2];
420 } ATOM_Vega10_PowerTune_Table_V3;
421
422 typedef struct _ATOM_Vega10_Hard_Limit_Record {
423 ULONG ulSOCCLKLimit;
424 ULONG ulGFXCLKLimit;
425 ULONG ulMCLKLimit;
426 USHORT usVddcLimit;
427 USHORT usVddciLimit;
428 USHORT usVddMemLimit;
429 } ATOM_Vega10_Hard_Limit_Record;
430
431 typedef struct _ATOM_Vega10_Hard_Limit_Table
432 {
433 UCHAR ucRevId;
434 UCHAR ucNumEntries;
435 ATOM_Vega10_Hard_Limit_Record entries[1];
436 } ATOM_Vega10_Hard_Limit_Table;
437
438 typedef struct _Vega10_PPTable_Generic_SubTable_Header
439 {
440 UCHAR ucRevId;
441 } Vega10_PPTable_Generic_SubTable_Header;
442
443 #pragma pack(pop)
444
445 #endif