0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #ifndef _VEGA10_PPTABLE_H_
0024 #define _VEGA10_PPTABLE_H_
0025
0026 #pragma pack(push, 1)
0027
0028 #define ATOM_VEGA10_PP_FANPARAMETERS_TACHOMETER_PULSES_PER_REVOLUTION_MASK 0x0f
0029 #define ATOM_VEGA10_PP_FANPARAMETERS_NOFAN 0x80
0030
0031 #define ATOM_VEGA10_PP_THERMALCONTROLLER_NONE 0
0032 #define ATOM_VEGA10_PP_THERMALCONTROLLER_LM96163 17
0033 #define ATOM_VEGA10_PP_THERMALCONTROLLER_VEGA10 24
0034
0035 #define ATOM_VEGA10_PP_THERMALCONTROLLER_ADT7473_WITH_INTERNAL 0x89
0036 #define ATOM_VEGA10_PP_THERMALCONTROLLER_EMC2103_WITH_INTERNAL 0x8D
0037
0038 #define ATOM_VEGA10_PP_PLATFORM_CAP_POWERPLAY 0x1
0039 #define ATOM_VEGA10_PP_PLATFORM_CAP_SBIOSPOWERSOURCE 0x2
0040 #define ATOM_VEGA10_PP_PLATFORM_CAP_HARDWAREDC 0x4
0041 #define ATOM_VEGA10_PP_PLATFORM_CAP_BACO 0x8
0042 #define ATOM_VEGA10_PP_PLATFORM_COMBINE_PCC_WITH_THERMAL_SIGNAL 0x10
0043
0044
0045
0046 #define ATOM_PPLIB_CLASSIFICATION_UI_MASK 0x0007
0047 #define ATOM_PPLIB_CLASSIFICATION_UI_SHIFT 0
0048 #define ATOM_PPLIB_CLASSIFICATION_UI_NONE 0
0049 #define ATOM_PPLIB_CLASSIFICATION_UI_BATTERY 1
0050 #define ATOM_PPLIB_CLASSIFICATION_UI_BALANCED 3
0051 #define ATOM_PPLIB_CLASSIFICATION_UI_PERFORMANCE 5
0052
0053
0054 #define ATOM_PPLIB_CLASSIFICATION_BOOT 0x0008
0055 #define ATOM_PPLIB_CLASSIFICATION_THERMAL 0x0010
0056 #define ATOM_PPLIB_CLASSIFICATION_LIMITEDPOWERSOURCE 0x0020
0057 #define ATOM_PPLIB_CLASSIFICATION_REST 0x0040
0058 #define ATOM_PPLIB_CLASSIFICATION_FORCED 0x0080
0059 #define ATOM_PPLIB_CLASSIFICATION_ACPI 0x1000
0060
0061
0062 #define ATOM_PPLIB_CLASSIFICATION2_LIMITEDPOWERSOURCE_2 0x0001
0063
0064 #define ATOM_Vega10_DISALLOW_ON_DC 0x00004000
0065 #define ATOM_Vega10_ENABLE_VARIBRIGHT 0x00008000
0066
0067 #define ATOM_Vega10_TABLE_REVISION_VEGA10 8
0068
0069 #define ATOM_Vega10_VoltageMode_AVFS_Interpolate 0
0070 #define ATOM_Vega10_VoltageMode_AVFS_WorstCase 1
0071 #define ATOM_Vega10_VoltageMode_Static 2
0072
0073 typedef struct _ATOM_Vega10_POWERPLAYTABLE {
0074 struct atom_common_table_header sHeader;
0075 UCHAR ucTableRevision;
0076 USHORT usTableSize;
0077 ULONG ulGoldenPPID;
0078 ULONG ulGoldenRevision;
0079 USHORT usFormatID;
0080 ULONG ulPlatformCaps;
0081 ULONG ulMaxODEngineClock;
0082 ULONG ulMaxODMemoryClock;
0083 USHORT usPowerControlLimit;
0084 USHORT usUlvVoltageOffset;
0085 USHORT usUlvSmnclkDid;
0086 USHORT usUlvMp1clkDid;
0087 USHORT usUlvGfxclkBypass;
0088 USHORT usGfxclkSlewRate;
0089 UCHAR ucGfxVoltageMode;
0090 UCHAR ucSocVoltageMode;
0091 UCHAR ucUclkVoltageMode;
0092 UCHAR ucUvdVoltageMode;
0093 UCHAR ucVceVoltageMode;
0094 UCHAR ucMp0VoltageMode;
0095 UCHAR ucDcefVoltageMode;
0096 USHORT usStateArrayOffset;
0097 USHORT usFanTableOffset;
0098 USHORT usThermalControllerOffset;
0099 USHORT usSocclkDependencyTableOffset;
0100 USHORT usMclkDependencyTableOffset;
0101 USHORT usGfxclkDependencyTableOffset;
0102 USHORT usDcefclkDependencyTableOffset;
0103 USHORT usVddcLookupTableOffset;
0104 USHORT usVddmemLookupTableOffset;
0105 USHORT usMMDependencyTableOffset;
0106 USHORT usVCEStateTableOffset;
0107 USHORT usReserve;
0108 USHORT usPowerTuneTableOffset;
0109 USHORT usHardLimitTableOffset;
0110 USHORT usVddciLookupTableOffset;
0111 USHORT usPCIETableOffset;
0112 USHORT usPixclkDependencyTableOffset;
0113 USHORT usDispClkDependencyTableOffset;
0114 USHORT usPhyClkDependencyTableOffset;
0115 } ATOM_Vega10_POWERPLAYTABLE;
0116
0117 typedef struct _ATOM_Vega10_State {
0118 UCHAR ucSocClockIndexHigh;
0119 UCHAR ucSocClockIndexLow;
0120 UCHAR ucGfxClockIndexHigh;
0121 UCHAR ucGfxClockIndexLow;
0122 UCHAR ucMemClockIndexHigh;
0123 UCHAR ucMemClockIndexLow;
0124 USHORT usClassification;
0125 ULONG ulCapsAndSettings;
0126 USHORT usClassification2;
0127 } ATOM_Vega10_State;
0128
0129 typedef struct _ATOM_Vega10_State_Array {
0130 UCHAR ucRevId;
0131 UCHAR ucNumEntries;
0132 ATOM_Vega10_State states[1];
0133 } ATOM_Vega10_State_Array;
0134
0135 typedef struct _ATOM_Vega10_CLK_Dependency_Record {
0136 ULONG ulClk;
0137 UCHAR ucVddInd;
0138 } ATOM_Vega10_CLK_Dependency_Record;
0139
0140 typedef struct _ATOM_Vega10_GFXCLK_Dependency_Record {
0141 ULONG ulClk;
0142 UCHAR ucVddInd;
0143 USHORT usCKSVOffsetandDisable;
0144 USHORT usAVFSOffset;
0145 } ATOM_Vega10_GFXCLK_Dependency_Record;
0146
0147 typedef struct _ATOM_Vega10_GFXCLK_Dependency_Record_V2 {
0148 ULONG ulClk;
0149 UCHAR ucVddInd;
0150 USHORT usCKSVOffsetandDisable;
0151 USHORT usAVFSOffset;
0152 UCHAR ucACGEnable;
0153 UCHAR ucReserved[3];
0154 } ATOM_Vega10_GFXCLK_Dependency_Record_V2;
0155
0156 typedef struct _ATOM_Vega10_MCLK_Dependency_Record {
0157 ULONG ulMemClk;
0158 UCHAR ucVddInd;
0159 UCHAR ucVddMemInd;
0160 UCHAR ucVddciInd;
0161 } ATOM_Vega10_MCLK_Dependency_Record;
0162
0163 typedef struct _ATOM_Vega10_GFXCLK_Dependency_Table {
0164 UCHAR ucRevId;
0165 UCHAR ucNumEntries;
0166 ATOM_Vega10_GFXCLK_Dependency_Record entries[];
0167 } ATOM_Vega10_GFXCLK_Dependency_Table;
0168
0169 typedef struct _ATOM_Vega10_MCLK_Dependency_Table {
0170 UCHAR ucRevId;
0171 UCHAR ucNumEntries;
0172 ATOM_Vega10_MCLK_Dependency_Record entries[1];
0173 } ATOM_Vega10_MCLK_Dependency_Table;
0174
0175 typedef struct _ATOM_Vega10_SOCCLK_Dependency_Table {
0176 UCHAR ucRevId;
0177 UCHAR ucNumEntries;
0178 ATOM_Vega10_CLK_Dependency_Record entries[1];
0179 } ATOM_Vega10_SOCCLK_Dependency_Table;
0180
0181 typedef struct _ATOM_Vega10_DCEFCLK_Dependency_Table {
0182 UCHAR ucRevId;
0183 UCHAR ucNumEntries;
0184 ATOM_Vega10_CLK_Dependency_Record entries[1];
0185 } ATOM_Vega10_DCEFCLK_Dependency_Table;
0186
0187 typedef struct _ATOM_Vega10_PIXCLK_Dependency_Table {
0188 UCHAR ucRevId;
0189 UCHAR ucNumEntries;
0190 ATOM_Vega10_CLK_Dependency_Record entries[1];
0191 } ATOM_Vega10_PIXCLK_Dependency_Table;
0192
0193 typedef struct _ATOM_Vega10_DISPCLK_Dependency_Table {
0194 UCHAR ucRevId;
0195 UCHAR ucNumEntries;
0196 ATOM_Vega10_CLK_Dependency_Record entries[1];
0197 } ATOM_Vega10_DISPCLK_Dependency_Table;
0198
0199 typedef struct _ATOM_Vega10_PHYCLK_Dependency_Table {
0200 UCHAR ucRevId;
0201 UCHAR ucNumEntries;
0202 ATOM_Vega10_CLK_Dependency_Record entries[1];
0203 } ATOM_Vega10_PHYCLK_Dependency_Table;
0204
0205 typedef struct _ATOM_Vega10_MM_Dependency_Record {
0206 UCHAR ucVddcInd;
0207 ULONG ulDClk;
0208 ULONG ulVClk;
0209 ULONG ulEClk;
0210 ULONG ulPSPClk;
0211 } ATOM_Vega10_MM_Dependency_Record;
0212
0213 typedef struct _ATOM_Vega10_MM_Dependency_Table {
0214 UCHAR ucRevId;
0215 UCHAR ucNumEntries;
0216 ATOM_Vega10_MM_Dependency_Record entries[1];
0217 } ATOM_Vega10_MM_Dependency_Table;
0218
0219 typedef struct _ATOM_Vega10_PCIE_Record {
0220 ULONG ulLCLK;
0221 UCHAR ucPCIEGenSpeed;
0222 UCHAR ucPCIELaneWidth;
0223 } ATOM_Vega10_PCIE_Record;
0224
0225 typedef struct _ATOM_Vega10_PCIE_Table {
0226 UCHAR ucRevId;
0227 UCHAR ucNumEntries;
0228 ATOM_Vega10_PCIE_Record entries[1];
0229 } ATOM_Vega10_PCIE_Table;
0230
0231 typedef struct _ATOM_Vega10_Voltage_Lookup_Record {
0232 USHORT usVdd;
0233 } ATOM_Vega10_Voltage_Lookup_Record;
0234
0235 typedef struct _ATOM_Vega10_Voltage_Lookup_Table {
0236 UCHAR ucRevId;
0237 UCHAR ucNumEntries;
0238 ATOM_Vega10_Voltage_Lookup_Record entries[1];
0239 } ATOM_Vega10_Voltage_Lookup_Table;
0240
0241 typedef struct _ATOM_Vega10_Fan_Table {
0242 UCHAR ucRevId;
0243 USHORT usFanOutputSensitivity;
0244 USHORT usFanRPMMax;
0245 USHORT usThrottlingRPM;
0246 USHORT usFanAcousticLimit;
0247 USHORT usTargetTemperature;
0248 USHORT usMinimumPWMLimit;
0249 USHORT usTargetGfxClk;
0250 USHORT usFanGainEdge;
0251 USHORT usFanGainHotspot;
0252 USHORT usFanGainLiquid;
0253 USHORT usFanGainVrVddc;
0254 USHORT usFanGainVrMvdd;
0255 USHORT usFanGainPlx;
0256 USHORT usFanGainHbm;
0257 UCHAR ucEnableZeroRPM;
0258 USHORT usFanStopTemperature;
0259 USHORT usFanStartTemperature;
0260 } ATOM_Vega10_Fan_Table;
0261
0262 typedef struct _ATOM_Vega10_Fan_Table_V2 {
0263 UCHAR ucRevId;
0264 USHORT usFanOutputSensitivity;
0265 USHORT usFanAcousticLimitRpm;
0266 USHORT usThrottlingRPM;
0267 USHORT usTargetTemperature;
0268 USHORT usMinimumPWMLimit;
0269 USHORT usTargetGfxClk;
0270 USHORT usFanGainEdge;
0271 USHORT usFanGainHotspot;
0272 USHORT usFanGainLiquid;
0273 USHORT usFanGainVrVddc;
0274 USHORT usFanGainVrMvdd;
0275 USHORT usFanGainPlx;
0276 USHORT usFanGainHbm;
0277 UCHAR ucEnableZeroRPM;
0278 USHORT usFanStopTemperature;
0279 USHORT usFanStartTemperature;
0280 UCHAR ucFanParameters;
0281 UCHAR ucFanMinRPM;
0282 UCHAR ucFanMaxRPM;
0283 } ATOM_Vega10_Fan_Table_V2;
0284
0285 typedef struct _ATOM_Vega10_Fan_Table_V3 {
0286 UCHAR ucRevId;
0287 USHORT usFanOutputSensitivity;
0288 USHORT usFanAcousticLimitRpm;
0289 USHORT usThrottlingRPM;
0290 USHORT usTargetTemperature;
0291 USHORT usMinimumPWMLimit;
0292 USHORT usTargetGfxClk;
0293 USHORT usFanGainEdge;
0294 USHORT usFanGainHotspot;
0295 USHORT usFanGainLiquid;
0296 USHORT usFanGainVrVddc;
0297 USHORT usFanGainVrMvdd;
0298 USHORT usFanGainPlx;
0299 USHORT usFanGainHbm;
0300 UCHAR ucEnableZeroRPM;
0301 USHORT usFanStopTemperature;
0302 USHORT usFanStartTemperature;
0303 UCHAR ucFanParameters;
0304 UCHAR ucFanMinRPM;
0305 UCHAR ucFanMaxRPM;
0306 USHORT usMGpuThrottlingRPM;
0307 } ATOM_Vega10_Fan_Table_V3;
0308
0309 typedef struct _ATOM_Vega10_Thermal_Controller {
0310 UCHAR ucRevId;
0311 UCHAR ucType;
0312 UCHAR ucI2cLine;
0313 UCHAR ucI2cAddress;
0314 UCHAR ucFanParameters;
0315 UCHAR ucFanMinRPM;
0316 UCHAR ucFanMaxRPM;
0317 UCHAR ucFlags;
0318 } ATOM_Vega10_Thermal_Controller;
0319
0320 typedef struct _ATOM_Vega10_VCE_State_Record
0321 {
0322 UCHAR ucVCEClockIndex;
0323 UCHAR ucFlag;
0324 UCHAR ucSCLKIndex;
0325 UCHAR ucMCLKIndex;
0326 } ATOM_Vega10_VCE_State_Record;
0327
0328 typedef struct _ATOM_Vega10_VCE_State_Table
0329 {
0330 UCHAR ucRevId;
0331 UCHAR ucNumEntries;
0332 ATOM_Vega10_VCE_State_Record entries[1];
0333 } ATOM_Vega10_VCE_State_Table;
0334
0335 typedef struct _ATOM_Vega10_PowerTune_Table {
0336 UCHAR ucRevId;
0337 USHORT usSocketPowerLimit;
0338 USHORT usBatteryPowerLimit;
0339 USHORT usSmallPowerLimit;
0340 USHORT usTdcLimit;
0341 USHORT usEdcLimit;
0342 USHORT usSoftwareShutdownTemp;
0343 USHORT usTemperatureLimitHotSpot;
0344 USHORT usTemperatureLimitLiquid1;
0345 USHORT usTemperatureLimitLiquid2;
0346 USHORT usTemperatureLimitHBM;
0347 USHORT usTemperatureLimitVrSoc;
0348 USHORT usTemperatureLimitVrMem;
0349 USHORT usTemperatureLimitPlx;
0350 USHORT usLoadLineResistance;
0351 UCHAR ucLiquid1_I2C_address;
0352 UCHAR ucLiquid2_I2C_address;
0353 UCHAR ucVr_I2C_address;
0354 UCHAR ucPlx_I2C_address;
0355 UCHAR ucLiquid_I2C_LineSCL;
0356 UCHAR ucLiquid_I2C_LineSDA;
0357 UCHAR ucVr_I2C_LineSCL;
0358 UCHAR ucVr_I2C_LineSDA;
0359 UCHAR ucPlx_I2C_LineSCL;
0360 UCHAR ucPlx_I2C_LineSDA;
0361 USHORT usTemperatureLimitTedge;
0362 } ATOM_Vega10_PowerTune_Table;
0363
0364 typedef struct _ATOM_Vega10_PowerTune_Table_V2
0365 {
0366 UCHAR ucRevId;
0367 USHORT usSocketPowerLimit;
0368 USHORT usBatteryPowerLimit;
0369 USHORT usSmallPowerLimit;
0370 USHORT usTdcLimit;
0371 USHORT usEdcLimit;
0372 USHORT usSoftwareShutdownTemp;
0373 USHORT usTemperatureLimitHotSpot;
0374 USHORT usTemperatureLimitLiquid1;
0375 USHORT usTemperatureLimitLiquid2;
0376 USHORT usTemperatureLimitHBM;
0377 USHORT usTemperatureLimitVrSoc;
0378 USHORT usTemperatureLimitVrMem;
0379 USHORT usTemperatureLimitPlx;
0380 USHORT usLoadLineResistance;
0381 UCHAR ucLiquid1_I2C_address;
0382 UCHAR ucLiquid2_I2C_address;
0383 UCHAR ucLiquid_I2C_Line;
0384 UCHAR ucVr_I2C_address;
0385 UCHAR ucVr_I2C_Line;
0386 UCHAR ucPlx_I2C_address;
0387 UCHAR ucPlx_I2C_Line;
0388 USHORT usTemperatureLimitTedge;
0389 } ATOM_Vega10_PowerTune_Table_V2;
0390
0391 typedef struct _ATOM_Vega10_PowerTune_Table_V3
0392 {
0393 UCHAR ucRevId;
0394 USHORT usSocketPowerLimit;
0395 USHORT usBatteryPowerLimit;
0396 USHORT usSmallPowerLimit;
0397 USHORT usTdcLimit;
0398 USHORT usEdcLimit;
0399 USHORT usSoftwareShutdownTemp;
0400 USHORT usTemperatureLimitHotSpot;
0401 USHORT usTemperatureLimitLiquid1;
0402 USHORT usTemperatureLimitLiquid2;
0403 USHORT usTemperatureLimitHBM;
0404 USHORT usTemperatureLimitVrSoc;
0405 USHORT usTemperatureLimitVrMem;
0406 USHORT usTemperatureLimitPlx;
0407 USHORT usLoadLineResistance;
0408 UCHAR ucLiquid1_I2C_address;
0409 UCHAR ucLiquid2_I2C_address;
0410 UCHAR ucLiquid_I2C_Line;
0411 UCHAR ucVr_I2C_address;
0412 UCHAR ucVr_I2C_Line;
0413 UCHAR ucPlx_I2C_address;
0414 UCHAR ucPlx_I2C_Line;
0415 USHORT usTemperatureLimitTedge;
0416 USHORT usBoostStartTemperature;
0417 USHORT usBoostStopTemperature;
0418 ULONG ulBoostClock;
0419 ULONG Reserved[2];
0420 } ATOM_Vega10_PowerTune_Table_V3;
0421
0422 typedef struct _ATOM_Vega10_Hard_Limit_Record {
0423 ULONG ulSOCCLKLimit;
0424 ULONG ulGFXCLKLimit;
0425 ULONG ulMCLKLimit;
0426 USHORT usVddcLimit;
0427 USHORT usVddciLimit;
0428 USHORT usVddMemLimit;
0429 } ATOM_Vega10_Hard_Limit_Record;
0430
0431 typedef struct _ATOM_Vega10_Hard_Limit_Table
0432 {
0433 UCHAR ucRevId;
0434 UCHAR ucNumEntries;
0435 ATOM_Vega10_Hard_Limit_Record entries[1];
0436 } ATOM_Vega10_Hard_Limit_Table;
0437
0438 typedef struct _Vega10_PPTable_Generic_SubTable_Header
0439 {
0440 UCHAR ucRevId;
0441 } Vega10_PPTable_Generic_SubTable_Header;
0442
0443 #pragma pack(pop)
0444
0445 #endif