1 1.1 riastrad /* $NetBSD: smu74.h,v 1.2 2021/12/18 23:45:26 riastradh Exp $ */ 2 1.1 riastrad 3 1.1 riastrad /* 4 1.1 riastrad * Copyright 2014 Advanced Micro Devices, Inc. 5 1.1 riastrad * 6 1.1 riastrad * Permission is hereby granted, free of charge, to any person obtaining a 7 1.1 riastrad * copy of this software and associated documentation files (the "Software"), 8 1.1 riastrad * to deal in the Software without restriction, including without limitation 9 1.1 riastrad * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10 1.1 riastrad * and/or sell copies of the Software, and to permit persons to whom the 11 1.1 riastrad * Software is furnished to do so, subject to the following conditions: 12 1.1 riastrad * 13 1.1 riastrad * The above copyright notice and this permission notice shall be included in 14 1.1 riastrad * all copies or substantial portions of the Software. 15 1.1 riastrad * 16 1.1 riastrad * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 1.1 riastrad * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 1.1 riastrad * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19 1.1 riastrad * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 1.1 riastrad * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 1.1 riastrad * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 1.1 riastrad * OTHER DEALINGS IN THE SOFTWARE. 23 1.1 riastrad * 24 1.1 riastrad */ 25 1.1 riastrad 26 1.1 riastrad 27 1.1 riastrad #ifndef SMU74_H 28 1.1 riastrad #define SMU74_H 29 1.1 riastrad 30 1.1 riastrad #pragma pack(push, 1) 31 1.1 riastrad 32 1.1 riastrad #define SMU__DGPU_ONLY 33 1.1 riastrad 34 1.1 riastrad #define SMU__NUM_SCLK_DPM_STATE 8 35 1.1 riastrad #define SMU__NUM_MCLK_DPM_LEVELS 4 36 1.1 riastrad #define SMU__NUM_LCLK_DPM_LEVELS 8 37 1.1 riastrad #define SMU__NUM_PCIE_DPM_LEVELS 8 38 1.1 riastrad 39 1.1 riastrad #define EXP_M1 35 40 1.1 riastrad #define EXP_M2 92821 41 1.1 riastrad #define EXP_B 66629747 42 1.1 riastrad 43 1.1 riastrad #define EXP_M1_1 365 44 1.1 riastrad #define EXP_M2_1 658700 45 1.1 riastrad #define EXP_B_1 305506134 46 1.1 riastrad 47 1.1 riastrad #define EXP_M1_2 189 48 1.1 riastrad #define EXP_M2_2 379692 49 1.1 riastrad #define EXP_B_2 194609469 50 1.1 riastrad 51 1.1 riastrad #define EXP_M1_3 99 52 1.1 riastrad #define EXP_M2_3 217915 53 1.1 riastrad #define EXP_B_3 122255994 54 1.1 riastrad 55 1.1 riastrad #define EXP_M1_4 51 56 1.1 riastrad #define EXP_M2_4 122643 57 1.1 riastrad #define EXP_B_4 74893384 58 1.1 riastrad 59 1.1 riastrad #define EXP_M1_5 423 60 1.1 riastrad #define EXP_M2_5 1103326 61 1.1 riastrad #define EXP_B_5 728122621 62 1.1 riastrad 63 1.1 riastrad enum SID_OPTION { 64 1.1 riastrad SID_OPTION_HI, 65 1.1 riastrad SID_OPTION_LO, 66 1.1 riastrad SID_OPTION_COUNT 67 1.1 riastrad }; 68 1.1 riastrad 69 1.1 riastrad enum Poly3rdOrderCoeff { 70 1.1 riastrad LEAKAGE_TEMPERATURE_SCALAR, 71 1.1 riastrad LEAKAGE_VOLTAGE_SCALAR, 72 1.1 riastrad DYNAMIC_VOLTAGE_SCALAR, 73 1.1 riastrad POLY_3RD_ORDER_COUNT 74 1.1 riastrad }; 75 1.1 riastrad 76 1.1 riastrad struct SMU7_Poly3rdOrder_Data { 77 1.1 riastrad int32_t a; 78 1.1 riastrad int32_t b; 79 1.1 riastrad int32_t c; 80 1.1 riastrad int32_t d; 81 1.1 riastrad uint8_t a_shift; 82 1.1 riastrad uint8_t b_shift; 83 1.1 riastrad uint8_t c_shift; 84 1.1 riastrad uint8_t x_shift; 85 1.1 riastrad }; 86 1.1 riastrad 87 1.1 riastrad typedef struct SMU7_Poly3rdOrder_Data SMU7_Poly3rdOrder_Data; 88 1.1 riastrad 89 1.1 riastrad struct Power_Calculator_Data { 90 1.1 riastrad uint16_t NoLoadVoltage; 91 1.1 riastrad uint16_t LoadVoltage; 92 1.1 riastrad uint16_t Resistance; 93 1.1 riastrad uint16_t Temperature; 94 1.1 riastrad uint16_t BaseLeakage; 95 1.1 riastrad uint16_t LkgTempScalar; 96 1.1 riastrad uint16_t LkgVoltScalar; 97 1.1 riastrad uint16_t LkgAreaScalar; 98 1.1 riastrad uint16_t LkgPower; 99 1.1 riastrad uint16_t DynVoltScalar; 100 1.1 riastrad uint32_t Cac; 101 1.1 riastrad uint32_t DynPower; 102 1.1 riastrad uint32_t TotalCurrent; 103 1.1 riastrad uint32_t TotalPower; 104 1.1 riastrad }; 105 1.1 riastrad 106 1.1 riastrad typedef struct Power_Calculator_Data PowerCalculatorData_t; 107 1.1 riastrad 108 1.1 riastrad struct Gc_Cac_Weight_Data { 109 1.1 riastrad uint8_t index; 110 1.1 riastrad uint32_t value; 111 1.1 riastrad }; 112 1.1 riastrad 113 1.1 riastrad typedef struct Gc_Cac_Weight_Data GcCacWeight_Data; 114 1.1 riastrad 115 1.1 riastrad 116 1.1 riastrad typedef struct { 117 1.1 riastrad uint32_t high; 118 1.1 riastrad uint32_t low; 119 1.1 riastrad } data_64_t; 120 1.1 riastrad 121 1.1 riastrad typedef struct { 122 1.1 riastrad data_64_t high; 123 1.1 riastrad data_64_t low; 124 1.1 riastrad } data_128_t; 125 1.1 riastrad 126 1.1 riastrad #define SMU7_CONTEXT_ID_SMC 1 127 1.1 riastrad #define SMU7_CONTEXT_ID_VBIOS 2 128 1.1 riastrad 129 1.1 riastrad #define SMU74_MAX_LEVELS_VDDC 16 130 1.1 riastrad #define SMU74_MAX_LEVELS_VDDGFX 16 131 1.1 riastrad #define SMU74_MAX_LEVELS_VDDCI 8 132 1.1 riastrad #define SMU74_MAX_LEVELS_MVDD 4 133 1.1 riastrad 134 1.1 riastrad #define SMU_MAX_SMIO_LEVELS 4 135 1.1 riastrad 136 1.1 riastrad #define SMU74_MAX_LEVELS_GRAPHICS SMU__NUM_SCLK_DPM_STATE /* SCLK + SQ DPM + ULV */ 137 1.1 riastrad #define SMU74_MAX_LEVELS_MEMORY SMU__NUM_MCLK_DPM_LEVELS /* MCLK Levels DPM */ 138 1.1 riastrad #define SMU74_MAX_LEVELS_GIO SMU__NUM_LCLK_DPM_LEVELS /* LCLK Levels */ 139 1.1 riastrad #define SMU74_MAX_LEVELS_LINK SMU__NUM_PCIE_DPM_LEVELS /* PCIe speed and number of lanes */ 140 1.1 riastrad #define SMU74_MAX_LEVELS_UVD 8 /* VCLK/DCLK levels for UVD */ 141 1.1 riastrad #define SMU74_MAX_LEVELS_VCE 8 /* ECLK levels for VCE */ 142 1.1 riastrad #define SMU74_MAX_LEVELS_ACP 8 /* ACLK levels for ACP */ 143 1.1 riastrad #define SMU74_MAX_LEVELS_SAMU 8 /* SAMCLK levels for SAMU */ 144 1.1 riastrad #define SMU74_MAX_ENTRIES_SMIO 32 /* Number of entries in SMIO table */ 145 1.1 riastrad 146 1.1 riastrad #define DPM_NO_LIMIT 0 147 1.1 riastrad #define DPM_NO_UP 1 148 1.1 riastrad #define DPM_GO_DOWN 2 149 1.1 riastrad #define DPM_GO_UP 3 150 1.1 riastrad 151 1.1 riastrad #define SMU7_FIRST_DPM_GRAPHICS_LEVEL 0 152 1.1 riastrad #define SMU7_FIRST_DPM_MEMORY_LEVEL 0 153 1.1 riastrad 154 1.1 riastrad #define GPIO_CLAMP_MODE_VRHOT 1 155 1.1 riastrad #define GPIO_CLAMP_MODE_THERM 2 156 1.1 riastrad #define GPIO_CLAMP_MODE_DC 4 157 1.1 riastrad 158 1.1 riastrad #define SCRATCH_B_TARG_PCIE_INDEX_SHIFT 0 159 1.1 riastrad #define SCRATCH_B_TARG_PCIE_INDEX_MASK (0x7<<SCRATCH_B_TARG_PCIE_INDEX_SHIFT) 160 1.1 riastrad #define SCRATCH_B_CURR_PCIE_INDEX_SHIFT 3 161 1.1 riastrad #define SCRATCH_B_CURR_PCIE_INDEX_MASK (0x7<<SCRATCH_B_CURR_PCIE_INDEX_SHIFT) 162 1.1 riastrad #define SCRATCH_B_TARG_UVD_INDEX_SHIFT 6 163 1.1 riastrad #define SCRATCH_B_TARG_UVD_INDEX_MASK (0x7<<SCRATCH_B_TARG_UVD_INDEX_SHIFT) 164 1.1 riastrad #define SCRATCH_B_CURR_UVD_INDEX_SHIFT 9 165 1.1 riastrad #define SCRATCH_B_CURR_UVD_INDEX_MASK (0x7<<SCRATCH_B_CURR_UVD_INDEX_SHIFT) 166 1.1 riastrad #define SCRATCH_B_TARG_VCE_INDEX_SHIFT 12 167 1.1 riastrad #define SCRATCH_B_TARG_VCE_INDEX_MASK (0x7<<SCRATCH_B_TARG_VCE_INDEX_SHIFT) 168 1.1 riastrad #define SCRATCH_B_CURR_VCE_INDEX_SHIFT 15 169 1.1 riastrad #define SCRATCH_B_CURR_VCE_INDEX_MASK (0x7<<SCRATCH_B_CURR_VCE_INDEX_SHIFT) 170 1.1 riastrad #define SCRATCH_B_TARG_ACP_INDEX_SHIFT 18 171 1.1 riastrad #define SCRATCH_B_TARG_ACP_INDEX_MASK (0x7<<SCRATCH_B_TARG_ACP_INDEX_SHIFT) 172 1.1 riastrad #define SCRATCH_B_CURR_ACP_INDEX_SHIFT 21 173 1.1 riastrad #define SCRATCH_B_CURR_ACP_INDEX_MASK (0x7<<SCRATCH_B_CURR_ACP_INDEX_SHIFT) 174 1.1 riastrad #define SCRATCH_B_TARG_SAMU_INDEX_SHIFT 24 175 1.1 riastrad #define SCRATCH_B_TARG_SAMU_INDEX_MASK (0x7<<SCRATCH_B_TARG_SAMU_INDEX_SHIFT) 176 1.1 riastrad #define SCRATCH_B_CURR_SAMU_INDEX_SHIFT 27 177 1.1 riastrad #define SCRATCH_B_CURR_SAMU_INDEX_MASK (0x7<<SCRATCH_B_CURR_SAMU_INDEX_SHIFT) 178 1.1 riastrad 179 1.1 riastrad /* Virtualization Defines */ 180 1.1 riastrad #define CG_XDMA_MASK 0x1 181 1.1 riastrad #define CG_XDMA_SHIFT 0 182 1.1 riastrad #define CG_UVD_MASK 0x2 183 1.1 riastrad #define CG_UVD_SHIFT 1 184 1.1 riastrad #define CG_VCE_MASK 0x4 185 1.1 riastrad #define CG_VCE_SHIFT 2 186 1.1 riastrad #define CG_SAMU_MASK 0x8 187 1.1 riastrad #define CG_SAMU_SHIFT 3 188 1.1 riastrad #define CG_GFX_MASK 0x10 189 1.1 riastrad #define CG_GFX_SHIFT 4 190 1.1 riastrad #define CG_SDMA_MASK 0x20 191 1.1 riastrad #define CG_SDMA_SHIFT 5 192 1.1 riastrad #define CG_HDP_MASK 0x40 193 1.1 riastrad #define CG_HDP_SHIFT 6 194 1.1 riastrad #define CG_MC_MASK 0x80 195 1.1 riastrad #define CG_MC_SHIFT 7 196 1.1 riastrad #define CG_DRM_MASK 0x100 197 1.1 riastrad #define CG_DRM_SHIFT 8 198 1.1 riastrad #define CG_ROM_MASK 0x200 199 1.1 riastrad #define CG_ROM_SHIFT 9 200 1.1 riastrad #define CG_BIF_MASK 0x400 201 1.1 riastrad #define CG_BIF_SHIFT 10 202 1.1 riastrad 203 1.1 riastrad 204 1.1 riastrad #define SMU74_DTE_ITERATIONS 5 205 1.1 riastrad #define SMU74_DTE_SOURCES 3 206 1.1 riastrad #define SMU74_DTE_SINKS 1 207 1.1 riastrad #define SMU74_NUM_CPU_TES 0 208 1.1 riastrad #define SMU74_NUM_GPU_TES 1 209 1.1 riastrad #define SMU74_NUM_NON_TES 2 210 1.1 riastrad #define SMU74_DTE_FAN_SCALAR_MIN 0x100 211 1.1 riastrad #define SMU74_DTE_FAN_SCALAR_MAX 0x166 212 1.1 riastrad #define SMU74_DTE_FAN_TEMP_MAX 93 213 1.1 riastrad #define SMU74_DTE_FAN_TEMP_MIN 83 214 1.1 riastrad 215 1.1 riastrad 216 1.1 riastrad #if defined SMU__FUSION_ONLY 217 1.1 riastrad #define SMU7_DTE_ITERATIONS 5 218 1.1 riastrad #define SMU7_DTE_SOURCES 5 219 1.1 riastrad #define SMU7_DTE_SINKS 3 220 1.1 riastrad #define SMU7_NUM_CPU_TES 2 221 1.1 riastrad #define SMU7_NUM_GPU_TES 1 222 1.1 riastrad #define SMU7_NUM_NON_TES 2 223 1.1 riastrad #endif 224 1.1 riastrad 225 1.1 riastrad struct SMU7_HystController_Data { 226 1.1 riastrad uint8_t waterfall_up; 227 1.1 riastrad uint8_t waterfall_down; 228 1.1 riastrad uint8_t waterfall_limit; 229 1.1 riastrad uint8_t spare; 230 1.1 riastrad uint16_t release_cnt; 231 1.1 riastrad uint16_t release_limit; 232 1.1 riastrad }; 233 1.1 riastrad 234 1.1 riastrad typedef struct SMU7_HystController_Data SMU7_HystController_Data; 235 1.1 riastrad 236 1.1 riastrad struct SMU74_PIDController { 237 1.1 riastrad uint32_t Ki; 238 1.1 riastrad int32_t LFWindupUpperLim; 239 1.1 riastrad int32_t LFWindupLowerLim; 240 1.1 riastrad uint32_t StatePrecision; 241 1.1 riastrad uint32_t LfPrecision; 242 1.1 riastrad uint32_t LfOffset; 243 1.1 riastrad uint32_t MaxState; 244 1.1 riastrad uint32_t MaxLfFraction; 245 1.1 riastrad uint32_t StateShift; 246 1.1 riastrad }; 247 1.1 riastrad 248 1.1 riastrad typedef struct SMU74_PIDController SMU74_PIDController; 249 1.1 riastrad 250 1.1 riastrad struct SMU7_LocalDpmScoreboard { 251 1.1 riastrad uint32_t PercentageBusy; 252 1.1 riastrad 253 1.1 riastrad int32_t PIDError; 254 1.1 riastrad int32_t PIDIntegral; 255 1.1 riastrad int32_t PIDOutput; 256 1.1 riastrad 257 1.1 riastrad uint32_t SigmaDeltaAccum; 258 1.1 riastrad uint32_t SigmaDeltaOutput; 259 1.1 riastrad uint32_t SigmaDeltaLevel; 260 1.1 riastrad 261 1.1 riastrad uint32_t UtilizationSetpoint; 262 1.1 riastrad 263 1.1 riastrad uint8_t TdpClampMode; 264 1.1 riastrad uint8_t TdcClampMode; 265 1.1 riastrad uint8_t ThermClampMode; 266 1.1 riastrad uint8_t VoltageBusy; 267 1.1 riastrad 268 1.1 riastrad int8_t CurrLevel; 269 1.1 riastrad int8_t TargLevel; 270 1.1 riastrad uint8_t LevelChangeInProgress; 271 1.1 riastrad uint8_t UpHyst; 272 1.1 riastrad 273 1.1 riastrad uint8_t DownHyst; 274 1.1 riastrad uint8_t VoltageDownHyst; 275 1.1 riastrad uint8_t DpmEnable; 276 1.1 riastrad uint8_t DpmRunning; 277 1.1 riastrad 278 1.1 riastrad uint8_t DpmForce; 279 1.1 riastrad uint8_t DpmForceLevel; 280 1.1 riastrad uint8_t DisplayWatermark; 281 1.1 riastrad uint8_t McArbIndex; 282 1.1 riastrad 283 1.1 riastrad uint32_t MinimumPerfSclk; 284 1.1 riastrad 285 1.1 riastrad uint8_t AcpiReq; 286 1.1 riastrad uint8_t AcpiAck; 287 1.1 riastrad uint8_t GfxClkSlow; 288 1.1 riastrad uint8_t GpioClampMode; 289 1.1 riastrad 290 1.1 riastrad uint8_t spare2; 291 1.1 riastrad uint8_t EnabledLevelsChange; 292 1.1 riastrad uint8_t DteClampMode; 293 1.1 riastrad uint8_t FpsClampMode; 294 1.1 riastrad 295 1.1 riastrad uint16_t LevelResidencyCounters[SMU74_MAX_LEVELS_GRAPHICS]; 296 1.1 riastrad uint16_t LevelSwitchCounters[SMU74_MAX_LEVELS_GRAPHICS]; 297 1.1 riastrad 298 1.1 riastrad void (*TargetStateCalculator)(uint8_t); 299 1.1 riastrad void (*SavedTargetStateCalculator)(uint8_t); 300 1.1 riastrad 301 1.1 riastrad uint16_t AutoDpmInterval; 302 1.1 riastrad uint16_t AutoDpmRange; 303 1.1 riastrad 304 1.1 riastrad uint8_t FpsEnabled; 305 1.1 riastrad uint8_t MaxPerfLevel; 306 1.1 riastrad uint8_t AllowLowClkInterruptToHost; 307 1.1 riastrad uint8_t FpsRunning; 308 1.1 riastrad 309 1.1 riastrad uint32_t MaxAllowedFrequency; 310 1.1 riastrad 311 1.1 riastrad uint32_t FilteredSclkFrequency; 312 1.1 riastrad uint32_t LastSclkFrequency; 313 1.1 riastrad uint32_t FilteredSclkFrequencyCnt; 314 1.1 riastrad 315 1.1 riastrad uint8_t MinPerfLevel; 316 1.1 riastrad uint8_t padding[3]; 317 1.1 riastrad 318 1.1 riastrad uint16_t FpsAlpha; 319 1.1 riastrad uint16_t DeltaTime; 320 1.1 riastrad uint32_t CurrentFps; 321 1.1 riastrad uint32_t FilteredFps; 322 1.1 riastrad uint32_t FrameCount; 323 1.1 riastrad uint32_t FrameCountLast; 324 1.1 riastrad uint16_t FpsTargetScalar; 325 1.1 riastrad uint16_t FpsWaterfallLimitScalar; 326 1.1 riastrad uint16_t FpsAlphaScalar; 327 1.1 riastrad uint16_t spare8; 328 1.1 riastrad SMU7_HystController_Data HystControllerData; 329 1.1 riastrad }; 330 1.1 riastrad 331 1.1 riastrad typedef struct SMU7_LocalDpmScoreboard SMU7_LocalDpmScoreboard; 332 1.1 riastrad 333 1.1 riastrad #define SMU7_MAX_VOLTAGE_CLIENTS 12 334 1.1 riastrad 335 1.1 riastrad typedef uint8_t (*VoltageChangeHandler_t)(uint16_t, uint8_t); 336 1.1 riastrad 337 1.1 riastrad #define VDDC_MASK 0x00007FFF 338 1.1 riastrad #define VDDC_SHIFT 0 339 1.1 riastrad #define VDDCI_MASK 0x3FFF8000 340 1.1 riastrad #define VDDCI_SHIFT 15 341 1.1 riastrad #define PHASES_MASK 0xC0000000 342 1.1 riastrad #define PHASES_SHIFT 30 343 1.1 riastrad 344 1.1 riastrad typedef uint32_t SMU_VoltageLevel; 345 1.1 riastrad 346 1.1 riastrad struct SMU7_VoltageScoreboard { 347 1.1 riastrad 348 1.1 riastrad SMU_VoltageLevel TargetVoltage; 349 1.1 riastrad uint16_t MaxVid; 350 1.1 riastrad uint8_t HighestVidOffset; 351 1.1 riastrad uint8_t CurrentVidOffset; 352 1.1 riastrad 353 1.1 riastrad uint16_t CurrentVddc; 354 1.1 riastrad uint16_t CurrentVddci; 355 1.1 riastrad 356 1.1 riastrad 357 1.1 riastrad uint8_t ControllerBusy; 358 1.1 riastrad uint8_t CurrentVid; 359 1.1 riastrad uint8_t CurrentVddciVid; 360 1.1 riastrad uint8_t padding; 361 1.1 riastrad 362 1.1 riastrad SMU_VoltageLevel RequestedVoltage[SMU7_MAX_VOLTAGE_CLIENTS]; 363 1.1 riastrad SMU_VoltageLevel TargetVoltageState; 364 1.1 riastrad uint8_t EnabledRequest[SMU7_MAX_VOLTAGE_CLIENTS]; 365 1.1 riastrad 366 1.1 riastrad uint8_t padding2; 367 1.1 riastrad uint8_t padding3; 368 1.1 riastrad uint8_t ControllerEnable; 369 1.1 riastrad uint8_t ControllerRunning; 370 1.1 riastrad uint16_t CurrentStdVoltageHiSidd; 371 1.1 riastrad uint16_t CurrentStdVoltageLoSidd; 372 1.1 riastrad uint8_t OverrideVoltage; 373 1.1 riastrad uint8_t padding4; 374 1.1 riastrad uint8_t padding5; 375 1.1 riastrad uint8_t CurrentPhases; 376 1.1 riastrad 377 1.1 riastrad VoltageChangeHandler_t ChangeVddc; 378 1.1 riastrad 379 1.1 riastrad VoltageChangeHandler_t ChangeVddci; 380 1.1 riastrad VoltageChangeHandler_t ChangePhase; 381 1.1 riastrad VoltageChangeHandler_t ChangeMvdd; 382 1.1 riastrad 383 1.1 riastrad VoltageChangeHandler_t functionLinks[6]; 384 1.1 riastrad 385 1.1 riastrad uint16_t *VddcFollower1; 386 1.1 riastrad 387 1.1 riastrad int16_t Driver_OD_RequestedVidOffset1; 388 1.1 riastrad int16_t Driver_OD_RequestedVidOffset2; 389 1.1 riastrad }; 390 1.1 riastrad 391 1.1 riastrad typedef struct SMU7_VoltageScoreboard SMU7_VoltageScoreboard; 392 1.1 riastrad 393 1.1 riastrad #define SMU7_MAX_PCIE_LINK_SPEEDS 3 /* 0:Gen1 1:Gen2 2:Gen3 */ 394 1.1 riastrad 395 1.1 riastrad struct SMU7_PCIeLinkSpeedScoreboard { 396 1.1 riastrad uint8_t DpmEnable; 397 1.1 riastrad uint8_t DpmRunning; 398 1.1 riastrad uint8_t DpmForce; 399 1.1 riastrad uint8_t DpmForceLevel; 400 1.1 riastrad 401 1.1 riastrad uint8_t CurrentLinkSpeed; 402 1.1 riastrad uint8_t EnabledLevelsChange; 403 1.1 riastrad uint16_t AutoDpmInterval; 404 1.1 riastrad 405 1.1 riastrad uint16_t AutoDpmRange; 406 1.1 riastrad uint16_t AutoDpmCount; 407 1.1 riastrad 408 1.1 riastrad uint8_t DpmMode; 409 1.1 riastrad uint8_t AcpiReq; 410 1.1 riastrad uint8_t AcpiAck; 411 1.1 riastrad uint8_t CurrentLinkLevel; 412 1.1 riastrad 413 1.1 riastrad }; 414 1.1 riastrad 415 1.1 riastrad typedef struct SMU7_PCIeLinkSpeedScoreboard SMU7_PCIeLinkSpeedScoreboard; 416 1.1 riastrad 417 1.1 riastrad #define SMU7_LKGE_LUT_NUM_OF_TEMP_ENTRIES 16 418 1.1 riastrad #define SMU7_LKGE_LUT_NUM_OF_VOLT_ENTRIES 16 419 1.1 riastrad 420 1.1 riastrad #define SMU7_SCALE_I 7 421 1.1 riastrad #define SMU7_SCALE_R 12 422 1.1 riastrad 423 1.1 riastrad struct SMU7_PowerScoreboard { 424 1.1 riastrad PowerCalculatorData_t VddcPowerData[SID_OPTION_COUNT]; 425 1.1 riastrad 426 1.1 riastrad uint32_t TotalGpuPower; 427 1.1 riastrad uint32_t TdcCurrent; 428 1.1 riastrad 429 1.1 riastrad uint16_t VddciTotalPower; 430 1.1 riastrad uint16_t sparesasfsdfd; 431 1.1 riastrad uint16_t Vddr1Power; 432 1.1 riastrad uint16_t RocPower; 433 1.1 riastrad 434 1.1 riastrad uint16_t CalcMeasPowerBlend; 435 1.1 riastrad uint8_t SidOptionPower; 436 1.1 riastrad uint8_t SidOptionCurrent; 437 1.1 riastrad 438 1.1 riastrad uint32_t WinTime; 439 1.1 riastrad 440 1.1 riastrad uint16_t Telemetry_1_slope; 441 1.1 riastrad uint16_t Telemetry_2_slope; 442 1.1 riastrad int32_t Telemetry_1_offset; 443 1.1 riastrad int32_t Telemetry_2_offset; 444 1.1 riastrad 445 1.1 riastrad uint32_t VddcCurrentTelemetry; 446 1.1 riastrad uint32_t VddGfxCurrentTelemetry; 447 1.1 riastrad uint32_t VddcPowerTelemetry; 448 1.1 riastrad uint32_t VddGfxPowerTelemetry; 449 1.1 riastrad uint32_t VddciPowerTelemetry; 450 1.1 riastrad 451 1.1 riastrad uint32_t VddcPower; 452 1.1 riastrad uint32_t VddGfxPower; 453 1.1 riastrad uint32_t VddciPower; 454 1.1 riastrad 455 1.1 riastrad uint32_t TelemetryCurrent[2]; 456 1.1 riastrad uint32_t TelemetryVoltage[2]; 457 1.1 riastrad uint32_t TelemetryPower[2]; 458 1.1 riastrad }; 459 1.1 riastrad 460 1.1 riastrad typedef struct SMU7_PowerScoreboard SMU7_PowerScoreboard; 461 1.1 riastrad 462 1.1 riastrad struct SMU7_ThermalScoreboard { 463 1.1 riastrad int16_t GpuLimit; 464 1.1 riastrad int16_t GpuHyst; 465 1.1 riastrad uint16_t CurrGnbTemp; 466 1.1 riastrad uint16_t FilteredGnbTemp; 467 1.1 riastrad 468 1.1 riastrad uint8_t ControllerEnable; 469 1.1 riastrad uint8_t ControllerRunning; 470 1.1 riastrad uint8_t AutoTmonCalInterval; 471 1.1 riastrad uint8_t AutoTmonCalEnable; 472 1.1 riastrad 473 1.1 riastrad uint8_t ThermalDpmEnabled; 474 1.1 riastrad uint8_t SclkEnabledMask; 475 1.1 riastrad uint8_t spare[2]; 476 1.1 riastrad int32_t temperature_gradient; 477 1.1 riastrad 478 1.1 riastrad SMU7_HystController_Data HystControllerData; 479 1.1 riastrad int32_t WeightedSensorTemperature; 480 1.1 riastrad uint16_t TemperatureLimit[SMU74_MAX_LEVELS_GRAPHICS]; 481 1.1 riastrad uint32_t Alpha; 482 1.1 riastrad }; 483 1.1 riastrad 484 1.1 riastrad typedef struct SMU7_ThermalScoreboard SMU7_ThermalScoreboard; 485 1.1 riastrad 486 1.1 riastrad #define SMU7_SCLK_DPM_CONFIG_MASK 0x01 487 1.1 riastrad #define SMU7_VOLTAGE_CONTROLLER_CONFIG_MASK 0x02 488 1.1 riastrad #define SMU7_THERMAL_CONTROLLER_CONFIG_MASK 0x04 489 1.1 riastrad #define SMU7_MCLK_DPM_CONFIG_MASK 0x08 490 1.1 riastrad #define SMU7_UVD_DPM_CONFIG_MASK 0x10 491 1.1 riastrad #define SMU7_VCE_DPM_CONFIG_MASK 0x20 492 1.1 riastrad #define SMU7_ACP_DPM_CONFIG_MASK 0x40 493 1.1 riastrad #define SMU7_SAMU_DPM_CONFIG_MASK 0x80 494 1.1 riastrad #define SMU7_PCIEGEN_DPM_CONFIG_MASK 0x100 495 1.1 riastrad 496 1.1 riastrad #define SMU7_ACP_MCLK_HANDSHAKE_DISABLE 0x00000001 497 1.1 riastrad #define SMU7_ACP_SCLK_HANDSHAKE_DISABLE 0x00000002 498 1.1 riastrad #define SMU7_UVD_MCLK_HANDSHAKE_DISABLE 0x00000100 499 1.1 riastrad #define SMU7_UVD_SCLK_HANDSHAKE_DISABLE 0x00000200 500 1.1 riastrad #define SMU7_VCE_MCLK_HANDSHAKE_DISABLE 0x00010000 501 1.1 riastrad #define SMU7_VCE_SCLK_HANDSHAKE_DISABLE 0x00020000 502 1.1 riastrad 503 1.1 riastrad /* All 'soft registers' should be uint32_t. */ 504 1.1 riastrad struct SMU74_SoftRegisters { 505 1.1 riastrad uint32_t RefClockFrequency; 506 1.1 riastrad uint32_t PmTimerPeriod; 507 1.1 riastrad uint32_t FeatureEnables; 508 1.1 riastrad 509 1.1 riastrad uint32_t PreVBlankGap; 510 1.1 riastrad uint32_t VBlankTimeout; 511 1.1 riastrad uint32_t TrainTimeGap; 512 1.1 riastrad 513 1.1 riastrad uint32_t MvddSwitchTime; 514 1.1 riastrad uint32_t LongestAcpiTrainTime; 515 1.1 riastrad uint32_t AcpiDelay; 516 1.1 riastrad uint32_t G5TrainTime; 517 1.1 riastrad uint32_t DelayMpllPwron; 518 1.1 riastrad uint32_t VoltageChangeTimeout; 519 1.1 riastrad 520 1.1 riastrad uint32_t HandshakeDisables; 521 1.1 riastrad 522 1.1 riastrad uint8_t DisplayPhy1Config; 523 1.1 riastrad uint8_t DisplayPhy2Config; 524 1.1 riastrad uint8_t DisplayPhy3Config; 525 1.1 riastrad uint8_t DisplayPhy4Config; 526 1.1 riastrad 527 1.1 riastrad uint8_t DisplayPhy5Config; 528 1.1 riastrad uint8_t DisplayPhy6Config; 529 1.1 riastrad uint8_t DisplayPhy7Config; 530 1.1 riastrad uint8_t DisplayPhy8Config; 531 1.1 riastrad 532 1.1 riastrad uint32_t AverageGraphicsActivity; 533 1.1 riastrad uint32_t AverageMemoryActivity; 534 1.1 riastrad uint32_t AverageGioActivity; 535 1.1 riastrad 536 1.1 riastrad uint8_t SClkDpmEnabledLevels; 537 1.1 riastrad uint8_t MClkDpmEnabledLevels; 538 1.1 riastrad uint8_t LClkDpmEnabledLevels; 539 1.1 riastrad uint8_t PCIeDpmEnabledLevels; 540 1.1 riastrad 541 1.1 riastrad uint8_t UVDDpmEnabledLevels; 542 1.1 riastrad uint8_t SAMUDpmEnabledLevels; 543 1.1 riastrad uint8_t ACPDpmEnabledLevels; 544 1.1 riastrad uint8_t VCEDpmEnabledLevels; 545 1.1 riastrad 546 1.1 riastrad uint32_t DRAM_LOG_ADDR_H; 547 1.1 riastrad uint32_t DRAM_LOG_ADDR_L; 548 1.1 riastrad uint32_t DRAM_LOG_PHY_ADDR_H; 549 1.1 riastrad uint32_t DRAM_LOG_PHY_ADDR_L; 550 1.1 riastrad uint32_t DRAM_LOG_BUFF_SIZE; 551 1.1 riastrad uint32_t UlvEnterCount; 552 1.1 riastrad uint32_t UlvTime; 553 1.1 riastrad uint32_t UcodeLoadStatus; 554 1.1 riastrad uint32_t AllowMvddSwitch; 555 1.1 riastrad uint8_t Activity_Weight; 556 1.1 riastrad uint8_t Reserved8[3]; 557 1.1 riastrad }; 558 1.1 riastrad 559 1.1 riastrad typedef struct SMU74_SoftRegisters SMU74_SoftRegisters; 560 1.1 riastrad 561 1.1 riastrad struct SMU74_Firmware_Header { 562 1.1 riastrad uint32_t Digest[5]; 563 1.1 riastrad uint32_t Version; 564 1.1 riastrad uint32_t HeaderSize; 565 1.1 riastrad uint32_t Flags; 566 1.1 riastrad uint32_t EntryPoint; 567 1.1 riastrad uint32_t CodeSize; 568 1.1 riastrad uint32_t ImageSize; 569 1.1 riastrad 570 1.1 riastrad uint32_t Rtos; 571 1.1 riastrad uint32_t SoftRegisters; 572 1.1 riastrad uint32_t DpmTable; 573 1.1 riastrad uint32_t FanTable; 574 1.1 riastrad uint32_t CacConfigTable; 575 1.1 riastrad uint32_t CacStatusTable; 576 1.1 riastrad 577 1.1 riastrad uint32_t mcRegisterTable; 578 1.1 riastrad 579 1.1 riastrad uint32_t mcArbDramTimingTable; 580 1.1 riastrad 581 1.1 riastrad uint32_t PmFuseTable; 582 1.1 riastrad uint32_t Globals; 583 1.1 riastrad uint32_t ClockStretcherTable; 584 1.1 riastrad uint32_t VftTable; 585 1.1 riastrad uint32_t Reserved1; 586 1.1 riastrad uint32_t AvfsTable; 587 1.1 riastrad uint32_t AvfsCksOffGbvTable; 588 1.1 riastrad uint32_t AvfsMeanNSigma; 589 1.1 riastrad uint32_t AvfsSclkOffsetTable; 590 1.1 riastrad uint32_t Reserved[16]; 591 1.1 riastrad uint32_t Signature; 592 1.1 riastrad }; 593 1.1 riastrad 594 1.1 riastrad typedef struct SMU74_Firmware_Header SMU74_Firmware_Header; 595 1.1 riastrad 596 1.1 riastrad #define SMU7_FIRMWARE_HEADER_LOCATION 0x20000 597 1.1 riastrad 598 1.1 riastrad enum DisplayConfig { 599 1.1 riastrad PowerDown = 1, 600 1.1 riastrad DP54x4, 601 1.1 riastrad DP54x2, 602 1.1 riastrad DP54x1, 603 1.1 riastrad DP27x4, 604 1.1 riastrad DP27x2, 605 1.1 riastrad DP27x1, 606 1.1 riastrad HDMI297, 607 1.1 riastrad HDMI162, 608 1.1 riastrad LVDS, 609 1.1 riastrad DP324x4, 610 1.1 riastrad DP324x2, 611 1.1 riastrad DP324x1 612 1.1 riastrad }; 613 1.1 riastrad 614 1.1 riastrad 615 1.1 riastrad #define MC_BLOCK_COUNT 1 616 1.1 riastrad #define CPL_BLOCK_COUNT 5 617 1.1 riastrad #define SE_BLOCK_COUNT 15 618 1.1 riastrad #define GC_BLOCK_COUNT 24 619 1.1 riastrad 620 1.1 riastrad struct SMU7_Local_Cac { 621 1.1 riastrad uint8_t BlockId; 622 1.1 riastrad uint8_t SignalId; 623 1.1 riastrad uint8_t Threshold; 624 1.1 riastrad uint8_t Padding; 625 1.1 riastrad }; 626 1.1 riastrad 627 1.1 riastrad typedef struct SMU7_Local_Cac SMU7_Local_Cac; 628 1.1 riastrad 629 1.1 riastrad struct SMU7_Local_Cac_Table { 630 1.1 riastrad 631 1.1 riastrad SMU7_Local_Cac CplLocalCac[CPL_BLOCK_COUNT]; 632 1.1 riastrad SMU7_Local_Cac McLocalCac[MC_BLOCK_COUNT]; 633 1.1 riastrad SMU7_Local_Cac SeLocalCac[SE_BLOCK_COUNT]; 634 1.1 riastrad SMU7_Local_Cac GcLocalCac[GC_BLOCK_COUNT]; 635 1.1 riastrad }; 636 1.1 riastrad 637 1.1 riastrad typedef struct SMU7_Local_Cac_Table SMU7_Local_Cac_Table; 638 1.1 riastrad 639 1.1 riastrad #pragma pack(pop) 640 1.1 riastrad 641 1.1 riastrad /* Description of Clock Gating bitmask for Tonga: 642 1.1 riastrad * System Clock Gating 643 1.1 riastrad */ 644 1.1 riastrad #define CG_SYS_BITMASK_FIRST_BIT 0 /* First bit of Sys CG bitmask */ 645 1.1 riastrad #define CG_SYS_BITMASK_LAST_BIT 9 /* Last bit of Sys CG bitmask */ 646 1.1 riastrad #define CG_SYS_BIF_MGLS_SHIFT 0 647 1.1 riastrad #define CG_SYS_ROM_SHIFT 1 648 1.1 riastrad #define CG_SYS_MC_MGCG_SHIFT 2 649 1.1 riastrad #define CG_SYS_MC_MGLS_SHIFT 3 650 1.1 riastrad #define CG_SYS_SDMA_MGCG_SHIFT 4 651 1.1 riastrad #define CG_SYS_SDMA_MGLS_SHIFT 5 652 1.1 riastrad #define CG_SYS_DRM_MGCG_SHIFT 6 653 1.1 riastrad #define CG_SYS_HDP_MGCG_SHIFT 7 654 1.1 riastrad #define CG_SYS_HDP_MGLS_SHIFT 8 655 1.1 riastrad #define CG_SYS_DRM_MGLS_SHIFT 9 656 1.1 riastrad #define CG_SYS_BIF_MGCG_SHIFT 10 657 1.1 riastrad 658 1.1 riastrad #define CG_SYS_BIF_MGLS_MASK 0x1 659 1.1 riastrad #define CG_SYS_ROM_MASK 0x2 660 1.1 riastrad #define CG_SYS_MC_MGCG_MASK 0x4 661 1.1 riastrad #define CG_SYS_MC_MGLS_MASK 0x8 662 1.1 riastrad #define CG_SYS_SDMA_MGCG_MASK 0x10 663 1.1 riastrad #define CG_SYS_SDMA_MGLS_MASK 0x20 664 1.1 riastrad #define CG_SYS_DRM_MGCG_MASK 0x40 665 1.1 riastrad #define CG_SYS_HDP_MGCG_MASK 0x80 666 1.1 riastrad #define CG_SYS_HDP_MGLS_MASK 0x100 667 1.1 riastrad #define CG_SYS_DRM_MGLS_MASK 0x200 668 1.1 riastrad #define CG_SYS_BIF_MGCG_MASK 0x400 669 1.1 riastrad 670 1.1 riastrad /* Graphics Clock Gating */ 671 1.1 riastrad #define CG_GFX_BITMASK_FIRST_BIT 16 /* First bit of Gfx CG bitmask */ 672 1.1 riastrad #define CG_GFX_BITMASK_LAST_BIT 24 /* Last bit of Gfx CG bitmask */ 673 1.1 riastrad 674 1.1 riastrad #define CG_GFX_CGCG_SHIFT 16 675 1.1 riastrad #define CG_GFX_CGLS_SHIFT 17 676 1.1 riastrad #define CG_CPF_MGCG_SHIFT 18 677 1.1 riastrad #define CG_RLC_MGCG_SHIFT 19 678 1.1 riastrad #define CG_GFX_OTHERS_MGCG_SHIFT 20 679 1.1 riastrad #define CG_GFX_3DCG_SHIFT 21 680 1.1 riastrad #define CG_GFX_3DLS_SHIFT 22 681 1.1 riastrad #define CG_GFX_RLC_LS_SHIFT 23 682 1.1 riastrad #define CG_GFX_CP_LS_SHIFT 24 683 1.1 riastrad 684 1.1 riastrad #define CG_GFX_CGCG_MASK 0x00010000 685 1.1 riastrad #define CG_GFX_CGLS_MASK 0x00020000 686 1.1 riastrad #define CG_CPF_MGCG_MASK 0x00040000 687 1.1 riastrad #define CG_RLC_MGCG_MASK 0x00080000 688 1.1 riastrad #define CG_GFX_OTHERS_MGCG_MASK 0x00100000 689 1.1 riastrad #define CG_GFX_3DCG_MASK 0x00200000 690 1.1 riastrad #define CG_GFX_3DLS_MASK 0x00400000 691 1.1 riastrad #define CG_GFX_RLC_LS_MASK 0x00800000 692 1.1 riastrad #define CG_GFX_CP_LS_MASK 0x01000000 693 1.1 riastrad 694 1.1 riastrad 695 1.1 riastrad /* Voltage Regulator Configuration 696 1.1 riastrad VR Config info is contained in dpmTable.VRConfig */ 697 1.1 riastrad 698 1.1 riastrad #define VRCONF_VDDC_MASK 0x000000FF 699 1.1 riastrad #define VRCONF_VDDC_SHIFT 0 700 1.1 riastrad #define VRCONF_VDDGFX_MASK 0x0000FF00 701 1.1 riastrad #define VRCONF_VDDGFX_SHIFT 8 702 1.1 riastrad #define VRCONF_VDDCI_MASK 0x00FF0000 703 1.1 riastrad #define VRCONF_VDDCI_SHIFT 16 704 1.1 riastrad #define VRCONF_MVDD_MASK 0xFF000000 705 1.1 riastrad #define VRCONF_MVDD_SHIFT 24 706 1.1 riastrad 707 1.1 riastrad #define VR_MERGED_WITH_VDDC 0 708 1.1 riastrad #define VR_SVI2_PLANE_1 1 709 1.1 riastrad #define VR_SVI2_PLANE_2 2 710 1.1 riastrad #define VR_SMIO_PATTERN_1 3 711 1.1 riastrad #define VR_SMIO_PATTERN_2 4 712 1.1 riastrad #define VR_STATIC_VOLTAGE 5 713 1.1 riastrad 714 1.1 riastrad /* Clock Stretcher Configuration */ 715 1.1 riastrad 716 1.1 riastrad #define CLOCK_STRETCHER_MAX_ENTRIES 0x4 717 1.1 riastrad #define CKS_LOOKUPTable_MAX_ENTRIES 0x4 718 1.1 riastrad 719 1.1 riastrad /* The 'settings' field is subdivided in the following way: */ 720 1.1 riastrad #define CLOCK_STRETCHER_SETTING_DDT_MASK 0x01 721 1.1 riastrad #define CLOCK_STRETCHER_SETTING_DDT_SHIFT 0x0 722 1.1 riastrad #define CLOCK_STRETCHER_SETTING_STRETCH_AMOUNT_MASK 0x1E 723 1.1 riastrad #define CLOCK_STRETCHER_SETTING_STRETCH_AMOUNT_SHIFT 0x1 724 1.1 riastrad #define CLOCK_STRETCHER_SETTING_ENABLE_MASK 0x80 725 1.1 riastrad #define CLOCK_STRETCHER_SETTING_ENABLE_SHIFT 0x7 726 1.1 riastrad 727 1.1 riastrad struct SMU_ClockStretcherDataTableEntry { 728 1.1 riastrad uint8_t minVID; 729 1.1 riastrad uint8_t maxVID; 730 1.1 riastrad uint16_t setting; 731 1.1 riastrad }; 732 1.1 riastrad typedef struct SMU_ClockStretcherDataTableEntry SMU_ClockStretcherDataTableEntry; 733 1.1 riastrad 734 1.1 riastrad struct SMU_ClockStretcherDataTable { 735 1.1 riastrad SMU_ClockStretcherDataTableEntry ClockStretcherDataTableEntry[CLOCK_STRETCHER_MAX_ENTRIES]; 736 1.1 riastrad }; 737 1.1 riastrad typedef struct SMU_ClockStretcherDataTable SMU_ClockStretcherDataTable; 738 1.1 riastrad 739 1.1 riastrad struct SMU_CKS_LOOKUPTableEntry { 740 1.1 riastrad uint16_t minFreq; 741 1.1 riastrad uint16_t maxFreq; 742 1.1 riastrad 743 1.1 riastrad uint8_t setting; 744 1.1 riastrad uint8_t padding[3]; 745 1.1 riastrad }; 746 1.1 riastrad typedef struct SMU_CKS_LOOKUPTableEntry SMU_CKS_LOOKUPTableEntry; 747 1.1 riastrad 748 1.1 riastrad struct SMU_CKS_LOOKUPTable { 749 1.1 riastrad SMU_CKS_LOOKUPTableEntry CKS_LOOKUPTableEntry[CKS_LOOKUPTable_MAX_ENTRIES]; 750 1.1 riastrad }; 751 1.1 riastrad typedef struct SMU_CKS_LOOKUPTable SMU_CKS_LOOKUPTable; 752 1.1 riastrad 753 1.1 riastrad struct AgmAvfsData_t { 754 1.1 riastrad uint16_t avgPsmCount[28]; 755 1.1 riastrad uint16_t minPsmCount[28]; 756 1.1 riastrad }; 757 1.1 riastrad 758 1.1 riastrad typedef struct AgmAvfsData_t AgmAvfsData_t; 759 1.1 riastrad 760 1.1 riastrad enum VFT_COLUMNS { 761 1.1 riastrad SCLK0, 762 1.1 riastrad SCLK1, 763 1.1 riastrad SCLK2, 764 1.1 riastrad SCLK3, 765 1.1 riastrad SCLK4, 766 1.1 riastrad SCLK5, 767 1.1 riastrad SCLK6, 768 1.1 riastrad SCLK7, 769 1.1 riastrad 770 1.1 riastrad NUM_VFT_COLUMNS 771 1.1 riastrad }; 772 1.1 riastrad 773 1.1 riastrad #define VFT_TABLE_DEFINED 774 1.1 riastrad 775 1.1 riastrad #define TEMP_RANGE_MAXSTEPS 12 776 1.1 riastrad 777 1.1 riastrad struct VFT_CELL_t { 778 1.1 riastrad uint16_t Voltage; 779 1.1 riastrad }; 780 1.1 riastrad 781 1.1 riastrad typedef struct VFT_CELL_t VFT_CELL_t; 782 1.1 riastrad 783 1.1 riastrad struct VFT_TABLE_t { 784 1.1 riastrad VFT_CELL_t Cell[TEMP_RANGE_MAXSTEPS][NUM_VFT_COLUMNS]; 785 1.1 riastrad uint16_t AvfsGbv[NUM_VFT_COLUMNS]; 786 1.1 riastrad uint16_t BtcGbv[NUM_VFT_COLUMNS]; 787 1.1 riastrad uint16_t Temperature[TEMP_RANGE_MAXSTEPS]; 788 1.1 riastrad 789 1.1 riastrad uint8_t NumTemperatureSteps; 790 1.1 riastrad uint8_t padding[3]; 791 1.1 riastrad }; 792 1.1 riastrad 793 1.1 riastrad typedef struct VFT_TABLE_t VFT_TABLE_t; 794 1.1 riastrad 795 1.1 riastrad 796 1.1 riastrad /* Total margin, root mean square of Fmax + DC + Platform */ 797 1.1 riastrad struct AVFS_Margin_t { 798 1.1 riastrad VFT_CELL_t Cell[NUM_VFT_COLUMNS]; 799 1.1 riastrad }; 800 1.1 riastrad typedef struct AVFS_Margin_t AVFS_Margin_t; 801 1.1 riastrad 802 1.1 riastrad #define BTCGB_VDROOP_TABLE_MAX_ENTRIES 2 803 1.1 riastrad #define AVFSGB_VDROOP_TABLE_MAX_ENTRIES 2 804 1.1 riastrad 805 1.1 riastrad struct GB_VDROOP_TABLE_t { 806 1.1 riastrad int32_t a0; 807 1.1 riastrad int32_t a1; 808 1.1 riastrad int32_t a2; 809 1.1 riastrad uint32_t spare; 810 1.1 riastrad }; 811 1.1 riastrad typedef struct GB_VDROOP_TABLE_t GB_VDROOP_TABLE_t; 812 1.1 riastrad 813 1.1 riastrad struct AVFS_CksOff_Gbv_t { 814 1.1 riastrad VFT_CELL_t Cell[NUM_VFT_COLUMNS]; 815 1.1 riastrad }; 816 1.1 riastrad typedef struct AVFS_CksOff_Gbv_t AVFS_CksOff_Gbv_t; 817 1.1 riastrad 818 1.1 riastrad struct AVFS_meanNsigma_t { 819 1.1 riastrad uint32_t Aconstant[3]; 820 1.1 riastrad uint16_t DC_tol_sigma; 821 1.1 riastrad uint16_t Platform_mean; 822 1.1 riastrad uint16_t Platform_sigma; 823 1.1 riastrad uint16_t PSM_Age_CompFactor; 824 1.1 riastrad uint8_t Static_Voltage_Offset[NUM_VFT_COLUMNS]; 825 1.1 riastrad }; 826 1.1 riastrad typedef struct AVFS_meanNsigma_t AVFS_meanNsigma_t; 827 1.1 riastrad 828 1.1 riastrad struct AVFS_Sclk_Offset_t { 829 1.1 riastrad uint16_t Sclk_Offset[8]; 830 1.1 riastrad }; 831 1.1 riastrad typedef struct AVFS_Sclk_Offset_t AVFS_Sclk_Offset_t; 832 1.1 riastrad 833 1.1 riastrad #endif 834 1.1 riastrad 835 1.1 riastrad 836