From: James Lin <[email protected]>

[why & how]
Some DCN4.2 related code is missing from upstream

Fixes: 66715fc0ecfd ("drm/amd/display: Sync dcn42 with DC 3.2.373")
Acked-by: ChiaHsuan Chung <[email protected]>
Reviewed-by: Roman Li <[email protected]>
Signed-off-by: James Lin <[email protected]>
---
 .../drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c   |  2 ++
 .../gpu/drm/amd/display/dc/hwss/dcn42/dcn42_hwseq.c    |  5 +++--
 .../drm/amd/display/dc/resource/dcn42/dcn42_resource.c | 10 ++++------
 .../drm/amd/display/dc/resource/dcn42/dcn42_resource.h |  7 +++++++
 4 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c 
b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c
index d856a7a807b1..d01e5969a670 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c
@@ -309,6 +309,8 @@ void dcn42_update_clocks(struct clk_mgr *clk_mgr_base,
        }
 
        // workaround: Limit dppclk to 100Mhz to avoid lower eDP panel switch 
to plus 4K monitor underflow.
+       if (new_clocks->dppclk_khz < 100000)
+               new_clocks->dppclk_khz = 100000;
 
        if (should_set_clock(safe_to_lower, new_clocks->dppclk_khz, 
clk_mgr->base.clks.dppclk_khz)) {
                if (clk_mgr->base.clks.dppclk_khz > new_clocks->dppclk_khz)
diff --git a/drivers/gpu/drm/amd/display/dc/hwss/dcn42/dcn42_hwseq.c 
b/drivers/gpu/drm/amd/display/dc/hwss/dcn42/dcn42_hwseq.c
index cbc20f214f9e..cabfac151940 100644
--- a/drivers/gpu/drm/amd/display/dc/hwss/dcn42/dcn42_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/hwss/dcn42/dcn42_hwseq.c
@@ -470,9 +470,9 @@ static bool is_rmcm_3dlut_fl_supported(struct dc *dc, enum 
dc_cm2_gpu_mem_size s
        if (!dc->caps.color.mpc.rmcm_3d_lut_caps.dma_3d_lut)
                return false;
        if (size == DC_CM2_GPU_MEM_SIZE_171717)
-               return 
(dc->caps.color.mpc.rmcm_3d_lut_caps.lut_dim_caps.dim_17);
+               return dc->caps.color.mpc.rmcm_3d_lut_caps.lut_dim_caps.dim_17 
!= 0u;
        else if (size == DC_CM2_GPU_MEM_SIZE_333333)
-               return 
(dc->caps.color.mpc.rmcm_3d_lut_caps.lut_dim_caps.dim_33);
+               return dc->caps.color.mpc.rmcm_3d_lut_caps.lut_dim_caps.dim_33 
!= 0u;
        return false;
 }
 
@@ -945,6 +945,7 @@ bool dcn42_set_mcm_luts(struct pipe_ctx *pipe_ctx,
 void dcn42_hardware_release(struct dc *dc)
 {
        dcn35_hardware_release(dc);
+       dc_dmub_srv_release_hw(dc);
 
 }
 static int count_active_streams(const struct dc *dc)
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.c
index 52a1996a654f..1fc457cec293 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.c
@@ -1520,6 +1520,10 @@ static void dcn42_resource_destruct(struct 
dcn42_resource_pool *pool)
 
        if (pool->base.pg_cntl != NULL)
                dcn_pg_cntl_destroy(&pool->base.pg_cntl);
+
+       if (pool->base.replay != NULL)
+               dmub_replay_destroy(&pool->base.replay);
+
        if (pool->base.dccg != NULL)
                dcn_dccg_destroy(&pool->base.dccg);
 
@@ -1921,12 +1925,6 @@ static bool dcn42_resource_construct(
        dc->caps.max_v_total = (1 << 15) - 1;
        dc->caps.vtotal_limited_by_fp2 = true;
 
-       dc->caps.seamless_odm = true;
-       dc->caps.zstate_support = true;
-       dc->caps.ips_support = true;
-       dc->caps.max_v_total = (1 << 15) - 1;
-       dc->caps.vtotal_limited_by_fp2 = true;
-
        /* Color pipeline capabilities */
        dc->caps.color.dpp.dcn_arch = 1;
        dc->caps.color.dpp.input_lut_shared = 0;
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.h 
b/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.h
index 60acf0e423d9..fe960542d7bd 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.h
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.h
@@ -456,6 +456,8 @@
                SRI_ARR(OTG_V_SYNC_A, OTG, inst), \
                SRI_ARR(OTG_V_SYNC_A_CNTL, OTG, inst), \
                SRI_ARR(OTG_CONTROL, OTG, inst), \
+               SRI_ARR(OTG_MASTER_EN, OTG, inst), \
+               SRI_ARR(OTG_LONG_VBLANK_STATUS, OTG, inst), \
                SRI_ARR(OTG_STEREO_CONTROL, OTG, inst), \
                SRI_ARR(OTG_3D_STRUCTURE_CONTROL, OTG, inst),                   
         \
                SRI_ARR(OTG_STEREO_STATUS, OTG, inst),                          
         \
@@ -472,6 +474,11 @@
                SRI_ARR(OTG_M_CONST_DTO0, OTG, inst),                           
         \
                SRI_ARR(OTG_M_CONST_DTO1, OTG, inst),                           
         \
                SRI_ARR(OTG_CLOCK_CONTROL, OTG, inst),                          
         \
+               SRI_ARR(OTG_COUNT_CONTROL, OTG, inst),                          
         \
+               SRI_ARR(OTG_COUNT_RESET, OTG, inst),                            
       \
+               SRI_ARR(OTG_CRC_SIG_BLUE_CONTROL_MASK, OTG, inst),              
        \
+               SRI_ARR(OTG_CRC_SIG_RED_GREEN_MASK, OTG, inst),                 
     \
+               SRI_ARR(OTG_DRR_TIMING_INT_STATUS, OTG, inst),                  
    \
                SRI_ARR(OTG_VERTICAL_INTERRUPT0_CONTROL, OTG, inst),            
         \
                SRI_ARR(OTG_VERTICAL_INTERRUPT0_POSITION, OTG, inst),           
         \
                SRI_ARR(OTG_VERTICAL_INTERRUPT1_CONTROL, OTG, inst),            
         \
-- 
2.43.0

Reply via email to