drm/amd/display: Modify plane removal sequence to avoid hangs.
authorDillon Varone <dillon.varone@amd.com>
Thu, 10 Feb 2022 23:17:39 +0000 (18:17 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 2 Mar 2022 23:40:07 +0000 (18:40 -0500)
Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
Acked-by: Alan Liu <HaoPing.Liu@amd.com>
Signed-off-by: Dillon Varone <dillon.varone@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubp.c

index b467c0376027ddf23c0b971587c9deafd325ce97..bc9dd48258e32c3a6adcb29434b12a152118366c 100644 (file)
@@ -107,7 +107,7 @@ void dcn10_lock_all_pipes(struct dc *dc,
                 * (un)locking. Also skip if pipe is disabled.
                 */
                if (pipe_ctx->top_pipe ||
-                   !pipe_ctx->stream || !pipe_ctx->plane_state ||
+                   !pipe_ctx->stream ||
                    !tg->funcs->is_tg_enabled(tg))
                        continue;
 
index 33d74ecd893d7bfdf52fd880dfeb9c43096146e5..a665af19f2017a7f9e79f8012e36d376554ba7a7 100644 (file)
@@ -931,10 +931,6 @@ void hubp2_set_blank_regs(struct hubp *hubp, bool blank)
        struct dcn20_hubp *hubp2 = TO_DCN20_HUBP(hubp);
        uint32_t blank_en = blank ? 1 : 0;
 
-       REG_UPDATE_2(DCHUBP_CNTL,
-                       HUBP_BLANK_EN, blank_en,
-                       HUBP_TTU_DISABLE, blank_en);
-
        if (blank) {
                uint32_t reg_val = REG_READ(DCHUBP_CNTL);
 
@@ -947,9 +943,13 @@ void hubp2_set_blank_regs(struct hubp *hubp, bool blank)
                         */
                        REG_WAIT(DCHUBP_CNTL,
                                        HUBP_NO_OUTSTANDING_REQ, 1,
-                                       1, 200);
+                                       1, 100000);
                }
        }
+
+       REG_UPDATE_2(DCHUBP_CNTL,
+                       HUBP_BLANK_EN, blank_en,
+                       HUBP_TTU_DISABLE, 0);
 }
 
 void hubp2_cursor_set_position(