diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4358-drm-amd-display-to-synchronize-the-hubp-and-dpp-prog.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/4358-drm-amd-display-to-synchronize-the-hubp-and-dpp-prog.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4358-drm-amd-display-to-synchronize-the-hubp-and-dpp-prog.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4358-drm-amd-display-to-synchronize-the-hubp-and-dpp-prog.patch new file mode 100644 index 00000000..8424dfa1 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4358-drm-amd-display-to-synchronize-the-hubp-and-dpp-prog.patch @@ -0,0 +1,72 @@ +From 4c8f4ced643046fc074fe70ff45f8b9d95e88d1c Mon Sep 17 00:00:00 2001 +From: Martin Tsai <Martin.Tsai@amd.com> +Date: Tue, 17 Apr 2018 17:20:06 -0400 +Subject: [PATCH 4358/5725] drm/amd/display: to synchronize the hubp and dpp + programming in cursor control + +Signed-off-by: Martin Tsai <Martin.Tsai@amd.com> +Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> +Acked-by: Harry Wentland <harry.wentland@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +index 3b2ddbd..3732a1d 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +@@ -178,6 +178,7 @@ bool dc_stream_set_cursor_attributes( + int i; + struct dc *core_dc; + struct resource_context *res_ctx; ++ struct pipe_ctx *pipe_to_program = NULL; + + if (NULL == stream) { + dm_error("DC: dc_stream is NULL!\n"); +@@ -205,9 +206,17 @@ bool dc_stream_set_cursor_attributes( + if (pipe_ctx->top_pipe && pipe_ctx->plane_state != pipe_ctx->top_pipe->plane_state) + continue; + ++ if (!pipe_to_program) { ++ pipe_to_program = pipe_ctx; ++ core_dc->hwss.pipe_control_lock(core_dc, pipe_to_program, true); ++ } + + core_dc->hwss.set_cursor_attribute(pipe_ctx); + } ++ ++ if (pipe_to_program) ++ core_dc->hwss.pipe_control_lock(core_dc, pipe_to_program, false); ++ + return true; + } + +@@ -218,6 +227,7 @@ bool dc_stream_set_cursor_position( + int i; + struct dc *core_dc; + struct resource_context *res_ctx; ++ struct pipe_ctx *pipe_to_program = NULL; + + if (NULL == stream) { + dm_error("DC: dc_stream is NULL!\n"); +@@ -243,9 +253,17 @@ bool dc_stream_set_cursor_position( + !pipe_ctx->plane_res.ipp) + continue; + ++ if (!pipe_to_program) { ++ pipe_to_program = pipe_ctx; ++ core_dc->hwss.pipe_control_lock(core_dc, pipe_to_program, true); ++ } ++ + core_dc->hwss.set_cursor_position(pipe_ctx); + } + ++ if (pipe_to_program) ++ core_dc->hwss.pipe_control_lock(core_dc, pipe_to_program, false); ++ + return true; + } + +-- +2.7.4 + |