46
46
#define TO_CLK_MGR_DCN315 (clk_mgr )\
47
47
container_of(clk_mgr, struct clk_mgr_dcn315, base)
48
48
49
+ #define UNSUPPORTED_DCFCLK 10000000
50
+ #define MIN_DPP_DISP_CLK 100000
51
+
49
52
static int dcn315_get_active_display_cnt_wa (
50
53
struct dc * dc ,
51
54
struct dc_state * context )
@@ -147,6 +150,9 @@ static void dcn315_update_clocks(struct clk_mgr *clk_mgr_base,
147
150
}
148
151
}
149
152
153
+ /* Lock pstate by requesting unsupported dcfclk if change is unsupported */
154
+ if (!new_clocks -> p_state_change_support )
155
+ new_clocks -> dcfclk_khz = UNSUPPORTED_DCFCLK ;
150
156
if (should_set_clock (safe_to_lower , new_clocks -> dcfclk_khz , clk_mgr_base -> clks .dcfclk_khz )) {
151
157
clk_mgr_base -> clks .dcfclk_khz = new_clocks -> dcfclk_khz ;
152
158
dcn315_smu_set_hard_min_dcfclk (clk_mgr , clk_mgr_base -> clks .dcfclk_khz );
@@ -160,10 +166,10 @@ static void dcn315_update_clocks(struct clk_mgr *clk_mgr_base,
160
166
161
167
// workaround: Limit dppclk to 100Mhz to avoid lower eDP panel switch to plus 4K monitor underflow.
162
168
if (!IS_DIAG_DC (dc -> ctx -> dce_environment )) {
163
- if (new_clocks -> dppclk_khz < 100000 )
164
- new_clocks -> dppclk_khz = 100000 ;
165
- if (new_clocks -> dispclk_khz < 100000 )
166
- new_clocks -> dispclk_khz = 100000 ;
169
+ if (new_clocks -> dppclk_khz < MIN_DPP_DISP_CLK )
170
+ new_clocks -> dppclk_khz = MIN_DPP_DISP_CLK ;
171
+ if (new_clocks -> dispclk_khz < MIN_DPP_DISP_CLK )
172
+ new_clocks -> dispclk_khz = MIN_DPP_DISP_CLK ;
167
173
}
168
174
169
175
if (should_set_clock (safe_to_lower , new_clocks -> dppclk_khz , clk_mgr -> base .clks .dppclk_khz )) {
@@ -276,31 +282,31 @@ static struct wm_table ddr5_wm_table = {
276
282
{
277
283
.wm_inst = WM_A ,
278
284
.wm_type = WM_TYPE_PSTATE_CHG ,
279
- .pstate_latency_us = 64 .0 ,
285
+ .pstate_latency_us = 129 .0 ,
280
286
.sr_exit_time_us = 11.5 ,
281
287
.sr_enter_plus_exit_time_us = 14.5 ,
282
288
.valid = true,
283
289
},
284
290
{
285
291
.wm_inst = WM_B ,
286
292
.wm_type = WM_TYPE_PSTATE_CHG ,
287
- .pstate_latency_us = 64 .0 ,
293
+ .pstate_latency_us = 129 .0 ,
288
294
.sr_exit_time_us = 11.5 ,
289
295
.sr_enter_plus_exit_time_us = 14.5 ,
290
296
.valid = true,
291
297
},
292
298
{
293
299
.wm_inst = WM_C ,
294
300
.wm_type = WM_TYPE_PSTATE_CHG ,
295
- .pstate_latency_us = 64 .0 ,
301
+ .pstate_latency_us = 129 .0 ,
296
302
.sr_exit_time_us = 11.5 ,
297
303
.sr_enter_plus_exit_time_us = 14.5 ,
298
304
.valid = true,
299
305
},
300
306
{
301
307
.wm_inst = WM_D ,
302
308
.wm_type = WM_TYPE_PSTATE_CHG ,
303
- .pstate_latency_us = 64 .0 ,
309
+ .pstate_latency_us = 129 .0 ,
304
310
.sr_exit_time_us = 11.5 ,
305
311
.sr_enter_plus_exit_time_us = 14.5 ,
306
312
.valid = true,
0 commit comments