2 * Copyright 2017 Advanced Micro Devices, Inc.
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:
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
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.
24 #ifndef SMU72_DISCRETE_H
25 #define SMU72_DISCRETE_H
29 #if !defined(SMC_MICROCODE)
39 typedef struct SMIO_Pattern SMIO_Pattern
;
42 SMIO_Pattern Pattern
[SMU_MAX_SMIO_LEVELS
];
45 typedef struct SMIO_Table SMIO_Table
;
47 struct SMU72_Discrete_GraphicsLevel
{
48 SMU_VoltageLevel MinVoltage
;
50 uint32_t SclkFrequency
;
53 uint8_t DeepSleepDivId
;
54 uint16_t ActivityLevel
;
56 uint32_t CgSpllFuncCntl3
;
57 uint32_t CgSpllFuncCntl4
;
58 uint32_t SpllSpreadSpectrum
;
59 uint32_t SpllSpreadSpectrum2
;
63 uint8_t DisplayWatermark
;
64 uint8_t EnabledForActivity
;
65 uint8_t EnabledForThrottle
;
68 uint8_t VoltageDownHyst
;
69 uint8_t PowerThrottle
;
72 typedef struct SMU72_Discrete_GraphicsLevel SMU72_Discrete_GraphicsLevel
;
74 struct SMU72_Discrete_ACPILevel
{
76 SMU_VoltageLevel MinVoltage
;
77 uint32_t SclkFrequency
;
79 uint8_t DisplayWatermark
;
80 uint8_t DeepSleepDivId
;
82 uint32_t CgSpllFuncCntl
;
83 uint32_t CgSpllFuncCntl2
;
84 uint32_t CgSpllFuncCntl3
;
85 uint32_t CgSpllFuncCntl4
;
86 uint32_t SpllSpreadSpectrum
;
87 uint32_t SpllSpreadSpectrum2
;
92 typedef struct SMU72_Discrete_ACPILevel SMU72_Discrete_ACPILevel
;
94 struct SMU72_Discrete_Ulv
{
98 uint8_t VddcOffsetVid
;
103 typedef struct SMU72_Discrete_Ulv SMU72_Discrete_Ulv
;
105 struct SMU72_Discrete_MemoryLevel
{
106 SMU_VoltageLevel MinVoltage
;
109 uint32_t MclkFrequency
;
111 uint8_t EdcReadEnable
;
112 uint8_t EdcWriteEnable
;
114 uint8_t StutterEnable
;
116 uint8_t StrobeEnable
;
118 uint8_t EnabledForThrottle
;
119 uint8_t EnabledForActivity
;
123 uint8_t VoltageDownHyst
;
126 uint16_t ActivityLevel
;
127 uint8_t DisplayWatermark
;
130 uint32_t MpllFuncCntl
;
131 uint32_t MpllFuncCntl_1
;
132 uint32_t MpllFuncCntl_2
;
133 uint32_t MpllAdFuncCntl
;
134 uint32_t MpllDqFuncCntl
;
135 uint32_t MclkPwrmgtCntl
;
141 typedef struct SMU72_Discrete_MemoryLevel SMU72_Discrete_MemoryLevel
;
143 struct SMU72_Discrete_LinkLevel
{
144 uint8_t PcieGenSpeed
; /*< 0:PciE-gen1 1:PciE-gen2 2:PciE-gen3 */
145 uint8_t PcieLaneCount
; /*< 1=x1, 2=x2, 3=x4, 4=x8, 5=x12, 6=x16 */
146 uint8_t EnabledForActivity
;
148 uint32_t DownThreshold
;
149 uint32_t UpThreshold
;
153 typedef struct SMU72_Discrete_LinkLevel SMU72_Discrete_LinkLevel
;
155 /* MC ARB DRAM Timing registers. */
156 struct SMU72_Discrete_MCArbDramTimingTableEntry
{
157 uint32_t McArbDramTiming
;
158 uint32_t McArbDramTiming2
;
159 uint8_t McArbBurstTime
;
163 typedef struct SMU72_Discrete_MCArbDramTimingTableEntry SMU72_Discrete_MCArbDramTimingTableEntry
;
165 struct SMU72_Discrete_MCArbDramTimingTable
{
166 SMU72_Discrete_MCArbDramTimingTableEntry entries
[SMU__NUM_SCLK_DPM_STATE
][SMU__NUM_MCLK_DPM_LEVELS
];
169 typedef struct SMU72_Discrete_MCArbDramTimingTable SMU72_Discrete_MCArbDramTimingTable
;
171 /* UVD VCLK/DCLK state (level) definition. */
172 struct SMU72_Discrete_UvdLevel
{
173 uint32_t VclkFrequency
;
174 uint32_t DclkFrequency
;
175 SMU_VoltageLevel MinVoltage
;
181 typedef struct SMU72_Discrete_UvdLevel SMU72_Discrete_UvdLevel
;
183 /* Clocks for other external blocks (VCE, ACP, SAMU). */
184 struct SMU72_Discrete_ExtClkLevel
{
186 SMU_VoltageLevel MinVoltage
;
191 typedef struct SMU72_Discrete_ExtClkLevel SMU72_Discrete_ExtClkLevel
;
193 struct SMU72_Discrete_StateInfo
{
194 uint32_t SclkFrequency
;
195 uint32_t MclkFrequency
;
196 uint32_t VclkFrequency
;
197 uint32_t DclkFrequency
;
198 uint32_t SamclkFrequency
;
199 uint32_t AclkFrequency
;
200 uint32_t EclkFrequency
;
201 uint16_t MvddVoltage
;
203 uint8_t DisplayWatermark
;
214 typedef struct SMU72_Discrete_StateInfo SMU72_Discrete_StateInfo
;
216 struct SMU72_Discrete_DpmTable
{
217 /* Multi-DPM controller settings */
218 SMU72_PIDController GraphicsPIDController
;
219 SMU72_PIDController MemoryPIDController
;
220 SMU72_PIDController LinkPIDController
;
222 uint32_t SystemFlags
;
224 /* SMIO masks for voltage and phase controls */
228 SMIO_Table SmioTable1
;
229 SMIO_Table SmioTable2
;
231 uint32_t VddcLevelCount
;
232 uint32_t VddciLevelCount
;
233 uint32_t VddGfxLevelCount
;
234 uint32_t MvddLevelCount
;
236 uint16_t VddcTable
[SMU72_MAX_LEVELS_VDDC
];
237 uint16_t VddGfxTable
[SMU72_MAX_LEVELS_VDDGFX
];
238 uint16_t VddciTable
[SMU72_MAX_LEVELS_VDDCI
];
240 uint8_t BapmVddGfxVidHiSidd
[SMU72_MAX_LEVELS_VDDGFX
];
241 uint8_t BapmVddGfxVidLoSidd
[SMU72_MAX_LEVELS_VDDGFX
];
242 uint8_t BapmVddGfxVidHiSidd2
[SMU72_MAX_LEVELS_VDDGFX
];
244 uint8_t BapmVddcVidHiSidd
[SMU72_MAX_LEVELS_VDDC
];
245 uint8_t BapmVddcVidLoSidd
[SMU72_MAX_LEVELS_VDDC
];
246 uint8_t BapmVddcVidHiSidd2
[SMU72_MAX_LEVELS_VDDC
];
248 uint8_t GraphicsDpmLevelCount
;
249 uint8_t MemoryDpmLevelCount
;
250 uint8_t LinkLevelCount
;
251 uint8_t MasterDeepSleepControl
;
253 uint8_t UvdLevelCount
;
254 uint8_t VceLevelCount
;
255 uint8_t AcpLevelCount
;
256 uint8_t SamuLevelCount
;
258 uint8_t ThermOutGpio
;
259 uint8_t ThermOutPolarity
;
260 uint8_t ThermOutMode
;
261 uint8_t DPMFreezeAndForced
;
262 uint32_t Reserved
[4];
264 /* State table entries for each DPM state */
265 SMU72_Discrete_GraphicsLevel GraphicsLevel
[SMU72_MAX_LEVELS_GRAPHICS
];
266 SMU72_Discrete_MemoryLevel MemoryACPILevel
;
267 SMU72_Discrete_MemoryLevel MemoryLevel
[SMU72_MAX_LEVELS_MEMORY
];
268 SMU72_Discrete_LinkLevel LinkLevel
[SMU72_MAX_LEVELS_LINK
];
269 SMU72_Discrete_ACPILevel ACPILevel
;
270 SMU72_Discrete_UvdLevel UvdLevel
[SMU72_MAX_LEVELS_UVD
];
271 SMU72_Discrete_ExtClkLevel VceLevel
[SMU72_MAX_LEVELS_VCE
];
272 SMU72_Discrete_ExtClkLevel AcpLevel
[SMU72_MAX_LEVELS_ACP
];
273 SMU72_Discrete_ExtClkLevel SamuLevel
[SMU72_MAX_LEVELS_SAMU
];
274 SMU72_Discrete_Ulv Ulv
;
276 uint32_t SclkStepSize
;
277 uint32_t Smio
[SMU72_MAX_ENTRIES_SMIO
];
279 uint8_t UvdBootLevel
;
280 uint8_t VceBootLevel
;
281 uint8_t AcpBootLevel
;
282 uint8_t SamuBootLevel
;
284 uint8_t GraphicsBootLevel
;
285 uint8_t GraphicsVoltageChangeEnable
;
286 uint8_t GraphicsThermThrottleEnable
;
287 uint8_t GraphicsInterval
;
289 uint8_t VoltageInterval
;
290 uint8_t ThermalInterval
;
291 uint16_t TemperatureLimitHigh
;
293 uint16_t TemperatureLimitLow
;
294 uint8_t MemoryBootLevel
;
295 uint8_t MemoryVoltageChangeEnable
;
298 uint8_t MemoryInterval
;
299 uint8_t MemoryThermThrottleEnable
;
301 uint16_t VoltageResponseTime
;
302 uint16_t PhaseResponseTime
;
304 uint8_t PCIeBootLinkLevel
;
305 uint8_t PCIeGenInterval
;
314 uint16_t PPM_PkgPwrLimit
;
315 uint16_t PPM_TemperatureLimit
;
320 uint16_t FpsHighThreshold
;
321 uint16_t FpsLowThreshold
;
323 uint16_t BAPMTI_R
[SMU72_DTE_ITERATIONS
][SMU72_DTE_SOURCES
][SMU72_DTE_SINKS
];
324 uint16_t BAPMTI_RC
[SMU72_DTE_ITERATIONS
][SMU72_DTE_SOURCES
][SMU72_DTE_SINKS
];
326 uint8_t DTEAmbientTempBase
;
331 SMU_VoltageLevel BootVoltage
;
333 uint32_t BAPM_TEMP_GRADIENT
;
335 uint32_t LowSclkInterruptThreshold
;
336 uint32_t VddGfxReChkWait
;
338 uint8_t ClockStretcherAmount
;
340 uint8_t Sclk_CKS_masterEn0_7
;
341 uint8_t Sclk_CKS_masterEn8_15
;
344 uint8_t Sclk_voltageOffset
[8];
346 SMU_ClockStretcherDataTable ClockStretcherDataTable
;
347 SMU_CKS_LOOKUPTable CKS_LOOKUPTable
;
350 typedef struct SMU72_Discrete_DpmTable SMU72_Discrete_DpmTable
;
352 /* --------------------------------------------------- AC Timing Parameters ------------------------------------------------ */
353 #define SMU72_DISCRETE_MC_REGISTER_ARRAY_SIZE 16
354 #define SMU72_DISCRETE_MC_REGISTER_ARRAY_SET_COUNT SMU72_MAX_LEVELS_MEMORY /* DPM */
356 struct SMU72_Discrete_MCRegisterAddress
{
361 typedef struct SMU72_Discrete_MCRegisterAddress SMU72_Discrete_MCRegisterAddress
;
363 struct SMU72_Discrete_MCRegisterSet
{
364 uint32_t value
[SMU72_DISCRETE_MC_REGISTER_ARRAY_SIZE
];
367 typedef struct SMU72_Discrete_MCRegisterSet SMU72_Discrete_MCRegisterSet
;
369 struct SMU72_Discrete_MCRegisters
{
372 SMU72_Discrete_MCRegisterAddress address
[SMU72_DISCRETE_MC_REGISTER_ARRAY_SIZE
];
373 SMU72_Discrete_MCRegisterSet data
[SMU72_DISCRETE_MC_REGISTER_ARRAY_SET_COUNT
];
376 typedef struct SMU72_Discrete_MCRegisters SMU72_Discrete_MCRegisters
;
379 /* --------------------------------------------------- Fan Table ----------------------------------------------------------- */
381 struct SMU72_Discrete_FanTable
{
396 uint32_t RefreshPeriod
;
399 int8_t FanControl_GL_Flag
;
402 typedef struct SMU72_Discrete_FanTable SMU72_Discrete_FanTable
;
404 #define SMU7_DISCRETE_GPIO_SCLK_DEBUG 4
405 #define SMU7_DISCRETE_GPIO_SCLK_DEBUG_BIT (0x1 << SMU7_DISCRETE_GPIO_SCLK_DEBUG)
407 struct SMU7_MclkDpmScoreboard
{
409 uint32_t PercentageBusy
;
415 uint32_t SigmaDeltaAccum
;
416 uint32_t SigmaDeltaOutput
;
417 uint32_t SigmaDeltaLevel
;
419 uint32_t UtilizationSetpoint
;
421 uint8_t TdpClampMode
;
422 uint8_t TdcClampMode
;
423 uint8_t ThermClampMode
;
428 uint8_t LevelChangeInProgress
;
432 uint8_t VoltageDownHyst
;
437 uint8_t DpmForceLevel
;
438 uint8_t DisplayWatermark
;
441 uint32_t MinimumPerfMclk
;
445 uint8_t MclkSwitchInProgress
;
446 uint8_t MclkSwitchCritical
;
448 uint8_t IgnoreVBlank
;
449 uint8_t TargetMclkIndex
;
450 uint8_t TargetMvddIndex
;
451 uint8_t MclkSwitchResult
;
453 uint16_t VbiFailureCount
;
454 uint8_t VbiWaitCounter
;
455 uint8_t EnabledLevelsChange
;
457 uint16_t LevelResidencyCountersN
[SMU72_MAX_LEVELS_MEMORY
];
458 uint16_t LevelSwitchCounters
[SMU72_MAX_LEVELS_MEMORY
];
460 void (*TargetStateCalculator
)(uint8_t);
461 void (*SavedTargetStateCalculator
)(uint8_t);
463 uint16_t AutoDpmInterval
;
464 uint16_t AutoDpmRange
;
466 uint16_t VbiTimeoutCount
;
467 uint16_t MclkSwitchingTime
;
470 uint8_t Save_PIC_VDDGFX_EXIT
;
471 uint8_t Save_PIC_VDDGFX_ENTER
;
476 typedef struct SMU7_MclkDpmScoreboard SMU7_MclkDpmScoreboard
;
478 struct SMU7_UlvScoreboard
{
482 uint8_t WaitingForUlv
;
485 uint8_t UlvMasterEnable
;
487 uint32_t UlvAbortedCount
;
488 uint32_t UlvTimeStamp
;
491 typedef struct SMU7_UlvScoreboard SMU7_UlvScoreboard
;
493 struct VddgfxSavedRegisters
{
495 uint32_t MEC_BaseAddress_Hi
;
496 uint32_t MEC_BaseAddress_Lo
;
497 uint32_t THM_TMON0_CTRL2__RDIR_PRESENT
;
498 uint32_t THM_TMON1_CTRL2__RDIR_PRESENT
;
499 uint32_t CP_INT_CNTL
;
502 typedef struct VddgfxSavedRegisters VddgfxSavedRegisters
;
504 struct SMU7_VddGfxScoreboard
{
505 uint8_t VddGfxEnable
;
506 uint8_t VddGfxActive
;
507 uint8_t VPUResetOccured
;
510 uint32_t VddGfxEnteredCount
;
511 uint32_t VddGfxAbortedCount
;
515 VddgfxSavedRegisters SavedRegisters
;
518 typedef struct SMU7_VddGfxScoreboard SMU7_VddGfxScoreboard
;
520 struct SMU7_TdcLimitScoreboard
{
524 uint32_t FilteredIddc
;
527 SMU7_HystController_Data HystControllerData
;
530 typedef struct SMU7_TdcLimitScoreboard SMU7_TdcLimitScoreboard
;
532 struct SMU7_PkgPwrLimitScoreboard
{
536 uint32_t FilteredPkgPwr
;
539 uint32_t LimitFromDriver
;
540 SMU7_HystController_Data HystControllerData
;
543 typedef struct SMU7_PkgPwrLimitScoreboard SMU7_PkgPwrLimitScoreboard
;
545 struct SMU7_BapmScoreboard
{
546 uint32_t source_powers
[SMU72_DTE_SOURCES
];
547 uint32_t source_powers_last
[SMU72_DTE_SOURCES
];
548 int32_t entity_temperatures
[SMU72_NUM_GPU_TES
];
549 int32_t initial_entity_temperatures
[SMU72_NUM_GPU_TES
];
552 int32_t therm_influence_coeff_table
[SMU72_DTE_ITERATIONS
* SMU72_DTE_SOURCES
* SMU72_DTE_SINKS
* 2];
553 int32_t therm_node_table
[SMU72_DTE_ITERATIONS
* SMU72_DTE_SOURCES
* SMU72_DTE_SINKS
];
554 uint16_t ConfigTDPPowerScalar
;
555 uint16_t FanSpeedPowerScalar
;
556 uint16_t OverDrivePowerScalar
;
557 uint16_t OverDriveLimitScalar
;
558 uint16_t FinalPowerScalar
;
562 SMU7_HystController_Data HystControllerData
;
564 int32_t temperature_gradient_slope
;
565 int32_t temperature_gradient
;
566 uint32_t measured_temperature
;
570 typedef struct SMU7_BapmScoreboard SMU7_BapmScoreboard
;
572 struct SMU7_AcpiScoreboard
{
573 uint32_t SavedInterruptMask
[2];
574 uint8_t LastACPIRequest
;
578 SMU72_Discrete_ACPILevel D0Level
;
581 typedef struct SMU7_AcpiScoreboard SMU7_AcpiScoreboard
;
583 struct SMU72_Discrete_PmFuses
{
585 uint8_t SviLoadLineEn
;
586 uint8_t SviLoadLineVddC
;
587 uint8_t SviLoadLineTrimVddC
;
588 uint8_t SviLoadLineOffsetVddC
;
591 uint16_t TDC_VDDC_PkgLimit
;
592 uint8_t TDC_VDDC_ThrottleReleaseLimitPerc
;
596 uint8_t TdcWaterfallCtl
;
597 uint8_t LPMLTemperatureMin
;
598 uint8_t LPMLTemperatureMax
;
602 uint8_t LPMLTemperatureScaler
[16];
605 int16_t FuzzyFan_ErrorSetDelta
;
606 int16_t FuzzyFan_ErrorRateSetDelta
;
607 int16_t FuzzyFan_PwmSetDelta
;
614 uint8_t GnbLPMLMaxVid
;
615 uint8_t GnbLPMLMinVid
;
616 uint8_t Reserved1
[2];
619 uint16_t BapmVddCBaseLeakageHiSidd
;
620 uint16_t BapmVddCBaseLeakageLoSidd
;
623 typedef struct SMU72_Discrete_PmFuses SMU72_Discrete_PmFuses
;
625 struct SMU7_Discrete_Log_Header_Table
{
631 uint32_t num_of_entries
;
635 uint32_t filler_1
[2];
638 typedef struct SMU7_Discrete_Log_Header_Table SMU7_Discrete_Log_Header_Table
;
640 struct SMU7_Discrete_Log_Cntl
{
645 uint32_t SamplesLogged
;
651 typedef struct SMU7_Discrete_Log_Cntl SMU7_Discrete_Log_Cntl
;
653 #define CAC_ACC_NW_NUM_OF_SIGNALS 87
655 struct SMU7_Discrete_Cac_Collection_Table
{
656 uint32_t temperature
;
657 uint32_t cac_acc_nw
[CAC_ACC_NW_NUM_OF_SIGNALS
];
660 typedef struct SMU7_Discrete_Cac_Collection_Table SMU7_Discrete_Cac_Collection_Table
;
662 struct SMU7_Discrete_Cac_Verification_Table
{
663 uint32_t VddcTotalPower
;
664 uint32_t VddcLeakagePower
;
665 uint32_t VddcConstantPower
;
666 uint32_t VddcGfxDynamicPower
;
667 uint32_t VddcUvdDynamicPower
;
668 uint32_t VddcVceDynamicPower
;
669 uint32_t VddcAcpDynamicPower
;
670 uint32_t VddcPcieDynamicPower
;
671 uint32_t VddcDceDynamicPower
;
672 uint32_t VddcCurrent
;
673 uint32_t VddcVoltage
;
674 uint32_t VddciTotalPower
;
675 uint32_t VddciLeakagePower
;
676 uint32_t VddciConstantPower
;
677 uint32_t VddciDynamicPower
;
678 uint32_t Vddr1TotalPower
;
679 uint32_t Vddr1LeakagePower
;
680 uint32_t Vddr1ConstantPower
;
681 uint32_t Vddr1DynamicPower
;
683 uint32_t temperature
;
686 typedef struct SMU7_Discrete_Cac_Verification_Table SMU7_Discrete_Cac_Verification_Table
;
688 struct SMU7_Discrete_Pm_Status_Table
{
689 /* Thermal entities */
694 uint32_t P_scalar_acc
;
701 uint32_t I_calc_acc_vddci
;
702 uint32_t V_calc_noload_acc
;
703 uint32_t V_calc_load_acc
;
704 uint32_t V_calc_noload_acc_vddci
;
706 uint32_t V_meas_noload_acc
;
707 uint32_t V_meas_load_acc
;
709 uint32_t P_meas_acc_vddci
;
710 uint32_t V_meas_noload_acc_vddci
;
711 uint32_t V_meas_load_acc_vddci
;
712 uint32_t I_meas_acc_vddci
;
715 uint16_t Sclk_dpm_residency
[8];
716 uint16_t Uvd_dpm_residency
[8];
717 uint16_t Vce_dpm_residency
[8];
718 uint16_t Mclk_dpm_residency
[4];
721 uint32_t P_vddci_acc
;
722 uint32_t P_vddr1_acc
;
726 uint32_t MclkSwitchingTime_max
;
727 uint32_t MclkSwitchingTime_acc
;
734 typedef struct SMU7_Discrete_Pm_Status_Table SMU7_Discrete_Pm_Status_Table
;
736 /*FIXME THESE NEED TO BE UPDATED */
737 #define SMU7_SCLK_CAC 0x561
738 #define SMU7_MCLK_CAC 0xF9
739 #define SMU7_VCLK_CAC 0x2DE
740 #define SMU7_DCLK_CAC 0x2DE
741 #define SMU7_ECLK_CAC 0x25E
742 #define SMU7_ACLK_CAC 0x25E
743 #define SMU7_SAMCLK_CAC 0x25E
744 #define SMU7_DISPCLK_CAC 0x100
745 #define SMU7_CAC_CONSTANT 0x2EE3430
746 #define SMU7_CAC_CONSTANT_SHIFT 18
748 #define SMU7_VDDCI_MCLK_CONST 1765
749 #define SMU7_VDDCI_MCLK_CONST_SHIFT 16
750 #define SMU7_VDDCI_VDDCI_CONST 50958
751 #define SMU7_VDDCI_VDDCI_CONST_SHIFT 14
752 #define SMU7_VDDCI_CONST 11781
754 #define SMU7_12C_VDDCI_MCLK_CONST 1623
755 #define SMU7_12C_VDDCI_MCLK_CONST_SHIFT 15
756 #define SMU7_12C_VDDCI_VDDCI_CONST 40088
757 #define SMU7_12C_VDDCI_VDDCI_CONST_SHIFT 13
758 #define SMU7_12C_VDDCI_CONST 20856
760 #define SMU7_VDDCI_STROBE_PWR 1331
762 #define SMU7_VDDR1_CONST 693
763 #define SMU7_VDDR1_CAC_WEIGHT 20
764 #define SMU7_VDDR1_CAC_WEIGHT_SHIFT 19
765 #define SMU7_VDDR1_STROBE_PWR 512
767 #define SMU7_AREA_COEFF_UVD 0xA78
768 #define SMU7_AREA_COEFF_VCE 0x190A
769 #define SMU7_AREA_COEFF_ACP 0x22D1
770 #define SMU7_AREA_COEFF_SAMU 0x534
772 /*ThermOutMode values */
773 #define SMU7_THERM_OUT_MODE_DISABLE 0x0
774 #define SMU7_THERM_OUT_MODE_THERM_ONLY 0x1
775 #define SMU7_THERM_OUT_MODE_THERM_VRHOT 0x2
777 #if !defined(SMC_MICROCODE)