From: Daniel Miess <daniel.mi...@amd.com>

[Why]
DCN clock gating enablement is preventing light up on
high resolution DSC display

[How]
This reverts commit 933b6692d58671e47dff15b77abe69ccb4891298.

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlaus...@amd.com>
Acked-by: Hersen Wu <hersenxs...@amd.com>
Signed-off-by: Daniel Miess <daniel.mi...@amd.com>
---
 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.h    |  6 +-----
 drivers/gpu/drm/amd/display/dc/dcn35/dcn35_dccg.c    | 12 ------------
 drivers/gpu/drm/amd/display/dc/dcn35/dcn35_pg_cntl.c | 10 +++++++++-
 drivers/gpu/drm/amd/display/dc/dcn35/dcn35_pg_cntl.h |  1 +
 .../gpu/drm/amd/display/dc/dcn35/dcn35_resource.c    |  2 +-
 .../gpu/drm/amd/display/dc/hwss/dcn35/dcn35_hwseq.c  | 11 ++++++-----
 drivers/gpu/drm/amd/display/dc/inc/hw/dccg.h         |  4 ----
 drivers/gpu/drm/amd/display/dc/inc/hw/pg_cntl.h      |  2 ++
 8 files changed, 20 insertions(+), 28 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.h 
b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.h
index 76da59d8caaf..ab6d09c6fe34 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.h
+++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.h
@@ -291,11 +291,7 @@
        type SYMCLKB_FE_SRC_SEL;\
        type SYMCLKC_FE_SRC_SEL;\
        type SYMCLKD_FE_SRC_SEL;\
-       type SYMCLKE_FE_SRC_SEL;\
-       type DTBCLK_P0_GATE_DISABLE;\
-       type DTBCLK_P1_GATE_DISABLE;\
-       type DTBCLK_P2_GATE_DISABLE;\
-       type DTBCLK_P3_GATE_DISABLE;\
+       type SYMCLKE_FE_SRC_SEL;
 
 struct dccg_shift {
        DCCG_REG_FIELD_LIST(uint8_t)
diff --git a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_dccg.c 
b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_dccg.c
index c5d7f67d9856..277aae811eea 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_dccg.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_dccg.c
@@ -744,17 +744,6 @@ static void dccg35_disable_symclk_se(struct dccg *dccg, 
uint32_t stream_enc_inst
        }
 }
 
