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 sHeader; 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[1]; /* 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[1]; /* 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[1]; /* 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[1]; /* 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[1]; /* 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[1]; /* 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[1]; /* 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[1]; /* 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_Tonga_Thermal_Controller { 319 UCHAR ucRevId; 320 UCHAR ucType; /* one of ATOM_TONGA_PP_THERMALCONTROLLER_* */ 321 UCHAR ucI2cLine; /* as interpreted by DAL I2C */ 322 UCHAR ucI2cAddress; 323 UCHAR ucFanParameters; /* Fan Control Parameters. */ 324 UCHAR ucFanMinRPM; /* Fan Minimum RPM (hundreds) -- for display purposes only. */ 325 UCHAR ucFanMaxRPM; /* Fan Maximum RPM (hundreds) -- for display purposes only. */ 326 UCHAR ucReserved; 327 UCHAR ucFlags; /* to be defined */ 328 } ATOM_Tonga_Thermal_Controller; 329 330 typedef struct _ATOM_Tonga_VCE_State_Record { 331 UCHAR ucVCEClockIndex; /*index into usVCEDependencyTableOffset of 'ATOM_Tonga_MM_Dependency_Table' type */ 332 UCHAR ucFlag; /* 2 bits indicates memory p-states */ 333 UCHAR ucSCLKIndex; /*index into ATOM_Tonga_SCLK_Dependency_Table */ 334 UCHAR ucMCLKIndex; /*index into ATOM_Tonga_MCLK_Dependency_Table */ 335 } ATOM_Tonga_VCE_State_Record; 336 337 typedef struct _ATOM_Tonga_VCE_State_Table { 338 UCHAR ucRevId; 339 UCHAR ucNumEntries; 340 ATOM_Tonga_VCE_State_Record entries[1]; 341 } ATOM_Tonga_VCE_State_Table; 342 343 typedef struct _ATOM_Tonga_PowerTune_Table { 344 UCHAR ucRevId; 345 USHORT usTDP; 346 USHORT usConfigurableTDP; 347 USHORT usTDC; 348 USHORT usBatteryPowerLimit; 349 USHORT usSmallPowerLimit; 350 USHORT usLowCACLeakage; 351 USHORT usHighCACLeakage; 352 USHORT usMaximumPowerDeliveryLimit; 353 USHORT usTjMax; 354 USHORT usPowerTuneDataSetID; 355 USHORT usEDCLimit; 356 USHORT usSoftwareShutdownTemp; 357 USHORT usClockStretchAmount; 358 USHORT usReserve[2]; 359 } ATOM_Tonga_PowerTune_Table; 360 361 typedef struct _ATOM_Fiji_PowerTune_Table { 362 UCHAR ucRevId; 363 USHORT usTDP; 364 USHORT usConfigurableTDP; 365 USHORT usTDC; 366 USHORT usBatteryPowerLimit; 367 USHORT usSmallPowerLimit; 368 USHORT usLowCACLeakage; 369 USHORT usHighCACLeakage; 370 USHORT usMaximumPowerDeliveryLimit; 371 USHORT usTjMax; /* For Fiji, this is also usTemperatureLimitEdge; */ 372 USHORT usPowerTuneDataSetID; 373 USHORT usEDCLimit; 374 USHORT usSoftwareShutdownTemp; 375 USHORT usClockStretchAmount; 376 USHORT usTemperatureLimitHotspot; /*The following are added for Fiji */ 377 USHORT usTemperatureLimitLiquid1; 378 USHORT usTemperatureLimitLiquid2; 379 USHORT usTemperatureLimitVrVddc; 380 USHORT usTemperatureLimitVrMvdd; 381 USHORT usTemperatureLimitPlx; 382 UCHAR ucLiquid1_I2C_address; /*Liquid */ 383 UCHAR ucLiquid2_I2C_address; 384 UCHAR ucLiquid_I2C_Line; 385 UCHAR ucVr_I2C_address; /*VR */ 386 UCHAR ucVr_I2C_Line; 387 UCHAR ucPlx_I2C_address; /*PLX */ 388 UCHAR ucPlx_I2C_Line; 389 USHORT usReserved; 390 } ATOM_Fiji_PowerTune_Table; 391 392 #define ATOM_PPM_A_A 1 393 #define ATOM_PPM_A_I 2 394 typedef struct _ATOM_Tonga_PPM_Table { 395 UCHAR ucRevId; 396 UCHAR ucPpmDesign; /*A+I or A+A */ 397 USHORT usCpuCoreNumber; 398 ULONG ulPlatformTDP; 399 ULONG ulSmallACPlatformTDP; 400 ULONG ulPlatformTDC; 401 ULONG ulSmallACPlatformTDC; 402 ULONG ulApuTDP; 403 ULONG ulDGpuTDP; 404 ULONG ulDGpuUlvPower; 405 ULONG ulTjmax; 406 } ATOM_Tonga_PPM_Table; 407 408 typedef struct _ATOM_Tonga_Hard_Limit_Record { 409 ULONG ulSCLKLimit; 410 ULONG ulMCLKLimit; 411 USHORT usVddcLimit; 412 USHORT usVddciLimit; 413 USHORT usVddgfxLimit; 414 } ATOM_Tonga_Hard_Limit_Record; 415 416 typedef struct _ATOM_Tonga_Hard_Limit_Table { 417 UCHAR ucRevId; 418 UCHAR ucNumEntries; 419 ATOM_Tonga_Hard_Limit_Record entries[1]; 420 } ATOM_Tonga_Hard_Limit_Table; 421 422 typedef struct _ATOM_Tonga_GPIO_Table { 423 UCHAR ucRevId; 424 UCHAR ucVRHotTriggeredSclkDpmIndex; /* If VRHot signal is triggered SCLK will be limited to this DPM level */ 425 UCHAR ucReserve[5]; 426 } ATOM_Tonga_GPIO_Table; 427 428 typedef struct _PPTable_Generic_SubTable_Header { 429 UCHAR ucRevId; 430 } PPTable_Generic_SubTable_Header; 431 432 433 #pragma pack(pop) 434 435 436 #endif 437