drm/amd/display: do not wait for mpc idle if tg is disabled
authorJosip Pavic <Josip.Pavic@amd.com>
Thu, 24 Mar 2022 16:08:43 +0000 (12:08 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 11 Apr 2022 17:50:57 +0000 (13:50 -0400)
[Why]
When booting, the driver waits for the MPC idle bit to be set as part of
pipe initialization. However, on some systems this occurs before OTG is
enabled, and since the MPC idle bit won't be set until the vupdate
signal occurs (which requires OTG to be enabled), this never happens and
the wait times out. This can add hundreds of milliseconds to the boot
time.

[How]
Do not wait for mpc idle if tg is disabled

Reviewed-by: Jun Lei <Jun.Lei@amd.com>
Acked-by: Pavle Kotarac <Pavle.Kotarac@amd.com>
Signed-off-by: Josip Pavic <Josip.Pavic@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c

index 724c04fe004bb1ebc0e02cbee804edf293b972e7..c84011caa73ca0cbd62af75ab77f1d4a0c731727 100644 (file)
@@ -3189,7 +3189,8 @@ void dcn10_wait_for_mpcc_disconnect(
                if (pipe_ctx->stream_res.opp->mpcc_disconnect_pending[mpcc_inst]) {
                        struct hubp *hubp = get_hubp_by_inst(res_pool, mpcc_inst);
 
-                       res_pool->mpc->funcs->wait_for_idle(res_pool->mpc, mpcc_inst);
+                       if (pipe_ctx->stream_res.tg->funcs->is_tg_enabled(pipe_ctx->stream_res.tg))
+                               res_pool->mpc->funcs->wait_for_idle(res_pool->mpc, mpcc_inst);
                        pipe_ctx->stream_res.opp->mpcc_disconnect_pending[mpcc_inst] = false;
                        hubp->funcs->set_blank(hubp, true);
                }