1*b843c749SSergey Zigachev /* 2*b843c749SSergey Zigachev * Copyright 2016 Advanced Micro Devices, Inc. 3*b843c749SSergey Zigachev * 4*b843c749SSergey Zigachev * Permission is hereby granted, free of charge, to any person obtaining a 5*b843c749SSergey Zigachev * copy of this software and associated documentation files (the "Software"), 6*b843c749SSergey Zigachev * to deal in the Software without restriction, including without limitation 7*b843c749SSergey Zigachev * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*b843c749SSergey Zigachev * and/or sell copies of the Software, and to permit persons to whom the 9*b843c749SSergey Zigachev * Software is furnished to do so, subject to the following conditions: 10*b843c749SSergey Zigachev * 11*b843c749SSergey Zigachev * The above copyright notice and this permission notice shall be included in 12*b843c749SSergey Zigachev * all copies or substantial portions of the Software. 13*b843c749SSergey Zigachev * 14*b843c749SSergey Zigachev * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15*b843c749SSergey Zigachev * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16*b843c749SSergey Zigachev * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17*b843c749SSergey Zigachev * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 18*b843c749SSergey Zigachev * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19*b843c749SSergey Zigachev * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20*b843c749SSergey Zigachev * OTHER DEALINGS IN THE SOFTWARE. 21*b843c749SSergey Zigachev * 22*b843c749SSergey Zigachev */ 23*b843c749SSergey Zigachev #ifndef _VEGA10_PPTABLE_H_ 24*b843c749SSergey Zigachev #define _VEGA10_PPTABLE_H_ 25*b843c749SSergey Zigachev 26*b843c749SSergey Zigachev #pragma pack(push, 1) 27*b843c749SSergey Zigachev 28*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_FANPARAMETERS_TACHOMETER_PULSES_PER_REVOLUTION_MASK 0x0f 29*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_FANPARAMETERS_NOFAN 0x80 30*b843c749SSergey Zigachev 31*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_THERMALCONTROLLER_NONE 0 32*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_THERMALCONTROLLER_LM96163 17 33*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_THERMALCONTROLLER_VEGA10 24 34*b843c749SSergey Zigachev 35*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_THERMALCONTROLLER_ADT7473_WITH_INTERNAL 0x89 36*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_THERMALCONTROLLER_EMC2103_WITH_INTERNAL 0x8D 37*b843c749SSergey Zigachev 38*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_PLATFORM_CAP_POWERPLAY 0x1 39*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_PLATFORM_CAP_SBIOSPOWERSOURCE 0x2 40*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_PLATFORM_CAP_HARDWAREDC 0x4 41*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_PLATFORM_CAP_BACO 0x8 42*b843c749SSergey Zigachev #define ATOM_VEGA10_PP_PLATFORM_COMBINE_PCC_WITH_THERMAL_SIGNAL 0x10 43*b843c749SSergey Zigachev 44*b843c749SSergey Zigachev 45*b843c749SSergey Zigachev /* ATOM_PPLIB_NONCLOCK_INFO::usClassification */ 46*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_UI_MASK 0x0007 47*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_UI_SHIFT 0 48*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_UI_NONE 0 49*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_UI_BATTERY 1 50*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_UI_BALANCED 3 51*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_UI_PERFORMANCE 5 52*b843c749SSergey Zigachev /* 2, 4, 6, 7 are reserved */ 53*b843c749SSergey Zigachev 54*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_BOOT 0x0008 55*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_THERMAL 0x0010 56*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_LIMITEDPOWERSOURCE 0x0020 57*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_REST 0x0040 58*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_FORCED 0x0080 59*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION_ACPI 0x1000 60*b843c749SSergey Zigachev 61*b843c749SSergey Zigachev /* ATOM_PPLIB_NONCLOCK_INFO::usClassification2 */ 62*b843c749SSergey Zigachev #define ATOM_PPLIB_CLASSIFICATION2_LIMITEDPOWERSOURCE_2 0x0001 63*b843c749SSergey Zigachev 64*b843c749SSergey Zigachev #define ATOM_Vega10_DISALLOW_ON_DC 0x00004000 65*b843c749SSergey Zigachev #define ATOM_Vega10_ENABLE_VARIBRIGHT 0x00008000 66*b843c749SSergey Zigachev 67*b843c749SSergey Zigachev #define ATOM_Vega10_TABLE_REVISION_VEGA10 8 68*b843c749SSergey Zigachev 69*b843c749SSergey Zigachev #define ATOM_Vega10_VoltageMode_AVFS_Interpolate 0 70*b843c749SSergey Zigachev #define ATOM_Vega10_VoltageMode_AVFS_WorstCase 1 71*b843c749SSergey Zigachev #define ATOM_Vega10_VoltageMode_Static 2 72*b843c749SSergey Zigachev 73*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_POWERPLAYTABLE { 74*b843c749SSergey Zigachev struct atom_common_table_header sHeader; 75*b843c749SSergey Zigachev UCHAR ucTableRevision; 76*b843c749SSergey Zigachev USHORT usTableSize; /* the size of header structure */ 77*b843c749SSergey Zigachev ULONG ulGoldenPPID; /* PPGen use only */ 78*b843c749SSergey Zigachev ULONG ulGoldenRevision; /* PPGen use only */ 79*b843c749SSergey Zigachev USHORT usFormatID; /* PPGen use only */ 80*b843c749SSergey Zigachev ULONG ulPlatformCaps; /* See ATOM_Vega10_CAPS_* */ 81*b843c749SSergey Zigachev ULONG ulMaxODEngineClock; /* For Overdrive. */ 82*b843c749SSergey Zigachev ULONG ulMaxODMemoryClock; /* For Overdrive. */ 83*b843c749SSergey Zigachev USHORT usPowerControlLimit; 84*b843c749SSergey Zigachev USHORT usUlvVoltageOffset; /* in mv units */ 85*b843c749SSergey Zigachev USHORT usUlvSmnclkDid; 86*b843c749SSergey Zigachev USHORT usUlvMp1clkDid; 87*b843c749SSergey Zigachev USHORT usUlvGfxclkBypass; 88*b843c749SSergey Zigachev USHORT usGfxclkSlewRate; 89*b843c749SSergey Zigachev UCHAR ucGfxVoltageMode; 90*b843c749SSergey Zigachev UCHAR ucSocVoltageMode; 91*b843c749SSergey Zigachev UCHAR ucUclkVoltageMode; 92*b843c749SSergey Zigachev UCHAR ucUvdVoltageMode; 93*b843c749SSergey Zigachev UCHAR ucVceVoltageMode; 94*b843c749SSergey Zigachev UCHAR ucMp0VoltageMode; 95*b843c749SSergey Zigachev UCHAR ucDcefVoltageMode; 96*b843c749SSergey Zigachev USHORT usStateArrayOffset; /* points to ATOM_Vega10_State_Array */ 97*b843c749SSergey Zigachev USHORT usFanTableOffset; /* points to ATOM_Vega10_Fan_Table */ 98*b843c749SSergey Zigachev USHORT usThermalControllerOffset; /* points to ATOM_Vega10_Thermal_Controller */ 99*b843c749SSergey Zigachev USHORT usSocclkDependencyTableOffset; /* points to ATOM_Vega10_SOCCLK_Dependency_Table */ 100*b843c749SSergey Zigachev USHORT usMclkDependencyTableOffset; /* points to ATOM_Vega10_MCLK_Dependency_Table */ 101*b843c749SSergey Zigachev USHORT usGfxclkDependencyTableOffset; /* points to ATOM_Vega10_GFXCLK_Dependency_Table */ 102*b843c749SSergey Zigachev USHORT usDcefclkDependencyTableOffset; /* points to ATOM_Vega10_DCEFCLK_Dependency_Table */ 103*b843c749SSergey Zigachev USHORT usVddcLookupTableOffset; /* points to ATOM_Vega10_Voltage_Lookup_Table */ 104*b843c749SSergey Zigachev USHORT usVddmemLookupTableOffset; /* points to ATOM_Vega10_Voltage_Lookup_Table */ 105*b843c749SSergey Zigachev USHORT usMMDependencyTableOffset; /* points to ATOM_Vega10_MM_Dependency_Table */ 106*b843c749SSergey Zigachev USHORT usVCEStateTableOffset; /* points to ATOM_Vega10_VCE_State_Table */ 107*b843c749SSergey Zigachev USHORT usReserve; /* No PPM Support for Vega10 */ 108*b843c749SSergey Zigachev USHORT usPowerTuneTableOffset; /* points to ATOM_Vega10_PowerTune_Table */ 109*b843c749SSergey Zigachev USHORT usHardLimitTableOffset; /* points to ATOM_Vega10_Hard_Limit_Table */ 110*b843c749SSergey Zigachev USHORT usVddciLookupTableOffset; /* points to ATOM_Vega10_Voltage_Lookup_Table */ 111*b843c749SSergey Zigachev USHORT usPCIETableOffset; /* points to ATOM_Vega10_PCIE_Table */ 112*b843c749SSergey Zigachev USHORT usPixclkDependencyTableOffset; /* points to ATOM_Vega10_PIXCLK_Dependency_Table */ 113*b843c749SSergey Zigachev USHORT usDispClkDependencyTableOffset; /* points to ATOM_Vega10_DISPCLK_Dependency_Table */ 114*b843c749SSergey Zigachev USHORT usPhyClkDependencyTableOffset; /* points to ATOM_Vega10_PHYCLK_Dependency_Table */ 115*b843c749SSergey Zigachev } ATOM_Vega10_POWERPLAYTABLE; 116*b843c749SSergey Zigachev 117*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_State { 118*b843c749SSergey Zigachev UCHAR ucSocClockIndexHigh; 119*b843c749SSergey Zigachev UCHAR ucSocClockIndexLow; 120*b843c749SSergey Zigachev UCHAR ucGfxClockIndexHigh; 121*b843c749SSergey Zigachev UCHAR ucGfxClockIndexLow; 122*b843c749SSergey Zigachev UCHAR ucMemClockIndexHigh; 123*b843c749SSergey Zigachev UCHAR ucMemClockIndexLow; 124*b843c749SSergey Zigachev USHORT usClassification; 125*b843c749SSergey Zigachev ULONG ulCapsAndSettings; 126*b843c749SSergey Zigachev USHORT usClassification2; 127*b843c749SSergey Zigachev } ATOM_Vega10_State; 128*b843c749SSergey Zigachev 129*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_State_Array { 130*b843c749SSergey Zigachev UCHAR ucRevId; 131*b843c749SSergey Zigachev UCHAR ucNumEntries; /* Number of entries. */ 132*b843c749SSergey Zigachev ATOM_Vega10_State states[1]; /* Dynamically allocate entries. */ 133*b843c749SSergey Zigachev } ATOM_Vega10_State_Array; 134*b843c749SSergey Zigachev 135*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_CLK_Dependency_Record { 136*b843c749SSergey Zigachev ULONG ulClk; /* Frequency of Clock */ 137*b843c749SSergey Zigachev UCHAR ucVddInd; /* Base voltage */ 138*b843c749SSergey Zigachev } ATOM_Vega10_CLK_Dependency_Record; 139*b843c749SSergey Zigachev 140*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_GFXCLK_Dependency_Record { 141*b843c749SSergey Zigachev ULONG ulClk; /* Clock Frequency */ 142*b843c749SSergey Zigachev UCHAR ucVddInd; /* SOC_VDD index */ 143*b843c749SSergey Zigachev USHORT usCKSVOffsetandDisable; /* Bits 0~30: Voltage offset for CKS, Bit 31: Disable/enable for the GFXCLK level. */ 144*b843c749SSergey Zigachev USHORT usAVFSOffset; /* AVFS Voltage offset */ 145*b843c749SSergey Zigachev } ATOM_Vega10_GFXCLK_Dependency_Record; 146*b843c749SSergey Zigachev 147*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_GFXCLK_Dependency_Record_V2 { 148*b843c749SSergey Zigachev ULONG ulClk; 149*b843c749SSergey Zigachev UCHAR ucVddInd; 150*b843c749SSergey Zigachev USHORT usCKSVOffsetandDisable; 151*b843c749SSergey Zigachev USHORT usAVFSOffset; 152*b843c749SSergey Zigachev UCHAR ucACGEnable; 153*b843c749SSergey Zigachev UCHAR ucReserved[3]; 154*b843c749SSergey Zigachev } ATOM_Vega10_GFXCLK_Dependency_Record_V2; 155*b843c749SSergey Zigachev 156*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_MCLK_Dependency_Record { 157*b843c749SSergey Zigachev ULONG ulMemClk; /* Clock Frequency */ 158*b843c749SSergey Zigachev UCHAR ucVddInd; /* SOC_VDD index */ 159*b843c749SSergey Zigachev UCHAR ucVddMemInd; /* MEM_VDD - only non zero for MCLK record */ 160*b843c749SSergey Zigachev UCHAR ucVddciInd; /* VDDCI = only non zero for MCLK record */ 161*b843c749SSergey Zigachev } ATOM_Vega10_MCLK_Dependency_Record; 162*b843c749SSergey Zigachev 163*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_GFXCLK_Dependency_Table { 164*b843c749SSergey Zigachev UCHAR ucRevId; 165*b843c749SSergey Zigachev UCHAR ucNumEntries; /* Number of entries. */ 166*b843c749SSergey Zigachev ATOM_Vega10_GFXCLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */ 167*b843c749SSergey Zigachev } ATOM_Vega10_GFXCLK_Dependency_Table; 168*b843c749SSergey Zigachev 169*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_MCLK_Dependency_Table { 170*b843c749SSergey Zigachev UCHAR ucRevId; 171*b843c749SSergey Zigachev UCHAR ucNumEntries; /* Number of entries. */ 172*b843c749SSergey Zigachev ATOM_Vega10_MCLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */ 173*b843c749SSergey Zigachev } ATOM_Vega10_MCLK_Dependency_Table; 174*b843c749SSergey Zigachev 175*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_SOCCLK_Dependency_Table { 176*b843c749SSergey Zigachev UCHAR ucRevId; 177*b843c749SSergey Zigachev UCHAR ucNumEntries; /* Number of entries. */ 178*b843c749SSergey Zigachev ATOM_Vega10_CLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */ 179*b843c749SSergey Zigachev } ATOM_Vega10_SOCCLK_Dependency_Table; 180*b843c749SSergey Zigachev 181*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_DCEFCLK_Dependency_Table { 182*b843c749SSergey Zigachev UCHAR ucRevId; 183*b843c749SSergey Zigachev UCHAR ucNumEntries; /* Number of entries. */ 184*b843c749SSergey Zigachev ATOM_Vega10_CLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */ 185*b843c749SSergey Zigachev } ATOM_Vega10_DCEFCLK_Dependency_Table; 186*b843c749SSergey Zigachev 187*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_PIXCLK_Dependency_Table { 188*b843c749SSergey Zigachev UCHAR ucRevId; 189*b843c749SSergey Zigachev UCHAR ucNumEntries; /* Number of entries. */ 190*b843c749SSergey Zigachev ATOM_Vega10_CLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */ 191*b843c749SSergey Zigachev } ATOM_Vega10_PIXCLK_Dependency_Table; 192*b843c749SSergey Zigachev 193*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_DISPCLK_Dependency_Table { 194*b843c749SSergey Zigachev UCHAR ucRevId; 195*b843c749SSergey Zigachev UCHAR ucNumEntries; /* Number of entries.*/ 196*b843c749SSergey Zigachev ATOM_Vega10_CLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */ 197*b843c749SSergey Zigachev } ATOM_Vega10_DISPCLK_Dependency_Table; 198*b843c749SSergey Zigachev 199*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_PHYCLK_Dependency_Table { 200*b843c749SSergey Zigachev UCHAR ucRevId; 201*b843c749SSergey Zigachev UCHAR ucNumEntries; /* Number of entries. */ 202*b843c749SSergey Zigachev ATOM_Vega10_CLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */ 203*b843c749SSergey Zigachev } ATOM_Vega10_PHYCLK_Dependency_Table; 204*b843c749SSergey Zigachev 205*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_MM_Dependency_Record { 206*b843c749SSergey Zigachev UCHAR ucVddcInd; /* SOC_VDD voltage */ 207*b843c749SSergey Zigachev ULONG ulDClk; /* UVD D-clock */ 208*b843c749SSergey Zigachev ULONG ulVClk; /* UVD V-clock */ 209*b843c749SSergey Zigachev ULONG ulEClk; /* VCE clock */ 210*b843c749SSergey Zigachev ULONG ulPSPClk; /* PSP clock */ 211*b843c749SSergey Zigachev } ATOM_Vega10_MM_Dependency_Record; 212*b843c749SSergey Zigachev 213*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_MM_Dependency_Table { 214*b843c749SSergey Zigachev UCHAR ucRevId; 215*b843c749SSergey Zigachev UCHAR ucNumEntries; /* Number of entries */ 216*b843c749SSergey Zigachev ATOM_Vega10_MM_Dependency_Record entries[1]; /* Dynamically allocate entries */ 217*b843c749SSergey Zigachev } ATOM_Vega10_MM_Dependency_Table; 218*b843c749SSergey Zigachev 219*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_PCIE_Record { 220*b843c749SSergey Zigachev ULONG ulLCLK; /* LClock */ 221*b843c749SSergey Zigachev UCHAR ucPCIEGenSpeed; /* PCIE Speed */ 222*b843c749SSergey Zigachev UCHAR ucPCIELaneWidth; /* PCIE Lane Width */ 223*b843c749SSergey Zigachev } ATOM_Vega10_PCIE_Record; 224*b843c749SSergey Zigachev 225*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_PCIE_Table { 226*b843c749SSergey Zigachev UCHAR ucRevId; 227*b843c749SSergey Zigachev UCHAR ucNumEntries; /* Number of entries */ 228*b843c749SSergey Zigachev ATOM_Vega10_PCIE_Record entries[1]; /* Dynamically allocate entries. */ 229*b843c749SSergey Zigachev } ATOM_Vega10_PCIE_Table; 230*b843c749SSergey Zigachev 231*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_Voltage_Lookup_Record { 232*b843c749SSergey Zigachev USHORT usVdd; /* Base voltage */ 233*b843c749SSergey Zigachev } ATOM_Vega10_Voltage_Lookup_Record; 234*b843c749SSergey Zigachev 235*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_Voltage_Lookup_Table { 236*b843c749SSergey Zigachev UCHAR ucRevId; 237*b843c749SSergey Zigachev UCHAR ucNumEntries; /* Number of entries */ 238*b843c749SSergey Zigachev ATOM_Vega10_Voltage_Lookup_Record entries[1]; /* Dynamically allocate entries */ 239*b843c749SSergey Zigachev } ATOM_Vega10_Voltage_Lookup_Table; 240*b843c749SSergey Zigachev 241*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_Fan_Table { 242*b843c749SSergey Zigachev UCHAR ucRevId; /* Change this if the table format changes or version changes so that the other fields are not the same. */ 243*b843c749SSergey Zigachev USHORT usFanOutputSensitivity; /* Sensitivity of fan reaction to temepature changes. */ 244*b843c749SSergey Zigachev USHORT usFanRPMMax; /* The default value in RPM. */ 245*b843c749SSergey Zigachev USHORT usThrottlingRPM; 246*b843c749SSergey Zigachev USHORT usFanAcousticLimit; /* Minimum Fan Controller Frequency Acoustic Limit. */ 247*b843c749SSergey Zigachev USHORT usTargetTemperature; /* The default ideal temperature in Celcius. */ 248*b843c749SSergey Zigachev USHORT usMinimumPWMLimit; /* The minimum PWM that the advanced fan controller can set. */ 249*b843c749SSergey Zigachev USHORT usTargetGfxClk; /* The ideal Fan Controller GFXCLK Frequency Acoustic Limit. */ 250*b843c749SSergey Zigachev USHORT usFanGainEdge; 251*b843c749SSergey Zigachev USHORT usFanGainHotspot; 252*b843c749SSergey Zigachev USHORT usFanGainLiquid; 253*b843c749SSergey Zigachev USHORT usFanGainVrVddc; 254*b843c749SSergey Zigachev USHORT usFanGainVrMvdd; 255*b843c749SSergey Zigachev USHORT usFanGainPlx; 256*b843c749SSergey Zigachev USHORT usFanGainHbm; 257*b843c749SSergey Zigachev UCHAR ucEnableZeroRPM; 258*b843c749SSergey Zigachev USHORT usFanStopTemperature; 259*b843c749SSergey Zigachev USHORT usFanStartTemperature; 260*b843c749SSergey Zigachev } ATOM_Vega10_Fan_Table; 261*b843c749SSergey Zigachev 262*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_Fan_Table_V2 { 263*b843c749SSergey Zigachev UCHAR ucRevId; 264*b843c749SSergey Zigachev USHORT usFanOutputSensitivity; 265*b843c749SSergey Zigachev USHORT usFanAcousticLimitRpm; 266*b843c749SSergey Zigachev USHORT usThrottlingRPM; 267*b843c749SSergey Zigachev USHORT usTargetTemperature; 268*b843c749SSergey Zigachev USHORT usMinimumPWMLimit; 269*b843c749SSergey Zigachev USHORT usTargetGfxClk; 270*b843c749SSergey Zigachev USHORT usFanGainEdge; 271*b843c749SSergey Zigachev USHORT usFanGainHotspot; 272*b843c749SSergey Zigachev USHORT usFanGainLiquid; 273*b843c749SSergey Zigachev USHORT usFanGainVrVddc; 274*b843c749SSergey Zigachev USHORT usFanGainVrMvdd; 275*b843c749SSergey Zigachev USHORT usFanGainPlx; 276*b843c749SSergey Zigachev USHORT usFanGainHbm; 277*b843c749SSergey Zigachev UCHAR ucEnableZeroRPM; 278*b843c749SSergey Zigachev USHORT usFanStopTemperature; 279*b843c749SSergey Zigachev USHORT usFanStartTemperature; 280*b843c749SSergey Zigachev UCHAR ucFanParameters; 281*b843c749SSergey Zigachev UCHAR ucFanMinRPM; 282*b843c749SSergey Zigachev UCHAR ucFanMaxRPM; 283*b843c749SSergey Zigachev } ATOM_Vega10_Fan_Table_V2; 284*b843c749SSergey Zigachev 285*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_Thermal_Controller { 286*b843c749SSergey Zigachev UCHAR ucRevId; 287*b843c749SSergey Zigachev UCHAR ucType; /* one of ATOM_VEGA10_PP_THERMALCONTROLLER_*/ 288*b843c749SSergey Zigachev UCHAR ucI2cLine; /* as interpreted by DAL I2C */ 289*b843c749SSergey Zigachev UCHAR ucI2cAddress; 290*b843c749SSergey Zigachev UCHAR ucFanParameters; /* Fan Control Parameters. */ 291*b843c749SSergey Zigachev UCHAR ucFanMinRPM; /* Fan Minimum RPM (hundreds) -- for display purposes only.*/ 292*b843c749SSergey Zigachev UCHAR ucFanMaxRPM; /* Fan Maximum RPM (hundreds) -- for display purposes only.*/ 293*b843c749SSergey Zigachev UCHAR ucFlags; /* to be defined */ 294*b843c749SSergey Zigachev } ATOM_Vega10_Thermal_Controller; 295*b843c749SSergey Zigachev 296*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_VCE_State_Record 297*b843c749SSergey Zigachev { 298*b843c749SSergey Zigachev UCHAR ucVCEClockIndex; /*index into usVCEDependencyTableOffset of 'ATOM_Vega10_MM_Dependency_Table' type */ 299*b843c749SSergey Zigachev UCHAR ucFlag; /* 2 bits indicates memory p-states */ 300*b843c749SSergey Zigachev UCHAR ucSCLKIndex; /* index into ATOM_Vega10_SCLK_Dependency_Table */ 301*b843c749SSergey Zigachev UCHAR ucMCLKIndex; /* index into ATOM_Vega10_MCLK_Dependency_Table */ 302*b843c749SSergey Zigachev } ATOM_Vega10_VCE_State_Record; 303*b843c749SSergey Zigachev 304*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_VCE_State_Table 305*b843c749SSergey Zigachev { 306*b843c749SSergey Zigachev UCHAR ucRevId; 307*b843c749SSergey Zigachev UCHAR ucNumEntries; 308*b843c749SSergey Zigachev ATOM_Vega10_VCE_State_Record entries[1]; 309*b843c749SSergey Zigachev } ATOM_Vega10_VCE_State_Table; 310*b843c749SSergey Zigachev 311*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_PowerTune_Table { 312*b843c749SSergey Zigachev UCHAR ucRevId; 313*b843c749SSergey Zigachev USHORT usSocketPowerLimit; 314*b843c749SSergey Zigachev USHORT usBatteryPowerLimit; 315*b843c749SSergey Zigachev USHORT usSmallPowerLimit; 316*b843c749SSergey Zigachev USHORT usTdcLimit; 317*b843c749SSergey Zigachev USHORT usEdcLimit; 318*b843c749SSergey Zigachev USHORT usSoftwareShutdownTemp; 319*b843c749SSergey Zigachev USHORT usTemperatureLimitHotSpot; 320*b843c749SSergey Zigachev USHORT usTemperatureLimitLiquid1; 321*b843c749SSergey Zigachev USHORT usTemperatureLimitLiquid2; 322*b843c749SSergey Zigachev USHORT usTemperatureLimitHBM; 323*b843c749SSergey Zigachev USHORT usTemperatureLimitVrSoc; 324*b843c749SSergey Zigachev USHORT usTemperatureLimitVrMem; 325*b843c749SSergey Zigachev USHORT usTemperatureLimitPlx; 326*b843c749SSergey Zigachev USHORT usLoadLineResistance; 327*b843c749SSergey Zigachev UCHAR ucLiquid1_I2C_address; 328*b843c749SSergey Zigachev UCHAR ucLiquid2_I2C_address; 329*b843c749SSergey Zigachev UCHAR ucVr_I2C_address; 330*b843c749SSergey Zigachev UCHAR ucPlx_I2C_address; 331*b843c749SSergey Zigachev UCHAR ucLiquid_I2C_LineSCL; 332*b843c749SSergey Zigachev UCHAR ucLiquid_I2C_LineSDA; 333*b843c749SSergey Zigachev UCHAR ucVr_I2C_LineSCL; 334*b843c749SSergey Zigachev UCHAR ucVr_I2C_LineSDA; 335*b843c749SSergey Zigachev UCHAR ucPlx_I2C_LineSCL; 336*b843c749SSergey Zigachev UCHAR ucPlx_I2C_LineSDA; 337*b843c749SSergey Zigachev USHORT usTemperatureLimitTedge; 338*b843c749SSergey Zigachev } ATOM_Vega10_PowerTune_Table; 339*b843c749SSergey Zigachev 340*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_PowerTune_Table_V2 341*b843c749SSergey Zigachev { 342*b843c749SSergey Zigachev UCHAR ucRevId; 343*b843c749SSergey Zigachev USHORT usSocketPowerLimit; 344*b843c749SSergey Zigachev USHORT usBatteryPowerLimit; 345*b843c749SSergey Zigachev USHORT usSmallPowerLimit; 346*b843c749SSergey Zigachev USHORT usTdcLimit; 347*b843c749SSergey Zigachev USHORT usEdcLimit; 348*b843c749SSergey Zigachev USHORT usSoftwareShutdownTemp; 349*b843c749SSergey Zigachev USHORT usTemperatureLimitHotSpot; 350*b843c749SSergey Zigachev USHORT usTemperatureLimitLiquid1; 351*b843c749SSergey Zigachev USHORT usTemperatureLimitLiquid2; 352*b843c749SSergey Zigachev USHORT usTemperatureLimitHBM; 353*b843c749SSergey Zigachev USHORT usTemperatureLimitVrSoc; 354*b843c749SSergey Zigachev USHORT usTemperatureLimitVrMem; 355*b843c749SSergey Zigachev USHORT usTemperatureLimitPlx; 356*b843c749SSergey Zigachev USHORT usLoadLineResistance; 357*b843c749SSergey Zigachev UCHAR ucLiquid1_I2C_address; 358*b843c749SSergey Zigachev UCHAR ucLiquid2_I2C_address; 359*b843c749SSergey Zigachev UCHAR ucLiquid_I2C_Line; 360*b843c749SSergey Zigachev UCHAR ucVr_I2C_address; 361*b843c749SSergey Zigachev UCHAR ucVr_I2C_Line; 362*b843c749SSergey Zigachev UCHAR ucPlx_I2C_address; 363*b843c749SSergey Zigachev UCHAR ucPlx_I2C_Line; 364*b843c749SSergey Zigachev USHORT usTemperatureLimitTedge; 365*b843c749SSergey Zigachev } ATOM_Vega10_PowerTune_Table_V2; 366*b843c749SSergey Zigachev 367*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_PowerTune_Table_V3 368*b843c749SSergey Zigachev { 369*b843c749SSergey Zigachev UCHAR ucRevId; 370*b843c749SSergey Zigachev USHORT usSocketPowerLimit; 371*b843c749SSergey Zigachev USHORT usBatteryPowerLimit; 372*b843c749SSergey Zigachev USHORT usSmallPowerLimit; 373*b843c749SSergey Zigachev USHORT usTdcLimit; 374*b843c749SSergey Zigachev USHORT usEdcLimit; 375*b843c749SSergey Zigachev USHORT usSoftwareShutdownTemp; 376*b843c749SSergey Zigachev USHORT usTemperatureLimitHotSpot; 377*b843c749SSergey Zigachev USHORT usTemperatureLimitLiquid1; 378*b843c749SSergey Zigachev USHORT usTemperatureLimitLiquid2; 379*b843c749SSergey Zigachev USHORT usTemperatureLimitHBM; 380*b843c749SSergey Zigachev USHORT usTemperatureLimitVrSoc; 381*b843c749SSergey Zigachev USHORT usTemperatureLimitVrMem; 382*b843c749SSergey Zigachev USHORT usTemperatureLimitPlx; 383*b843c749SSergey Zigachev USHORT usLoadLineResistance; 384*b843c749SSergey Zigachev UCHAR ucLiquid1_I2C_address; 385*b843c749SSergey Zigachev UCHAR ucLiquid2_I2C_address; 386*b843c749SSergey Zigachev UCHAR ucLiquid_I2C_Line; 387*b843c749SSergey Zigachev UCHAR ucVr_I2C_address; 388*b843c749SSergey Zigachev UCHAR ucVr_I2C_Line; 389*b843c749SSergey Zigachev UCHAR ucPlx_I2C_address; 390*b843c749SSergey Zigachev UCHAR ucPlx_I2C_Line; 391*b843c749SSergey Zigachev USHORT usTemperatureLimitTedge; 392*b843c749SSergey Zigachev USHORT usBoostStartTemperature; 393*b843c749SSergey Zigachev USHORT usBoostStopTemperature; 394*b843c749SSergey Zigachev ULONG ulBoostClock; 395*b843c749SSergey Zigachev ULONG Reserved[2]; 396*b843c749SSergey Zigachev } ATOM_Vega10_PowerTune_Table_V3; 397*b843c749SSergey Zigachev 398*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_Hard_Limit_Record { 399*b843c749SSergey Zigachev ULONG ulSOCCLKLimit; 400*b843c749SSergey Zigachev ULONG ulGFXCLKLimit; 401*b843c749SSergey Zigachev ULONG ulMCLKLimit; 402*b843c749SSergey Zigachev USHORT usVddcLimit; 403*b843c749SSergey Zigachev USHORT usVddciLimit; 404*b843c749SSergey Zigachev USHORT usVddMemLimit; 405*b843c749SSergey Zigachev } ATOM_Vega10_Hard_Limit_Record; 406*b843c749SSergey Zigachev 407*b843c749SSergey Zigachev typedef struct _ATOM_Vega10_Hard_Limit_Table 408*b843c749SSergey Zigachev { 409*b843c749SSergey Zigachev UCHAR ucRevId; 410*b843c749SSergey Zigachev UCHAR ucNumEntries; 411*b843c749SSergey Zigachev ATOM_Vega10_Hard_Limit_Record entries[1]; 412*b843c749SSergey Zigachev } ATOM_Vega10_Hard_Limit_Table; 413*b843c749SSergey Zigachev 414*b843c749SSergey Zigachev typedef struct _Vega10_PPTable_Generic_SubTable_Header 415*b843c749SSergey Zigachev { 416*b843c749SSergey Zigachev UCHAR ucRevId; 417*b843c749SSergey Zigachev } Vega10_PPTable_Generic_SubTable_Header; 418*b843c749SSergey Zigachev 419*b843c749SSergey Zigachev #pragma pack(pop) 420*b843c749SSergey Zigachev 421*b843c749SSergey Zigachev #endif 422