4646#define TO_CLK_MGR_DCN315 (clk_mgr )\
4747 container_of(clk_mgr, struct clk_mgr_dcn315, base)
4848
49+ #define UNSUPPORTED_DCFCLK 10000000
50+ #define MIN_DPP_DISP_CLK 100000
51+
4952static int dcn315_get_active_display_cnt_wa (
5053 struct dc * dc ,
5154 struct dc_state * context )
@@ -147,6 +150,9 @@ static void dcn315_update_clocks(struct clk_mgr *clk_mgr_base,
147150 }
148151 }
149152
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 ;
150156 if (should_set_clock (safe_to_lower , new_clocks -> dcfclk_khz , clk_mgr_base -> clks .dcfclk_khz )) {
151157 clk_mgr_base -> clks .dcfclk_khz = new_clocks -> dcfclk_khz ;
152158 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,
160166
161167 // workaround: Limit dppclk to 100Mhz to avoid lower eDP panel switch to plus 4K monitor underflow.
162168 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 ;
167173 }
168174
169175 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 = {
276282 {
277283 .wm_inst = WM_A ,
278284 .wm_type = WM_TYPE_PSTATE_CHG ,
279- .pstate_latency_us = 64 .0 ,
285+ .pstate_latency_us = 129 .0 ,
280286 .sr_exit_time_us = 11.5 ,
281287 .sr_enter_plus_exit_time_us = 14.5 ,
282288 .valid = true,
283289 },
284290 {
285291 .wm_inst = WM_B ,
286292 .wm_type = WM_TYPE_PSTATE_CHG ,
287- .pstate_latency_us = 64 .0 ,
293+ .pstate_latency_us = 129 .0 ,
288294 .sr_exit_time_us = 11.5 ,
289295 .sr_enter_plus_exit_time_us = 14.5 ,
290296 .valid = true,
291297 },
292298 {
293299 .wm_inst = WM_C ,
294300 .wm_type = WM_TYPE_PSTATE_CHG ,
295- .pstate_latency_us = 64 .0 ,
301+ .pstate_latency_us = 129 .0 ,
296302 .sr_exit_time_us = 11.5 ,
297303 .sr_enter_plus_exit_time_us = 14.5 ,
298304 .valid = true,
299305 },
300306 {
301307 .wm_inst = WM_D ,
302308 .wm_type = WM_TYPE_PSTATE_CHG ,
303- .pstate_latency_us = 64 .0 ,
309+ .pstate_latency_us = 129 .0 ,
304310 .sr_exit_time_us = 11.5 ,
305311 .sr_enter_plus_exit_time_us = 14.5 ,
306312 .valid = true,
0 commit comments