1 | /* |
2 | * Copyright 2015 Advanced Micro Devices, Inc. |
3 | * |
4 | * Permission is hereby granted, free of charge, to any person obtaining a |
5 | * copy of this software and associated documentation files (the "Software"), |
6 | * to deal in the Software without restriction, including without limitation |
7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
8 | * and/or sell copies of the Software, and to permit persons to whom the |
9 | * Software is furnished to do so, subject to the following conditions: |
10 | * |
11 | * The above copyright notice and this permission notice shall be included in |
12 | * all copies or substantial portions of the Software. |
13 | * |
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
17 | * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR |
18 | * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
20 | * OTHER DEALINGS IN THE SOFTWARE. |
21 | * |
22 | */ |
23 | |
24 | #ifndef TONGA_PPTABLE_H |
25 | #define TONGA_PPTABLE_H |
26 | |
27 | /** \file |
28 | * This is a PowerPlay table header file |
29 | */ |
30 | #pragma pack(push, 1) |
31 | |
32 | #include "hwmgr.h" |
33 | |
34 | #define ATOM_TONGA_PP_FANPARAMETERS_TACHOMETER_PULSES_PER_REVOLUTION_MASK 0x0f |
35 | #define ATOM_TONGA_PP_FANPARAMETERS_NOFAN 0x80 /* No fan is connected to this controller. */ |
36 | |
37 | #define ATOM_TONGA_PP_THERMALCONTROLLER_NONE 0 |
38 | #define ATOM_TONGA_PP_THERMALCONTROLLER_LM96163 17 |
39 | #define ATOM_TONGA_PP_THERMALCONTROLLER_TONGA 21 |
40 | #define ATOM_TONGA_PP_THERMALCONTROLLER_FIJI 22 |
41 | |
42 | /* |
43 | * Thermal controller 'combo type' to use an external controller for Fan control and an internal controller for thermal. |
44 | * We probably should reserve the bit 0x80 for this use. |
45 | * To keep the number of these types low we should also use the same code for all ASICs (i.e. do not distinguish RV6xx and RV7xx Internal here). |
46 | * The driver can pick the correct internal controller based on the ASIC. |
47 | */ |
48 | |
49 | #define ATOM_TONGA_PP_THERMALCONTROLLER_ADT7473_WITH_INTERNAL 0x89 /* ADT7473 Fan Control + Internal Thermal Controller */ |
50 | #define ATOM_TONGA_PP_THERMALCONTROLLER_EMC2103_WITH_INTERNAL 0x8D /* EMC2103 Fan Control + Internal Thermal Controller */ |
51 | |
52 | /*/* ATOM_TONGA_POWERPLAYTABLE::ulPlatformCaps */ |
53 | #define ATOM_TONGA_PP_PLATFORM_CAP_VDDGFX_CONTROL 0x1 /* This cap indicates whether vddgfx will be a separated power rail. */ |
54 | #define ATOM_TONGA_PP_PLATFORM_CAP_POWERPLAY 0x2 /* This cap indicates whether this is a mobile part and CCC need to show Powerplay page. */ |
55 | #define ATOM_TONGA_PP_PLATFORM_CAP_SBIOSPOWERSOURCE 0x4 /* This cap indicates whether power source notificaiton is done by SBIOS directly. */ |
56 | #define ATOM_TONGA_PP_PLATFORM_CAP_DISABLE_VOLTAGE_ISLAND 0x8 /* Enable the option to overwrite voltage island feature to be disabled, regardless of VddGfx power rail support. */ |
57 | #define ____RETIRE16____ 0x10 |
58 | #define ATOM_TONGA_PP_PLATFORM_CAP_HARDWAREDC 0x20 /* This cap indicates whether power source notificaiton is done by GPIO directly. */ |
59 | #define ____RETIRE64____ 0x40 |
60 | #define ____RETIRE128____ 0x80 |
61 | #define ____RETIRE256____ 0x100 |
62 | #define ____RETIRE512____ 0x200 |
63 | #define ____RETIRE1024____ 0x400 |
64 | #define ____RETIRE2048____ 0x800 |
65 | #define ATOM_TONGA_PP_PLATFORM_CAP_MVDD_CONTROL 0x1000 /* This cap indicates dynamic MVDD is required. Uncheck to disable it. */ |
66 | #define ____RETIRE2000____ 0x2000 |
67 | #define ____RETIRE4000____ 0x4000 |
68 | #define ATOM_TONGA_PP_PLATFORM_CAP_VDDCI_CONTROL 0x8000 /* This cap indicates dynamic VDDCI is required. Uncheck to disable it. */ |
69 | #define ____RETIRE10000____ 0x10000 |
70 | #define ATOM_TONGA_PP_PLATFORM_CAP_BACO 0x20000 /* Enable to indicate the driver supports BACO state. */ |
71 | |
72 | #define ATOM_TONGA_PP_PLATFORM_CAP_OUTPUT_THERMAL2GPIO17 0x100000 /* Enable to indicate the driver supports thermal2GPIO17. */ |
73 | #define ATOM_TONGA_PP_PLATFORM_COMBINE_PCC_WITH_THERMAL_SIGNAL 0x1000000 /* Enable to indicate if thermal and PCC are sharing the same GPIO */ |
74 | #define ATOM_TONGA_PLATFORM_LOAD_POST_PRODUCTION_FIRMWARE 0x2000000 |
75 | |
76 | /* ATOM_PPLIB_NONCLOCK_INFO::usClassification */ |
77 | #define ATOM_PPLIB_CLASSIFICATION_UI_MASK 0x0007 |
78 | #define ATOM_PPLIB_CLASSIFICATION_UI_SHIFT 0 |
79 | #define ATOM_PPLIB_CLASSIFICATION_UI_NONE 0 |
80 | #define ATOM_PPLIB_CLASSIFICATION_UI_BATTERY 1 |
81 | #define ATOM_PPLIB_CLASSIFICATION_UI_BALANCED 3 |
82 | #define ATOM_PPLIB_CLASSIFICATION_UI_PERFORMANCE 5 |
83 | /* 2, 4, 6, 7 are reserved */ |
84 | |
85 | #define ATOM_PPLIB_CLASSIFICATION_BOOT 0x0008 |
86 | #define ATOM_PPLIB_CLASSIFICATION_THERMAL 0x0010 |
87 | #define ATOM_PPLIB_CLASSIFICATION_LIMITEDPOWERSOURCE 0x0020 |
88 | #define ATOM_PPLIB_CLASSIFICATION_REST 0x0040 |
89 | #define ATOM_PPLIB_CLASSIFICATION_FORCED 0x0080 |
90 | #define ATOM_PPLIB_CLASSIFICATION_ACPI 0x1000 |
91 | |
92 | /* ATOM_PPLIB_NONCLOCK_INFO::usClassification2 */ |
93 | #define ATOM_PPLIB_CLASSIFICATION2_LIMITEDPOWERSOURCE_2 0x0001 |
94 | |
95 | #define ATOM_Tonga_DISALLOW_ON_DC 0x00004000 |
96 | #define ATOM_Tonga_ENABLE_VARIBRIGHT 0x00008000 |
97 | |
98 | #define ATOM_Tonga_TABLE_REVISION_TONGA 7 |
99 | |
100 | typedef struct _ATOM_Tonga_POWERPLAYTABLE { |
101 | ATOM_COMMON_TABLE_HEADER ; |
102 | |
103 | UCHAR ucTableRevision; |
104 | USHORT usTableSize; /*the size of header structure */ |
105 | |
106 | ULONG ulGoldenPPID; |
107 | ULONG ulGoldenRevision; |
108 | USHORT usFormatID; |
109 | |
110 | USHORT usVoltageTime; /*in microseconds */ |
111 | ULONG ulPlatformCaps; /*See ATOM_Tonga_CAPS_* */ |
112 | |
113 | ULONG ulMaxODEngineClock; /*For Overdrive. */ |
114 | ULONG ulMaxODMemoryClock; /*For Overdrive. */ |
115 | |
116 | USHORT usPowerControlLimit; |
117 | USHORT usUlvVoltageOffset; /*in mv units */ |
118 | |
119 | USHORT usStateArrayOffset; /*points to ATOM_Tonga_State_Array */ |
120 | USHORT usFanTableOffset; /*points to ATOM_Tonga_Fan_Table */ |
121 | USHORT usThermalControllerOffset; /*points to ATOM_Tonga_Thermal_Controller */ |
122 | USHORT usReserv; /*CustomThermalPolicy removed for Tonga. Keep this filed as reserved. */ |
123 | |
124 | USHORT usMclkDependencyTableOffset; /*points to ATOM_Tonga_MCLK_Dependency_Table */ |
125 | USHORT usSclkDependencyTableOffset; /*points to ATOM_Tonga_SCLK_Dependency_Table */ |
126 | USHORT usVddcLookupTableOffset; /*points to ATOM_Tonga_Voltage_Lookup_Table */ |
127 | USHORT usVddgfxLookupTableOffset; /*points to ATOM_Tonga_Voltage_Lookup_Table */ |
128 | |
129 | USHORT usMMDependencyTableOffset; /*points to ATOM_Tonga_MM_Dependency_Table */ |
130 | |
131 | USHORT usVCEStateTableOffset; /*points to ATOM_Tonga_VCE_State_Table; */ |
132 | |
133 | USHORT usPPMTableOffset; /*points to ATOM_Tonga_PPM_Table */ |
134 | USHORT usPowerTuneTableOffset; /*points to ATOM_PowerTune_Table */ |
135 | |
136 | USHORT usHardLimitTableOffset; /*points to ATOM_Tonga_Hard_Limit_Table */ |
137 | |
138 | USHORT usPCIETableOffset; /*points to ATOM_Tonga_PCIE_Table */ |
139 | |
140 | USHORT usGPIOTableOffset; /*points to ATOM_Tonga_GPIO_Table */ |
141 | |
142 | USHORT usReserved[6]; /*TODO: modify reserved size to fit structure aligning */ |
143 | } ATOM_Tonga_POWERPLAYTABLE; |
144 | |
145 | typedef struct _ATOM_Tonga_State { |
146 | UCHAR ucEngineClockIndexHigh; |
147 | UCHAR ucEngineClockIndexLow; |
148 | |
149 | UCHAR ucMemoryClockIndexHigh; |
150 | UCHAR ucMemoryClockIndexLow; |
151 | |
152 | UCHAR ucPCIEGenLow; |
153 | UCHAR ucPCIEGenHigh; |
154 | |
155 | UCHAR ucPCIELaneLow; |
156 | UCHAR ucPCIELaneHigh; |
157 | |
158 | USHORT usClassification; |
159 | ULONG ulCapsAndSettings; |
160 | USHORT usClassification2; |
161 | UCHAR ucUnused[4]; |
162 | } ATOM_Tonga_State; |
163 | |
164 | typedef struct _ATOM_Tonga_State_Array { |
165 | UCHAR ucRevId; |
166 | UCHAR ucNumEntries; /* Number of entries. */ |
167 | ATOM_Tonga_State entries[]; /* Dynamically allocate entries. */ |
168 | } ATOM_Tonga_State_Array; |
169 | |
170 | typedef struct _ATOM_Tonga_MCLK_Dependency_Record { |
171 | UCHAR ucVddcInd; /* Vddc voltage */ |
172 | USHORT usVddci; |
173 | USHORT usVddgfxOffset; /* Offset relative to Vddc voltage */ |
174 | USHORT usMvdd; |
175 | ULONG ulMclk; |
176 | USHORT usReserved; |
177 | } ATOM_Tonga_MCLK_Dependency_Record; |
178 | |
179 | typedef struct _ATOM_Tonga_MCLK_Dependency_Table { |
180 | UCHAR ucRevId; |
181 | UCHAR ucNumEntries; /* Number of entries. */ |
182 | ATOM_Tonga_MCLK_Dependency_Record entries[]; /* Dynamically allocate entries. */ |
183 | } ATOM_Tonga_MCLK_Dependency_Table; |
184 | |
185 | typedef struct _ATOM_Tonga_SCLK_Dependency_Record { |
186 | UCHAR ucVddInd; /* Base voltage */ |
187 | USHORT usVddcOffset; /* Offset relative to base voltage */ |
188 | ULONG ulSclk; |
189 | USHORT usEdcCurrent; |
190 | UCHAR ucReliabilityTemperature; |
191 | UCHAR ucCKSVOffsetandDisable; /* Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level. */ |
192 | } ATOM_Tonga_SCLK_Dependency_Record; |
193 | |
194 | typedef struct _ATOM_Tonga_SCLK_Dependency_Table { |
195 | UCHAR ucRevId; |
196 | UCHAR ucNumEntries; /* Number of entries. */ |
197 | ATOM_Tonga_SCLK_Dependency_Record entries[]; /* Dynamically allocate entries. */ |
198 | } ATOM_Tonga_SCLK_Dependency_Table; |
199 | |
200 | typedef struct _ATOM_Polaris_SCLK_Dependency_Record { |
201 | UCHAR ucVddInd; /* Base voltage */ |
202 | USHORT usVddcOffset; /* Offset relative to base voltage */ |
203 | ULONG ulSclk; |
204 | USHORT usEdcCurrent; |
205 | UCHAR ucReliabilityTemperature; |
206 | UCHAR ucCKSVOffsetandDisable; /* Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level. */ |
207 | ULONG ulSclkOffset; |
208 | } ATOM_Polaris_SCLK_Dependency_Record; |
209 | |
210 | typedef struct _ATOM_Polaris_SCLK_Dependency_Table { |
211 | UCHAR ucRevId; |
212 | UCHAR ucNumEntries; /* Number of entries. */ |
213 | ATOM_Polaris_SCLK_Dependency_Record entries[]; /* Dynamically allocate entries. */ |
214 | } ATOM_Polaris_SCLK_Dependency_Table; |
215 | |
216 | typedef struct _ATOM_Tonga_PCIE_Record { |
217 | UCHAR ucPCIEGenSpeed; |
218 | UCHAR usPCIELaneWidth; |
219 | UCHAR ucReserved[2]; |
220 | } ATOM_Tonga_PCIE_Record; |
221 | |
222 | typedef struct _ATOM_Tonga_PCIE_Table { |
223 | UCHAR ucRevId; |
224 | UCHAR ucNumEntries; /* Number of entries. */ |
225 | ATOM_Tonga_PCIE_Record entries[]; /* Dynamically allocate entries. */ |
226 | } ATOM_Tonga_PCIE_Table; |
227 | |
228 | typedef struct _ATOM_Polaris10_PCIE_Record { |
229 | UCHAR ucPCIEGenSpeed; |
230 | UCHAR usPCIELaneWidth; |
231 | UCHAR ucReserved[2]; |
232 | ULONG ulPCIE_Sclk; |
233 | } ATOM_Polaris10_PCIE_Record; |
234 | |
235 | typedef struct _ATOM_Polaris10_PCIE_Table { |
236 | UCHAR ucRevId; |
237 | UCHAR ucNumEntries; /* Number of entries. */ |
238 | ATOM_Polaris10_PCIE_Record entries[]; /* Dynamically allocate entries. */ |
239 | } ATOM_Polaris10_PCIE_Table; |
240 | |
241 | |
242 | typedef struct _ATOM_Tonga_MM_Dependency_Record { |
243 | UCHAR ucVddcInd; /* VDDC voltage */ |
244 | USHORT usVddgfxOffset; /* Offset relative to VDDC voltage */ |
245 | ULONG ulDClk; /* UVD D-clock */ |
246 | ULONG ulVClk; /* UVD V-clock */ |
247 | ULONG ulEClk; /* VCE clock */ |
248 | ULONG ulAClk; /* ACP clock */ |
249 | ULONG ulSAMUClk; /* SAMU clock */ |
250 | } ATOM_Tonga_MM_Dependency_Record; |
251 | |
252 | typedef struct _ATOM_Tonga_MM_Dependency_Table { |
253 | UCHAR ucRevId; |
254 | UCHAR ucNumEntries; /* Number of entries. */ |
255 | ATOM_Tonga_MM_Dependency_Record entries[]; /* Dynamically allocate entries. */ |
256 | } ATOM_Tonga_MM_Dependency_Table; |
257 | |
258 | typedef struct _ATOM_Tonga_Voltage_Lookup_Record { |
259 | USHORT usVdd; /* Base voltage */ |
260 | USHORT usCACLow; |
261 | USHORT usCACMid; |
262 | USHORT usCACHigh; |
263 | } ATOM_Tonga_Voltage_Lookup_Record; |
264 | |
265 | typedef struct _ATOM_Tonga_Voltage_Lookup_Table { |
266 | UCHAR ucRevId; |
267 | UCHAR ucNumEntries; /* Number of entries. */ |
268 | ATOM_Tonga_Voltage_Lookup_Record entries[]; /* Dynamically allocate entries. */ |
269 | } ATOM_Tonga_Voltage_Lookup_Table; |
270 | |
271 | typedef struct _ATOM_Tonga_Fan_Table { |
272 | UCHAR ucRevId; /* Change this if the table format changes or version changes so that the other fields are not the same. */ |
273 | UCHAR ucTHyst; /* Temperature hysteresis. Integer. */ |
274 | USHORT usTMin; /* The temperature, in 0.01 centigrades, below which we just run at a minimal PWM. */ |
275 | USHORT usTMed; /* The middle temperature where we change slopes. */ |
276 | USHORT usTHigh; /* The high point above TMed for adjusting the second slope. */ |
277 | USHORT usPWMMin; /* The minimum PWM value in percent (0.01% increments). */ |
278 | USHORT usPWMMed; /* The PWM value (in percent) at TMed. */ |
279 | USHORT usPWMHigh; /* The PWM value at THigh. */ |
280 | USHORT usTMax; /* The max temperature */ |
281 | UCHAR ucFanControlMode; /* Legacy or Fuzzy Fan mode */ |
282 | USHORT usFanPWMMax; /* Maximum allowed fan power in percent */ |
283 | USHORT usFanOutputSensitivity; /* Sensitivity of fan reaction to temepature changes */ |
284 | USHORT usFanRPMMax; /* The default value in RPM */ |
285 | ULONG ulMinFanSCLKAcousticLimit; /* Minimum Fan Controller SCLK Frequency Acoustic Limit. */ |
286 | UCHAR ucTargetTemperature; /* Advanced fan controller target temperature. */ |
287 | UCHAR ucMinimumPWMLimit; /* The minimum PWM that the advanced fan controller can set. This should be set to the highest PWM that will run the fan at its lowest RPM. */ |
288 | USHORT usReserved; |
289 | } ATOM_Tonga_Fan_Table; |
290 | |
291 | typedef struct _ATOM_Fiji_Fan_Table { |
292 | UCHAR ucRevId; /* Change this if the table format changes or version changes so that the other fields are not the same. */ |
293 | UCHAR ucTHyst; /* Temperature hysteresis. Integer. */ |
294 | USHORT usTMin; /* The temperature, in 0.01 centigrades, below which we just run at a minimal PWM. */ |
295 | USHORT usTMed; /* The middle temperature where we change slopes. */ |
296 | USHORT usTHigh; /* The high point above TMed for adjusting the second slope. */ |
297 | USHORT usPWMMin; /* The minimum PWM value in percent (0.01% increments). */ |
298 | USHORT usPWMMed; /* The PWM value (in percent) at TMed. */ |
299 | USHORT usPWMHigh; /* The PWM value at THigh. */ |
300 | USHORT usTMax; /* The max temperature */ |
301 | UCHAR ucFanControlMode; /* Legacy or Fuzzy Fan mode */ |
302 | USHORT usFanPWMMax; /* Maximum allowed fan power in percent */ |
303 | USHORT usFanOutputSensitivity; /* Sensitivity of fan reaction to temepature changes */ |
304 | USHORT usFanRPMMax; /* The default value in RPM */ |
305 | ULONG ulMinFanSCLKAcousticLimit; /* Minimum Fan Controller SCLK Frequency Acoustic Limit. */ |
306 | UCHAR ucTargetTemperature; /* Advanced fan controller target temperature. */ |
307 | UCHAR ucMinimumPWMLimit; /* The minimum PWM that the advanced fan controller can set. This should be set to the highest PWM that will run the fan at its lowest RPM. */ |
308 | USHORT usFanGainEdge; |
309 | USHORT usFanGainHotspot; |
310 | USHORT usFanGainLiquid; |
311 | USHORT usFanGainVrVddc; |
312 | USHORT usFanGainVrMvdd; |
313 | USHORT usFanGainPlx; |
314 | USHORT usFanGainHbm; |
315 | USHORT usReserved; |
316 | } ATOM_Fiji_Fan_Table; |
317 | |
318 | typedef struct _ATOM_Polaris_Fan_Table { |
319 | UCHAR ucRevId; /* Change this if the table format changes or version changes so that the other fields are not the same. */ |
320 | UCHAR ucTHyst; /* Temperature hysteresis. Integer. */ |
321 | USHORT usTMin; /* The temperature, in 0.01 centigrades, below which we just run at a minimal PWM. */ |
322 | USHORT usTMed; /* The middle temperature where we change slopes. */ |
323 | USHORT usTHigh; /* The high point above TMed for adjusting the second slope. */ |
324 | USHORT usPWMMin; /* The minimum PWM value in percent (0.01% increments). */ |
325 | USHORT usPWMMed; /* The PWM value (in percent) at TMed. */ |
326 | USHORT usPWMHigh; /* The PWM value at THigh. */ |
327 | USHORT usTMax; /* The max temperature */ |
328 | UCHAR ucFanControlMode; /* Legacy or Fuzzy Fan mode */ |
329 | USHORT usFanPWMMax; /* Maximum allowed fan power in percent */ |
330 | USHORT usFanOutputSensitivity; /* Sensitivity of fan reaction to temepature changes */ |
331 | USHORT usFanRPMMax; /* The default value in RPM */ |
332 | ULONG ulMinFanSCLKAcousticLimit; /* Minimum Fan Controller SCLK Frequency Acoustic Limit. */ |
333 | UCHAR ucTargetTemperature; /* Advanced fan controller target temperature. */ |
334 | UCHAR ucMinimumPWMLimit; /* The minimum PWM that the advanced fan controller can set. This should be set to the highest PWM that will run the fan at its lowest RPM. */ |
335 | USHORT usFanGainEdge; |
336 | USHORT usFanGainHotspot; |
337 | USHORT usFanGainLiquid; |
338 | USHORT usFanGainVrVddc; |
339 | USHORT usFanGainVrMvdd; |
340 | USHORT usFanGainPlx; |
341 | USHORT usFanGainHbm; |
342 | UCHAR ucEnableZeroRPM; |
343 | UCHAR ucFanStopTemperature; |
344 | UCHAR ucFanStartTemperature; |
345 | USHORT usReserved; |
346 | } ATOM_Polaris_Fan_Table; |
347 | |
348 | typedef struct _ATOM_Tonga_Thermal_Controller { |
349 | UCHAR ucRevId; |
350 | UCHAR ucType; /* one of ATOM_TONGA_PP_THERMALCONTROLLER_* */ |
351 | UCHAR ucI2cLine; /* as interpreted by DAL I2C */ |
352 | UCHAR ucI2cAddress; |
353 | UCHAR ucFanParameters; /* Fan Control Parameters. */ |
354 | UCHAR ucFanMinRPM; /* Fan Minimum RPM (hundreds) -- for display purposes only. */ |
355 | UCHAR ucFanMaxRPM; /* Fan Maximum RPM (hundreds) -- for display purposes only. */ |
356 | UCHAR ucReserved; |
357 | UCHAR ucFlags; /* to be defined */ |
358 | } ATOM_Tonga_Thermal_Controller; |
359 | |
360 | typedef struct _ATOM_Tonga_VCE_State_Record { |
361 | UCHAR ucVCEClockIndex; /*index into usVCEDependencyTableOffset of 'ATOM_Tonga_MM_Dependency_Table' type */ |
362 | UCHAR ucFlag; /* 2 bits indicates memory p-states */ |
363 | UCHAR ucSCLKIndex; /*index into ATOM_Tonga_SCLK_Dependency_Table */ |
364 | UCHAR ucMCLKIndex; /*index into ATOM_Tonga_MCLK_Dependency_Table */ |
365 | } ATOM_Tonga_VCE_State_Record; |
366 | |
367 | typedef struct _ATOM_Tonga_VCE_State_Table { |
368 | UCHAR ucRevId; |
369 | UCHAR ucNumEntries; |
370 | ATOM_Tonga_VCE_State_Record entries[]; |
371 | } ATOM_Tonga_VCE_State_Table; |
372 | |
373 | typedef struct _ATOM_Tonga_PowerTune_Table { |
374 | UCHAR ucRevId; |
375 | USHORT usTDP; |
376 | USHORT usConfigurableTDP; |
377 | USHORT usTDC; |
378 | USHORT usBatteryPowerLimit; |
379 | USHORT usSmallPowerLimit; |
380 | USHORT usLowCACLeakage; |
381 | USHORT usHighCACLeakage; |
382 | USHORT usMaximumPowerDeliveryLimit; |
383 | USHORT usTjMax; |
384 | USHORT usPowerTuneDataSetID; |
385 | USHORT usEDCLimit; |
386 | USHORT usSoftwareShutdownTemp; |
387 | USHORT usClockStretchAmount; |
388 | USHORT usReserve[2]; |
389 | } ATOM_Tonga_PowerTune_Table; |
390 | |
391 | typedef struct _ATOM_Fiji_PowerTune_Table { |
392 | UCHAR ucRevId; |
393 | USHORT usTDP; |
394 | USHORT usConfigurableTDP; |
395 | USHORT usTDC; |
396 | USHORT usBatteryPowerLimit; |
397 | USHORT usSmallPowerLimit; |
398 | USHORT usLowCACLeakage; |
399 | USHORT usHighCACLeakage; |
400 | USHORT usMaximumPowerDeliveryLimit; |
401 | USHORT usTjMax; /* For Fiji, this is also usTemperatureLimitEdge; */ |
402 | USHORT usPowerTuneDataSetID; |
403 | USHORT usEDCLimit; |
404 | USHORT usSoftwareShutdownTemp; |
405 | USHORT usClockStretchAmount; |
406 | USHORT usTemperatureLimitHotspot; /*The following are added for Fiji */ |
407 | USHORT usTemperatureLimitLiquid1; |
408 | USHORT usTemperatureLimitLiquid2; |
409 | USHORT usTemperatureLimitVrVddc; |
410 | USHORT usTemperatureLimitVrMvdd; |
411 | USHORT usTemperatureLimitPlx; |
412 | UCHAR ucLiquid1_I2C_address; /*Liquid */ |
413 | UCHAR ucLiquid2_I2C_address; |
414 | UCHAR ucLiquid_I2C_Line; |
415 | UCHAR ucVr_I2C_address; /*VR */ |
416 | UCHAR ucVr_I2C_Line; |
417 | UCHAR ucPlx_I2C_address; /*PLX */ |
418 | UCHAR ucPlx_I2C_Line; |
419 | USHORT usReserved; |
420 | } ATOM_Fiji_PowerTune_Table; |
421 | |
422 | typedef struct _ATOM_Polaris_PowerTune_Table { |
423 | UCHAR ucRevId; |
424 | USHORT usTDP; |
425 | USHORT usConfigurableTDP; |
426 | USHORT usTDC; |
427 | USHORT usBatteryPowerLimit; |
428 | USHORT usSmallPowerLimit; |
429 | USHORT usLowCACLeakage; |
430 | USHORT usHighCACLeakage; |
431 | USHORT usMaximumPowerDeliveryLimit; |
432 | USHORT usTjMax; // For Fiji, this is also usTemperatureLimitEdge; |
433 | USHORT usPowerTuneDataSetID; |
434 | USHORT usEDCLimit; |
435 | USHORT usSoftwareShutdownTemp; |
436 | USHORT usClockStretchAmount; |
437 | USHORT usTemperatureLimitHotspot; //The following are added for Fiji |
438 | USHORT usTemperatureLimitLiquid1; |
439 | USHORT usTemperatureLimitLiquid2; |
440 | USHORT usTemperatureLimitVrVddc; |
441 | USHORT usTemperatureLimitVrMvdd; |
442 | USHORT usTemperatureLimitPlx; |
443 | UCHAR ucLiquid1_I2C_address; //Liquid |
444 | UCHAR ucLiquid2_I2C_address; |
445 | UCHAR ucLiquid_I2C_Line; |
446 | UCHAR ucVr_I2C_address; //VR |
447 | UCHAR ucVr_I2C_Line; |
448 | UCHAR ucPlx_I2C_address; //PLX |
449 | UCHAR ucPlx_I2C_Line; |
450 | USHORT usBoostPowerLimit; |
451 | UCHAR ucCKS_LDO_REFSEL; |
452 | UCHAR ucHotSpotOnly; |
453 | UCHAR ucReserve; |
454 | USHORT usReserve; |
455 | } ATOM_Polaris_PowerTune_Table; |
456 | |
457 | #define ATOM_PPM_A_A 1 |
458 | #define ATOM_PPM_A_I 2 |
459 | typedef struct _ATOM_Tonga_PPM_Table { |
460 | UCHAR ucRevId; |
461 | UCHAR ucPpmDesign; /*A+I or A+A */ |
462 | USHORT usCpuCoreNumber; |
463 | ULONG ulPlatformTDP; |
464 | ULONG ulSmallACPlatformTDP; |
465 | ULONG ulPlatformTDC; |
466 | ULONG ulSmallACPlatformTDC; |
467 | ULONG ulApuTDP; |
468 | ULONG ulDGpuTDP; |
469 | ULONG ulDGpuUlvPower; |
470 | ULONG ulTjmax; |
471 | } ATOM_Tonga_PPM_Table; |
472 | |
473 | typedef struct _ATOM_Tonga_Hard_Limit_Record { |
474 | ULONG ulSCLKLimit; |
475 | ULONG ulMCLKLimit; |
476 | USHORT usVddcLimit; |
477 | USHORT usVddciLimit; |
478 | USHORT usVddgfxLimit; |
479 | } ATOM_Tonga_Hard_Limit_Record; |
480 | |
481 | typedef struct _ATOM_Tonga_Hard_Limit_Table { |
482 | UCHAR ucRevId; |
483 | UCHAR ucNumEntries; |
484 | ATOM_Tonga_Hard_Limit_Record entries[]; |
485 | } ATOM_Tonga_Hard_Limit_Table; |
486 | |
487 | typedef struct _ATOM_Tonga_GPIO_Table { |
488 | UCHAR ucRevId; |
489 | UCHAR ucVRHotTriggeredSclkDpmIndex; /* If VRHot signal is triggered SCLK will be limited to this DPM level */ |
490 | UCHAR ucReserve[5]; |
491 | } ATOM_Tonga_GPIO_Table; |
492 | |
493 | typedef struct { |
494 | UCHAR ; |
495 | } ; |
496 | |
497 | |
498 | #pragma pack(pop) |
499 | |
500 | |
501 | #endif |
502 | |