drm/amd/display: add null checks and set update flags for DCN2
authorDmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Mon, 8 Apr 2019 18:56:29 +0000 (14:56 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Sat, 22 Jun 2019 14:34:12 +0000 (09:34 -0500)
* add plane state null checks
* add and set update surface flags

Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Reviewed-by: Eric Bernstein <Eric.Bernstein@amd.com>
Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.h
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c

index 867a84c..8bf3433 100644 (file)
@@ -1427,6 +1427,9 @@ static enum surface_update_type det_surface_update(const struct dc *dc,
 
        update_flags->raw = 0; // Reset all flags
 
+       if (u->flip_addr)
+               update_flags->bits.addr_update = 1;
+
        if (!is_surface_in_context(context, u->surface)) {
                update_flags->bits.new_plane = 1;
                return UPDATE_TYPE_FULL;
index ea56f15..f9b0ea7 100644 (file)
@@ -492,7 +492,7 @@ static void dcn20_plane_atomic_disable(struct dc *dc, struct pipe_ctx *pipe_ctx)
 }
 
 
-static void dcn20_disable_plane(struct dc *dc, struct pipe_ctx *pipe_ctx)
+void dcn20_disable_plane(struct dc *dc, struct pipe_ctx *pipe_ctx)
 {
        DC_LOGGER_INIT(dc->ctx->logger);
 
@@ -501,8 +501,6 @@ static void dcn20_disable_plane(struct dc *dc, struct pipe_ctx *pipe_ctx)
 
        dcn20_plane_atomic_disable(dc, pipe_ctx);
 
-       //apply_DEGVIDCN10_253_wa(dc);
-
        DC_LOG_DC("Power down front end %d\n",
                                        pipe_ctx->pipe_idx);
 }
@@ -1092,7 +1090,7 @@ static void dcn20_power_on_plane(
        }
 }
 
-static void dcn20_enable_plane(
+void dcn20_enable_plane(
        struct dc *dc,
        struct pipe_ctx *pipe_ctx,
        struct dc_state *context)
@@ -1167,7 +1165,7 @@ static void dcn20_enable_plane(
 }
 
 
-void dcn20_program_pipe(
+static void dcn20_program_pipe(
                struct dc *dc,
                struct pipe_ctx *pipe_ctx,
                struct dc_state *context)
index 78a6477..2b04094 100644 (file)
@@ -89,7 +89,15 @@ void dcn20_pipe_control_lock_global(
                struct pipe_ctx *pipe,
                bool lock);
 void dcn20_setup_gsl_group_as_lock(const struct dc *dc,
-                                 struct pipe_ctx *pipe_ctx,
-                                 bool enable);
-
+                               struct pipe_ctx *pipe_ctx,
+                               bool enable);
+void dcn20_pipe_control_lock(
+       struct dc *dc,
+       struct pipe_ctx *pipe,
+       bool lock);
+void dcn20_disable_plane(struct dc *dc, struct pipe_ctx *pipe_ctx);
+void dcn20_enable_plane(
+       struct dc *dc,
+       struct pipe_ctx *pipe_ctx,
+       struct dc_state *context);
 #endif /* __DC_HWSS_DCN20_H__ */
index ca5a779..e7a8a13 100644 (file)
@@ -2340,7 +2340,6 @@ bool dcn20_validate_bandwidth(struct dc *dc, struct dc_state *context,
                context->bw_ctx.dml.funcs.rq_dlg_get_rq_reg(&context->bw_ctx.dml,
                                &context->res_ctx.pipe_ctx[i].rq_regs,
                                pipes[pipe_idx].pipe);
-
                pipe_idx++;
        }