smu71_discrete.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631
  1. /*
  2. * Copyright 2016 Advanced Micro Devices, Inc.
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a
  5. * copy of this software and associated documentation files (the "Software"),
  6. * to deal in the Software without restriction, including without limitation
  7. * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  8. * and/or sell copies of the Software, and to permit persons to whom the
  9. * Software is furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in
  12. * all copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  17. * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
  18. * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  19. * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  20. * OTHER DEALINGS IN THE SOFTWARE.
  21. *
  22. */
  23. #ifndef SMU71_DISCRETE_H
  24. #define SMU71_DISCRETE_H
  25. #include "smu71.h"
  26. #if !defined(SMC_MICROCODE)
  27. #pragma pack(push, 1)
  28. #endif
  29. #define VDDC_ON_SVI2 0x1
  30. #define VDDCI_ON_SVI2 0x2
  31. #define MVDD_ON_SVI2 0x4
  32. struct SMU71_Discrete_VoltageLevel
  33. {
  34. uint16_t Voltage;
  35. uint16_t StdVoltageHiSidd;
  36. uint16_t StdVoltageLoSidd;
  37. uint8_t Smio;
  38. uint8_t padding;
  39. };
  40. typedef struct SMU71_Discrete_VoltageLevel SMU71_Discrete_VoltageLevel;
  41. struct SMU71_Discrete_GraphicsLevel
  42. {
  43. uint32_t MinVddc;
  44. uint32_t MinVddcPhases;
  45. uint32_t SclkFrequency;
  46. uint8_t pcieDpmLevel;
  47. uint8_t DeepSleepDivId;
  48. uint16_t ActivityLevel;
  49. uint32_t CgSpllFuncCntl3;
  50. uint32_t CgSpllFuncCntl4;
  51. uint32_t SpllSpreadSpectrum;
  52. uint32_t SpllSpreadSpectrum2;
  53. uint32_t CcPwrDynRm;
  54. uint32_t CcPwrDynRm1;
  55. uint8_t SclkDid;
  56. uint8_t DisplayWatermark;
  57. uint8_t EnabledForActivity;
  58. uint8_t EnabledForThrottle;
  59. uint8_t UpHyst;
  60. uint8_t DownHyst;
  61. uint8_t VoltageDownHyst;
  62. uint8_t PowerThrottle;
  63. };
  64. typedef struct SMU71_Discrete_GraphicsLevel SMU71_Discrete_GraphicsLevel;
  65. struct SMU71_Discrete_ACPILevel
  66. {
  67. uint32_t Flags;
  68. uint32_t MinVddc;
  69. uint32_t MinVddcPhases;
  70. uint32_t SclkFrequency;
  71. uint8_t SclkDid;
  72. uint8_t DisplayWatermark;
  73. uint8_t DeepSleepDivId;
  74. uint8_t padding;
  75. uint32_t CgSpllFuncCntl;
  76. uint32_t CgSpllFuncCntl2;
  77. uint32_t CgSpllFuncCntl3;
  78. uint32_t CgSpllFuncCntl4;
  79. uint32_t SpllSpreadSpectrum;
  80. uint32_t SpllSpreadSpectrum2;
  81. uint32_t CcPwrDynRm;
  82. uint32_t CcPwrDynRm1;
  83. };
  84. typedef struct SMU71_Discrete_ACPILevel SMU71_Discrete_ACPILevel;
  85. struct SMU71_Discrete_Ulv
  86. {
  87. uint32_t CcPwrDynRm;
  88. uint32_t CcPwrDynRm1;
  89. uint16_t VddcOffset;
  90. uint8_t VddcOffsetVid;
  91. uint8_t VddcPhase;
  92. uint32_t Reserved;
  93. };
  94. typedef struct SMU71_Discrete_Ulv SMU71_Discrete_Ulv;
  95. struct SMU71_Discrete_MemoryLevel
  96. {
  97. uint32_t MinVddc;
  98. uint32_t MinVddcPhases;
  99. uint32_t MinVddci;
  100. uint32_t MinMvdd;
  101. uint32_t MclkFrequency;
  102. uint8_t EdcReadEnable;
  103. uint8_t EdcWriteEnable;
  104. uint8_t RttEnable;
  105. uint8_t StutterEnable;
  106. uint8_t StrobeEnable;
  107. uint8_t StrobeRatio;
  108. uint8_t EnabledForThrottle;
  109. uint8_t EnabledForActivity;
  110. uint8_t UpHyst;
  111. uint8_t DownHyst;
  112. uint8_t VoltageDownHyst;
  113. uint8_t padding;
  114. uint16_t ActivityLevel;
  115. uint8_t DisplayWatermark;
  116. uint8_t padding1;
  117. uint32_t MpllFuncCntl;
  118. uint32_t MpllFuncCntl_1;
  119. uint32_t MpllFuncCntl_2;
  120. uint32_t MpllAdFuncCntl;
  121. uint32_t MpllDqFuncCntl;
  122. uint32_t MclkPwrmgtCntl;
  123. uint32_t DllCntl;
  124. uint32_t MpllSs1;
  125. uint32_t MpllSs2;
  126. };
  127. typedef struct SMU71_Discrete_MemoryLevel SMU71_Discrete_MemoryLevel;
  128. struct SMU71_Discrete_LinkLevel
  129. {
  130. uint8_t PcieGenSpeed; ///< 0:PciE-gen1 1:PciE-gen2 2:PciE-gen3
  131. uint8_t PcieLaneCount; ///< 1=x1, 2=x2, 3=x4, 4=x8, 5=x12, 6=x16
  132. uint8_t EnabledForActivity;
  133. uint8_t SPC;
  134. uint32_t DownThreshold;
  135. uint32_t UpThreshold;
  136. uint32_t Reserved;
  137. };
  138. typedef struct SMU71_Discrete_LinkLevel SMU71_Discrete_LinkLevel;
  139. #ifdef SMU__DYNAMIC_MCARB_SETTINGS
  140. // MC ARB DRAM Timing registers.
  141. struct SMU71_Discrete_MCArbDramTimingTableEntry
  142. {
  143. uint32_t McArbDramTiming;
  144. uint32_t McArbDramTiming2;
  145. uint8_t McArbBurstTime;
  146. uint8_t padding[3];
  147. };
  148. typedef struct SMU71_Discrete_MCArbDramTimingTableEntry SMU71_Discrete_MCArbDramTimingTableEntry;
  149. struct SMU71_Discrete_MCArbDramTimingTable
  150. {
  151. SMU71_Discrete_MCArbDramTimingTableEntry entries[SMU__NUM_SCLK_DPM_STATE][SMU__NUM_MCLK_DPM_LEVELS];
  152. };
  153. typedef struct SMU71_Discrete_MCArbDramTimingTable SMU71_Discrete_MCArbDramTimingTable;
  154. #endif
  155. // UVD VCLK/DCLK state (level) definition.
  156. struct SMU71_Discrete_UvdLevel
  157. {
  158. uint32_t VclkFrequency;
  159. uint32_t DclkFrequency;
  160. uint16_t MinVddc;
  161. uint8_t MinVddcPhases;
  162. uint8_t VclkDivider;
  163. uint8_t DclkDivider;
  164. uint8_t padding[3];
  165. };
  166. typedef struct SMU71_Discrete_UvdLevel SMU71_Discrete_UvdLevel;
  167. // Clocks for other external blocks (VCE, ACP, SAMU).
  168. struct SMU71_Discrete_ExtClkLevel
  169. {
  170. uint32_t Frequency;
  171. uint16_t MinVoltage;
  172. uint8_t MinPhases;
  173. uint8_t Divider;
  174. };
  175. typedef struct SMU71_Discrete_ExtClkLevel SMU71_Discrete_ExtClkLevel;
  176. // Everything that we need to keep track of about the current state.
  177. // Use this instead of copies of the GraphicsLevel and MemoryLevel structures to keep track of state parameters
  178. // that need to be checked later.
  179. // We don't need to cache everything about a state, just a few parameters.
  180. struct SMU71_Discrete_StateInfo
  181. {
  182. uint32_t SclkFrequency;
  183. uint32_t MclkFrequency;
  184. uint32_t VclkFrequency;
  185. uint32_t DclkFrequency;
  186. uint32_t SamclkFrequency;
  187. uint32_t AclkFrequency;
  188. uint32_t EclkFrequency;
  189. uint16_t MvddVoltage;
  190. uint16_t padding16;
  191. uint8_t DisplayWatermark;
  192. uint8_t McArbIndex;
  193. uint8_t McRegIndex;
  194. uint8_t SeqIndex;
  195. uint8_t SclkDid;
  196. int8_t SclkIndex;
  197. int8_t MclkIndex;
  198. uint8_t PCIeGen;
  199. };
  200. typedef struct SMU71_Discrete_StateInfo SMU71_Discrete_StateInfo;
  201. struct SMU71_Discrete_DpmTable
  202. {
  203. // Multi-DPM controller settings
  204. SMU71_PIDController GraphicsPIDController;
  205. SMU71_PIDController MemoryPIDController;
  206. SMU71_PIDController LinkPIDController;
  207. uint32_t SystemFlags;
  208. // SMIO masks for voltage and phase controls
  209. uint32_t SmioMaskVddcVid;
  210. uint32_t SmioMaskVddcPhase;
  211. uint32_t SmioMaskVddciVid;
  212. uint32_t SmioMaskMvddVid;
  213. uint32_t VddcLevelCount;
  214. uint32_t VddciLevelCount;
  215. uint32_t MvddLevelCount;
  216. SMU71_Discrete_VoltageLevel VddcLevel [SMU71_MAX_LEVELS_VDDC];
  217. SMU71_Discrete_VoltageLevel VddciLevel [SMU71_MAX_LEVELS_VDDCI];
  218. SMU71_Discrete_VoltageLevel MvddLevel [SMU71_MAX_LEVELS_MVDD];
  219. uint8_t GraphicsDpmLevelCount;
  220. uint8_t MemoryDpmLevelCount;
  221. uint8_t LinkLevelCount;
  222. uint8_t MasterDeepSleepControl;
  223. uint32_t Reserved[5];
  224. // State table entries for each DPM state
  225. SMU71_Discrete_GraphicsLevel GraphicsLevel [SMU71_MAX_LEVELS_GRAPHICS];
  226. SMU71_Discrete_MemoryLevel MemoryACPILevel;
  227. SMU71_Discrete_MemoryLevel MemoryLevel [SMU71_MAX_LEVELS_MEMORY];
  228. SMU71_Discrete_LinkLevel LinkLevel [SMU71_MAX_LEVELS_LINK];
  229. SMU71_Discrete_ACPILevel ACPILevel;
  230. uint32_t SclkStepSize;
  231. uint32_t Smio [SMU71_MAX_ENTRIES_SMIO];
  232. uint8_t GraphicsBootLevel;
  233. uint8_t GraphicsVoltageChangeEnable;
  234. uint8_t GraphicsThermThrottleEnable;
  235. uint8_t GraphicsInterval;
  236. uint8_t VoltageInterval;
  237. uint8_t ThermalInterval;
  238. uint16_t TemperatureLimitHigh;
  239. uint16_t TemperatureLimitLow;
  240. uint8_t MemoryBootLevel;
  241. uint8_t MemoryVoltageChangeEnable;
  242. uint8_t MemoryInterval;
  243. uint8_t MemoryThermThrottleEnable;
  244. uint8_t MergedVddci;
  245. uint8_t padding2;
  246. uint16_t VoltageResponseTime;
  247. uint16_t PhaseResponseTime;
  248. uint8_t PCIeBootLinkLevel;
  249. uint8_t PCIeGenInterval;
  250. uint8_t DTEInterval;
  251. uint8_t DTEMode;
  252. uint8_t SVI2Enable;
  253. uint8_t VRHotGpio;
  254. uint8_t AcDcGpio;
  255. uint8_t ThermGpio;
  256. uint32_t DisplayCac;
  257. uint16_t MaxPwr;
  258. uint16_t NomPwr;
  259. uint16_t FpsHighThreshold;
  260. uint16_t FpsLowThreshold;
  261. uint16_t BAPMTI_R [SMU71_DTE_ITERATIONS][SMU71_DTE_SOURCES][SMU71_DTE_SINKS];
  262. uint16_t BAPMTI_RC [SMU71_DTE_ITERATIONS][SMU71_DTE_SOURCES][SMU71_DTE_SINKS];
  263. uint8_t DTEAmbientTempBase;
  264. uint8_t DTETjOffset;
  265. uint8_t GpuTjMax;
  266. uint8_t GpuTjHyst;
  267. uint16_t BootVddc;
  268. uint16_t BootVddci;
  269. uint16_t BootMVdd;
  270. uint16_t padding;
  271. uint32_t BAPM_TEMP_GRADIENT;
  272. uint32_t LowSclkInterruptThreshold;
  273. uint32_t VddGfxReChkWait;
  274. uint16_t PPM_PkgPwrLimit;
  275. uint16_t PPM_TemperatureLimit;
  276. uint16_t DefaultTdp;
  277. uint16_t TargetTdp;
  278. };
  279. typedef struct SMU71_Discrete_DpmTable SMU71_Discrete_DpmTable;
  280. // --------------------------------------------------- AC Timing Parameters ------------------------------------------------
  281. #define SMU71_DISCRETE_MC_REGISTER_ARRAY_SIZE 16
  282. #define SMU71_DISCRETE_MC_REGISTER_ARRAY_SET_COUNT SMU71_MAX_LEVELS_MEMORY
  283. struct SMU71_Discrete_MCRegisterAddress
  284. {
  285. uint16_t s0;
  286. uint16_t s1;
  287. };
  288. typedef struct SMU71_Discrete_MCRegisterAddress SMU71_Discrete_MCRegisterAddress;
  289. struct SMU71_Discrete_MCRegisterSet
  290. {
  291. uint32_t value[SMU71_DISCRETE_MC_REGISTER_ARRAY_SIZE];
  292. };
  293. typedef struct SMU71_Discrete_MCRegisterSet SMU71_Discrete_MCRegisterSet;
  294. struct SMU71_Discrete_MCRegisters
  295. {
  296. uint8_t last;
  297. uint8_t reserved[3];
  298. SMU71_Discrete_MCRegisterAddress address[SMU71_DISCRETE_MC_REGISTER_ARRAY_SIZE];
  299. SMU71_Discrete_MCRegisterSet data[SMU71_DISCRETE_MC_REGISTER_ARRAY_SET_COUNT];
  300. };
  301. typedef struct SMU71_Discrete_MCRegisters SMU71_Discrete_MCRegisters;
  302. // --------------------------------------------------- Fan Table -----------------------------------------------------------
  303. struct SMU71_Discrete_FanTable
  304. {
  305. uint16_t FdoMode;
  306. int16_t TempMin;
  307. int16_t TempMed;
  308. int16_t TempMax;
  309. int16_t Slope1;
  310. int16_t Slope2;
  311. int16_t FdoMin;
  312. int16_t HystUp;
  313. int16_t HystDown;
  314. int16_t HystSlope;
  315. int16_t TempRespLim;
  316. int16_t TempCurr;
  317. int16_t SlopeCurr;
  318. int16_t PwmCurr;
  319. uint32_t RefreshPeriod;
  320. int16_t FdoMax;
  321. uint8_t TempSrc;
  322. int8_t Padding;
  323. };
  324. typedef struct SMU71_Discrete_FanTable SMU71_Discrete_FanTable;
  325. #define SMU7_DISCRETE_GPIO_SCLK_DEBUG 4
  326. #define SMU7_DISCRETE_GPIO_SCLK_DEBUG_BIT (0x1 << SMU7_DISCRETE_GPIO_SCLK_DEBUG)
  327. struct SMU71_MclkDpmScoreboard
  328. {
  329. uint32_t PercentageBusy;
  330. int32_t PIDError;
  331. int32_t PIDIntegral;
  332. int32_t PIDOutput;
  333. uint32_t SigmaDeltaAccum;
  334. uint32_t SigmaDeltaOutput;
  335. uint32_t SigmaDeltaLevel;
  336. uint32_t UtilizationSetpoint;
  337. uint8_t TdpClampMode;
  338. uint8_t TdcClampMode;
  339. uint8_t ThermClampMode;
  340. uint8_t VoltageBusy;
  341. int8_t CurrLevel;
  342. int8_t TargLevel;
  343. uint8_t LevelChangeInProgress;
  344. uint8_t UpHyst;
  345. uint8_t DownHyst;
  346. uint8_t VoltageDownHyst;
  347. uint8_t DpmEnable;
  348. uint8_t DpmRunning;
  349. uint8_t DpmForce;
  350. uint8_t DpmForceLevel;
  351. uint8_t DisplayWatermark;
  352. uint8_t McArbIndex;
  353. uint32_t MinimumPerfMclk;
  354. uint8_t AcpiReq;
  355. uint8_t AcpiAck;
  356. uint8_t MclkSwitchInProgress;
  357. uint8_t MclkSwitchCritical;
  358. uint8_t TargetMclkIndex;
  359. uint8_t TargetMvddIndex;
  360. uint8_t MclkSwitchResult;
  361. uint8_t EnabledLevelsChange;
  362. uint16_t LevelResidencyCounters [SMU71_MAX_LEVELS_MEMORY];
  363. uint16_t LevelSwitchCounters [SMU71_MAX_LEVELS_MEMORY];
  364. void (*TargetStateCalculator)(uint8_t);
  365. void (*SavedTargetStateCalculator)(uint8_t);
  366. uint16_t AutoDpmInterval;
  367. uint16_t AutoDpmRange;
  368. uint16_t MclkSwitchingTime;
  369. uint8_t padding[2];
  370. };
  371. typedef struct SMU71_MclkDpmScoreboard SMU71_MclkDpmScoreboard;
  372. struct SMU71_UlvScoreboard
  373. {
  374. uint8_t EnterUlv;
  375. uint8_t ExitUlv;
  376. uint8_t UlvActive;
  377. uint8_t WaitingForUlv;
  378. uint8_t UlvEnable;
  379. uint8_t UlvRunning;
  380. uint8_t UlvMasterEnable;
  381. uint8_t padding;
  382. uint32_t UlvAbortedCount;
  383. uint32_t UlvTimeStamp;
  384. };
  385. typedef struct SMU71_UlvScoreboard SMU71_UlvScoreboard;
  386. struct SMU71_VddGfxScoreboard
  387. {
  388. uint8_t VddGfxEnable;
  389. uint8_t VddGfxActive;
  390. uint8_t padding[2];
  391. uint32_t VddGfxEnteredCount;
  392. uint32_t VddGfxAbortedCount;
  393. };
  394. typedef struct SMU71_VddGfxScoreboard SMU71_VddGfxScoreboard;
  395. struct SMU71_AcpiScoreboard {
  396. uint32_t SavedInterruptMask[2];
  397. uint8_t LastACPIRequest;
  398. uint8_t CgBifResp;
  399. uint8_t RequestType;
  400. uint8_t Padding;
  401. SMU71_Discrete_ACPILevel D0Level;
  402. };
  403. typedef struct SMU71_AcpiScoreboard SMU71_AcpiScoreboard;
  404. struct SMU71_Discrete_PmFuses {
  405. // dw0-dw1
  406. uint8_t BapmVddCVidHiSidd[8];
  407. // dw2-dw3
  408. uint8_t BapmVddCVidLoSidd[8];
  409. // dw4-dw5
  410. uint8_t VddCVid[8];
  411. // dw6
  412. uint8_t SviLoadLineEn;
  413. uint8_t SviLoadLineVddC;
  414. uint8_t SviLoadLineTrimVddC;
  415. uint8_t SviLoadLineOffsetVddC;
  416. // dw7
  417. uint16_t TDC_VDDC_PkgLimit;
  418. uint8_t TDC_VDDC_ThrottleReleaseLimitPerc;
  419. uint8_t TDC_MAWt;
  420. // dw8
  421. uint8_t TdcWaterfallCtl;
  422. uint8_t LPMLTemperatureMin;
  423. uint8_t LPMLTemperatureMax;
  424. uint8_t Reserved;
  425. // dw9-dw12
  426. uint8_t LPMLTemperatureScaler[16];
  427. // dw13-dw14
  428. int16_t FuzzyFan_ErrorSetDelta;
  429. int16_t FuzzyFan_ErrorRateSetDelta;
  430. int16_t FuzzyFan_PwmSetDelta;
  431. uint16_t Reserved6;
  432. // dw15
  433. uint8_t GnbLPML[16];
  434. // dw15
  435. uint8_t GnbLPMLMaxVid;
  436. uint8_t GnbLPMLMinVid;
  437. uint8_t Reserved1[2];
  438. // dw16
  439. uint16_t BapmVddCBaseLeakageHiSidd;
  440. uint16_t BapmVddCBaseLeakageLoSidd;
  441. };
  442. typedef struct SMU71_Discrete_PmFuses SMU71_Discrete_PmFuses;
  443. struct SMU71_Discrete_Log_Header_Table {
  444. uint32_t version;
  445. uint32_t asic_id;
  446. uint16_t flags;
  447. uint16_t entry_size;
  448. uint32_t total_size;
  449. uint32_t num_of_entries;
  450. uint8_t type;
  451. uint8_t mode;
  452. uint8_t filler_0[2];
  453. uint32_t filler_1[2];
  454. };
  455. typedef struct SMU71_Discrete_Log_Header_Table SMU71_Discrete_Log_Header_Table;
  456. struct SMU71_Discrete_Log_Cntl {
  457. uint8_t Enabled;
  458. uint8_t Type;
  459. uint8_t padding[2];
  460. uint32_t BufferSize;
  461. uint32_t SamplesLogged;
  462. uint32_t SampleSize;
  463. uint32_t AddrL;
  464. uint32_t AddrH;
  465. };
  466. typedef struct SMU71_Discrete_Log_Cntl SMU71_Discrete_Log_Cntl;
  467. #if defined SMU__DGPU_ONLY
  468. #define CAC_ACC_NW_NUM_OF_SIGNALS 83
  469. #endif
  470. struct SMU71_Discrete_Cac_Collection_Table {
  471. uint32_t temperature;
  472. uint32_t cac_acc_nw[CAC_ACC_NW_NUM_OF_SIGNALS];
  473. uint32_t filler[4];
  474. };
  475. typedef struct SMU71_Discrete_Cac_Collection_Table SMU71_Discrete_Cac_Collection_Table;
  476. struct SMU71_Discrete_Cac_Verification_Table {
  477. uint32_t VddcTotalPower;
  478. uint32_t VddcLeakagePower;
  479. uint32_t VddcConstantPower;
  480. uint32_t VddcGfxDynamicPower;
  481. uint32_t VddcUvdDynamicPower;
  482. uint32_t VddcVceDynamicPower;
  483. uint32_t VddcAcpDynamicPower;
  484. uint32_t VddcPcieDynamicPower;
  485. uint32_t VddcDceDynamicPower;
  486. uint32_t VddcCurrent;
  487. uint32_t VddcVoltage;
  488. uint32_t VddciTotalPower;
  489. uint32_t VddciLeakagePower;
  490. uint32_t VddciConstantPower;
  491. uint32_t VddciDynamicPower;
  492. uint32_t Vddr1TotalPower;
  493. uint32_t Vddr1LeakagePower;
  494. uint32_t Vddr1ConstantPower;
  495. uint32_t Vddr1DynamicPower;
  496. uint32_t spare[8];
  497. uint32_t temperature;
  498. };
  499. typedef struct SMU71_Discrete_Cac_Verification_Table SMU71_Discrete_Cac_Verification_Table;
  500. #if !defined(SMC_MICROCODE)
  501. #pragma pack(pop)
  502. #endif
  503. #endif