0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #ifndef _PPTABLE_H
0024 #define _PPTABLE_H
0025
0026 #pragma pack(1)
0027
0028 typedef struct _ATOM_PPLIB_THERMALCONTROLLER
0029
0030 {
0031 UCHAR ucType;
0032 UCHAR ucI2cLine;
0033 UCHAR ucI2cAddress;
0034 UCHAR ucFanParameters;
0035 UCHAR ucFanMinRPM;
0036 UCHAR ucFanMaxRPM;
0037 UCHAR ucReserved;
0038 UCHAR ucFlags;
0039 } ATOM_PPLIB_THERMALCONTROLLER;
0040
0041 #define ATOM_PP_FANPARAMETERS_TACHOMETER_PULSES_PER_REVOLUTION_MASK 0x0f
0042 #define ATOM_PP_FANPARAMETERS_NOFAN 0x80
0043
0044 #define ATOM_PP_THERMALCONTROLLER_NONE 0
0045 #define ATOM_PP_THERMALCONTROLLER_LM63 1
0046 #define ATOM_PP_THERMALCONTROLLER_ADM1032 2
0047 #define ATOM_PP_THERMALCONTROLLER_ADM1030 3
0048 #define ATOM_PP_THERMALCONTROLLER_MUA6649 4
0049 #define ATOM_PP_THERMALCONTROLLER_LM64 5
0050 #define ATOM_PP_THERMALCONTROLLER_F75375 6
0051 #define ATOM_PP_THERMALCONTROLLER_RV6xx 7
0052 #define ATOM_PP_THERMALCONTROLLER_RV770 8
0053 #define ATOM_PP_THERMALCONTROLLER_ADT7473 9
0054 #define ATOM_PP_THERMALCONTROLLER_KONG 10
0055 #define ATOM_PP_THERMALCONTROLLER_EXTERNAL_GPIO 11
0056 #define ATOM_PP_THERMALCONTROLLER_EVERGREEN 12
0057 #define ATOM_PP_THERMALCONTROLLER_EMC2103 13
0058 #define ATOM_PP_THERMALCONTROLLER_SUMO 14
0059 #define ATOM_PP_THERMALCONTROLLER_NISLANDS 15
0060 #define ATOM_PP_THERMALCONTROLLER_SISLANDS 16
0061 #define ATOM_PP_THERMALCONTROLLER_LM96163 17
0062 #define ATOM_PP_THERMALCONTROLLER_CISLANDS 18
0063 #define ATOM_PP_THERMALCONTROLLER_KAVERI 19
0064 #define ATOM_PP_THERMALCONTROLLER_ICELAND 20
0065 #define ATOM_PP_THERMALCONTROLLER_TONGA 21
0066 #define ATOM_PP_THERMALCONTROLLER_FIJI 22
0067 #define ATOM_PP_THERMALCONTROLLER_POLARIS10 23
0068 #define ATOM_PP_THERMALCONTROLLER_VEGA10 24
0069
0070
0071
0072
0073
0074
0075 #define ATOM_PP_THERMALCONTROLLER_ADT7473_WITH_INTERNAL 0x89
0076 #define ATOM_PP_THERMALCONTROLLER_EMC2103_WITH_INTERNAL 0x8D
0077
0078 typedef struct _ATOM_PPLIB_STATE
0079 {
0080 UCHAR ucNonClockStateIndex;
0081 UCHAR ucClockStateIndices[1];
0082 } ATOM_PPLIB_STATE;
0083
0084
0085 typedef struct _ATOM_PPLIB_FANTABLE
0086 {
0087 UCHAR ucFanTableFormat;
0088 UCHAR ucTHyst;
0089 USHORT usTMin;
0090 USHORT usTMed;
0091 USHORT usTHigh;
0092 USHORT usPWMMin;
0093 USHORT usPWMMed;
0094 USHORT usPWMHigh;
0095 } ATOM_PPLIB_FANTABLE;
0096
0097 typedef struct _ATOM_PPLIB_FANTABLE2
0098 {
0099 ATOM_PPLIB_FANTABLE basicTable;
0100 USHORT usTMax;
0101 } ATOM_PPLIB_FANTABLE2;
0102
0103 typedef struct _ATOM_PPLIB_FANTABLE3
0104 {
0105 ATOM_PPLIB_FANTABLE2 basicTable2;
0106 UCHAR ucFanControlMode;
0107 USHORT usFanPWMMax;
0108 USHORT usFanOutputSensitivity;
0109 } ATOM_PPLIB_FANTABLE3;
0110
0111 typedef struct _ATOM_PPLIB_FANTABLE4
0112 {
0113 ATOM_PPLIB_FANTABLE3 basicTable3;
0114 USHORT usFanRPMMax;
0115 } ATOM_PPLIB_FANTABLE4;
0116
0117 typedef struct _ATOM_PPLIB_FANTABLE5
0118 {
0119 ATOM_PPLIB_FANTABLE4 basicTable4;
0120 USHORT usFanCurrentLow;
0121 USHORT usFanCurrentHigh;
0122 USHORT usFanRPMLow;
0123 USHORT usFanRPMHigh;
0124 } ATOM_PPLIB_FANTABLE5;
0125
0126 typedef struct _ATOM_PPLIB_EXTENDEDHEADER
0127 {
0128 USHORT usSize;
0129 ULONG ulMaxEngineClock;
0130 ULONG ulMaxMemoryClock;
0131
0132 USHORT usVCETableOffset;
0133 USHORT usUVDTableOffset;
0134 USHORT usSAMUTableOffset;
0135 USHORT usPPMTableOffset;
0136 USHORT usACPTableOffset;
0137
0138 USHORT usPowerTuneTableOffset;
0139
0140 USHORT usSclkVddgfxTableOffset;
0141 USHORT usVQBudgetingTableOffset;
0142 } ATOM_PPLIB_EXTENDEDHEADER;
0143
0144
0145 #define ATOM_PP_PLATFORM_CAP_BACKBIAS 1
0146 #define ATOM_PP_PLATFORM_CAP_POWERPLAY 2
0147 #define ATOM_PP_PLATFORM_CAP_SBIOSPOWERSOURCE 4
0148 #define ATOM_PP_PLATFORM_CAP_ASPM_L0s 8
0149 #define ATOM_PP_PLATFORM_CAP_ASPM_L1 16
0150 #define ATOM_PP_PLATFORM_CAP_HARDWAREDC 32
0151 #define ATOM_PP_PLATFORM_CAP_GEMINIPRIMARY 64
0152 #define ATOM_PP_PLATFORM_CAP_STEPVDDC 128
0153 #define ATOM_PP_PLATFORM_CAP_VOLTAGECONTROL 256
0154 #define ATOM_PP_PLATFORM_CAP_SIDEPORTCONTROL 512
0155 #define ATOM_PP_PLATFORM_CAP_TURNOFFPLL_ASPML1 1024
0156 #define ATOM_PP_PLATFORM_CAP_HTLINKCONTROL 2048
0157 #define ATOM_PP_PLATFORM_CAP_MVDDCONTROL 4096
0158 #define ATOM_PP_PLATFORM_CAP_GOTO_BOOT_ON_ALERT 0x2000
0159 #define ATOM_PP_PLATFORM_CAP_DONT_WAIT_FOR_VBLANK_ON_ALERT 0x4000
0160 #define ATOM_PP_PLATFORM_CAP_VDDCI_CONTROL 0x8000
0161 #define ATOM_PP_PLATFORM_CAP_REGULATOR_HOT 0x00010000
0162 #define ATOM_PP_PLATFORM_CAP_BACO 0x00020000
0163 #define ATOM_PP_PLATFORM_CAP_NEW_CAC_VOLTAGE 0x00040000
0164 #define ATOM_PP_PLATFORM_CAP_REVERT_GPIO5_POLARITY 0x00080000
0165 #define ATOM_PP_PLATFORM_CAP_OUTPUT_THERMAL2GPIO17 0x00100000
0166 #define ATOM_PP_PLATFORM_CAP_VRHOT_GPIO_CONFIGURABLE 0x00200000
0167 #define ATOM_PP_PLATFORM_CAP_TEMP_INVERSION 0x00400000
0168 #define ATOM_PP_PLATFORM_CAP_EVV 0x00800000
0169 #define ATOM_PP_PLATFORM_COMBINE_PCC_WITH_THERMAL_SIGNAL 0x01000000
0170 #define ATOM_PP_PLATFORM_LOAD_POST_PRODUCTION_FIRMWARE 0x02000000
0171 #define ATOM_PP_PLATFORM_CAP_DISABLE_USING_ACTUAL_TEMPERATURE_FOR_POWER_CALC 0x04000000
0172 #define ATOM_PP_PLATFORM_CAP_VRHOT_POLARITY_HIGH 0x08000000
0173
0174 typedef struct _ATOM_PPLIB_POWERPLAYTABLE
0175 {
0176 ATOM_COMMON_TABLE_HEADER sHeader;
0177
0178 UCHAR ucDataRevision;
0179
0180 UCHAR ucNumStates;
0181 UCHAR ucStateEntrySize;
0182 UCHAR ucClockInfoSize;
0183 UCHAR ucNonClockSize;
0184
0185
0186 USHORT usStateArrayOffset;
0187
0188
0189
0190 USHORT usClockInfoArrayOffset;
0191
0192
0193 USHORT usNonClockInfoArrayOffset;
0194
0195 USHORT usBackbiasTime;
0196 USHORT usVoltageTime;
0197 USHORT usTableSize;
0198
0199 ULONG ulPlatformCaps;
0200
0201 ATOM_PPLIB_THERMALCONTROLLER sThermalController;
0202
0203 USHORT usBootClockInfoOffset;
0204 USHORT usBootNonClockInfoOffset;
0205
0206 } ATOM_PPLIB_POWERPLAYTABLE;
0207
0208 typedef struct _ATOM_PPLIB_POWERPLAYTABLE2
0209 {
0210 ATOM_PPLIB_POWERPLAYTABLE basicTable;
0211 UCHAR ucNumCustomThermalPolicy;
0212 USHORT usCustomThermalPolicyArrayOffset;
0213 }ATOM_PPLIB_POWERPLAYTABLE2, *LPATOM_PPLIB_POWERPLAYTABLE2;
0214
0215 typedef struct _ATOM_PPLIB_POWERPLAYTABLE3
0216 {
0217 ATOM_PPLIB_POWERPLAYTABLE2 basicTable2;
0218 USHORT usFormatID;
0219 USHORT usFanTableOffset;
0220 USHORT usExtendendedHeaderOffset;
0221 } ATOM_PPLIB_POWERPLAYTABLE3, *LPATOM_PPLIB_POWERPLAYTABLE3;
0222
0223 typedef struct _ATOM_PPLIB_POWERPLAYTABLE4
0224 {
0225 ATOM_PPLIB_POWERPLAYTABLE3 basicTable3;
0226 ULONG ulGoldenPPID;
0227 ULONG ulGoldenRevision;
0228 USHORT usVddcDependencyOnSCLKOffset;
0229 USHORT usVddciDependencyOnMCLKOffset;
0230 USHORT usVddcDependencyOnMCLKOffset;
0231 USHORT usMaxClockVoltageOnDCOffset;
0232 USHORT usVddcPhaseShedLimitsTableOffset;
0233 USHORT usMvddDependencyOnMCLKOffset;
0234 } ATOM_PPLIB_POWERPLAYTABLE4, *LPATOM_PPLIB_POWERPLAYTABLE4;
0235
0236 typedef struct _ATOM_PPLIB_POWERPLAYTABLE5
0237 {
0238 ATOM_PPLIB_POWERPLAYTABLE4 basicTable4;
0239 ULONG ulTDPLimit;
0240 ULONG ulNearTDPLimit;
0241 ULONG ulSQRampingThreshold;
0242 USHORT usCACLeakageTableOffset;
0243 ULONG ulCACLeakage;
0244 USHORT usTDPODLimit;
0245 USHORT usLoadLineSlope;
0246 } ATOM_PPLIB_POWERPLAYTABLE5, *LPATOM_PPLIB_POWERPLAYTABLE5;
0247
0248
0249 #define ATOM_PPLIB_CLASSIFICATION_UI_MASK 0x0007
0250 #define ATOM_PPLIB_CLASSIFICATION_UI_SHIFT 0
0251 #define ATOM_PPLIB_CLASSIFICATION_UI_NONE 0
0252 #define ATOM_PPLIB_CLASSIFICATION_UI_BATTERY 1
0253 #define ATOM_PPLIB_CLASSIFICATION_UI_BALANCED 3
0254 #define ATOM_PPLIB_CLASSIFICATION_UI_PERFORMANCE 5
0255
0256
0257 #define ATOM_PPLIB_CLASSIFICATION_BOOT 0x0008
0258 #define ATOM_PPLIB_CLASSIFICATION_THERMAL 0x0010
0259 #define ATOM_PPLIB_CLASSIFICATION_LIMITEDPOWERSOURCE 0x0020
0260 #define ATOM_PPLIB_CLASSIFICATION_REST 0x0040
0261 #define ATOM_PPLIB_CLASSIFICATION_FORCED 0x0080
0262 #define ATOM_PPLIB_CLASSIFICATION_3DPERFORMANCE 0x0100
0263 #define ATOM_PPLIB_CLASSIFICATION_OVERDRIVETEMPLATE 0x0200
0264 #define ATOM_PPLIB_CLASSIFICATION_UVDSTATE 0x0400
0265 #define ATOM_PPLIB_CLASSIFICATION_3DLOW 0x0800
0266 #define ATOM_PPLIB_CLASSIFICATION_ACPI 0x1000
0267 #define ATOM_PPLIB_CLASSIFICATION_HD2STATE 0x2000
0268 #define ATOM_PPLIB_CLASSIFICATION_HDSTATE 0x4000
0269 #define ATOM_PPLIB_CLASSIFICATION_SDSTATE 0x8000
0270
0271
0272 #define ATOM_PPLIB_CLASSIFICATION2_LIMITEDPOWERSOURCE_2 0x0001
0273 #define ATOM_PPLIB_CLASSIFICATION2_ULV 0x0002
0274 #define ATOM_PPLIB_CLASSIFICATION2_MVC 0x0004
0275
0276
0277 #define ATOM_PPLIB_SINGLE_DISPLAY_ONLY 0x00000001
0278 #define ATOM_PPLIB_SUPPORTS_VIDEO_PLAYBACK 0x00000002
0279
0280
0281 #define ATOM_PPLIB_PCIE_LINK_SPEED_MASK 0x00000004
0282 #define ATOM_PPLIB_PCIE_LINK_SPEED_SHIFT 2
0283
0284
0285 #define ATOM_PPLIB_PCIE_LINK_WIDTH_MASK 0x000000F8
0286 #define ATOM_PPLIB_PCIE_LINK_WIDTH_SHIFT 3
0287
0288
0289 #define ATOM_PPLIB_LIMITED_REFRESHRATE_VALUE_MASK 0x00000F00
0290 #define ATOM_PPLIB_LIMITED_REFRESHRATE_VALUE_SHIFT 8
0291
0292 #define ATOM_PPLIB_LIMITED_REFRESHRATE_UNLIMITED 0
0293 #define ATOM_PPLIB_LIMITED_REFRESHRATE_50HZ 1
0294
0295
0296 #define ATOM_PPLIB_SOFTWARE_DISABLE_LOADBALANCING 0x00001000
0297 #define ATOM_PPLIB_SOFTWARE_ENABLE_SLEEP_FOR_TIMESTAMPS 0x00002000
0298
0299 #define ATOM_PPLIB_DISALLOW_ON_DC 0x00004000
0300
0301 #define ATOM_PPLIB_ENABLE_VARIBRIGHT 0x00008000
0302
0303
0304 #define ATOM_PPLIB_SWSTATE_MEMORY_DLL_OFF 0x000010000
0305
0306
0307 #define ATOM_PPLIB_M3ARB_MASK 0x00060000
0308 #define ATOM_PPLIB_M3ARB_SHIFT 17
0309
0310 #define ATOM_PPLIB_ENABLE_DRR 0x00080000
0311
0312
0313 typedef struct _ATOM_PPLIB_THERMAL_STATE
0314 {
0315 UCHAR ucMinTemperature;
0316 UCHAR ucMaxTemperature;
0317 UCHAR ucThermalAction;
0318 }ATOM_PPLIB_THERMAL_STATE, *LPATOM_PPLIB_THERMAL_STATE;
0319
0320
0321
0322
0323 #define ATOM_PPLIB_NONCLOCKINFO_VER1 12
0324 #define ATOM_PPLIB_NONCLOCKINFO_VER2 24
0325 typedef struct _ATOM_PPLIB_NONCLOCK_INFO
0326 {
0327 USHORT usClassification;
0328 UCHAR ucMinTemperature;
0329 UCHAR ucMaxTemperature;
0330 ULONG ulCapsAndSettings;
0331 UCHAR ucRequiredPower;
0332 USHORT usClassification2;
0333 ULONG ulVCLK;
0334 ULONG ulDCLK;
0335 UCHAR ucUnused[5];
0336 } ATOM_PPLIB_NONCLOCK_INFO;
0337
0338
0339
0340
0341 typedef struct _ATOM_PPLIB_R600_CLOCK_INFO
0342 {
0343 USHORT usEngineClockLow;
0344 UCHAR ucEngineClockHigh;
0345
0346 USHORT usMemoryClockLow;
0347 UCHAR ucMemoryClockHigh;
0348
0349 USHORT usVDDC;
0350 USHORT usUnused1;
0351 USHORT usUnused2;
0352
0353 ULONG ulFlags;
0354
0355 } ATOM_PPLIB_R600_CLOCK_INFO;
0356
0357
0358 #define ATOM_PPLIB_R600_FLAGS_PCIEGEN2 1
0359 #define ATOM_PPLIB_R600_FLAGS_UVDSAFE 2
0360 #define ATOM_PPLIB_R600_FLAGS_BACKBIASENABLE 4
0361 #define ATOM_PPLIB_R600_FLAGS_MEMORY_ODT_OFF 8
0362 #define ATOM_PPLIB_R600_FLAGS_MEMORY_DLL_OFF 16
0363 #define ATOM_PPLIB_R600_FLAGS_LOWPOWER 32
0364
0365 typedef struct _ATOM_PPLIB_RS780_CLOCK_INFO
0366
0367 {
0368 USHORT usLowEngineClockLow;
0369 UCHAR ucLowEngineClockHigh;
0370 USHORT usHighEngineClockLow;
0371 UCHAR ucHighEngineClockHigh;
0372 USHORT usMemoryClockLow;
0373 UCHAR ucMemoryClockHigh;
0374 UCHAR ucPadding;
0375 USHORT usVDDC;
0376 UCHAR ucMaxHTLinkWidth;
0377 UCHAR ucMinHTLinkWidth;
0378 USHORT usHTLinkFreq;
0379 ULONG ulFlags;
0380 } ATOM_PPLIB_RS780_CLOCK_INFO;
0381
0382 #define ATOM_PPLIB_RS780_VOLTAGE_NONE 0
0383 #define ATOM_PPLIB_RS780_VOLTAGE_LOW 1
0384 #define ATOM_PPLIB_RS780_VOLTAGE_HIGH 2
0385 #define ATOM_PPLIB_RS780_VOLTAGE_VARIABLE 3
0386
0387 #define ATOM_PPLIB_RS780_SPMCLK_NONE 0
0388 #define ATOM_PPLIB_RS780_SPMCLK_LOW 1
0389 #define ATOM_PPLIB_RS780_SPMCLK_HIGH 2
0390
0391 #define ATOM_PPLIB_RS780_HTLINKFREQ_NONE 0
0392 #define ATOM_PPLIB_RS780_HTLINKFREQ_LOW 1
0393 #define ATOM_PPLIB_RS780_HTLINKFREQ_HIGH 2
0394
0395 typedef struct _ATOM_PPLIB_EVERGREEN_CLOCK_INFO
0396 {
0397 USHORT usEngineClockLow;
0398 UCHAR ucEngineClockHigh;
0399
0400 USHORT usMemoryClockLow;
0401 UCHAR ucMemoryClockHigh;
0402
0403 USHORT usVDDC;
0404 USHORT usVDDCI;
0405 USHORT usUnused;
0406
0407 ULONG ulFlags;
0408
0409 } ATOM_PPLIB_EVERGREEN_CLOCK_INFO;
0410
0411 typedef struct _ATOM_PPLIB_SI_CLOCK_INFO
0412 {
0413 USHORT usEngineClockLow;
0414 UCHAR ucEngineClockHigh;
0415
0416 USHORT usMemoryClockLow;
0417 UCHAR ucMemoryClockHigh;
0418
0419 USHORT usVDDC;
0420 USHORT usVDDCI;
0421 UCHAR ucPCIEGen;
0422 UCHAR ucUnused1;
0423
0424 ULONG ulFlags;
0425
0426 } ATOM_PPLIB_SI_CLOCK_INFO;
0427
0428 typedef struct _ATOM_PPLIB_CI_CLOCK_INFO
0429 {
0430 USHORT usEngineClockLow;
0431 UCHAR ucEngineClockHigh;
0432
0433 USHORT usMemoryClockLow;
0434 UCHAR ucMemoryClockHigh;
0435
0436 UCHAR ucPCIEGen;
0437 USHORT usPCIELane;
0438 } ATOM_PPLIB_CI_CLOCK_INFO;
0439
0440 typedef struct _ATOM_PPLIB_SUMO_CLOCK_INFO{
0441 USHORT usEngineClockLow;
0442 UCHAR ucEngineClockHigh;
0443 UCHAR vddcIndex;
0444 USHORT tdpLimit;
0445
0446 USHORT rsv1;
0447
0448 ULONG rsv2[2];
0449 }ATOM_PPLIB_SUMO_CLOCK_INFO;
0450
0451 typedef struct _ATOM_PPLIB_KV_CLOCK_INFO {
0452 USHORT usEngineClockLow;
0453 UCHAR ucEngineClockHigh;
0454 UCHAR vddcIndex;
0455 USHORT tdpLimit;
0456 USHORT rsv1;
0457 ULONG rsv2[2];
0458 } ATOM_PPLIB_KV_CLOCK_INFO;
0459
0460 typedef struct _ATOM_PPLIB_CZ_CLOCK_INFO {
0461 UCHAR index;
0462 UCHAR rsv[3];
0463 } ATOM_PPLIB_CZ_CLOCK_INFO;
0464
0465 typedef struct _ATOM_PPLIB_STATE_V2
0466 {
0467
0468
0469 UCHAR ucNumDPMLevels;
0470
0471
0472 UCHAR nonClockInfoIndex;
0473
0474
0475
0476 UCHAR clockInfoIndex[1];
0477 } ATOM_PPLIB_STATE_V2;
0478
0479 typedef struct _StateArray{
0480
0481 UCHAR ucNumEntries;
0482
0483 ATOM_PPLIB_STATE_V2 states[1];
0484 }StateArray;
0485
0486
0487 typedef struct _ClockInfoArray{
0488
0489 UCHAR ucNumEntries;
0490
0491
0492 UCHAR ucEntrySize;
0493
0494 UCHAR clockInfo[1];
0495 }ClockInfoArray;
0496
0497 typedef struct _NonClockInfoArray{
0498
0499
0500 UCHAR ucNumEntries;
0501
0502 UCHAR ucEntrySize;
0503
0504 ATOM_PPLIB_NONCLOCK_INFO nonClockInfo[1];
0505 }NonClockInfoArray;
0506
0507 typedef struct _ATOM_PPLIB_Clock_Voltage_Dependency_Record
0508 {
0509 USHORT usClockLow;
0510 UCHAR ucClockHigh;
0511 USHORT usVoltage;
0512 }ATOM_PPLIB_Clock_Voltage_Dependency_Record;
0513
0514 typedef struct _ATOM_PPLIB_Clock_Voltage_Dependency_Table
0515 {
0516 UCHAR ucNumEntries;
0517 ATOM_PPLIB_Clock_Voltage_Dependency_Record entries[1];
0518 }ATOM_PPLIB_Clock_Voltage_Dependency_Table;
0519
0520 typedef struct _ATOM_PPLIB_Clock_Voltage_Limit_Record
0521 {
0522 USHORT usSclkLow;
0523 UCHAR ucSclkHigh;
0524 USHORT usMclkLow;
0525 UCHAR ucMclkHigh;
0526 USHORT usVddc;
0527 USHORT usVddci;
0528 }ATOM_PPLIB_Clock_Voltage_Limit_Record;
0529
0530 typedef struct _ATOM_PPLIB_Clock_Voltage_Limit_Table
0531 {
0532 UCHAR ucNumEntries;
0533 ATOM_PPLIB_Clock_Voltage_Limit_Record entries[1];
0534 }ATOM_PPLIB_Clock_Voltage_Limit_Table;
0535
0536 union _ATOM_PPLIB_CAC_Leakage_Record
0537 {
0538 struct
0539 {
0540 USHORT usVddc;
0541 ULONG ulLeakageValue;
0542
0543 };
0544 struct
0545 {
0546 USHORT usVddc1;
0547 USHORT usVddc2;
0548 USHORT usVddc3;
0549 };
0550 };
0551
0552 typedef union _ATOM_PPLIB_CAC_Leakage_Record ATOM_PPLIB_CAC_Leakage_Record;
0553
0554 typedef struct _ATOM_PPLIB_CAC_Leakage_Table
0555 {
0556 UCHAR ucNumEntries;
0557 ATOM_PPLIB_CAC_Leakage_Record entries[1];
0558 }ATOM_PPLIB_CAC_Leakage_Table;
0559
0560 typedef struct _ATOM_PPLIB_PhaseSheddingLimits_Record
0561 {
0562 USHORT usVoltage;
0563 USHORT usSclkLow;
0564 UCHAR ucSclkHigh;
0565 USHORT usMclkLow;
0566 UCHAR ucMclkHigh;
0567 }ATOM_PPLIB_PhaseSheddingLimits_Record;
0568
0569 typedef struct _ATOM_PPLIB_PhaseSheddingLimits_Table
0570 {
0571 UCHAR ucNumEntries;
0572 ATOM_PPLIB_PhaseSheddingLimits_Record entries[1];
0573 }ATOM_PPLIB_PhaseSheddingLimits_Table;
0574
0575 typedef struct _VCEClockInfo{
0576 USHORT usEVClkLow;
0577 UCHAR ucEVClkHigh;
0578 USHORT usECClkLow;
0579 UCHAR ucECClkHigh;
0580 }VCEClockInfo;
0581
0582 typedef struct _VCEClockInfoArray{
0583 UCHAR ucNumEntries;
0584 VCEClockInfo entries[1];
0585 }VCEClockInfoArray;
0586
0587 typedef struct _ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record
0588 {
0589 USHORT usVoltage;
0590 UCHAR ucVCEClockInfoIndex;
0591 }ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record;
0592
0593 typedef struct _ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table
0594 {
0595 UCHAR numEntries;
0596 ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record entries[1];
0597 }ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table;
0598
0599 typedef struct _ATOM_PPLIB_VCE_State_Record
0600 {
0601 UCHAR ucVCEClockInfoIndex;
0602 UCHAR ucClockInfoIndex;
0603 }ATOM_PPLIB_VCE_State_Record;
0604
0605 typedef struct _ATOM_PPLIB_VCE_State_Table
0606 {
0607 UCHAR numEntries;
0608 ATOM_PPLIB_VCE_State_Record entries[1];
0609 }ATOM_PPLIB_VCE_State_Table;
0610
0611
0612 typedef struct _ATOM_PPLIB_VCE_Table
0613 {
0614 UCHAR revid;
0615
0616
0617
0618 }ATOM_PPLIB_VCE_Table;
0619
0620
0621 typedef struct _UVDClockInfo{
0622 USHORT usVClkLow;
0623 UCHAR ucVClkHigh;
0624 USHORT usDClkLow;
0625 UCHAR ucDClkHigh;
0626 }UVDClockInfo;
0627
0628 typedef struct _UVDClockInfoArray{
0629 UCHAR ucNumEntries;
0630 UVDClockInfo entries[1];
0631 }UVDClockInfoArray;
0632
0633 typedef struct _ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record
0634 {
0635 USHORT usVoltage;
0636 UCHAR ucUVDClockInfoIndex;
0637 }ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record;
0638
0639 typedef struct _ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table
0640 {
0641 UCHAR numEntries;
0642 ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record entries[1];
0643 }ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table;
0644
0645 typedef struct _ATOM_PPLIB_UVD_Table
0646 {
0647 UCHAR revid;
0648
0649
0650 }ATOM_PPLIB_UVD_Table;
0651
0652 typedef struct _ATOM_PPLIB_SAMClk_Voltage_Limit_Record
0653 {
0654 USHORT usVoltage;
0655 USHORT usSAMClockLow;
0656 UCHAR ucSAMClockHigh;
0657 }ATOM_PPLIB_SAMClk_Voltage_Limit_Record;
0658
0659 typedef struct _ATOM_PPLIB_SAMClk_Voltage_Limit_Table{
0660 UCHAR numEntries;
0661 ATOM_PPLIB_SAMClk_Voltage_Limit_Record entries[1];
0662 }ATOM_PPLIB_SAMClk_Voltage_Limit_Table;
0663
0664 typedef struct _ATOM_PPLIB_SAMU_Table
0665 {
0666 UCHAR revid;
0667 ATOM_PPLIB_SAMClk_Voltage_Limit_Table limits;
0668 }ATOM_PPLIB_SAMU_Table;
0669
0670 typedef struct _ATOM_PPLIB_ACPClk_Voltage_Limit_Record
0671 {
0672 USHORT usVoltage;
0673 USHORT usACPClockLow;
0674 UCHAR ucACPClockHigh;
0675 }ATOM_PPLIB_ACPClk_Voltage_Limit_Record;
0676
0677 typedef struct _ATOM_PPLIB_ACPClk_Voltage_Limit_Table{
0678 UCHAR numEntries;
0679 ATOM_PPLIB_ACPClk_Voltage_Limit_Record entries[1];
0680 }ATOM_PPLIB_ACPClk_Voltage_Limit_Table;
0681
0682 typedef struct _ATOM_PPLIB_ACP_Table
0683 {
0684 UCHAR revid;
0685 ATOM_PPLIB_ACPClk_Voltage_Limit_Table limits;
0686 }ATOM_PPLIB_ACP_Table;
0687
0688 typedef struct _ATOM_PowerTune_Table{
0689 USHORT usTDP;
0690 USHORT usConfigurableTDP;
0691 USHORT usTDC;
0692 USHORT usBatteryPowerLimit;
0693 USHORT usSmallPowerLimit;
0694 USHORT usLowCACLeakage;
0695 USHORT usHighCACLeakage;
0696 }ATOM_PowerTune_Table;
0697
0698 typedef struct _ATOM_PPLIB_POWERTUNE_Table
0699 {
0700 UCHAR revid;
0701 ATOM_PowerTune_Table power_tune_table;
0702 }ATOM_PPLIB_POWERTUNE_Table;
0703
0704 typedef struct _ATOM_PPLIB_POWERTUNE_Table_V1
0705 {
0706 UCHAR revid;
0707 ATOM_PowerTune_Table power_tune_table;
0708 USHORT usMaximumPowerDeliveryLimit;
0709 USHORT usTjMax;
0710 USHORT usReserve[6];
0711 } ATOM_PPLIB_POWERTUNE_Table_V1;
0712
0713 #define ATOM_PPM_A_A 1
0714 #define ATOM_PPM_A_I 2
0715 typedef struct _ATOM_PPLIB_PPM_Table
0716 {
0717 UCHAR ucRevId;
0718 UCHAR ucPpmDesign;
0719 USHORT usCpuCoreNumber;
0720 ULONG ulPlatformTDP;
0721 ULONG ulSmallACPlatformTDP;
0722 ULONG ulPlatformTDC;
0723 ULONG ulSmallACPlatformTDC;
0724 ULONG ulApuTDP;
0725 ULONG ulDGpuTDP;
0726 ULONG ulDGpuUlvPower;
0727 ULONG ulTjmax;
0728 } ATOM_PPLIB_PPM_Table;
0729
0730 #define VQ_DisplayConfig_NoneAWD 1
0731 #define VQ_DisplayConfig_AWD 2
0732
0733 typedef struct ATOM_PPLIB_VQ_Budgeting_Record{
0734 ULONG ulDeviceID;
0735 ULONG ulSustainableSOCPowerLimitLow;
0736 ULONG ulSustainableSOCPowerLimitHigh;
0737
0738 ULONG ulDClk;
0739 ULONG ulEClk;
0740 ULONG ulDispSclk;
0741 UCHAR ucDispConfig;
0742
0743 } ATOM_PPLIB_VQ_Budgeting_Record;
0744
0745 typedef struct ATOM_PPLIB_VQ_Budgeting_Table {
0746 UCHAR revid;
0747 UCHAR numEntries;
0748 ATOM_PPLIB_VQ_Budgeting_Record entries[1];
0749 } ATOM_PPLIB_VQ_Budgeting_Table;
0750
0751 #pragma pack()
0752
0753 #endif