Skip to content

Commit dcc2527

Browse files
Dmytro Laktyushkinalexdeucher
authored andcommitted
drm/amd/display: increase dcn315 pstate change latency
[Why & How] Update after new measurment came in Reviewed-by: Jun Lei <[email protected]> Acked-by: Wayne Lin <[email protected]> Signed-off-by: Dmytro Laktyushkin <[email protected]> Tested-by: Daniel Wheeler <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 20c6168 commit dcc2527

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_clk_mgr.c

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@
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+
4952
static 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

Comments
 (0)