-static void dccg35_set_dtbclk_dto_gating(struct dccg *dccg, bool enable)
-{
-       struct dcn_dccg *dccg_dcn = TO_DCN_DCCG(dccg);
-
-       REG_UPDATE_4(DCCG_GATE_DISABLE_CNTL5,
-                       DTBCLK_P0_GATE_DISABLE, enable ? 0x0 : 0x1,
-                       DTBCLK_P1_GATE_DISABLE, enable ? 0x0 : 0x1,
-                       DTBCLK_P2_GATE_DISABLE, enable ? 0x0 : 0x1,
-                       DTBCLK_P3_GATE_DISABLE, enable ? 0x0 : 0x1);
-}
-
 static const struct dccg_funcs dccg35_funcs = {
        .update_dpp_dto = dccg35_update_dpp_dto,
        .dpp_root_clock_control = dccg35_dpp_root_clock_control,
@@ -780,7 +769,6 @@ static const struct dccg_funcs dccg35_funcs = {
        .enable_symclk_se = dccg35_enable_symclk_se,
        .disable_symclk_se = dccg35_disable_symclk_se,
        .set_dtbclk_p_src = dccg35_set_dtbclk_p_src,
-       .set_dtbclk_dto_gating = dccg35_set_dtbclk_dto_gating,
 };
 
 struct dccg *dccg35_create(
diff --git a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_pg_cntl.c 
b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_pg_cntl.c
index 0f60c40e1fc5..46f71ff08fd1 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_pg_cntl.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_pg_cntl.c
@@ -332,6 +332,13 @@ void pg_cntl35_io_clk_pg_control(struct pg_cntl *pg_cntl, 
bool power_on)
        pg_cntl->pg_res_enable[PG_DCIO] = power_on;
 }
 
+void pg_cntl35_set_force_poweron_domain22(struct pg_cntl *pg_cntl, bool 
power_on)
+{
+       struct dcn_pg_cntl *pg_cntl_dcn = TO_DCN_PG_CNTL(pg_cntl);
+
+       REG_UPDATE(DOMAIN22_PG_CONFIG, DOMAIN_POWER_FORCEON, power_on ? 1 : 0);
+}
+
 static bool pg_cntl35_plane_otg_status(struct pg_cntl *pg_cntl)
 {
        struct dcn_pg_cntl *pg_cntl_dcn = TO_DCN_PG_CNTL(pg_cntl);
@@ -501,7 +508,8 @@ static const struct pg_cntl_funcs pg_cntl35_funcs = {
        .mpcc_pg_control = pg_cntl35_mpcc_pg_control,
        .opp_pg_control = pg_cntl35_opp_pg_control,
        .optc_pg_control = pg_cntl35_optc_pg_control,
-       .dwb_pg_control = pg_cntl35_dwb_pg_control
+       .dwb_pg_control = pg_cntl35_dwb_pg_control,
+       .set_force_poweron_domain22 = pg_cntl35_set_force_poweron_domain22
 };
 
 struct pg_cntl *pg_cntl35_create(
diff --git a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_pg_cntl.h 
b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_pg_cntl.h
index 3de240884d22..069dae08e222 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_pg_cntl.h
+++ b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_pg_cntl.h
@@ -183,6 +183,7 @@ void pg_cntl35_optc_pg_control(struct pg_cntl *pg_cntl,
        unsigned int optc_inst, bool power_on);
 void pg_cntl35_dwb_pg_control(struct pg_cntl *pg_cntl, bool power_on);
 void pg_cntl35_init_pg_status(struct pg_cntl *pg_cntl);
+void pg_cntl35_set_force_poweron_domain22(struct pg_cntl *pg_cntl, bool 
power_on);
 
 struct pg_cntl *pg_cntl35_create(
        struct dc_context *ctx,
diff --git a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c 
b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c
index 4eb76896fd63..e35d4c028d01 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c
@@ -689,7 +689,7 @@ static const struct dc_debug_options debug_defaults_drv = {
        .disable_dcc = DCC_ENABLE,
        .disable_dpp_power_gate = true,
        .disable_hubp_power_gate = true,
-       .disable_clock_gate = false,
+       .disable_clock_gate = true,
        .disable_dsc_power_gate = true,
        .vsr_support = true,
        .performance_trace = false,
diff --git a/drivers/gpu/drm/amd/display/dc/hwss/dcn35/dcn35_hwseq.c 
b/drivers/gpu/drm/amd/display/dc/hwss/dcn35/dcn35_hwseq.c
index 66175f68f6da..0569fa6f7600 100644
--- a/drivers/gpu/drm/amd/display/dc/hwss/dcn35/dcn35_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/hwss/dcn35/dcn35_hwseq.c
@@ -145,11 +145,9 @@ void dcn35_init_hw(struct dc *dc)
                hws->funcs.bios_golden_init(dc);
        }
 
-       if (dc->debug.disable_clock_gate) {
-               REG_WRITE(DCCG_GATE_DISABLE_CNTL, 0);
-               REG_WRITE(DCCG_GATE_DISABLE_CNTL2, 0x3F000000);
-               REG_WRITE(DCCG_GATE_DISABLE_CNTL5, 0x1f7c3fcf);
-       }
+       REG_WRITE(DCCG_GATE_DISABLE_CNTL, 0);
+       REG_WRITE(DCCG_GATE_DISABLE_CNTL2, 0x3F000000);
+       REG_WRITE(DCCG_GATE_DISABLE_CNTL5, 0x1f7c3fcf);
 
        // Initialize the dccg
        if (res_pool->dccg->funcs->dccg_init)
@@ -314,6 +312,9 @@ void dcn35_init_hw(struct dc *dc)
        if (dc->res_pool->pg_cntl) {
                if (dc->res_pool->pg_cntl->funcs->init_pg_status)
                        
dc->res_pool->pg_cntl->funcs->init_pg_status(dc->res_pool->pg_cntl);
+
+               if (dc->res_pool->pg_cntl->funcs->set_force_poweron_domain22)
+                       
dc->res_pool->pg_cntl->funcs->set_force_poweron_domain22(dc->res_pool->pg_cntl, 
false);
        }
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/dccg.h 
b/drivers/gpu/drm/amd/display/dc/inc/hw/dccg.h
index 1af2f7d3acac..13f12f2a3f81 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/hw/dccg.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/hw/dccg.h
@@ -196,10 +196,6 @@ struct dccg_funcs {
                        struct dccg *dccg,
                        enum streamclk_source src,
                        uint32_t otg_inst);
-
-       void (*set_dtbclk_dto_gating)(
-                       struct dccg *dccg,
-                       bool enable);
 };
 
 #endif //__DAL_DCCG_H__
diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/pg_cntl.h 
b/drivers/gpu/drm/amd/display/dc/inc/hw/pg_cntl.h
index 00ea3864dd4d..b9812afb886b 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/hw/pg_cntl.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/hw/pg_cntl.h
@@ -47,6 +47,8 @@ struct pg_cntl_funcs {
        void (*optc_pg_control)(struct pg_cntl *pg_cntl, unsigned int 
optc_inst, bool power_on);
        void (*dwb_pg_control)(struct pg_cntl *pg_cntl, bool power_on);
        void (*init_pg_status)(struct pg_cntl *pg_cntl);
+
+       void (*set_force_poweron_domain22)(struct pg_cntl *pg_cntl, bool 
power_on);
 };
 
 #endif //__DC_PG_CNTL_H__
-- 
2.25.1

Reply via email to