drm/amd/display: attempt to fix the logic in commit_planes_for_stream()
authorAlex Deucher <alexander.deucher@amd.com>
Tue, 12 Jul 2022 15:11:22 +0000 (11:11 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 13 Jul 2022 15:25:18 +0000 (11:25 -0400)
The indentation is screwed up.  I'm not sure quite how the logic
should flow.  Someone more familiar with this code should
verify this.

Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c

index 7453ec5..efc61a4 100644 (file)
@@ -3229,7 +3229,7 @@ static void commit_planes_for_stream(struct dc *dc,
                                odm_pipe->ttu_regs.min_ttu_vblank = MAX_TTU;
        }
 
-       if ((update_type != UPDATE_TYPE_FAST) && stream->update_flags.bits.dsc_changed)
+       if ((update_type != UPDATE_TYPE_FAST) && stream->update_flags.bits.dsc_changed) {
                if (top_pipe_to_program &&
                        top_pipe_to_program->stream_res.tg->funcs->lock_doublebuffer_enable) {
                        if (should_use_dmub_lock(stream->link)) {
@@ -3247,6 +3247,7 @@ static void commit_planes_for_stream(struct dc *dc,
                                top_pipe_to_program->stream_res.tg->funcs->lock_doublebuffer_enable(
                                                top_pipe_to_program->stream_res.tg);
                }
+       }
 
        if (should_lock_all_pipes && dc->hwss.interdependent_update_lock) {
                if (dc->hwss.subvp_pipe_control_lock)
@@ -3455,27 +3456,27 @@ static void commit_planes_for_stream(struct dc *dc,
 
        }
 
-               if (update_type != UPDATE_TYPE_FAST)
-                       if (dc->hwss.commit_subvp_config)
-                               dc->hwss.commit_subvp_config(dc, context);
+       if (update_type != UPDATE_TYPE_FAST)
+               if (dc->hwss.commit_subvp_config)
+                       dc->hwss.commit_subvp_config(dc, context);
 
-               if (should_lock_all_pipes && dc->hwss.interdependent_update_lock) {
-                       dc->hwss.interdependent_update_lock(dc, context, false);
-               } else {
-                       dc->hwss.pipe_control_lock(dc, top_pipe_to_program, false);
-               }
+       if (should_lock_all_pipes && dc->hwss.interdependent_update_lock) {
+               dc->hwss.interdependent_update_lock(dc, context, false);
+       } else {
+               dc->hwss.pipe_control_lock(dc, top_pipe_to_program, false);
+       }
 
-               if ((update_type != UPDATE_TYPE_FAST) && stream->update_flags.bits.dsc_changed)
-                       if (top_pipe_to_program->stream_res.tg->funcs->lock_doublebuffer_enable) {
-                               top_pipe_to_program->stream_res.tg->funcs->wait_for_state(
-                                       top_pipe_to_program->stream_res.tg,
-                                       CRTC_STATE_VACTIVE);
-                               top_pipe_to_program->stream_res.tg->funcs->wait_for_state(
-                                       top_pipe_to_program->stream_res.tg,
-                                       CRTC_STATE_VBLANK);
-                               top_pipe_to_program->stream_res.tg->funcs->wait_for_state(
-                                       top_pipe_to_program->stream_res.tg,
-                                       CRTC_STATE_VACTIVE);
+       if ((update_type != UPDATE_TYPE_FAST) && stream->update_flags.bits.dsc_changed) {
+               if (top_pipe_to_program->stream_res.tg->funcs->lock_doublebuffer_enable) {
+                       top_pipe_to_program->stream_res.tg->funcs->wait_for_state(
+                               top_pipe_to_program->stream_res.tg,
+                               CRTC_STATE_VACTIVE);
+                       top_pipe_to_program->stream_res.tg->funcs->wait_for_state(
+                               top_pipe_to_program->stream_res.tg,
+                               CRTC_STATE_VBLANK);
+                       top_pipe_to_program->stream_res.tg->funcs->wait_for_state(
+                               top_pipe_to_program->stream_res.tg,
+                               CRTC_STATE_VACTIVE);
 
                        if (stream && should_use_dmub_lock(stream->link)) {
                                union dmub_hw_lock_flags hw_locks = { 0 };
@@ -3492,8 +3493,9 @@ static void commit_planes_for_stream(struct dc *dc,
                                top_pipe_to_program->stream_res.tg->funcs->lock_doublebuffer_disable(
                                        top_pipe_to_program->stream_res.tg);
                }
+       }
 
-       if (update_type != UPDATE_TYPE_FAST)
+       if (update_type != UPDATE_TYPE_FAST) {
                dc->hwss.post_unlock_program_front_end(dc, context);
 
                /* Since phantom pipe programming is moved to post_unlock_program_front_end,
@@ -3506,6 +3508,7 @@ static void commit_planes_for_stream(struct dc *dc,
                        if (dc->hwss.subvp_pipe_control_lock)
                                dc->hwss.subvp_pipe_control_lock(dc, context, false, should_lock_all_pipes, top_pipe_to_program, subvp_prev_use);
                }
+       }
 
        // Fire manual trigger only when bottom plane is flipped
        for (j = 0; j < dc->res_pool->pipe_count; j++) {