From: Dmytro Laktyushkin <[email protected]>

This allows to set a minimum display and dpp clock on dcn2+ HW
by adjusting clocks used for dml calculations.

Signed-off-by: Dmytro Laktyushkin <[email protected]>
Reviewed-by: Tony Cheng <[email protected]>
Acked-by: Leo Li <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/dc.h                   | 1 +
 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c | 8 ++++----
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dc.h 
b/drivers/gpu/drm/amd/display/dc/dc.h
index 584fabf5a9a1..489f6240f2ed 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -344,6 +344,7 @@ struct dc_debug_options {
        bool disable_pplib_wm_range;
        enum wm_report_mode pplib_wm_report_mode;
        unsigned int min_disp_clk_khz;
+       unsigned int min_dpp_clk_khz;
        int sr_exit_time_dpm0_ns;
        int sr_enter_plus_exit_time_dpm0_ns;
        int sr_exit_time_ns;
diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c 
b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
index 158743b165e8..5571b8bfc942 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
@@ -2168,10 +2168,6 @@ bool dcn20_fast_validate_bw(
                }
                if (force_split && 
context->bw_ctx.dml.vba.NoOfDPP[vlevel][context->bw_ctx.dml.vba.maxMpcComb][pipe_idx]
 == 1)
                        
context->bw_ctx.dml.vba.RequiredDPPCLK[vlevel][context->bw_ctx.dml.vba.maxMpcComb][pipe_idx]
 /= 2;
-               if (dc->config.forced_clocks == true) {
-                       
context->bw_ctx.dml.vba.RequiredDPPCLK[vlevel][context->bw_ctx.dml.vba.maxMpcComb][pipe_idx]
 =
-                                       
context->bw_ctx.dml.soc.clock_limits[0].dppclk_mhz;
-               }
                if (!pipe->top_pipe && !pipe->plane_state && 
context->bw_ctx.dml.vba.ODMCombineEnabled[pipe_idx]) {
                        hsplit_pipe = 
find_idle_secondary_pipe(&context->res_ctx, dc->res_pool, pipe);
                        ASSERT(hsplit_pipe);
@@ -2291,6 +2287,10 @@ void dcn20_calculate_wm(
                                pipes[pipe_cnt].clks_cfg.dispclk_mhz = 
context->bw_ctx.dml.soc.clock_limits[0].dispclk_mhz;
                                pipes[pipe_cnt].clks_cfg.dppclk_mhz = 
context->bw_ctx.dml.soc.clock_limits[0].dppclk_mhz;
                        }
+                       if (dc->debug.min_disp_clk_khz > 
pipes[pipe_cnt].clks_cfg.dispclk_mhz * 1000)
+                               pipes[pipe_cnt].clks_cfg.dispclk_mhz = 
dc->debug.min_disp_clk_khz / 1000.0;
+                       if (dc->debug.min_dpp_clk_khz > 
pipes[pipe_cnt].clks_cfg.dppclk_mhz * 1000)
+                               pipes[pipe_cnt].clks_cfg.dppclk_mhz = 
dc->debug.min_dpp_clk_khz / 1000.0;
 
                        pipe_cnt++;
                }
-- 
2.22.0

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to