2 * Copyright 2016 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.
25 #include "vega10_hwmgr.h"
26 #include "vega10_smumgr.h"
27 #include "vega10_powertune.h"
28 #include "vega10_ppsmc.h"
29 #include "vega10_inc.h"
31 #include "soc15_common.h"
33 static const struct vega10_didt_config_reg SEDiDtTuningCtrlConfig_Vega10
[] =
35 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
36 * Offset Mask Shift Value
37 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
40 { ixDIDT_SQ_TUNING_CTRL
, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK
, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT
, 0x3853 },
41 { ixDIDT_SQ_TUNING_CTRL
, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK
, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT
, 0x3153 },
44 { ixDIDT_TD_TUNING_CTRL
, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK
, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT
, 0x0dde },
45 { ixDIDT_TD_TUNING_CTRL
, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK
, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT
, 0x0dde },
48 { ixDIDT_TCP_TUNING_CTRL
, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK
, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT
, 0x3dde },
49 { ixDIDT_TCP_TUNING_CTRL
, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK
, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT
, 0x3dde },
52 { ixDIDT_DB_TUNING_CTRL
, DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK
, DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT
, 0x3dde },
53 { ixDIDT_DB_TUNING_CTRL
, DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK
, DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT
, 0x3dde },
55 { 0xFFFFFFFF } /* End of list */
58 static const struct vega10_didt_config_reg SEDiDtCtrl3Config_vega10
[] =
60 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
61 * Offset Mask Shift Value
62 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
65 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__GC_DIDT_ENABLE_MASK
, DIDT_SQ_CTRL3__GC_DIDT_ENABLE__SHIFT
, 0x0000 },
66 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK
, DIDT_SQ_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
67 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__THROTTLE_POLICY_MASK
, DIDT_SQ_CTRL3__THROTTLE_POLICY__SHIFT
, 0x0003 },
68 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK
, DIDT_SQ_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0000 },
69 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK
, DIDT_SQ_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT
, 0x0000 },
70 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK
, DIDT_SQ_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT
, 0x0003 },
71 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK
, DIDT_SQ_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT
, 0x0000 },
72 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK
, DIDT_SQ_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT
, 0x0000 },
73 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__QUALIFY_STALL_EN_MASK
, DIDT_SQ_CTRL3__QUALIFY_STALL_EN__SHIFT
, 0x0000 },
74 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__DIDT_STALL_SEL_MASK
, DIDT_SQ_CTRL3__DIDT_STALL_SEL__SHIFT
, 0x0000 },
75 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__DIDT_FORCE_STALL_MASK
, DIDT_SQ_CTRL3__DIDT_FORCE_STALL__SHIFT
, 0x0000 },
76 { ixDIDT_SQ_CTRL3
, DIDT_SQ_CTRL3__DIDT_STALL_DELAY_EN_MASK
, DIDT_SQ_CTRL3__DIDT_STALL_DELAY_EN__SHIFT
, 0x0000 },
79 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__GC_DIDT_ENABLE_MASK
, DIDT_TCP_CTRL3__GC_DIDT_ENABLE__SHIFT
, 0x0000 },
80 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK
, DIDT_TCP_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
81 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__THROTTLE_POLICY_MASK
, DIDT_TCP_CTRL3__THROTTLE_POLICY__SHIFT
, 0x0003 },
82 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK
, DIDT_TCP_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0000 },
83 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK
, DIDT_TCP_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT
, 0x0000 },
84 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK
, DIDT_TCP_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT
, 0x0003 },
85 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK
, DIDT_TCP_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT
, 0x0000 },
86 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK
, DIDT_TCP_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT
, 0x0000 },
87 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__QUALIFY_STALL_EN_MASK
, DIDT_TCP_CTRL3__QUALIFY_STALL_EN__SHIFT
, 0x0000 },
88 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__DIDT_STALL_SEL_MASK
, DIDT_TCP_CTRL3__DIDT_STALL_SEL__SHIFT
, 0x0000 },
89 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__DIDT_FORCE_STALL_MASK
, DIDT_TCP_CTRL3__DIDT_FORCE_STALL__SHIFT
, 0x0000 },
90 { ixDIDT_TCP_CTRL3
, DIDT_TCP_CTRL3__DIDT_STALL_DELAY_EN_MASK
, DIDT_TCP_CTRL3__DIDT_STALL_DELAY_EN__SHIFT
, 0x0000 },
93 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__GC_DIDT_ENABLE_MASK
, DIDT_TD_CTRL3__GC_DIDT_ENABLE__SHIFT
, 0x0000 },
94 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK
, DIDT_TD_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
95 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__THROTTLE_POLICY_MASK
, DIDT_TD_CTRL3__THROTTLE_POLICY__SHIFT
, 0x0003 },
96 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK
, DIDT_TD_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0000 },
97 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK
, DIDT_TD_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT
, 0x0000 },
98 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK
, DIDT_TD_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT
, 0x0003 },
99 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK
, DIDT_TD_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT
, 0x0000 },
100 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK
, DIDT_TD_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT
, 0x0000 },
101 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__QUALIFY_STALL_EN_MASK
, DIDT_TD_CTRL3__QUALIFY_STALL_EN__SHIFT
, 0x0000 },
102 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__DIDT_STALL_SEL_MASK
, DIDT_TD_CTRL3__DIDT_STALL_SEL__SHIFT
, 0x0000 },
103 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__DIDT_FORCE_STALL_MASK
, DIDT_TD_CTRL3__DIDT_FORCE_STALL__SHIFT
, 0x0000 },
104 { ixDIDT_TD_CTRL3
, DIDT_TD_CTRL3__DIDT_STALL_DELAY_EN_MASK
, DIDT_TD_CTRL3__DIDT_STALL_DELAY_EN__SHIFT
, 0x0000 },
107 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__GC_DIDT_ENABLE_MASK
, DIDT_DB_CTRL3__GC_DIDT_ENABLE__SHIFT
, 0x0000 },
108 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK
, DIDT_DB_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
109 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__THROTTLE_POLICY_MASK
, DIDT_DB_CTRL3__THROTTLE_POLICY__SHIFT
, 0x0003 },
110 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK
, DIDT_DB_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0000 },
111 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK
, DIDT_DB_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT
, 0x0000 },
112 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK
, DIDT_DB_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT
, 0x0003 },
113 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK
, DIDT_DB_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT
, 0x0000 },
114 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK
, DIDT_DB_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT
, 0x0000 },
115 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__QUALIFY_STALL_EN_MASK
, DIDT_DB_CTRL3__QUALIFY_STALL_EN__SHIFT
, 0x0000 },
116 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__DIDT_STALL_SEL_MASK
, DIDT_DB_CTRL3__DIDT_STALL_SEL__SHIFT
, 0x0000 },
117 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__DIDT_FORCE_STALL_MASK
, DIDT_DB_CTRL3__DIDT_FORCE_STALL__SHIFT
, 0x0000 },
118 { ixDIDT_DB_CTRL3
, DIDT_DB_CTRL3__DIDT_STALL_DELAY_EN_MASK
, DIDT_DB_CTRL3__DIDT_STALL_DELAY_EN__SHIFT
, 0x0000 },
120 { 0xFFFFFFFF } /* End of list */
123 static const struct vega10_didt_config_reg SEDiDtCtrl2Config_Vega10
[] =
125 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
126 * Offset Mask Shift Value
127 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
130 { ixDIDT_SQ_CTRL2
, DIDT_SQ_CTRL2__MAX_POWER_DELTA_MASK
, DIDT_SQ_CTRL2__MAX_POWER_DELTA__SHIFT
, 0x3853 },
131 { ixDIDT_SQ_CTRL2
, DIDT_SQ_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK
, DIDT_SQ_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT
, 0x00c0 },
132 { ixDIDT_SQ_CTRL2
, DIDT_SQ_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK
, DIDT_SQ_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT
, 0x0000 },
135 { ixDIDT_TD_CTRL2
, DIDT_TD_CTRL2__MAX_POWER_DELTA_MASK
, DIDT_TD_CTRL2__MAX_POWER_DELTA__SHIFT
, 0x3fff },
136 { ixDIDT_TD_CTRL2
, DIDT_TD_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK
, DIDT_TD_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT
, 0x00c0 },
137 { ixDIDT_TD_CTRL2
, DIDT_TD_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK
, DIDT_TD_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT
, 0x0001 },
140 { ixDIDT_TCP_CTRL2
, DIDT_TCP_CTRL2__MAX_POWER_DELTA_MASK
, DIDT_TCP_CTRL2__MAX_POWER_DELTA__SHIFT
, 0x3dde },
141 { ixDIDT_TCP_CTRL2
, DIDT_TCP_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK
, DIDT_TCP_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT
, 0x00c0 },
142 { ixDIDT_TCP_CTRL2
, DIDT_TCP_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK
, DIDT_TCP_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT
, 0x0001 },
145 { ixDIDT_DB_CTRL2
, DIDT_DB_CTRL2__MAX_POWER_DELTA_MASK
, DIDT_DB_CTRL2__MAX_POWER_DELTA__SHIFT
, 0x3dde },
146 { ixDIDT_DB_CTRL2
, DIDT_DB_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK
, DIDT_DB_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT
, 0x00c0 },
147 { ixDIDT_DB_CTRL2
, DIDT_DB_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK
, DIDT_DB_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT
, 0x0001 },
149 { 0xFFFFFFFF } /* End of list */
152 static const struct vega10_didt_config_reg SEDiDtCtrl1Config_Vega10
[] =
154 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
155 * Offset Mask Shift Value
156 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
159 { ixDIDT_SQ_CTRL1
, DIDT_SQ_CTRL1__MIN_POWER_MASK
, DIDT_SQ_CTRL1__MIN_POWER__SHIFT
, 0x0000 },
160 { ixDIDT_SQ_CTRL1
, DIDT_SQ_CTRL1__MAX_POWER_MASK
, DIDT_SQ_CTRL1__MAX_POWER__SHIFT
, 0xffff },
162 { ixDIDT_TD_CTRL1
, DIDT_TD_CTRL1__MIN_POWER_MASK
, DIDT_TD_CTRL1__MIN_POWER__SHIFT
, 0x0000 },
163 { ixDIDT_TD_CTRL1
, DIDT_TD_CTRL1__MAX_POWER_MASK
, DIDT_TD_CTRL1__MAX_POWER__SHIFT
, 0xffff },
165 { ixDIDT_TCP_CTRL1
, DIDT_TCP_CTRL1__MIN_POWER_MASK
, DIDT_TCP_CTRL1__MIN_POWER__SHIFT
, 0x0000 },
166 { ixDIDT_TCP_CTRL1
, DIDT_TCP_CTRL1__MAX_POWER_MASK
, DIDT_TCP_CTRL1__MAX_POWER__SHIFT
, 0xffff },
168 { ixDIDT_DB_CTRL1
, DIDT_DB_CTRL1__MIN_POWER_MASK
, DIDT_DB_CTRL1__MIN_POWER__SHIFT
, 0x0000 },
169 { ixDIDT_DB_CTRL1
, DIDT_DB_CTRL1__MAX_POWER_MASK
, DIDT_DB_CTRL1__MAX_POWER__SHIFT
, 0xffff },
171 { 0xFFFFFFFF } /* End of list */
175 static const struct vega10_didt_config_reg SEDiDtWeightConfig_Vega10
[] =
177 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
178 * Offset Mask Shift Value
179 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
182 { ixDIDT_SQ_WEIGHT0_3
, 0xFFFFFFFF, 0, 0x2B363B1A },
183 { ixDIDT_SQ_WEIGHT4_7
, 0xFFFFFFFF, 0, 0x270B2432 },
184 { ixDIDT_SQ_WEIGHT8_11
, 0xFFFFFFFF, 0, 0x00000018 },
187 { ixDIDT_TD_WEIGHT0_3
, 0xFFFFFFFF, 0, 0x2B1D220F },
188 { ixDIDT_TD_WEIGHT4_7
, 0xFFFFFFFF, 0, 0x00007558 },
189 { ixDIDT_TD_WEIGHT8_11
, 0xFFFFFFFF, 0, 0x00000000 },
192 { ixDIDT_TCP_WEIGHT0_3
, 0xFFFFFFFF, 0, 0x5ACE160D },
193 { ixDIDT_TCP_WEIGHT4_7
, 0xFFFFFFFF, 0, 0x00000000 },
194 { ixDIDT_TCP_WEIGHT8_11
, 0xFFFFFFFF, 0, 0x00000000 },
197 { ixDIDT_DB_WEIGHT0_3
, 0xFFFFFFFF, 0, 0x0E152A0F },
198 { ixDIDT_DB_WEIGHT4_7
, 0xFFFFFFFF, 0, 0x09061813 },
199 { ixDIDT_DB_WEIGHT8_11
, 0xFFFFFFFF, 0, 0x00000013 },
201 { 0xFFFFFFFF } /* End of list */
204 static const struct vega10_didt_config_reg SEDiDtCtrl0Config_Vega10
[] =
206 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
207 * Offset Mask Shift Value
208 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
211 { ixDIDT_SQ_CTRL0
, DIDT_SQ_CTRL0__DIDT_CTRL_EN_MASK
, DIDT_SQ_CTRL0__DIDT_CTRL_EN__SHIFT
, 0x0000 },
212 { ixDIDT_SQ_CTRL0
, DIDT_SQ_CTRL0__PHASE_OFFSET_MASK
, DIDT_SQ_CTRL0__PHASE_OFFSET__SHIFT
, 0x0000 },
213 { ixDIDT_SQ_CTRL0
, DIDT_SQ_CTRL0__DIDT_CTRL_RST_MASK
, DIDT_SQ_CTRL0__DIDT_CTRL_RST__SHIFT
, 0x0000 },
214 { ixDIDT_SQ_CTRL0
, DIDT_SQ_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK
, DIDT_SQ_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
215 { ixDIDT_SQ_CTRL0
, DIDT_SQ_CTRL0__DIDT_STALL_CTRL_EN_MASK
, DIDT_SQ_CTRL0__DIDT_STALL_CTRL_EN__SHIFT
, 0x0001 },
216 { ixDIDT_SQ_CTRL0
, DIDT_SQ_CTRL0__DIDT_TUNING_CTRL_EN_MASK
, DIDT_SQ_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT
, 0x0001 },
217 { ixDIDT_SQ_CTRL0
, DIDT_SQ_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK
, DIDT_SQ_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT
, 0x0001 },
218 { ixDIDT_SQ_CTRL0
, DIDT_SQ_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK
, DIDT_SQ_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT
, 0xffff },
219 { ixDIDT_SQ_CTRL0
, DIDT_SQ_CTRL0__DIDT_AUTO_MPD_EN_MASK
, DIDT_SQ_CTRL0__DIDT_AUTO_MPD_EN__SHIFT
, 0x0000 },
220 { ixDIDT_SQ_CTRL0
, DIDT_SQ_CTRL0__DIDT_STALL_EVENT_EN_MASK
, DIDT_SQ_CTRL0__DIDT_STALL_EVENT_EN__SHIFT
, 0x0000 },
221 { ixDIDT_SQ_CTRL0
, DIDT_SQ_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK
, DIDT_SQ_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT
, 0x0000 },
223 { ixDIDT_TD_CTRL0
, DIDT_TD_CTRL0__DIDT_CTRL_EN_MASK
, DIDT_TD_CTRL0__DIDT_CTRL_EN__SHIFT
, 0x0000 },
224 { ixDIDT_TD_CTRL0
, DIDT_TD_CTRL0__PHASE_OFFSET_MASK
, DIDT_TD_CTRL0__PHASE_OFFSET__SHIFT
, 0x0000 },
225 { ixDIDT_TD_CTRL0
, DIDT_TD_CTRL0__DIDT_CTRL_RST_MASK
, DIDT_TD_CTRL0__DIDT_CTRL_RST__SHIFT
, 0x0000 },
226 { ixDIDT_TD_CTRL0
, DIDT_TD_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK
, DIDT_TD_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
227 { ixDIDT_TD_CTRL0
, DIDT_TD_CTRL0__DIDT_STALL_CTRL_EN_MASK
, DIDT_TD_CTRL0__DIDT_STALL_CTRL_EN__SHIFT
, 0x0001 },
228 { ixDIDT_TD_CTRL0
, DIDT_TD_CTRL0__DIDT_TUNING_CTRL_EN_MASK
, DIDT_TD_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT
, 0x0001 },
229 { ixDIDT_TD_CTRL0
, DIDT_TD_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK
, DIDT_TD_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT
, 0x0001 },
230 { ixDIDT_TD_CTRL0
, DIDT_TD_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK
, DIDT_TD_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT
, 0xffff },
231 { ixDIDT_TD_CTRL0
, DIDT_TD_CTRL0__DIDT_AUTO_MPD_EN_MASK
, DIDT_TD_CTRL0__DIDT_AUTO_MPD_EN__SHIFT
, 0x0000 },
232 { ixDIDT_TD_CTRL0
, DIDT_TD_CTRL0__DIDT_STALL_EVENT_EN_MASK
, DIDT_TD_CTRL0__DIDT_STALL_EVENT_EN__SHIFT
, 0x0000 },
233 { ixDIDT_TD_CTRL0
, DIDT_TD_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK
, DIDT_TD_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT
, 0x0000 },
235 { ixDIDT_TCP_CTRL0
, DIDT_TCP_CTRL0__DIDT_CTRL_EN_MASK
, DIDT_TCP_CTRL0__DIDT_CTRL_EN__SHIFT
, 0x0000 },
236 { ixDIDT_TCP_CTRL0
, DIDT_TCP_CTRL0__PHASE_OFFSET_MASK
, DIDT_TCP_CTRL0__PHASE_OFFSET__SHIFT
, 0x0000 },
237 { ixDIDT_TCP_CTRL0
, DIDT_TCP_CTRL0__DIDT_CTRL_RST_MASK
, DIDT_TCP_CTRL0__DIDT_CTRL_RST__SHIFT
, 0x0000 },
238 { ixDIDT_TCP_CTRL0
, DIDT_TCP_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK
, DIDT_TCP_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
239 { ixDIDT_TCP_CTRL0
, DIDT_TCP_CTRL0__DIDT_STALL_CTRL_EN_MASK
, DIDT_TCP_CTRL0__DIDT_STALL_CTRL_EN__SHIFT
, 0x0001 },
240 { ixDIDT_TCP_CTRL0
, DIDT_TCP_CTRL0__DIDT_TUNING_CTRL_EN_MASK
, DIDT_TCP_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT
, 0x0001 },
241 { ixDIDT_TCP_CTRL0
, DIDT_TCP_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK
, DIDT_TCP_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT
, 0x0001 },
242 { ixDIDT_TCP_CTRL0
, DIDT_TCP_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK
, DIDT_TCP_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT
, 0xffff },
243 { ixDIDT_TCP_CTRL0
, DIDT_TCP_CTRL0__DIDT_AUTO_MPD_EN_MASK
, DIDT_TCP_CTRL0__DIDT_AUTO_MPD_EN__SHIFT
, 0x0000 },
244 { ixDIDT_TCP_CTRL0
, DIDT_TCP_CTRL0__DIDT_STALL_EVENT_EN_MASK
, DIDT_TCP_CTRL0__DIDT_STALL_EVENT_EN__SHIFT
, 0x0000 },
245 { ixDIDT_TCP_CTRL0
, DIDT_TCP_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK
, DIDT_TCP_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT
, 0x0000 },
247 { ixDIDT_DB_CTRL0
, DIDT_DB_CTRL0__DIDT_CTRL_EN_MASK
, DIDT_DB_CTRL0__DIDT_CTRL_EN__SHIFT
, 0x0000 },
248 { ixDIDT_DB_CTRL0
, DIDT_DB_CTRL0__PHASE_OFFSET_MASK
, DIDT_DB_CTRL0__PHASE_OFFSET__SHIFT
, 0x0000 },
249 { ixDIDT_DB_CTRL0
, DIDT_DB_CTRL0__DIDT_CTRL_RST_MASK
, DIDT_DB_CTRL0__DIDT_CTRL_RST__SHIFT
, 0x0000 },
250 { ixDIDT_DB_CTRL0
, DIDT_DB_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK
, DIDT_DB_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
251 { ixDIDT_DB_CTRL0
, DIDT_DB_CTRL0__DIDT_STALL_CTRL_EN_MASK
, DIDT_DB_CTRL0__DIDT_STALL_CTRL_EN__SHIFT
, 0x0001 },
252 { ixDIDT_DB_CTRL0
, DIDT_DB_CTRL0__DIDT_TUNING_CTRL_EN_MASK
, DIDT_DB_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT
, 0x0001 },
253 { ixDIDT_DB_CTRL0
, DIDT_DB_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK
, DIDT_DB_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT
, 0x0001 },
254 { ixDIDT_DB_CTRL0
, DIDT_DB_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK
, DIDT_DB_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT
, 0xffff },
255 { ixDIDT_DB_CTRL0
, DIDT_DB_CTRL0__DIDT_AUTO_MPD_EN_MASK
, DIDT_DB_CTRL0__DIDT_AUTO_MPD_EN__SHIFT
, 0x0000 },
256 { ixDIDT_DB_CTRL0
, DIDT_DB_CTRL0__DIDT_STALL_EVENT_EN_MASK
, DIDT_DB_CTRL0__DIDT_STALL_EVENT_EN__SHIFT
, 0x0000 },
257 { ixDIDT_DB_CTRL0
, DIDT_DB_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK
, DIDT_DB_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT
, 0x0000 },
259 { 0xFFFFFFFF } /* End of list */
263 static const struct vega10_didt_config_reg SEDiDtStallCtrlConfig_vega10
[] =
265 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
266 * Offset Mask Shift Value
267 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
270 { ixDIDT_SQ_STALL_CTRL
, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK
, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT
, 0x0004 },
271 { ixDIDT_SQ_STALL_CTRL
, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK
, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT
, 0x0004 },
272 { ixDIDT_SQ_STALL_CTRL
, DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK
, DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT
, 0x000a },
273 { ixDIDT_SQ_STALL_CTRL
, DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK
, DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT
, 0x000a },
276 { ixDIDT_TD_STALL_CTRL
, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK
, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT
, 0x0001 },
277 { ixDIDT_TD_STALL_CTRL
, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK
, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT
, 0x0001 },
278 { ixDIDT_TD_STALL_CTRL
, DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK
, DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT
, 0x000a },
279 { ixDIDT_TD_STALL_CTRL
, DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK
, DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT
, 0x000a },
282 { ixDIDT_TCP_STALL_CTRL
, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK
, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT
, 0x0001 },
283 { ixDIDT_TCP_STALL_CTRL
, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK
, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT
, 0x0001 },
284 { ixDIDT_TCP_STALL_CTRL
, DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK
, DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT
, 0x000a },
285 { ixDIDT_TCP_STALL_CTRL
, DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK
, DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT
, 0x000a },
288 { ixDIDT_DB_STALL_CTRL
, DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK
, DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT
, 0x0004 },
289 { ixDIDT_DB_STALL_CTRL
, DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK
, DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT
, 0x0004 },
290 { ixDIDT_DB_STALL_CTRL
, DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK
, DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT
, 0x000a },
291 { ixDIDT_DB_STALL_CTRL
, DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK
, DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT
, 0x000a },
293 { 0xFFFFFFFF } /* End of list */
296 static const struct vega10_didt_config_reg SEDiDtStallPatternConfig_vega10
[] =
298 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
299 * Offset Mask Shift Value
300 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
302 /* DIDT_SQ_STALL_PATTERN_1_2 */
303 { ixDIDT_SQ_STALL_PATTERN_1_2
, DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK
, DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT
, 0x0001 },
304 { ixDIDT_SQ_STALL_PATTERN_1_2
, DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK
, DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT
, 0x0001 },
306 /* DIDT_SQ_STALL_PATTERN_3_4 */
307 { ixDIDT_SQ_STALL_PATTERN_3_4
, DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK
, DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT
, 0x0001 },
308 { ixDIDT_SQ_STALL_PATTERN_3_4
, DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK
, DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT
, 0x0001 },
310 /* DIDT_SQ_STALL_PATTERN_5_6 */
311 { ixDIDT_SQ_STALL_PATTERN_5_6
, DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK
, DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT
, 0x0000 },
312 { ixDIDT_SQ_STALL_PATTERN_5_6
, DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK
, DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT
, 0x0000 },
314 /* DIDT_SQ_STALL_PATTERN_7 */
315 { ixDIDT_SQ_STALL_PATTERN_7
, DIDT_SQ_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK
, DIDT_SQ_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT
, 0x0000 },
317 /* DIDT_TCP_STALL_PATTERN_1_2 */
318 { ixDIDT_TCP_STALL_PATTERN_1_2
, DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK
, DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT
, 0x0001 },
319 { ixDIDT_TCP_STALL_PATTERN_1_2
, DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK
, DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT
, 0x0001 },
321 /* DIDT_TCP_STALL_PATTERN_3_4 */
322 { ixDIDT_TCP_STALL_PATTERN_3_4
, DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK
, DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT
, 0x0001 },
323 { ixDIDT_TCP_STALL_PATTERN_3_4
, DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK
, DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT
, 0x0001 },
325 /* DIDT_TCP_STALL_PATTERN_5_6 */
326 { ixDIDT_TCP_STALL_PATTERN_5_6
, DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK
, DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT
, 0x0000 },
327 { ixDIDT_TCP_STALL_PATTERN_5_6
, DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK
, DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT
, 0x0000 },
329 /* DIDT_TCP_STALL_PATTERN_7 */
330 { ixDIDT_TCP_STALL_PATTERN_7
, DIDT_TCP_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK
, DIDT_TCP_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT
, 0x0000 },
332 /* DIDT_TD_STALL_PATTERN_1_2 */
333 { ixDIDT_TD_STALL_PATTERN_1_2
, DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK
, DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT
, 0x0001 },
334 { ixDIDT_TD_STALL_PATTERN_1_2
, DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK
, DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT
, 0x0001 },
336 /* DIDT_TD_STALL_PATTERN_3_4 */
337 { ixDIDT_TD_STALL_PATTERN_3_4
, DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK
, DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT
, 0x0001 },
338 { ixDIDT_TD_STALL_PATTERN_3_4
, DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK
, DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT
, 0x0001 },
340 /* DIDT_TD_STALL_PATTERN_5_6 */
341 { ixDIDT_TD_STALL_PATTERN_5_6
, DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK
, DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT
, 0x0000 },
342 { ixDIDT_TD_STALL_PATTERN_5_6
, DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK
, DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT
, 0x0000 },
344 /* DIDT_TD_STALL_PATTERN_7 */
345 { ixDIDT_TD_STALL_PATTERN_7
, DIDT_TD_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK
, DIDT_TD_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT
, 0x0000 },
347 /* DIDT_DB_STALL_PATTERN_1_2 */
348 { ixDIDT_DB_STALL_PATTERN_1_2
, DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK
, DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT
, 0x0001 },
349 { ixDIDT_DB_STALL_PATTERN_1_2
, DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK
, DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT
, 0x0001 },
351 /* DIDT_DB_STALL_PATTERN_3_4 */
352 { ixDIDT_DB_STALL_PATTERN_3_4
, DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK
, DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT
, 0x0001 },
353 { ixDIDT_DB_STALL_PATTERN_3_4
, DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK
, DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT
, 0x0001 },
355 /* DIDT_DB_STALL_PATTERN_5_6 */
356 { ixDIDT_DB_STALL_PATTERN_5_6
, DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK
, DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT
, 0x0000 },
357 { ixDIDT_DB_STALL_PATTERN_5_6
, DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK
, DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT
, 0x0000 },
359 /* DIDT_DB_STALL_PATTERN_7 */
360 { ixDIDT_DB_STALL_PATTERN_7
, DIDT_DB_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK
, DIDT_DB_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT
, 0x0000 },
362 { 0xFFFFFFFF } /* End of list */
365 static const struct vega10_didt_config_reg SELCacConfig_Vega10
[] =
367 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
368 * Offset Mask Shift Value
369 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
372 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x00060021 },
373 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x00860021 },
374 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x01060021 },
375 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x01860021 },
376 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x02060021 },
377 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x02860021 },
378 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x03060021 },
379 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x03860021 },
380 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x04060021 },
382 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x000E0020 },
383 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x008E0020 },
384 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x010E0020 },
385 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x018E0020 },
386 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x020E0020 },
387 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x028E0020 },
389 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x001c0020 },
390 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x009c0020 },
391 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x011c0020 },
392 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x019c0020 },
393 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x021c0020 },
395 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x00200008 },
396 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x00820008 },
397 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x01020008 },
398 { ixSE_CAC_CNTL
, 0xFFFFFFFF, 0, 0x01820008 },
400 { 0xFFFFFFFF } /* End of list */
404 static const struct vega10_didt_config_reg SEEDCStallPatternConfig_Vega10
[] =
406 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
407 * Offset Mask Shift Value
408 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
411 { ixDIDT_SQ_EDC_STALL_PATTERN_1_2
, 0xFFFFFFFF, 0, 0x00030001 },
412 { ixDIDT_SQ_EDC_STALL_PATTERN_3_4
, 0xFFFFFFFF, 0, 0x000F0007 },
413 { ixDIDT_SQ_EDC_STALL_PATTERN_5_6
, 0xFFFFFFFF, 0, 0x003F001F },
414 { ixDIDT_SQ_EDC_STALL_PATTERN_7
, 0xFFFFFFFF, 0, 0x0000007F },
416 { ixDIDT_TD_EDC_STALL_PATTERN_1_2
, 0xFFFFFFFF, 0, 0x00000000 },
417 { ixDIDT_TD_EDC_STALL_PATTERN_3_4
, 0xFFFFFFFF, 0, 0x00000000 },
418 { ixDIDT_TD_EDC_STALL_PATTERN_5_6
, 0xFFFFFFFF, 0, 0x00000000 },
419 { ixDIDT_TD_EDC_STALL_PATTERN_7
, 0xFFFFFFFF, 0, 0x00000000 },
421 { ixDIDT_TCP_EDC_STALL_PATTERN_1_2
, 0xFFFFFFFF, 0, 0x00000000 },
422 { ixDIDT_TCP_EDC_STALL_PATTERN_3_4
, 0xFFFFFFFF, 0, 0x00000000 },
423 { ixDIDT_TCP_EDC_STALL_PATTERN_5_6
, 0xFFFFFFFF, 0, 0x00000000 },
424 { ixDIDT_TCP_EDC_STALL_PATTERN_7
, 0xFFFFFFFF, 0, 0x00000000 },
426 { ixDIDT_DB_EDC_STALL_PATTERN_1_2
, 0xFFFFFFFF, 0, 0x00000000 },
427 { ixDIDT_DB_EDC_STALL_PATTERN_3_4
, 0xFFFFFFFF, 0, 0x00000000 },
428 { ixDIDT_DB_EDC_STALL_PATTERN_5_6
, 0xFFFFFFFF, 0, 0x00000000 },
429 { ixDIDT_DB_EDC_STALL_PATTERN_7
, 0xFFFFFFFF, 0, 0x00000000 },
431 { 0xFFFFFFFF } /* End of list */
434 static const struct vega10_didt_config_reg SEEDCForceStallPatternConfig_Vega10
[] =
436 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
437 * Offset Mask Shift Value
438 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
441 { ixDIDT_SQ_EDC_STALL_PATTERN_1_2
, 0xFFFFFFFF, 0, 0x00000015 },
442 { ixDIDT_SQ_EDC_STALL_PATTERN_3_4
, 0xFFFFFFFF, 0, 0x00000000 },
443 { ixDIDT_SQ_EDC_STALL_PATTERN_5_6
, 0xFFFFFFFF, 0, 0x00000000 },
444 { ixDIDT_SQ_EDC_STALL_PATTERN_7
, 0xFFFFFFFF, 0, 0x00000000 },
446 { ixDIDT_TD_EDC_STALL_PATTERN_1_2
, 0xFFFFFFFF, 0, 0x00000015 },
447 { ixDIDT_TD_EDC_STALL_PATTERN_3_4
, 0xFFFFFFFF, 0, 0x00000000 },
448 { ixDIDT_TD_EDC_STALL_PATTERN_5_6
, 0xFFFFFFFF, 0, 0x00000000 },
449 { ixDIDT_TD_EDC_STALL_PATTERN_7
, 0xFFFFFFFF, 0, 0x00000000 },
451 { 0xFFFFFFFF } /* End of list */
454 static const struct vega10_didt_config_reg SEEDCStallDelayConfig_Vega10
[] =
456 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
457 * Offset Mask Shift Value
458 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
461 { ixDIDT_SQ_EDC_STALL_DELAY_1
, 0xFFFFFFFF, 0, 0x00000000 },
462 { ixDIDT_SQ_EDC_STALL_DELAY_2
, 0xFFFFFFFF, 0, 0x00000000 },
463 { ixDIDT_SQ_EDC_STALL_DELAY_3
, 0xFFFFFFFF, 0, 0x00000000 },
464 { ixDIDT_SQ_EDC_STALL_DELAY_4
, 0xFFFFFFFF, 0, 0x00000000 },
466 { ixDIDT_TD_EDC_STALL_DELAY_1
, 0xFFFFFFFF, 0, 0x00000000 },
467 { ixDIDT_TD_EDC_STALL_DELAY_2
, 0xFFFFFFFF, 0, 0x00000000 },
468 { ixDIDT_TD_EDC_STALL_DELAY_3
, 0xFFFFFFFF, 0, 0x00000000 },
469 { ixDIDT_TD_EDC_STALL_DELAY_4
, 0xFFFFFFFF, 0, 0x00000000 },
471 { ixDIDT_TCP_EDC_STALL_DELAY_1
, 0xFFFFFFFF, 0, 0x00000000 },
472 { ixDIDT_TCP_EDC_STALL_DELAY_2
, 0xFFFFFFFF, 0, 0x00000000 },
473 { ixDIDT_TCP_EDC_STALL_DELAY_3
, 0xFFFFFFFF, 0, 0x00000000 },
474 { ixDIDT_TCP_EDC_STALL_DELAY_4
, 0xFFFFFFFF, 0, 0x00000000 },
476 { ixDIDT_DB_EDC_STALL_DELAY_1
, 0xFFFFFFFF, 0, 0x00000000 },
478 { 0xFFFFFFFF } /* End of list */
481 static const struct vega10_didt_config_reg SEEDCThresholdConfig_Vega10
[] =
483 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
484 * Offset Mask Shift Value
485 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
487 { ixDIDT_SQ_EDC_THRESHOLD
, 0xFFFFFFFF, 0, 0x0000010E },
488 { ixDIDT_TD_EDC_THRESHOLD
, 0xFFFFFFFF, 0, 0xFFFFFFFF },
489 { ixDIDT_TCP_EDC_THRESHOLD
, 0xFFFFFFFF, 0, 0xFFFFFFFF },
490 { ixDIDT_DB_EDC_THRESHOLD
, 0xFFFFFFFF, 0, 0xFFFFFFFF },
492 { 0xFFFFFFFF } /* End of list */
495 static const struct vega10_didt_config_reg SEEDCCtrlResetConfig_Vega10
[] =
497 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
498 * Offset Mask Shift Value
499 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
502 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_EN_MASK
, DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT
, 0x0000 },
503 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK
, DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT
, 0x0001 },
504 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK
, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
505 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK
, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT
, 0x0000 },
506 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK
, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0000 },
507 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK
, DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT
, 0x0000 },
508 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK
, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT
, 0x0000 },
509 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT
, 0x0000 },
510 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT
, 0x0000 },
511 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT
, 0x0000 },
512 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK
, DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT
, 0x0000 },
514 { 0xFFFFFFFF } /* End of list */
517 static const struct vega10_didt_config_reg SEEDCCtrlConfig_Vega10
[] =
519 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
520 * Offset Mask Shift Value
521 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
524 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_EN_MASK
, DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT
, 0x0001 },
525 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK
, DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT
, 0x0000 },
526 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK
, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
527 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK
, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT
, 0x0000 },
528 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK
, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0004 },
529 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK
, DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT
, 0x0006 },
530 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK
, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT
, 0x0000 },
531 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT
, 0x0000 },
532 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT
, 0x0000 },
533 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT
, 0x0001 },
534 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK
, DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT
, 0x0000 },
536 { 0xFFFFFFFF } /* End of list */
539 static const struct vega10_didt_config_reg SEEDCCtrlForceStallConfig_Vega10
[] =
541 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
542 * Offset Mask Shift Value
543 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
546 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_EN_MASK
, DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT
, 0x0000 },
547 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK
, DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT
, 0x0000 },
548 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK
, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
549 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK
, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT
, 0x0001 },
550 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK
, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0001 },
551 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK
, DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT
, 0x000C },
552 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK
, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT
, 0x0000 },
553 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT
, 0x0000 },
554 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT
, 0x0000 },
555 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT
, 0x0000 },
556 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK
, DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT
, 0x0001 },
559 { ixDIDT_TD_EDC_CTRL
, DIDT_TD_EDC_CTRL__EDC_EN_MASK
, DIDT_TD_EDC_CTRL__EDC_EN__SHIFT
, 0x0000 },
560 { ixDIDT_TD_EDC_CTRL
, DIDT_TD_EDC_CTRL__EDC_SW_RST_MASK
, DIDT_TD_EDC_CTRL__EDC_SW_RST__SHIFT
, 0x0000 },
561 { ixDIDT_TD_EDC_CTRL
, DIDT_TD_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK
, DIDT_TD_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
562 { ixDIDT_TD_EDC_CTRL
, DIDT_TD_EDC_CTRL__EDC_FORCE_STALL_MASK
, DIDT_TD_EDC_CTRL__EDC_FORCE_STALL__SHIFT
, 0x0001 },
563 { ixDIDT_TD_EDC_CTRL
, DIDT_TD_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK
, DIDT_TD_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0001 },
564 { ixDIDT_TD_EDC_CTRL
, DIDT_TD_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK
, DIDT_TD_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT
, 0x000E },
565 { ixDIDT_TD_EDC_CTRL
, DIDT_TD_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK
, DIDT_TD_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT
, 0x0000 },
566 { ixDIDT_TD_EDC_CTRL
, DIDT_TD_EDC_CTRL__GC_EDC_EN_MASK
, DIDT_TD_EDC_CTRL__GC_EDC_EN__SHIFT
, 0x0000 },
567 { ixDIDT_TD_EDC_CTRL
, DIDT_TD_EDC_CTRL__GC_EDC_STALL_POLICY_MASK
, DIDT_TD_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT
, 0x0000 },
568 { ixDIDT_TD_EDC_CTRL
, DIDT_TD_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK
, DIDT_TD_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT
, 0x0000 },
569 { ixDIDT_TD_EDC_CTRL
, DIDT_TD_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK
, DIDT_TD_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT
, 0x0001 },
571 { 0xFFFFFFFF } /* End of list */
574 static const struct vega10_didt_config_reg GCDiDtDroopCtrlConfig_vega10
[] =
576 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
577 * Offset Mask Shift Value
578 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
580 { mmGC_DIDT_DROOP_CTRL
, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_EN_MASK
, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_EN__SHIFT
, 0x0000 },
581 { mmGC_DIDT_DROOP_CTRL
, GC_DIDT_DROOP_CTRL__DIDT_DROOP_THRESHOLD_MASK
, GC_DIDT_DROOP_CTRL__DIDT_DROOP_THRESHOLD__SHIFT
, 0x0000 },
582 { mmGC_DIDT_DROOP_CTRL
, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_INDEX_MASK
, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_INDEX__SHIFT
, 0x0000 },
583 { mmGC_DIDT_DROOP_CTRL
, GC_DIDT_DROOP_CTRL__DIDT_LEVEL_SEL_MASK
, GC_DIDT_DROOP_CTRL__DIDT_LEVEL_SEL__SHIFT
, 0x0000 },
584 { mmGC_DIDT_DROOP_CTRL
, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_OVERFLOW_MASK
, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_OVERFLOW__SHIFT
, 0x0000 },
586 { 0xFFFFFFFF } /* End of list */
589 static const struct vega10_didt_config_reg GCDiDtCtrl0Config_vega10
[] =
591 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
592 * Offset Mask Shift Value
593 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
595 { mmGC_DIDT_CTRL0
, GC_DIDT_CTRL0__DIDT_CTRL_EN_MASK
, GC_DIDT_CTRL0__DIDT_CTRL_EN__SHIFT
, 0x0000 },
596 { mmGC_DIDT_CTRL0
, GC_DIDT_CTRL0__PHASE_OFFSET_MASK
, GC_DIDT_CTRL0__PHASE_OFFSET__SHIFT
, 0x0000 },
597 { mmGC_DIDT_CTRL0
, GC_DIDT_CTRL0__DIDT_SW_RST_MASK
, GC_DIDT_CTRL0__DIDT_SW_RST__SHIFT
, 0x0000 },
598 { mmGC_DIDT_CTRL0
, GC_DIDT_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK
, GC_DIDT_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
599 { mmGC_DIDT_CTRL0
, GC_DIDT_CTRL0__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK
, GC_DIDT_CTRL0__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0000 },
600 { 0xFFFFFFFF } /* End of list */
604 static const struct vega10_didt_config_reg PSMSEEDCStallPatternConfig_Vega10
[] =
606 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
607 * Offset Mask Shift Value
608 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
610 /* SQ EDC STALL PATTERNs */
611 { ixDIDT_SQ_EDC_STALL_PATTERN_1_2
, DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_1_MASK
, DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_1__SHIFT
, 0x0101 },
612 { ixDIDT_SQ_EDC_STALL_PATTERN_1_2
, DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_2_MASK
, DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_2__SHIFT
, 0x0101 },
613 { ixDIDT_SQ_EDC_STALL_PATTERN_3_4
, DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_3_MASK
, DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_3__SHIFT
, 0x1111 },
614 { ixDIDT_SQ_EDC_STALL_PATTERN_3_4
, DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_4_MASK
, DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_4__SHIFT
, 0x1111 },
616 { ixDIDT_SQ_EDC_STALL_PATTERN_5_6
, DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_5_MASK
, DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_5__SHIFT
, 0x1515 },
617 { ixDIDT_SQ_EDC_STALL_PATTERN_5_6
, DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_6_MASK
, DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_6__SHIFT
, 0x1515 },
619 { ixDIDT_SQ_EDC_STALL_PATTERN_7
, DIDT_SQ_EDC_STALL_PATTERN_7__EDC_STALL_PATTERN_7_MASK
, DIDT_SQ_EDC_STALL_PATTERN_7__EDC_STALL_PATTERN_7__SHIFT
, 0x5555 },
621 { 0xFFFFFFFF } /* End of list */
624 static const struct vega10_didt_config_reg PSMSEEDCStallDelayConfig_Vega10
[] =
626 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
627 * Offset Mask Shift Value
628 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
630 /* SQ EDC STALL DELAYs */
631 { ixDIDT_SQ_EDC_STALL_DELAY_1
, DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ0_MASK
, DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ0__SHIFT
, 0x0000 },
632 { ixDIDT_SQ_EDC_STALL_DELAY_1
, DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ1_MASK
, DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ1__SHIFT
, 0x0000 },
633 { ixDIDT_SQ_EDC_STALL_DELAY_1
, DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ2_MASK
, DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ2__SHIFT
, 0x0000 },
634 { ixDIDT_SQ_EDC_STALL_DELAY_1
, DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ3_MASK
, DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ3__SHIFT
, 0x0000 },
636 { ixDIDT_SQ_EDC_STALL_DELAY_2
, DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ4_MASK
, DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ4__SHIFT
, 0x0000 },
637 { ixDIDT_SQ_EDC_STALL_DELAY_2
, DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ5_MASK
, DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ5__SHIFT
, 0x0000 },
638 { ixDIDT_SQ_EDC_STALL_DELAY_2
, DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ6_MASK
, DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ6__SHIFT
, 0x0000 },
639 { ixDIDT_SQ_EDC_STALL_DELAY_2
, DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ7_MASK
, DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ7__SHIFT
, 0x0000 },
641 { ixDIDT_SQ_EDC_STALL_DELAY_3
, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ8_MASK
, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ8__SHIFT
, 0x0000 },
642 { ixDIDT_SQ_EDC_STALL_DELAY_3
, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ9_MASK
, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ9__SHIFT
, 0x0000 },
643 { ixDIDT_SQ_EDC_STALL_DELAY_3
, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ10_MASK
, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ10__SHIFT
, 0x0000 },
644 { ixDIDT_SQ_EDC_STALL_DELAY_3
, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ11_MASK
, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ11__SHIFT
, 0x0000 },
646 { ixDIDT_SQ_EDC_STALL_DELAY_4
, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12_MASK
, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12__SHIFT
, 0x0000 },
647 { ixDIDT_SQ_EDC_STALL_DELAY_4
, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12_MASK
, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ13__SHIFT
, 0x0000 },
648 { ixDIDT_SQ_EDC_STALL_DELAY_4
, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ14_MASK
, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ14__SHIFT
, 0x0000 },
649 { ixDIDT_SQ_EDC_STALL_DELAY_4
, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ15_MASK
, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ15__SHIFT
, 0x0000 },
651 { 0xFFFFFFFF } /* End of list */
654 static const struct vega10_didt_config_reg PSMSEEDCThresholdConfig_Vega10
[] =
656 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
657 * Offset Mask Shift Value
658 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
660 /* SQ EDC THRESHOLD */
661 { ixDIDT_SQ_EDC_THRESHOLD
, DIDT_SQ_EDC_THRESHOLD__EDC_THRESHOLD_MASK
, DIDT_SQ_EDC_THRESHOLD__EDC_THRESHOLD__SHIFT
, 0x0000 },
663 { 0xFFFFFFFF } /* End of list */
666 static const struct vega10_didt_config_reg PSMSEEDCCtrlResetConfig_Vega10
[] =
668 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
669 * Offset Mask Shift Value
670 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
673 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_EN_MASK
, DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT
, 0x0000 },
674 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK
, DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT
, 0x0001 },
675 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK
, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
676 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK
, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT
, 0x0000 },
677 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK
, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0000 },
678 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK
, DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT
, 0x0000 },
679 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK
, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT
, 0x0000 },
680 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT
, 0x0000 },
681 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT
, 0x0000 },
682 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT
, 0x0000 },
683 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK
, DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT
, 0x0000 },
685 { 0xFFFFFFFF } /* End of list */
688 static const struct vega10_didt_config_reg PSMSEEDCCtrlConfig_Vega10
[] =
690 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
691 * Offset Mask Shift Value
692 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
695 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_EN_MASK
, DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT
, 0x0001 },
696 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK
, DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT
, 0x0000 },
697 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK
, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
698 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK
, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT
, 0x0000 },
699 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK
, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0000 },
700 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK
, DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT
, 0x000E },
701 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK
, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT
, 0x0000 },
702 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT
, 0x0001 },
703 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT
, 0x0003 },
704 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK
, DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT
, 0x0001 },
705 { ixDIDT_SQ_EDC_CTRL
, DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK
, DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT
, 0x0000 },
707 { 0xFFFFFFFF } /* End of list */
710 static const struct vega10_didt_config_reg PSMGCEDCThresholdConfig_vega10
[] =
712 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
713 * Offset Mask Shift Value
714 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
716 { mmGC_EDC_THRESHOLD
, GC_EDC_THRESHOLD__EDC_THRESHOLD_MASK
, GC_EDC_THRESHOLD__EDC_THRESHOLD__SHIFT
, 0x0000000 },
718 { 0xFFFFFFFF } /* End of list */
721 static const struct vega10_didt_config_reg PSMGCEDCDroopCtrlConfig_vega10
[] =
723 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
724 * Offset Mask Shift Value
725 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
727 { mmGC_EDC_DROOP_CTRL
, GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_EN_MASK
, GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_EN__SHIFT
, 0x0001 },
728 { mmGC_EDC_DROOP_CTRL
, GC_EDC_DROOP_CTRL__EDC_DROOP_THRESHOLD_MASK
, GC_EDC_DROOP_CTRL__EDC_DROOP_THRESHOLD__SHIFT
, 0x0384 },
729 { mmGC_EDC_DROOP_CTRL
, GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_INDEX_MASK
, GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_INDEX__SHIFT
, 0x0001 },
730 { mmGC_EDC_DROOP_CTRL
, GC_EDC_DROOP_CTRL__AVG_PSM_SEL_MASK
, GC_EDC_DROOP_CTRL__AVG_PSM_SEL__SHIFT
, 0x0001 },
731 { mmGC_EDC_DROOP_CTRL
, GC_EDC_DROOP_CTRL__EDC_LEVEL_SEL_MASK
, GC_EDC_DROOP_CTRL__EDC_LEVEL_SEL__SHIFT
, 0x0001 },
733 { 0xFFFFFFFF } /* End of list */
736 static const struct vega10_didt_config_reg PSMGCEDCCtrlResetConfig_vega10
[] =
738 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
739 * Offset Mask Shift Value
740 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
742 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_EN_MASK
, GC_EDC_CTRL__EDC_EN__SHIFT
, 0x0000 },
743 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_SW_RST_MASK
, GC_EDC_CTRL__EDC_SW_RST__SHIFT
, 0x0001 },
744 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK
, GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
745 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_FORCE_STALL_MASK
, GC_EDC_CTRL__EDC_FORCE_STALL__SHIFT
, 0x0000 },
746 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK
, GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0000 },
747 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK
, GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT
, 0x0000 },
749 { 0xFFFFFFFF } /* End of list */
752 static const struct vega10_didt_config_reg PSMGCEDCCtrlConfig_vega10
[] =
754 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
755 * Offset Mask Shift Value
756 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
758 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_EN_MASK
, GC_EDC_CTRL__EDC_EN__SHIFT
, 0x0001 },
759 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_SW_RST_MASK
, GC_EDC_CTRL__EDC_SW_RST__SHIFT
, 0x0000 },
760 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK
, GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT
, 0x0000 },
761 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_FORCE_STALL_MASK
, GC_EDC_CTRL__EDC_FORCE_STALL__SHIFT
, 0x0000 },
762 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK
, GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT
, 0x0000 },
763 { mmGC_EDC_CTRL
, GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK
, GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT
, 0x0000 },
765 { 0xFFFFFFFF } /* End of list */
768 static const struct vega10_didt_config_reg AvfsPSMResetConfig_vega10
[]=
770 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
771 * Offset Mask Shift Value
772 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
774 { 0x16A02, 0xFFFFFFFF, 0x0, 0x0000005F },
775 { 0x16A05, 0xFFFFFFFF, 0x0, 0x00000001 },
776 { 0x16A06, 0x00000001, 0x0, 0x02000000 },
777 { 0x16A01, 0xFFFFFFFF, 0x0, 0x00003027 },
779 { 0xFFFFFFFF } /* End of list */
782 static const struct vega10_didt_config_reg AvfsPSMInitConfig_vega10
[] =
784 /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
785 * Offset Mask Shift Value
786 * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
788 { 0x16A05, 0xFFFFFFFF, 0x18, 0x00000001 },
789 { 0x16A05, 0xFFFFFFFF, 0x8, 0x00000003 },
790 { 0x16A05, 0xFFFFFFFF, 0xa, 0x00000006 },
791 { 0x16A05, 0xFFFFFFFF, 0x7, 0x00000000 },
792 { 0x16A06, 0xFFFFFFFF, 0x18, 0x00000001 },
793 { 0x16A06, 0xFFFFFFFF, 0x19, 0x00000001 },
794 { 0x16A01, 0xFFFFFFFF, 0x0, 0x00003027 },
796 { 0xFFFFFFFF } /* End of list */
799 static int vega10_program_didt_config_registers(struct pp_hwmgr
*hwmgr
, const struct vega10_didt_config_reg
*config_regs
, enum vega10_didt_config_reg_type reg_type
)
803 PP_ASSERT_WITH_CODE((config_regs
!= NULL
), "[vega10_program_didt_config_registers] Invalid config register table!", return -EINVAL
);
805 while (config_regs
->offset
!= 0xFFFFFFFF) {
807 case VEGA10_CONFIGREG_DIDT
:
808 data
= cgs_read_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, config_regs
->offset
);
809 data
&= ~config_regs
->mask
;
810 data
|= ((config_regs
->value
<< config_regs
->shift
) & config_regs
->mask
);
811 cgs_write_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, config_regs
->offset
, data
);
813 case VEGA10_CONFIGREG_GCCAC
:
814 data
= cgs_read_ind_register(hwmgr
->device
, CGS_IND_REG_GC_CAC
, config_regs
->offset
);
815 data
&= ~config_regs
->mask
;
816 data
|= ((config_regs
->value
<< config_regs
->shift
) & config_regs
->mask
);
817 cgs_write_ind_register(hwmgr
->device
, CGS_IND_REG_GC_CAC
, config_regs
->offset
, data
);
819 case VEGA10_CONFIGREG_SECAC
:
820 data
= cgs_read_ind_register(hwmgr
->device
, CGS_IND_REG_SE_CAC
, config_regs
->offset
);
821 data
&= ~config_regs
->mask
;
822 data
|= ((config_regs
->value
<< config_regs
->shift
) & config_regs
->mask
);
823 cgs_write_ind_register(hwmgr
->device
, CGS_IND_REG_SE_CAC
, config_regs
->offset
, data
);
835 static int vega10_program_gc_didt_config_registers(struct pp_hwmgr
*hwmgr
, const struct vega10_didt_config_reg
*config_regs
)
839 while (config_regs
->offset
!= 0xFFFFFFFF) {
840 data
= cgs_read_register(hwmgr
->device
, config_regs
->offset
);
841 data
&= ~config_regs
->mask
;
842 data
|= ((config_regs
->value
<< config_regs
->shift
) & config_regs
->mask
);
843 cgs_write_register(hwmgr
->device
, config_regs
->offset
, data
);
850 static void vega10_didt_set_mask(struct pp_hwmgr
*hwmgr
, const bool enable
)
853 uint32_t en
= (enable
? 1 : 0);
854 uint32_t didt_block_info
= SQ_IR_MASK
| TCP_IR_MASK
| TD_PCC_MASK
;
856 if (PP_CAP(PHM_PlatformCaps_SQRamping
)) {
857 CGS_WREG32_FIELD_IND(hwmgr
->device
, CGS_IND_REG__DIDT
,
858 DIDT_SQ_CTRL0
, DIDT_CTRL_EN
, en
);
859 didt_block_info
&= ~SQ_Enable_MASK
;
860 didt_block_info
|= en
<< SQ_Enable_SHIFT
;
863 if (PP_CAP(PHM_PlatformCaps_DBRamping
)) {
864 CGS_WREG32_FIELD_IND(hwmgr
->device
, CGS_IND_REG__DIDT
,
865 DIDT_DB_CTRL0
, DIDT_CTRL_EN
, en
);
866 didt_block_info
&= ~DB_Enable_MASK
;
867 didt_block_info
|= en
<< DB_Enable_SHIFT
;
870 if (PP_CAP(PHM_PlatformCaps_TDRamping
)) {
871 CGS_WREG32_FIELD_IND(hwmgr
->device
, CGS_IND_REG__DIDT
,
872 DIDT_TD_CTRL0
, DIDT_CTRL_EN
, en
);
873 didt_block_info
&= ~TD_Enable_MASK
;
874 didt_block_info
|= en
<< TD_Enable_SHIFT
;
877 if (PP_CAP(PHM_PlatformCaps_TCPRamping
)) {
878 CGS_WREG32_FIELD_IND(hwmgr
->device
, CGS_IND_REG__DIDT
,
879 DIDT_TCP_CTRL0
, DIDT_CTRL_EN
, en
);
880 didt_block_info
&= ~TCP_Enable_MASK
;
881 didt_block_info
|= en
<< TCP_Enable_SHIFT
;
884 if (PP_CAP(PHM_PlatformCaps_DBRRamping
)) {
885 CGS_WREG32_FIELD_IND(hwmgr
->device
, CGS_IND_REG__DIDT
,
886 DIDT_DBR_CTRL0
, DIDT_CTRL_EN
, en
);
889 if (PP_CAP(PHM_PlatformCaps_DiDtEDCEnable
)) {
890 if (PP_CAP(PHM_PlatformCaps_SQRamping
)) {
891 data
= cgs_read_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, ixDIDT_SQ_EDC_CTRL
);
892 data
= REG_SET_FIELD(data
, DIDT_SQ_EDC_CTRL
, EDC_EN
, en
);
893 data
= REG_SET_FIELD(data
, DIDT_SQ_EDC_CTRL
, EDC_SW_RST
, ~en
);
894 cgs_write_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, ixDIDT_SQ_EDC_CTRL
, data
);
897 if (PP_CAP(PHM_PlatformCaps_DBRamping
)) {
898 data
= cgs_read_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, ixDIDT_DB_EDC_CTRL
);
899 data
= REG_SET_FIELD(data
, DIDT_DB_EDC_CTRL
, EDC_EN
, en
);
900 data
= REG_SET_FIELD(data
, DIDT_DB_EDC_CTRL
, EDC_SW_RST
, ~en
);
901 cgs_write_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, ixDIDT_DB_EDC_CTRL
, data
);
904 if (PP_CAP(PHM_PlatformCaps_TDRamping
)) {
905 data
= cgs_read_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, ixDIDT_TD_EDC_CTRL
);
906 data
= REG_SET_FIELD(data
, DIDT_TD_EDC_CTRL
, EDC_EN
, en
);
907 data
= REG_SET_FIELD(data
, DIDT_TD_EDC_CTRL
, EDC_SW_RST
, ~en
);
908 cgs_write_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, ixDIDT_TD_EDC_CTRL
, data
);
911 if (PP_CAP(PHM_PlatformCaps_TCPRamping
)) {
912 data
= cgs_read_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, ixDIDT_TCP_EDC_CTRL
);
913 data
= REG_SET_FIELD(data
, DIDT_TCP_EDC_CTRL
, EDC_EN
, en
);
914 data
= REG_SET_FIELD(data
, DIDT_TCP_EDC_CTRL
, EDC_SW_RST
, ~en
);
915 cgs_write_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, ixDIDT_TCP_EDC_CTRL
, data
);
918 if (PP_CAP(PHM_PlatformCaps_DBRRamping
)) {
919 data
= cgs_read_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, ixDIDT_DBR_EDC_CTRL
);
920 data
= REG_SET_FIELD(data
, DIDT_DBR_EDC_CTRL
, EDC_EN
, en
);
921 data
= REG_SET_FIELD(data
, DIDT_DBR_EDC_CTRL
, EDC_SW_RST
, ~en
);
922 cgs_write_ind_register(hwmgr
->device
, CGS_IND_REG__DIDT
, ixDIDT_DBR_EDC_CTRL
, data
);
926 /* For Vega10, SMC does not support any mask yet. */
928 smum_send_msg_to_smc_with_parameter(hwmgr
, PPSMC_MSG_ConfigureGfxDidt
, didt_block_info
);
932 static int vega10_enable_cac_driving_se_didt_config(struct pp_hwmgr
*hwmgr
)
934 struct amdgpu_device
*adev
= hwmgr
->adev
;
936 uint32_t num_se
= 0, count
, data
;
938 num_se
= adev
->gfx
.config
.max_shader_engines
;
940 amdgpu_gfx_rlc_enter_safe_mode(adev
);
942 mutex_lock(&adev
->grbm_idx_mutex
);
943 for (count
= 0; count
< num_se
; count
++) {
944 data
= GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK
| GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK
| ( count
<< GRBM_GFX_INDEX__SE_INDEX__SHIFT
);
945 WREG32_SOC15(GC
, 0, mmGRBM_GFX_INDEX
, data
);
947 result
= vega10_program_didt_config_registers(hwmgr
, SEDiDtStallCtrlConfig_vega10
, VEGA10_CONFIGREG_DIDT
);
948 result
|= vega10_program_didt_config_registers(hwmgr
, SEDiDtStallPatternConfig_vega10
, VEGA10_CONFIGREG_DIDT
);
949 result
|= vega10_program_didt_config_registers(hwmgr
, SEDiDtWeightConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
950 result
|= vega10_program_didt_config_registers(hwmgr
, SEDiDtCtrl1Config_Vega10
, VEGA10_CONFIGREG_DIDT
);
951 result
|= vega10_program_didt_config_registers(hwmgr
, SEDiDtCtrl2Config_Vega10
, VEGA10_CONFIGREG_DIDT
);
952 result
|= vega10_program_didt_config_registers(hwmgr
, SEDiDtCtrl3Config_vega10
, VEGA10_CONFIGREG_DIDT
);
953 result
|= vega10_program_didt_config_registers(hwmgr
, SEDiDtTuningCtrlConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
954 result
|= vega10_program_didt_config_registers(hwmgr
, SELCacConfig_Vega10
, VEGA10_CONFIGREG_SECAC
);
955 result
|= vega10_program_didt_config_registers(hwmgr
, SEDiDtCtrl0Config_Vega10
, VEGA10_CONFIGREG_DIDT
);
960 WREG32_SOC15(GC
, 0, mmGRBM_GFX_INDEX
, 0xE0000000);
961 mutex_unlock(&adev
->grbm_idx_mutex
);
963 vega10_didt_set_mask(hwmgr
, true);
965 amdgpu_gfx_rlc_exit_safe_mode(adev
);
970 static int vega10_disable_cac_driving_se_didt_config(struct pp_hwmgr
*hwmgr
)
972 struct amdgpu_device
*adev
= hwmgr
->adev
;
974 amdgpu_gfx_rlc_enter_safe_mode(adev
);
976 vega10_didt_set_mask(hwmgr
, false);
978 amdgpu_gfx_rlc_exit_safe_mode(adev
);
983 static int vega10_enable_psm_gc_didt_config(struct pp_hwmgr
*hwmgr
)
985 struct amdgpu_device
*adev
= hwmgr
->adev
;
987 uint32_t num_se
= 0, count
, data
;
989 num_se
= adev
->gfx
.config
.max_shader_engines
;
991 amdgpu_gfx_rlc_enter_safe_mode(adev
);
993 mutex_lock(&adev
->grbm_idx_mutex
);
994 for (count
= 0; count
< num_se
; count
++) {
995 data
= GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK
| GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK
| ( count
<< GRBM_GFX_INDEX__SE_INDEX__SHIFT
);
996 WREG32_SOC15(GC
, 0, mmGRBM_GFX_INDEX
, data
);
998 result
= vega10_program_didt_config_registers(hwmgr
, SEDiDtStallCtrlConfig_vega10
, VEGA10_CONFIGREG_DIDT
);
999 result
|= vega10_program_didt_config_registers(hwmgr
, SEDiDtStallPatternConfig_vega10
, VEGA10_CONFIGREG_DIDT
);
1000 result
|= vega10_program_didt_config_registers(hwmgr
, SEDiDtCtrl3Config_vega10
, VEGA10_CONFIGREG_DIDT
);
1001 result
|= vega10_program_didt_config_registers(hwmgr
, SEDiDtCtrl0Config_Vega10
, VEGA10_CONFIGREG_DIDT
);
1005 WREG32_SOC15(GC
, 0, mmGRBM_GFX_INDEX
, 0xE0000000);
1006 mutex_unlock(&adev
->grbm_idx_mutex
);
1008 vega10_didt_set_mask(hwmgr
, true);
1010 amdgpu_gfx_rlc_exit_safe_mode(adev
);
1012 vega10_program_gc_didt_config_registers(hwmgr
, GCDiDtDroopCtrlConfig_vega10
);
1013 if (PP_CAP(PHM_PlatformCaps_GCEDC
))
1014 vega10_program_gc_didt_config_registers(hwmgr
, GCDiDtCtrl0Config_vega10
);
1016 if (PP_CAP(PHM_PlatformCaps_PSM
))
1017 vega10_program_gc_didt_config_registers(hwmgr
, AvfsPSMInitConfig_vega10
);
1022 static int vega10_disable_psm_gc_didt_config(struct pp_hwmgr
*hwmgr
)
1024 struct amdgpu_device
*adev
= hwmgr
->adev
;
1027 amdgpu_gfx_rlc_enter_safe_mode(adev
);
1029 vega10_didt_set_mask(hwmgr
, false);
1031 amdgpu_gfx_rlc_exit_safe_mode(adev
);
1033 if (PP_CAP(PHM_PlatformCaps_GCEDC
)) {
1035 cgs_write_register(hwmgr
->device
, mmGC_DIDT_CTRL0
, data
);
1038 if (PP_CAP(PHM_PlatformCaps_PSM
))
1039 vega10_program_gc_didt_config_registers(hwmgr
, AvfsPSMResetConfig_vega10
);
1044 static int vega10_enable_se_edc_config(struct pp_hwmgr
*hwmgr
)
1046 struct amdgpu_device
*adev
= hwmgr
->adev
;
1048 uint32_t num_se
= 0, count
, data
;
1050 num_se
= adev
->gfx
.config
.max_shader_engines
;
1052 amdgpu_gfx_rlc_enter_safe_mode(adev
);
1054 mutex_lock(&adev
->grbm_idx_mutex
);
1055 for (count
= 0; count
< num_se
; count
++) {
1056 data
= GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK
| GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK
| ( count
<< GRBM_GFX_INDEX__SE_INDEX__SHIFT
);
1057 WREG32_SOC15(GC
, 0, mmGRBM_GFX_INDEX
, data
);
1058 result
= vega10_program_didt_config_registers(hwmgr
, SEDiDtWeightConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1059 result
|= vega10_program_didt_config_registers(hwmgr
, SEEDCStallPatternConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1060 result
|= vega10_program_didt_config_registers(hwmgr
, SEEDCStallDelayConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1061 result
|= vega10_program_didt_config_registers(hwmgr
, SEEDCThresholdConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1062 result
|= vega10_program_didt_config_registers(hwmgr
, SEEDCCtrlResetConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1063 result
|= vega10_program_didt_config_registers(hwmgr
, SEEDCCtrlConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1068 WREG32_SOC15(GC
, 0, mmGRBM_GFX_INDEX
, 0xE0000000);
1069 mutex_unlock(&adev
->grbm_idx_mutex
);
1071 vega10_didt_set_mask(hwmgr
, true);
1073 amdgpu_gfx_rlc_exit_safe_mode(adev
);
1078 static int vega10_disable_se_edc_config(struct pp_hwmgr
*hwmgr
)
1080 struct amdgpu_device
*adev
= hwmgr
->adev
;
1082 amdgpu_gfx_rlc_enter_safe_mode(adev
);
1084 vega10_didt_set_mask(hwmgr
, false);
1086 amdgpu_gfx_rlc_exit_safe_mode(adev
);
1091 static int vega10_enable_psm_gc_edc_config(struct pp_hwmgr
*hwmgr
)
1093 struct amdgpu_device
*adev
= hwmgr
->adev
;
1095 uint32_t num_se
= 0;
1096 uint32_t count
, data
;
1098 num_se
= adev
->gfx
.config
.max_shader_engines
;
1100 amdgpu_gfx_rlc_enter_safe_mode(adev
);
1102 vega10_program_gc_didt_config_registers(hwmgr
, AvfsPSMResetConfig_vega10
);
1104 mutex_lock(&adev
->grbm_idx_mutex
);
1105 for (count
= 0; count
< num_se
; count
++) {
1106 data
= GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK
| GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK
| ( count
<< GRBM_GFX_INDEX__SE_INDEX__SHIFT
);
1107 WREG32_SOC15(GC
, 0, mmGRBM_GFX_INDEX
, data
);
1108 result
= vega10_program_didt_config_registers(hwmgr
, PSMSEEDCStallPatternConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1109 result
|= vega10_program_didt_config_registers(hwmgr
, PSMSEEDCStallDelayConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1110 result
|= vega10_program_didt_config_registers(hwmgr
, PSMSEEDCCtrlResetConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1111 result
|= vega10_program_didt_config_registers(hwmgr
, PSMSEEDCCtrlConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1116 WREG32_SOC15(GC
, 0, mmGRBM_GFX_INDEX
, 0xE0000000);
1117 mutex_unlock(&adev
->grbm_idx_mutex
);
1119 vega10_didt_set_mask(hwmgr
, true);
1121 amdgpu_gfx_rlc_exit_safe_mode(adev
);
1123 vega10_program_gc_didt_config_registers(hwmgr
, PSMGCEDCDroopCtrlConfig_vega10
);
1125 if (PP_CAP(PHM_PlatformCaps_GCEDC
)) {
1126 vega10_program_gc_didt_config_registers(hwmgr
, PSMGCEDCCtrlResetConfig_vega10
);
1127 vega10_program_gc_didt_config_registers(hwmgr
, PSMGCEDCCtrlConfig_vega10
);
1130 if (PP_CAP(PHM_PlatformCaps_PSM
))
1131 vega10_program_gc_didt_config_registers(hwmgr
, AvfsPSMInitConfig_vega10
);
1136 static int vega10_disable_psm_gc_edc_config(struct pp_hwmgr
*hwmgr
)
1138 struct amdgpu_device
*adev
= hwmgr
->adev
;
1141 amdgpu_gfx_rlc_enter_safe_mode(adev
);
1143 vega10_didt_set_mask(hwmgr
, false);
1145 amdgpu_gfx_rlc_exit_safe_mode(adev
);
1147 if (PP_CAP(PHM_PlatformCaps_GCEDC
)) {
1149 cgs_write_register(hwmgr
->device
, mmGC_EDC_CTRL
, data
);
1152 if (PP_CAP(PHM_PlatformCaps_PSM
))
1153 vega10_program_gc_didt_config_registers(hwmgr
, AvfsPSMResetConfig_vega10
);
1158 static int vega10_enable_se_edc_force_stall_config(struct pp_hwmgr
*hwmgr
)
1160 struct amdgpu_device
*adev
= hwmgr
->adev
;
1163 amdgpu_gfx_rlc_enter_safe_mode(adev
);
1165 mutex_lock(&adev
->grbm_idx_mutex
);
1166 WREG32_SOC15(GC
, 0, mmGRBM_GFX_INDEX
, 0xE0000000);
1167 mutex_unlock(&adev
->grbm_idx_mutex
);
1169 result
= vega10_program_didt_config_registers(hwmgr
, SEEDCForceStallPatternConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1170 result
|= vega10_program_didt_config_registers(hwmgr
, SEEDCCtrlForceStallConfig_Vega10
, VEGA10_CONFIGREG_DIDT
);
1174 vega10_didt_set_mask(hwmgr
, false);
1176 amdgpu_gfx_rlc_exit_safe_mode(adev
);
1181 static int vega10_disable_se_edc_force_stall_config(struct pp_hwmgr
*hwmgr
)
1185 result
= vega10_disable_se_edc_config(hwmgr
);
1186 PP_ASSERT_WITH_CODE((0 == result
), "[DisableDiDtConfig] Pre DIDT disable clock gating failed!", return result
);
1191 int vega10_enable_didt_config(struct pp_hwmgr
*hwmgr
)
1194 struct vega10_hwmgr
*data
= hwmgr
->backend
;
1196 if (data
->smu_features
[GNLD_DIDT
].supported
) {
1197 if (data
->smu_features
[GNLD_DIDT
].enabled
)
1198 PP_DBG_LOG("[EnableDiDtConfig] Feature DiDt Already enabled!\n");
1200 switch (data
->registry_data
.didt_mode
) {
1202 result
= vega10_enable_cac_driving_se_didt_config(hwmgr
);
1203 PP_ASSERT_WITH_CODE((0 == result
), "[EnableDiDt] Attempt to enable DiDt Mode 0 Failed!", return result
);
1206 result
= vega10_enable_psm_gc_didt_config(hwmgr
);
1207 PP_ASSERT_WITH_CODE((0 == result
), "[EnableDiDt] Attempt to enable DiDt Mode 2 Failed!", return result
);
1210 result
= vega10_enable_se_edc_config(hwmgr
);
1211 PP_ASSERT_WITH_CODE((0 == result
), "[EnableDiDt] Attempt to enable DiDt Mode 3 Failed!", return result
);
1216 result
= vega10_enable_psm_gc_edc_config(hwmgr
);
1217 PP_ASSERT_WITH_CODE((0 == result
), "[EnableDiDt] Attempt to enable DiDt Mode 5 Failed!", return result
);
1220 result
= vega10_enable_se_edc_force_stall_config(hwmgr
);
1221 PP_ASSERT_WITH_CODE((0 == result
), "[EnableDiDt] Attempt to enable DiDt Mode 6 Failed!", return result
);
1229 result
= vega10_enable_smc_features(hwmgr
, true, data
->smu_features
[GNLD_DIDT
].smu_feature_bitmap
);
1230 PP_ASSERT_WITH_CODE((0 == result
), "[EnableDiDtConfig] Attempt to Enable DiDt feature Failed!", return result
);
1231 data
->smu_features
[GNLD_DIDT
].enabled
= true;
1238 int vega10_disable_didt_config(struct pp_hwmgr
*hwmgr
)
1241 struct vega10_hwmgr
*data
= hwmgr
->backend
;
1243 if (data
->smu_features
[GNLD_DIDT
].supported
) {
1244 if (!data
->smu_features
[GNLD_DIDT
].enabled
)
1245 PP_DBG_LOG("[DisableDiDtConfig] Feature DiDt Already Disabled!\n");
1247 switch (data
->registry_data
.didt_mode
) {
1249 result
= vega10_disable_cac_driving_se_didt_config(hwmgr
);
1250 PP_ASSERT_WITH_CODE((0 == result
), "[DisableDiDt] Attempt to disable DiDt Mode 0 Failed!", return result
);
1253 result
= vega10_disable_psm_gc_didt_config(hwmgr
);
1254 PP_ASSERT_WITH_CODE((0 == result
), "[DisableDiDt] Attempt to disable DiDt Mode 2 Failed!", return result
);
1257 result
= vega10_disable_se_edc_config(hwmgr
);
1258 PP_ASSERT_WITH_CODE((0 == result
), "[DisableDiDt] Attempt to disable DiDt Mode 3 Failed!", return result
);
1263 result
= vega10_disable_psm_gc_edc_config(hwmgr
);
1264 PP_ASSERT_WITH_CODE((0 == result
), "[DisableDiDt] Attempt to disable DiDt Mode 5 Failed!", return result
);
1267 result
= vega10_disable_se_edc_force_stall_config(hwmgr
);
1268 PP_ASSERT_WITH_CODE((0 == result
), "[DisableDiDt] Attempt to disable DiDt Mode 6 Failed!", return result
);
1276 result
= vega10_enable_smc_features(hwmgr
, false, data
->smu_features
[GNLD_DIDT
].smu_feature_bitmap
);
1277 PP_ASSERT_WITH_CODE((0 == result
), "[DisableDiDtConfig] Attempt to Disable DiDt feature Failed!", return result
);
1278 data
->smu_features
[GNLD_DIDT
].enabled
= false;
1285 void vega10_initialize_power_tune_defaults(struct pp_hwmgr
*hwmgr
)
1287 struct vega10_hwmgr
*data
= hwmgr
->backend
;
1288 struct phm_ppt_v2_information
*table_info
=
1289 (struct phm_ppt_v2_information
*)(hwmgr
->pptable
);
1290 struct phm_tdp_table
*tdp_table
= table_info
->tdp_table
;
1291 PPTable_t
*table
= &(data
->smc_state_table
.pp_table
);
1293 table
->SocketPowerLimit
= cpu_to_le16(
1294 tdp_table
->usMaximumPowerDeliveryLimit
);
1295 table
->TdcLimit
= cpu_to_le16(tdp_table
->usTDC
);
1296 table
->EdcLimit
= cpu_to_le16(tdp_table
->usEDCLimit
);
1297 table
->TedgeLimit
= cpu_to_le16(tdp_table
->usTemperatureLimitTedge
);
1298 table
->ThotspotLimit
= cpu_to_le16(tdp_table
->usTemperatureLimitHotspot
);
1299 table
->ThbmLimit
= cpu_to_le16(tdp_table
->usTemperatureLimitHBM
);
1300 table
->Tvr_socLimit
= cpu_to_le16(tdp_table
->usTemperatureLimitVrVddc
);
1301 table
->Tvr_memLimit
= cpu_to_le16(tdp_table
->usTemperatureLimitVrMvdd
);
1302 table
->Tliquid1Limit
= cpu_to_le16(tdp_table
->usTemperatureLimitLiquid1
);
1303 table
->Tliquid2Limit
= cpu_to_le16(tdp_table
->usTemperatureLimitLiquid2
);
1304 table
->TplxLimit
= cpu_to_le16(tdp_table
->usTemperatureLimitPlx
);
1305 table
->LoadLineResistance
=
1306 hwmgr
->platform_descriptor
.LoadLineSlope
* 256;
1307 table
->FitLimit
= 0; /* Not used for Vega10 */
1309 table
->Liquid1_I2C_address
= tdp_table
->ucLiquid1_I2C_address
;
1310 table
->Liquid2_I2C_address
= tdp_table
->ucLiquid2_I2C_address
;
1311 table
->Vr_I2C_address
= tdp_table
->ucVr_I2C_address
;
1312 table
->Plx_I2C_address
= tdp_table
->ucPlx_I2C_address
;
1314 table
->Liquid_I2C_LineSCL
= tdp_table
->ucLiquid_I2C_Line
;
1315 table
->Liquid_I2C_LineSDA
= tdp_table
->ucLiquid_I2C_LineSDA
;
1317 table
->Vr_I2C_LineSCL
= tdp_table
->ucVr_I2C_Line
;
1318 table
->Vr_I2C_LineSDA
= tdp_table
->ucVr_I2C_LineSDA
;
1320 table
->Plx_I2C_LineSCL
= tdp_table
->ucPlx_I2C_Line
;
1321 table
->Plx_I2C_LineSDA
= tdp_table
->ucPlx_I2C_LineSDA
;
1324 int vega10_set_power_limit(struct pp_hwmgr
*hwmgr
, uint32_t n
)
1326 struct vega10_hwmgr
*data
= hwmgr
->backend
;
1328 if (data
->registry_data
.enable_pkg_pwr_tracking_feature
)
1329 smum_send_msg_to_smc_with_parameter(hwmgr
,
1330 PPSMC_MSG_SetPptLimit
, n
);
1335 int vega10_enable_power_containment(struct pp_hwmgr
*hwmgr
)
1337 struct vega10_hwmgr
*data
= hwmgr
->backend
;
1338 struct phm_ppt_v2_information
*table_info
=
1339 (struct phm_ppt_v2_information
*)(hwmgr
->pptable
);
1340 struct phm_tdp_table
*tdp_table
= table_info
->tdp_table
;
1343 hwmgr
->default_power_limit
= hwmgr
->power_limit
=
1344 (uint32_t)(tdp_table
->usMaximumPowerDeliveryLimit
);
1349 if (PP_CAP(PHM_PlatformCaps_PowerContainment
)) {
1350 if (data
->smu_features
[GNLD_PPT
].supported
)
1351 PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr
,
1352 true, data
->smu_features
[GNLD_PPT
].smu_feature_bitmap
),
1353 "Attempt to enable PPT feature Failed!",
1354 data
->smu_features
[GNLD_PPT
].supported
= false);
1356 if (data
->smu_features
[GNLD_TDC
].supported
)
1357 PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr
,
1358 true, data
->smu_features
[GNLD_TDC
].smu_feature_bitmap
),
1359 "Attempt to enable PPT feature Failed!",
1360 data
->smu_features
[GNLD_TDC
].supported
= false);
1362 result
= vega10_set_power_limit(hwmgr
, hwmgr
->power_limit
);
1363 PP_ASSERT_WITH_CODE(!result
,
1364 "Failed to set Default Power Limit in SMC!",
1371 int vega10_disable_power_containment(struct pp_hwmgr
*hwmgr
)
1373 struct vega10_hwmgr
*data
= hwmgr
->backend
;
1375 if (PP_CAP(PHM_PlatformCaps_PowerContainment
)) {
1376 if (data
->smu_features
[GNLD_PPT
].supported
)
1377 PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr
,
1378 false, data
->smu_features
[GNLD_PPT
].smu_feature_bitmap
),
1379 "Attempt to disable PPT feature Failed!",
1380 data
->smu_features
[GNLD_PPT
].supported
= false);
1382 if (data
->smu_features
[GNLD_TDC
].supported
)
1383 PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr
,
1384 false, data
->smu_features
[GNLD_TDC
].smu_feature_bitmap
),
1385 "Attempt to disable PPT feature Failed!",
1386 data
->smu_features
[GNLD_TDC
].supported
= false);
1392 static void vega10_set_overdrive_target_percentage(struct pp_hwmgr
*hwmgr
,
1393 uint32_t adjust_percent
)
1395 smum_send_msg_to_smc_with_parameter(hwmgr
,
1396 PPSMC_MSG_OverDriveSetPercentage
, adjust_percent
);
1399 int vega10_power_control_set_level(struct pp_hwmgr
*hwmgr
)
1403 if (PP_CAP(PHM_PlatformCaps_PowerContainment
)) {
1405 hwmgr
->platform_descriptor
.TDPAdjustmentPolarity
?
1406 hwmgr
->platform_descriptor
.TDPAdjustment
:
1407 (-1 * hwmgr
->platform_descriptor
.TDPAdjustment
);
1408 vega10_set_overdrive_target_percentage(hwmgr
,
1409 (uint32_t)adjust_percent
);