1 1.2 riastrad /* $NetBSD: smu7_discrete.h,v 1.3 2021/12/18 23:45:43 riastradh Exp $ */ 2 1.2 riastrad 3 1.1 riastrad /* 4 1.1 riastrad * Copyright 2013 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 #ifndef SMU7_DISCRETE_H 27 1.1 riastrad #define SMU7_DISCRETE_H 28 1.1 riastrad 29 1.1 riastrad #include "smu7.h" 30 1.1 riastrad 31 1.1 riastrad #pragma pack(push, 1) 32 1.1 riastrad 33 1.1 riastrad #define SMU7_DTE_ITERATIONS 5 34 1.1 riastrad #define SMU7_DTE_SOURCES 3 35 1.1 riastrad #define SMU7_DTE_SINKS 1 36 1.1 riastrad #define SMU7_NUM_CPU_TES 0 37 1.1 riastrad #define SMU7_NUM_GPU_TES 1 38 1.1 riastrad #define SMU7_NUM_NON_TES 2 39 1.1 riastrad 40 1.1 riastrad struct SMU7_SoftRegisters 41 1.1 riastrad { 42 1.1 riastrad uint32_t RefClockFrequency; 43 1.1 riastrad uint32_t PmTimerP; 44 1.1 riastrad uint32_t FeatureEnables; 45 1.1 riastrad uint32_t PreVBlankGap; 46 1.1 riastrad uint32_t VBlankTimeout; 47 1.1 riastrad uint32_t TrainTimeGap; 48 1.1 riastrad 49 1.1 riastrad uint32_t MvddSwitchTime; 50 1.1 riastrad uint32_t LongestAcpiTrainTime; 51 1.1 riastrad uint32_t AcpiDelay; 52 1.1 riastrad uint32_t G5TrainTime; 53 1.1 riastrad uint32_t DelayMpllPwron; 54 1.1 riastrad uint32_t VoltageChangeTimeout; 55 1.1 riastrad uint32_t HandshakeDisables; 56 1.1 riastrad 57 1.1 riastrad uint8_t DisplayPhy1Config; 58 1.1 riastrad uint8_t DisplayPhy2Config; 59 1.1 riastrad uint8_t DisplayPhy3Config; 60 1.1 riastrad uint8_t DisplayPhy4Config; 61 1.1 riastrad 62 1.1 riastrad uint8_t DisplayPhy5Config; 63 1.1 riastrad uint8_t DisplayPhy6Config; 64 1.1 riastrad uint8_t DisplayPhy7Config; 65 1.1 riastrad uint8_t DisplayPhy8Config; 66 1.1 riastrad 67 1.1 riastrad uint32_t AverageGraphicsA; 68 1.1 riastrad uint32_t AverageMemoryA; 69 1.1 riastrad uint32_t AverageGioA; 70 1.1 riastrad 71 1.1 riastrad uint8_t SClkDpmEnabledLevels; 72 1.1 riastrad uint8_t MClkDpmEnabledLevels; 73 1.1 riastrad uint8_t LClkDpmEnabledLevels; 74 1.1 riastrad uint8_t PCIeDpmEnabledLevels; 75 1.1 riastrad 76 1.1 riastrad uint8_t UVDDpmEnabledLevels; 77 1.1 riastrad uint8_t SAMUDpmEnabledLevels; 78 1.1 riastrad uint8_t ACPDpmEnabledLevels; 79 1.1 riastrad uint8_t VCEDpmEnabledLevels; 80 1.1 riastrad 81 1.1 riastrad uint32_t DRAM_LOG_ADDR_H; 82 1.1 riastrad uint32_t DRAM_LOG_ADDR_L; 83 1.1 riastrad uint32_t DRAM_LOG_PHY_ADDR_H; 84 1.1 riastrad uint32_t DRAM_LOG_PHY_ADDR_L; 85 1.1 riastrad uint32_t DRAM_LOG_BUFF_SIZE; 86 1.1 riastrad uint32_t UlvEnterC; 87 1.1 riastrad uint32_t UlvTime; 88 1.1 riastrad uint32_t Reserved[3]; 89 1.1 riastrad 90 1.1 riastrad }; 91 1.1 riastrad 92 1.1 riastrad typedef struct SMU7_SoftRegisters SMU7_SoftRegisters; 93 1.1 riastrad 94 1.1 riastrad struct SMU7_Discrete_VoltageLevel 95 1.1 riastrad { 96 1.1 riastrad uint16_t Voltage; 97 1.1 riastrad uint16_t StdVoltageHiSidd; 98 1.1 riastrad uint16_t StdVoltageLoSidd; 99 1.1 riastrad uint8_t Smio; 100 1.1 riastrad uint8_t padding; 101 1.1 riastrad }; 102 1.1 riastrad 103 1.1 riastrad typedef struct SMU7_Discrete_VoltageLevel SMU7_Discrete_VoltageLevel; 104 1.1 riastrad 105 1.1 riastrad struct SMU7_Discrete_GraphicsLevel 106 1.1 riastrad { 107 1.1 riastrad uint32_t Flags; 108 1.1 riastrad uint32_t MinVddc; 109 1.1 riastrad uint32_t MinVddcPhases; 110 1.1 riastrad 111 1.1 riastrad uint32_t SclkFrequency; 112 1.1 riastrad 113 1.1 riastrad uint8_t padding1[2]; 114 1.1 riastrad uint16_t ActivityLevel; 115 1.1 riastrad 116 1.1 riastrad uint32_t CgSpllFuncCntl3; 117 1.1 riastrad uint32_t CgSpllFuncCntl4; 118 1.1 riastrad uint32_t SpllSpreadSpectrum; 119 1.1 riastrad uint32_t SpllSpreadSpectrum2; 120 1.1 riastrad uint32_t CcPwrDynRm; 121 1.1 riastrad uint32_t CcPwrDynRm1; 122 1.1 riastrad uint8_t SclkDid; 123 1.1 riastrad uint8_t DisplayWatermark; 124 1.1 riastrad uint8_t EnabledForActivity; 125 1.1 riastrad uint8_t EnabledForThrottle; 126 1.1 riastrad uint8_t UpH; 127 1.1 riastrad uint8_t DownH; 128 1.1 riastrad uint8_t VoltageDownH; 129 1.1 riastrad uint8_t PowerThrottle; 130 1.1 riastrad uint8_t DeepSleepDivId; 131 1.1 riastrad uint8_t padding[3]; 132 1.1 riastrad }; 133 1.1 riastrad 134 1.1 riastrad typedef struct SMU7_Discrete_GraphicsLevel SMU7_Discrete_GraphicsLevel; 135 1.1 riastrad 136 1.1 riastrad struct SMU7_Discrete_ACPILevel 137 1.1 riastrad { 138 1.1 riastrad uint32_t Flags; 139 1.1 riastrad uint32_t MinVddc; 140 1.1 riastrad uint32_t MinVddcPhases; 141 1.1 riastrad uint32_t SclkFrequency; 142 1.1 riastrad uint8_t SclkDid; 143 1.1 riastrad uint8_t DisplayWatermark; 144 1.1 riastrad uint8_t DeepSleepDivId; 145 1.1 riastrad uint8_t padding; 146 1.1 riastrad uint32_t CgSpllFuncCntl; 147 1.1 riastrad uint32_t CgSpllFuncCntl2; 148 1.1 riastrad uint32_t CgSpllFuncCntl3; 149 1.1 riastrad uint32_t CgSpllFuncCntl4; 150 1.1 riastrad uint32_t SpllSpreadSpectrum; 151 1.1 riastrad uint32_t SpllSpreadSpectrum2; 152 1.1 riastrad uint32_t CcPwrDynRm; 153 1.1 riastrad uint32_t CcPwrDynRm1; 154 1.1 riastrad }; 155 1.1 riastrad 156 1.1 riastrad typedef struct SMU7_Discrete_ACPILevel SMU7_Discrete_ACPILevel; 157 1.1 riastrad 158 1.1 riastrad struct SMU7_Discrete_Ulv 159 1.1 riastrad { 160 1.1 riastrad uint32_t CcPwrDynRm; 161 1.1 riastrad uint32_t CcPwrDynRm1; 162 1.1 riastrad uint16_t VddcOffset; 163 1.1 riastrad uint8_t VddcOffsetVid; 164 1.1 riastrad uint8_t VddcPhase; 165 1.1 riastrad uint32_t Reserved; 166 1.1 riastrad }; 167 1.1 riastrad 168 1.1 riastrad typedef struct SMU7_Discrete_Ulv SMU7_Discrete_Ulv; 169 1.1 riastrad 170 1.1 riastrad struct SMU7_Discrete_MemoryLevel 171 1.1 riastrad { 172 1.1 riastrad uint32_t MinVddc; 173 1.1 riastrad uint32_t MinVddcPhases; 174 1.1 riastrad uint32_t MinVddci; 175 1.1 riastrad uint32_t MinMvdd; 176 1.1 riastrad 177 1.1 riastrad uint32_t MclkFrequency; 178 1.1 riastrad 179 1.1 riastrad uint8_t EdcReadEnable; 180 1.1 riastrad uint8_t EdcWriteEnable; 181 1.1 riastrad uint8_t RttEnable; 182 1.1 riastrad uint8_t StutterEnable; 183 1.1 riastrad 184 1.1 riastrad uint8_t StrobeEnable; 185 1.1 riastrad uint8_t StrobeRatio; 186 1.1 riastrad uint8_t EnabledForThrottle; 187 1.1 riastrad uint8_t EnabledForActivity; 188 1.1 riastrad 189 1.1 riastrad uint8_t UpH; 190 1.1 riastrad uint8_t DownH; 191 1.1 riastrad uint8_t VoltageDownH; 192 1.1 riastrad uint8_t padding; 193 1.1 riastrad 194 1.1 riastrad uint16_t ActivityLevel; 195 1.1 riastrad uint8_t DisplayWatermark; 196 1.1 riastrad uint8_t padding1; 197 1.1 riastrad 198 1.1 riastrad uint32_t MpllFuncCntl; 199 1.1 riastrad uint32_t MpllFuncCntl_1; 200 1.1 riastrad uint32_t MpllFuncCntl_2; 201 1.1 riastrad uint32_t MpllAdFuncCntl; 202 1.1 riastrad uint32_t MpllDqFuncCntl; 203 1.1 riastrad uint32_t MclkPwrmgtCntl; 204 1.1 riastrad uint32_t DllCntl; 205 1.1 riastrad uint32_t MpllSs1; 206 1.1 riastrad uint32_t MpllSs2; 207 1.1 riastrad }; 208 1.1 riastrad 209 1.1 riastrad typedef struct SMU7_Discrete_MemoryLevel SMU7_Discrete_MemoryLevel; 210 1.1 riastrad 211 1.1 riastrad struct SMU7_Discrete_LinkLevel 212 1.1 riastrad { 213 1.1 riastrad uint8_t PcieGenSpeed; 214 1.1 riastrad uint8_t PcieLaneCount; 215 1.1 riastrad uint8_t EnabledForActivity; 216 1.1 riastrad uint8_t Padding; 217 1.1 riastrad uint32_t DownT; 218 1.1 riastrad uint32_t UpT; 219 1.1 riastrad uint32_t Reserved; 220 1.1 riastrad }; 221 1.1 riastrad 222 1.1 riastrad typedef struct SMU7_Discrete_LinkLevel SMU7_Discrete_LinkLevel; 223 1.1 riastrad 224 1.1 riastrad 225 1.1 riastrad struct SMU7_Discrete_MCArbDramTimingTableEntry 226 1.1 riastrad { 227 1.1 riastrad uint32_t McArbDramTiming; 228 1.1 riastrad uint32_t McArbDramTiming2; 229 1.1 riastrad uint8_t McArbBurstTime; 230 1.1 riastrad uint8_t padding[3]; 231 1.1 riastrad }; 232 1.1 riastrad 233 1.1 riastrad typedef struct SMU7_Discrete_MCArbDramTimingTableEntry SMU7_Discrete_MCArbDramTimingTableEntry; 234 1.1 riastrad 235 1.1 riastrad struct SMU7_Discrete_MCArbDramTimingTable 236 1.1 riastrad { 237 1.1 riastrad SMU7_Discrete_MCArbDramTimingTableEntry entries[SMU__NUM_SCLK_DPM_STATE][SMU__NUM_MCLK_DPM_LEVELS]; 238 1.1 riastrad }; 239 1.1 riastrad 240 1.1 riastrad typedef struct SMU7_Discrete_MCArbDramTimingTable SMU7_Discrete_MCArbDramTimingTable; 241 1.1 riastrad 242 1.1 riastrad struct SMU7_Discrete_UvdLevel 243 1.1 riastrad { 244 1.1 riastrad uint32_t VclkFrequency; 245 1.1 riastrad uint32_t DclkFrequency; 246 1.1 riastrad uint16_t MinVddc; 247 1.1 riastrad uint8_t MinVddcPhases; 248 1.1 riastrad uint8_t VclkDivider; 249 1.1 riastrad uint8_t DclkDivider; 250 1.1 riastrad uint8_t padding[3]; 251 1.1 riastrad }; 252 1.1 riastrad 253 1.1 riastrad typedef struct SMU7_Discrete_UvdLevel SMU7_Discrete_UvdLevel; 254 1.1 riastrad 255 1.1 riastrad struct SMU7_Discrete_ExtClkLevel 256 1.1 riastrad { 257 1.1 riastrad uint32_t Frequency; 258 1.1 riastrad uint16_t MinVoltage; 259 1.1 riastrad uint8_t MinPhases; 260 1.1 riastrad uint8_t Divider; 261 1.1 riastrad }; 262 1.1 riastrad 263 1.1 riastrad typedef struct SMU7_Discrete_ExtClkLevel SMU7_Discrete_ExtClkLevel; 264 1.1 riastrad 265 1.1 riastrad struct SMU7_Discrete_StateInfo 266 1.1 riastrad { 267 1.1 riastrad uint32_t SclkFrequency; 268 1.1 riastrad uint32_t MclkFrequency; 269 1.1 riastrad uint32_t VclkFrequency; 270 1.1 riastrad uint32_t DclkFrequency; 271 1.1 riastrad uint32_t SamclkFrequency; 272 1.1 riastrad uint32_t AclkFrequency; 273 1.1 riastrad uint32_t EclkFrequency; 274 1.1 riastrad uint16_t MvddVoltage; 275 1.1 riastrad uint16_t padding16; 276 1.1 riastrad uint8_t DisplayWatermark; 277 1.1 riastrad uint8_t McArbIndex; 278 1.1 riastrad uint8_t McRegIndex; 279 1.1 riastrad uint8_t SeqIndex; 280 1.1 riastrad uint8_t SclkDid; 281 1.1 riastrad int8_t SclkIndex; 282 1.1 riastrad int8_t MclkIndex; 283 1.1 riastrad uint8_t PCIeGen; 284 1.1 riastrad 285 1.1 riastrad }; 286 1.1 riastrad 287 1.1 riastrad typedef struct SMU7_Discrete_StateInfo SMU7_Discrete_StateInfo; 288 1.1 riastrad 289 1.1 riastrad 290 1.1 riastrad struct SMU7_Discrete_DpmTable 291 1.1 riastrad { 292 1.1 riastrad SMU7_PIDController GraphicsPIDController; 293 1.1 riastrad SMU7_PIDController MemoryPIDController; 294 1.1 riastrad SMU7_PIDController LinkPIDController; 295 1.1 riastrad 296 1.1 riastrad uint32_t SystemFlags; 297 1.1 riastrad 298 1.1 riastrad 299 1.1 riastrad uint32_t SmioMaskVddcVid; 300 1.1 riastrad uint32_t SmioMaskVddcPhase; 301 1.1 riastrad uint32_t SmioMaskVddciVid; 302 1.1 riastrad uint32_t SmioMaskMvddVid; 303 1.1 riastrad 304 1.1 riastrad uint32_t VddcLevelCount; 305 1.1 riastrad uint32_t VddciLevelCount; 306 1.1 riastrad uint32_t MvddLevelCount; 307 1.1 riastrad 308 1.1 riastrad SMU7_Discrete_VoltageLevel VddcLevel [SMU7_MAX_LEVELS_VDDC]; 309 1.1 riastrad // SMU7_Discrete_VoltageLevel VddcStandardReference [SMU7_MAX_LEVELS_VDDC]; 310 1.1 riastrad SMU7_Discrete_VoltageLevel VddciLevel [SMU7_MAX_LEVELS_VDDCI]; 311 1.1 riastrad SMU7_Discrete_VoltageLevel MvddLevel [SMU7_MAX_LEVELS_MVDD]; 312 1.1 riastrad 313 1.1 riastrad uint8_t GraphicsDpmLevelCount; 314 1.1 riastrad uint8_t MemoryDpmLevelCount; 315 1.1 riastrad uint8_t LinkLevelCount; 316 1.1 riastrad uint8_t UvdLevelCount; 317 1.1 riastrad uint8_t VceLevelCount; 318 1.1 riastrad uint8_t AcpLevelCount; 319 1.1 riastrad uint8_t SamuLevelCount; 320 1.1 riastrad uint8_t MasterDeepSleepControl; 321 1.1 riastrad uint32_t Reserved[5]; 322 1.1 riastrad // uint32_t SamuDefaultLevel; 323 1.1 riastrad 324 1.1 riastrad SMU7_Discrete_GraphicsLevel GraphicsLevel [SMU7_MAX_LEVELS_GRAPHICS]; 325 1.1 riastrad SMU7_Discrete_MemoryLevel MemoryACPILevel; 326 1.1 riastrad SMU7_Discrete_MemoryLevel MemoryLevel [SMU7_MAX_LEVELS_MEMORY]; 327 1.1 riastrad SMU7_Discrete_LinkLevel LinkLevel [SMU7_MAX_LEVELS_LINK]; 328 1.1 riastrad SMU7_Discrete_ACPILevel ACPILevel; 329 1.1 riastrad SMU7_Discrete_UvdLevel UvdLevel [SMU7_MAX_LEVELS_UVD]; 330 1.1 riastrad SMU7_Discrete_ExtClkLevel VceLevel [SMU7_MAX_LEVELS_VCE]; 331 1.1 riastrad SMU7_Discrete_ExtClkLevel AcpLevel [SMU7_MAX_LEVELS_ACP]; 332 1.1 riastrad SMU7_Discrete_ExtClkLevel SamuLevel [SMU7_MAX_LEVELS_SAMU]; 333 1.1 riastrad SMU7_Discrete_Ulv Ulv; 334 1.1 riastrad 335 1.1 riastrad uint32_t SclkStepSize; 336 1.1 riastrad uint32_t Smio [SMU7_MAX_ENTRIES_SMIO]; 337 1.1 riastrad 338 1.1 riastrad uint8_t UvdBootLevel; 339 1.1 riastrad uint8_t VceBootLevel; 340 1.1 riastrad uint8_t AcpBootLevel; 341 1.1 riastrad uint8_t SamuBootLevel; 342 1.1 riastrad 343 1.1 riastrad uint8_t UVDInterval; 344 1.1 riastrad uint8_t VCEInterval; 345 1.1 riastrad uint8_t ACPInterval; 346 1.1 riastrad uint8_t SAMUInterval; 347 1.1 riastrad 348 1.1 riastrad uint8_t GraphicsBootLevel; 349 1.1 riastrad uint8_t GraphicsVoltageChangeEnable; 350 1.1 riastrad uint8_t GraphicsThermThrottleEnable; 351 1.1 riastrad uint8_t GraphicsInterval; 352 1.1 riastrad 353 1.1 riastrad uint8_t VoltageInterval; 354 1.1 riastrad uint8_t ThermalInterval; 355 1.1 riastrad uint16_t TemperatureLimitHigh; 356 1.1 riastrad 357 1.1 riastrad uint16_t TemperatureLimitLow; 358 1.1 riastrad uint8_t MemoryBootLevel; 359 1.1 riastrad uint8_t MemoryVoltageChangeEnable; 360 1.1 riastrad 361 1.1 riastrad uint8_t MemoryInterval; 362 1.1 riastrad uint8_t MemoryThermThrottleEnable; 363 1.1 riastrad uint16_t VddcVddciDelta; 364 1.1 riastrad 365 1.1 riastrad uint16_t VoltageResponseTime; 366 1.1 riastrad uint16_t PhaseResponseTime; 367 1.1 riastrad 368 1.1 riastrad uint8_t PCIeBootLinkLevel; 369 1.1 riastrad uint8_t PCIeGenInterval; 370 1.1 riastrad uint8_t DTEInterval; 371 1.1 riastrad uint8_t DTEMode; 372 1.1 riastrad 373 1.1 riastrad uint8_t SVI2Enable; 374 1.1 riastrad uint8_t VRHotGpio; 375 1.1 riastrad uint8_t AcDcGpio; 376 1.1 riastrad uint8_t ThermGpio; 377 1.1 riastrad 378 1.1 riastrad uint16_t PPM_PkgPwrLimit; 379 1.1 riastrad uint16_t PPM_TemperatureLimit; 380 1.1 riastrad 381 1.1 riastrad uint16_t DefaultTdp; 382 1.1 riastrad uint16_t TargetTdp; 383 1.1 riastrad 384 1.1 riastrad uint16_t FpsHighT; 385 1.1 riastrad uint16_t FpsLowT; 386 1.1 riastrad 387 1.1 riastrad uint16_t BAPMTI_R [SMU7_DTE_ITERATIONS][SMU7_DTE_SOURCES][SMU7_DTE_SINKS]; 388 1.1 riastrad uint16_t BAPMTI_RC [SMU7_DTE_ITERATIONS][SMU7_DTE_SOURCES][SMU7_DTE_SINKS]; 389 1.1 riastrad 390 1.1 riastrad uint8_t DTEAmbientTempBase; 391 1.1 riastrad uint8_t DTETjOffset; 392 1.1 riastrad uint8_t GpuTjMax; 393 1.1 riastrad uint8_t GpuTjHyst; 394 1.1 riastrad 395 1.1 riastrad uint16_t BootVddc; 396 1.1 riastrad uint16_t BootVddci; 397 1.1 riastrad 398 1.1 riastrad uint16_t BootMVdd; 399 1.1 riastrad uint16_t padding; 400 1.1 riastrad 401 1.1 riastrad uint32_t BAPM_TEMP_GRADIENT; 402 1.1 riastrad 403 1.1 riastrad uint32_t LowSclkInterruptT; 404 1.1 riastrad }; 405 1.1 riastrad 406 1.1 riastrad typedef struct SMU7_Discrete_DpmTable SMU7_Discrete_DpmTable; 407 1.1 riastrad 408 1.1 riastrad #define SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE 16 409 1.1 riastrad #define SMU7_DISCRETE_MC_REGISTER_ARRAY_SET_COUNT SMU7_MAX_LEVELS_MEMORY 410 1.1 riastrad 411 1.1 riastrad struct SMU7_Discrete_MCRegisterAddress 412 1.1 riastrad { 413 1.1 riastrad uint16_t s0; 414 1.1 riastrad uint16_t s1; 415 1.1 riastrad }; 416 1.1 riastrad 417 1.1 riastrad typedef struct SMU7_Discrete_MCRegisterAddress SMU7_Discrete_MCRegisterAddress; 418 1.1 riastrad 419 1.1 riastrad struct SMU7_Discrete_MCRegisterSet 420 1.1 riastrad { 421 1.1 riastrad uint32_t value[SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE]; 422 1.1 riastrad }; 423 1.1 riastrad 424 1.1 riastrad typedef struct SMU7_Discrete_MCRegisterSet SMU7_Discrete_MCRegisterSet; 425 1.1 riastrad 426 1.1 riastrad struct SMU7_Discrete_MCRegisters 427 1.1 riastrad { 428 1.1 riastrad uint8_t last; 429 1.1 riastrad uint8_t reserved[3]; 430 1.1 riastrad SMU7_Discrete_MCRegisterAddress address[SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE]; 431 1.1 riastrad SMU7_Discrete_MCRegisterSet data[SMU7_DISCRETE_MC_REGISTER_ARRAY_SET_COUNT]; 432 1.1 riastrad }; 433 1.1 riastrad 434 1.1 riastrad typedef struct SMU7_Discrete_MCRegisters SMU7_Discrete_MCRegisters; 435 1.1 riastrad 436 1.2 riastrad struct SMU7_Discrete_FanTable 437 1.2 riastrad { 438 1.2 riastrad uint16_t FdoMode; 439 1.2 riastrad int16_t TempMin; 440 1.2 riastrad int16_t TempMed; 441 1.2 riastrad int16_t TempMax; 442 1.2 riastrad int16_t Slope1; 443 1.2 riastrad int16_t Slope2; 444 1.2 riastrad int16_t FdoMin; 445 1.2 riastrad int16_t HystUp; 446 1.2 riastrad int16_t HystDown; 447 1.2 riastrad int16_t HystSlope; 448 1.2 riastrad int16_t TempRespLim; 449 1.2 riastrad int16_t TempCurr; 450 1.2 riastrad int16_t SlopeCurr; 451 1.2 riastrad int16_t PwmCurr; 452 1.2 riastrad uint32_t RefreshPeriod; 453 1.2 riastrad int16_t FdoMax; 454 1.2 riastrad uint8_t TempSrc; 455 1.2 riastrad int8_t Padding; 456 1.2 riastrad }; 457 1.2 riastrad 458 1.2 riastrad typedef struct SMU7_Discrete_FanTable SMU7_Discrete_FanTable; 459 1.2 riastrad 460 1.2 riastrad 461 1.1 riastrad struct SMU7_Discrete_PmFuses { 462 1.1 riastrad // dw0-dw1 463 1.1 riastrad uint8_t BapmVddCVidHiSidd[8]; 464 1.1 riastrad 465 1.1 riastrad // dw2-dw3 466 1.1 riastrad uint8_t BapmVddCVidLoSidd[8]; 467 1.1 riastrad 468 1.1 riastrad // dw4-dw5 469 1.1 riastrad uint8_t VddCVid[8]; 470 1.1 riastrad 471 1.1 riastrad // dw6 472 1.1 riastrad uint8_t SviLoadLineEn; 473 1.1 riastrad uint8_t SviLoadLineVddC; 474 1.1 riastrad uint8_t SviLoadLineTrimVddC; 475 1.1 riastrad uint8_t SviLoadLineOffsetVddC; 476 1.1 riastrad 477 1.1 riastrad // dw7 478 1.1 riastrad uint16_t TDC_VDDC_PkgLimit; 479 1.1 riastrad uint8_t TDC_VDDC_ThrottleReleaseLimitPerc; 480 1.1 riastrad uint8_t TDC_MAWt; 481 1.1 riastrad 482 1.1 riastrad // dw8 483 1.1 riastrad uint8_t TdcWaterfallCtl; 484 1.1 riastrad uint8_t LPMLTemperatureMin; 485 1.1 riastrad uint8_t LPMLTemperatureMax; 486 1.1 riastrad uint8_t Reserved; 487 1.1 riastrad 488 1.1 riastrad // dw9-dw10 489 1.1 riastrad uint8_t BapmVddCVidHiSidd2[8]; 490 1.1 riastrad 491 1.1 riastrad // dw11-dw12 492 1.2 riastrad int16_t FuzzyFan_ErrorSetDelta; 493 1.2 riastrad int16_t FuzzyFan_ErrorRateSetDelta; 494 1.2 riastrad int16_t FuzzyFan_PwmSetDelta; 495 1.2 riastrad uint16_t CalcMeasPowerBlend; 496 1.1 riastrad 497 1.1 riastrad // dw13-dw16 498 1.1 riastrad uint8_t GnbLPML[16]; 499 1.1 riastrad 500 1.1 riastrad // dw17 501 1.1 riastrad uint8_t GnbLPMLMaxVid; 502 1.1 riastrad uint8_t GnbLPMLMinVid; 503 1.1 riastrad uint8_t Reserved1[2]; 504 1.1 riastrad 505 1.1 riastrad // dw18 506 1.1 riastrad uint16_t BapmVddCBaseLeakageHiSidd; 507 1.1 riastrad uint16_t BapmVddCBaseLeakageLoSidd; 508 1.1 riastrad }; 509 1.1 riastrad 510 1.1 riastrad typedef struct SMU7_Discrete_PmFuses SMU7_Discrete_PmFuses; 511 1.1 riastrad 512 1.1 riastrad 513 1.1 riastrad #pragma pack(pop) 514 1.1 riastrad 515 1.1 riastrad #endif 516 1.1 riastrad 517