PowerPlayInfo
Research Based on Materials at:
OhGodATool Backup Repository. Contribute to Arman92/OhGodATool development by creating an account on GitHub.
github.com
A library that can be used to manipulate ATOM and PowerPlay (PP) tables of AMDGPUs - kobalicek/amdtweak
github.com
Calculator
Online binary converter. Supports all types of variables, including single and double precision IEEE754 numbers
www.binaryconvert.com
uc = 2ch (1byte)
us = 4ch (2byte)
ul = 8ch (16byte)
int8_t c;
int32_t i;
uint8_t uc;
uint32_t ui;
int64_t l;
========================== ========================== ==========================
========================== = BEGINNING OF RESEARCH = ==========================
========================== ========================== ==========================
========================== ========================== ==========================
FA02 - FileSize (LittleEndian)
07 - ucTableFormatRevision
01 - ucTableContentRevision
00 - ucTableRevision
4D00 - usTableSize (LittleEndian)
92060000 - ulGoldenPPID (LittleEndian etc.) // PPGen use only
63260000 - ulGoldenRevision // PPGen use only
1A00 - usFormatId // To be used ONLY by PPGen.
0000 - usVoltageTime // in microseconds
02000000 - ulPlatformCaps // See ATOM_PPLIB_CAPS_*
00000000 ≠ ulMaxODEngineClock
00000000 ≠ ulMaxODMempryClock
0000 ≠ usPowerControlLimit
2300 - usUlvVoltageOffset = 35 by Unsigned short (16-bit) calculator
========================== ========================== ==========================
========================== OFFSET_MAP_LOCATIONS_IN_MODULE ==========================
4D00000078020000B9013F018B00FD00D501C60200008102B602E0020000F04F01005307000000000000
========================== OFFSET_MAP_LOCATIONS_IN_MODULE ==========================
- usStateArrayOffset; // points to ATOM_Tonga_State_Array
- usFanTableOffset; // points to ATOM_Tonga_Fan_Table
- usThermalControllerOffset; // points to ATOM_Tonga_Thermal_Controller
- usReserv; // CustomThermalPolicy removed for Tonga. Keep this filed as reserved. */
- usMclkDependencyTableOffset; // points to ATOM_Tonga_MCLK_Dependency_Table */
- usSclkDependencyTableOffset; // points to ATOM_Tonga_SCLK_Dependency_Table */
- usVddcLookupTableOffset; // points to ATOM_Tonga_Voltage_Lookup_Table */
- usVddgfxLookupTableOffset; // points to ATOM_Tonga_Voltage_Lookup_Table */
- usMMDependencyTableOffset; // points to ATOM_Tonga_MM_Dependency_Table */
- usVCEStateTableOffset; // points to ATOM_Tonga_VCE_State_Table; */
- usPPMTableOffset; // points to ATOM_Tonga_PPM_Table */
- usPowerTuneTableOffset; // points to ATOM_PowerTune_Table */
- usHardLimitTableOffset; // points to ATOM_Tonga_Hard_Limit_Table */
- usPCIETableOffset; // points to ATOM_Tonga_PCIE_Table */
- usGPIOTableOffset; // points to ATOM_Tonga_GPIO_Table */
- usReserved[6];
========================== StateArrayOffset ==========================
******************0000007000100000000000500004000000000000000000100010000000000010000000000000000000000
========================== StateArrayOffset ==========================
// based on ATOM_Tonga_POWERPLAYTABLE
01 - ucRevId
03 - ucNumEntries
00 - ucEngineClockIndexHigh
00 - ucEngineClockIndexLow
00 - ucMemoryClockIndexHigh
00 - ucMemoryClockIndexLow
00 - ucPCIEGenLow
00 - ucPCIEGenHigh
00 - ucPCIELaneLow
00 - ucPCIELaneHigh
0800 - usClassification
000000000 - ulCapsAndSettings
0000 - usClassification2
0000000 - ulUnused
07 - ucEngineClockIndexHigh
00 - ucEngineClockIndexLow
01 - ucMemoryClockIndexHigh
00 - ucMemoryClockIndexLow
00 - ucPCIEGenLow
00 - ucPCIEGenHigh
00 - ucPCIELaneLow
00 - ucPCIELaneHigh
0500 - usClassification
00400000 - ulCapsAndSettings
0000 - usClassification2
00000000 - ulUnused
01 - ucEngineClockIndexHigh
00 - ucEngineClockIndexLow
01 - ucMemoryClockIndexHigh
00 - ucMemoryClockIndexLow
00 - ucPCIEGenLow
00 - ucPCIEGenHigh
00 - ucPCIELaneLow
00 - ucPCIELaneHigh
0100 - usClassification
00000000 - ulCapsAndSettings
0000 - usClassification2
00000000 - ulUnused
========================== PolarisVddcLookup ==========================
000EEE02000000000000200300000000000052030000000000008403000000000000B603000000000000E8030000000000001A0400000000000002FF00000000000003FF00000000000004FF00000000000005FF00000000000006FF00000000000007FF00000000000008FF000000000000
========================== PolarisVddcLookup ==========================
Based on _ATOM_Tonga_Voltage_Lookup_Record
00 - ucRevId
0E - ucNumEntries
EE02 - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
2003 - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
5203 - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
8403 - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
B603 - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
E803 - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
1A04 - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
02FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
03FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
04FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
05FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
06FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
07FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
08FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
========================== PolarisVddgfxLookup ==========================
0008840300000000000002FF00000000000003FF00000000000004FF00000000000005FF00000000000006FF00000000000007FF00000000000008FF000000000000
========================== PolarisVddgfxLookup ==========================
00 - ucRevId
08 - ucNumEntries
8403 - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000
02FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
03FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
04FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
05FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
06FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
07FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
08FF - usVdd // Base voltage
0000 - usCACLow
0000 - usCACMid
0000 - usCACHigh
========================== PolarisSclkDependency ==========================
010800000098530000000000800000000007E6FFF4C90000000000920000000008E6FF144A0100000000120000000009E6FFC499010000000012000000000AE6FF4CAD010000000012000000000BE6FFC0BB010000000012000000000CE6FFFCCA010000000012000000000DCDFF24D501000000001200000000
========================== PolarisSclkDependency ==========================
Based on _ATOM_Polaris_SCLK_Dependency_Record
01 - ucRevId
08 - ucNumEntries
00 - ucVddInd /* Base voltage */
0000 - usVddcOffset /* Offset relative to base voltage */
98530000 - ulSclk;
0000 - usEdcCurrent;
00 - ucReliabilityTemperature;
80 - ucCKSVOffsetandDisable;
00000000 - ulSclkOffset; //Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level
07 - ucVddInd /* Base voltage */
E6FF - usVddcOffset /* Offset relative to base voltage */
F4C90000 - ulSclk;
0000 - usEdcCurrent;
00 - ucReliabilityTemperature;
92 - ucCKSVOffsetandDisable;
00000000 - ulSclkOffset; //Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level
08 - ucVddInd /* Base voltage */
E6FF - usVddcOffset /* Offset relative to base voltage */
144A0100 - ulSclk;
0000 - usEdcCurrent;
00 - ucReliabilityTemperature;
12 - ucCKSVOffsetandDisable;
00000000 - ulSclkOffset; //Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level
09 - ucVddInd /* Base voltage */
E6FF - usVddcOffset /* Offset relative to base voltage */
C4990100 - ulSclk;
0000 - usEdcCurrent;
00 - ucReliabilityTemperature;
12 - ucCKSVOffsetandDisable;
00000000 - ulSclkOffset; //Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level
0A - ucVddInd /* Base voltage */
E6FF - usVddcOffset /* Offset relative to base voltage */
4CAD0100 - ulSclk;
0000 - usEdcCurrent;
00 - ucReliabilityTemperature;
12 - ucCKSVOffsetandDisable;
00000000 - ulSclkOffset; //Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level
0B - ucVddInd /* Base voltage */
E6FF - usVddcOffset /* Offset relative to base voltage */
C0BB0100 - ulSclk;
0000 - usEdcCurrent;
00 - ucReliabilityTemperature;
12 - ucCKSVOffsetandDisable;
00000000 - ulSclkOffset; //Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level
0C - ucVddInd /* Base voltage */
E6FF - usVddcOffset /* Offset relative to base voltage */
FCCA0100 - ulSclk;
0000 - usEdcCurrent;
00 - ucReliabilityTemperature;
12 - ucCKSVOffsetandDisable;
00000000 - ulSclkOffset; //Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level
0D - ucVddInd /* Base voltage */
CDFF - usVddcOffset /* Offset relative to base voltage */
24D50100 - ulSclk;
0000 - usEdcCurrent;
00 - ucReliabilityTemperature;
12 - ucCKSVOffsetandDisable;
00000000 - ulSclkOffset; //Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level
========================== PolarisMclkDependency ==========================
00020020030000E80330750000000000E8030000E803F04902000000
========================== PolarisMclkDependency ==========================
00 - ucRevId
02 - ucNumEntries
00 - ucVddcInd // Vddc voltage
2003 - usVddci
0000 - usVddgfxOffset // Offset relative to Vddc voltage
E803 - usMvdd
30750000 - ulMclk
0000 - usReserved
00 - ucVddcInd // Vddc voltage
E803 - usVddci
0000 - usVddgfxOffset // Offset relative to Vddc voltage
E803 - usMvdd
F0490200 - ulMclk
0000 - usReserved
========================== PolarisMMDependency ==========================
000700000008CF000070110100A8DE00000000000050C3000001B4FF90E20000F824010018F6000000000000A8DE0000029BFF18F6000080380100880D01000000000000FA00000382FFA0090100084C0100F824010000000000701101000469FF281D0100A85B0100683C010000000000E02801000537FFC82C010060670100F04F010000000000683C01000605FF80380100187301007863010000000000084C0100
========================== PolarisMMDependency ==========================
Based on ATOM_Tonga_MM_Dependency_Record
00 - ucRevId
07 - ucNumEntries
00 - ucVddcInd //VDDC voltage
0000 - usVddgfxOffset //Offset relative to VDDC voltage
08CF0000 - ulDClk //UVD D-clock
70110100 - ulVClk //UVD V-clock
A8DE0000 - ulEClk //VCE clock
00000000 - ulAClk //ACP clock
50C30000 - ulSAMUClk
01 - ucVddcInd //VDDC voltage
B4FF - usVddgfxOffset //Offset relative to VDDC voltage
90E20000 - ulDClk //UVD D-clock
F8240100 - ulVClk //UVD V-clock
18F60000 - ulEClk //VCE clock
00000000 - ulAClk //ACP clock
A8DE0000 - ulSAMUClk
02 - ucVddcInd //VDDC voltage
9BFF - usVddgfxOffset //Offset relative to VDDC voltage
18F60000 - ulDClk //UVD D-clock
80380100 - ulVClk //UVD V-clock
880D0100 - ulEClk //VCE clock
00000000 - ulAClk //ACP clock
00FA0000 - ulSAMUClk
03 - ucVddcInd //VDDC voltage
82FF - usVddgfxOffset //Offset relative to VDDC voltage
A0090100 - ulDClk //UVD D-clock
084C0100 - ulVClk //UVD V-clock
F8240100 - ulEClk //VCE clock
00000000 - ulAClk //ACP clock
70110100 - ulSAMUClk
04 - ucVddcInd //VDDC voltage
69FF - usVddgfxOffset //Offset relative to VDDC voltage
281D0100 - ulDClk //UVD D-clock
A85B0100 - ulVClk //UVD V-clock
683C0100 - ulEClk //VCE clock
00000000 - ulAClk //ACP clock
E0280100 - ulSAMUClk
05 - ucVddcInd //VDDC voltage
37FF - usVddgfxOffset //Offset relative to VDDC voltage
C82C0100 - ulDClk //UVD D-clock
60670100 - ulVClk //UVD V-clock
F04F0100 - ulEClk //VCE clock
00000000 - ulAClk //ACP clock
683C0100 - ulSAMUClk
06 - ucVddcInd //VDDC voltage
05FF - usVddgfxOffset //Offset relative to VDDC voltage
80380100 - ulDClk //UVD D-clock
18730100 - ulVClk //UVD V-clock
78630100 - ulEClk //VCE clock
00000000 - ulAClk //ACP clock
084C0100 - ulSAMUClk
========================== ThermalController ==========================
011700008000000000
========================== ThermalController ==========================
Based on Tonga_Thermal_Controller
01 - ucRevId;
17 - ucType; //one of ATOM_TONGA_PP_THERMALCONTROLLER
00 - ucI2cLine; //as interpreted by DAL I2C
00 - ucI2cAddress;
80 - ucFanParameters; //Fan Control Parameters
00 - ucFanMinRPM; //Fan Minimum RPM (hundreds) -- for display purposes only
00 - ucFanMaxRPM; //Fan Maximum RPM (hundreds) -- for display purposes only
00 - ucReserved;
00 - ucFlags; //to be defined
========================== PolarisPowerTune ==========================
========================== PolarisPowerTune ==========================
04 - ucRevId
3200 - usTDP = 32*16
0000 - usConfigurableTDP
2A00 - usTDC
3200 - usBatteryPowerLimit
3200 - usSmallPowerLimit
0000 - usLowCACLeakage
0000 - usHighCACLeakage
3200 - usMaximumPowerDeliveryLimit
5A00 - usTjMax
0000 - usPowerTuneDataSetID
0000 - usEDCLimit
5E00 - usSoftwareShutdownTemp
0200 - usClockStretchAmount
6900 - usTemperatureLimitHotspot
5000 - usTemperatureLimitLiquid1
5000 - usTemperatureLimitLiquid2
0000 - usTemperatureLimitVrVddc
0000 - usTemperatureLimitVrMvdd
5000 - usTemperatureLimitPlx
00 - ucLiquid1_I2C_address
00 - ucLiquid2_I2C_address
90 - ucLiquid_I2C_Line
00 - ucVr_I2C_address
90 - ucVr_I2C_Line
00 - ucPlx_I2C_address
90 - ucPlx_I2C_Line
3200 - usReserved
========================== UNKNOWN ==========================
0500000000
========================== UNKNOWN ==========================
Based on UNKNOWN
0500000000
========================== PolarisHardLimit - typeRecord ==========================
01 - ucRevId
01 - ucNumEntries
8C550000 - ulSCLKLimit
24770000 - ulMCLKLimit
E803 - usVddcLimit
0000 - usVddciLimit
E803 - usVddgfxLimit
//////////// Pegatron Vs VORTEX ////////////////
////// 08E80000 Vs FCE90000 - ulSCLKLimit //////
////// F0490200 Vs 24770000 - ulMCLKLimit //////
////////////////////////////////////////////////
========================== PolarisVCEState ==========================
01 - ucRevisionID
06 - ucNumEntries
00 - ucVCEClockIdx // References MM dep table, the VCEDependencyTableOffset value
00 - ucFlag // 2 bits indicates memory p-states?
01 - ucSCLKIdx
01 - ucMCLKIdx
00 - ucVCEClockIdx
00 - ucFlag
01 - ucSCLKIdx
01 - ucMCLKIdx
00 - ucVCEClockIdx
02 - ucFlag
01 - ucSCLKIdx
01 - ucMCLKIdx
00 - ucVCEClockIdx
02 - ucFlag
01 - ucSCLKIdx
01 - ucMCLKIdx
00 - ucVCEClockIdx
02 - ucFlag
01 - ucSCLKIdx
01 - ucMCLKIdx
00 - ucVCEClockIdx
02 - ucFlag
01 - ucSCLKIdx
01 - ucMCLKIdx
========================== PolarisPCIE ==========================
010300000800FC0A000000000800F465000002000800F4650000
========================== PolarisPCIE ==========================
01 - ucRevId - // Table version is 1
03 - ucNumEntries
00 - ucPCIEGenSpeed
0008 - usPCIELaneWidth
00FC0A00 - ulPCIEClock
00 - ucReserved1
00 - ucPCIEGenSpeed
0008 - usPCIELaneWidth
00F46500 - ulPCIEClock
00 - ucReserved1
02 - ucPCIEGenSpeed
0008 - usPCIELaneWidth
00F46500 - ulPCIEClock
00 - ucReserved1