]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Minor cleanup for DCN401 cursor related code
authorSridevi Arvindekar <sarvinde@amd.com>
Thu, 30 May 2024 19:23:15 +0000 (15:23 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 14 Jun 2024 20:17:17 +0000 (16:17 -0400)
Move pipe_ctx variables to start of the function and add a helpful comment

Co-authored-by: Sridevi Arvindekar <sarvinde@amd.com>
Reviewed-by: Ilya Bakoulin <ilya.bakoulin@amd.com>
Acked-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
Signed-off-by: Sridevi Arvindekar <sarvinde@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/hwss/dcn20/dcn20_hwseq.c
drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c

index 0d58c9d439c6f57102e267d9981e4e6884689f7d..d60941495fd386bef18b744ad72ee127ecaf7f1b 100644 (file)
@@ -2800,6 +2800,11 @@ void dcn20_reset_back_end_for_pipe(
        if (i == dc->res_pool->pipe_count)
                return;
 
+/*
+ * In case of a dangling plane, setting this to NULL unconditionally
+ * causes failures during reset hw ctx where, if stream is NULL,
+ * it is expected that the pipe_ctx pointers to pipes and plane are NULL.
+ */
        pipe_ctx->stream = NULL;
        DC_LOG_DEBUG("Reset back end for pipe %d, tg:%d\n",
                                        pipe_ctx->pipe_idx, pipe_ctx->stream_res.tg->inst);
index 776ec8963cabb1de217c3efd7a3e4f138b33f3ac..fe0bb6147e3697309b567b2fc37d60c89840a28a 100644 (file)
@@ -1099,6 +1099,8 @@ void dcn401_set_cursor_position(struct pipe_ctx *pipe_ctx)
        int prev_odm_offset = 0;
        int next_odm_width = 0;
        int next_odm_offset = 0;
+       struct pipe_ctx *next_odm_pipe = NULL;
+       struct pipe_ctx *prev_odm_pipe = NULL;
 
        int x_pos = pos_cpy.x;
        int y_pos = pos_cpy.y;
@@ -1110,6 +1112,7 @@ void dcn401_set_cursor_position(struct pipe_ctx *pipe_ctx)
                }
        }
 
+
        /**
         * DCN4 moved cursor composition after Scaler, so in HW it is in
         * recout space and for HW Cursor position programming need to
@@ -1157,8 +1160,8 @@ void dcn401_set_cursor_position(struct pipe_ctx *pipe_ctx)
         * next/prev_odm_offset is to account for scaled modes that have underscan
         */
        if (odm_combine_on) {
-               struct pipe_ctx *next_odm_pipe = pipe_ctx->next_odm_pipe;
-               struct pipe_ctx *prev_odm_pipe = pipe_ctx->prev_odm_pipe;
+               next_odm_pipe = pipe_ctx->next_odm_pipe;
+               prev_odm_pipe = pipe_ctx->prev_odm_pipe;
 
                while (next_odm_pipe != NULL) {
                        next_odm_width += next_odm_pipe->plane_res.scl_data.recout.width;