aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0806-drm-amd-dal-Reset-unreference-clock-when-switching-s.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0806-drm-amd-dal-Reset-unreference-clock-when-switching-s.patch')
-rw-r--r--common/recipes-kernel/linux/files/0806-drm-amd-dal-Reset-unreference-clock-when-switching-s.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0806-drm-amd-dal-Reset-unreference-clock-when-switching-s.patch b/common/recipes-kernel/linux/files/0806-drm-amd-dal-Reset-unreference-clock-when-switching-s.patch
new file mode 100644
index 00000000..1dcf9861
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0806-drm-amd-dal-Reset-unreference-clock-when-switching-s.patch
@@ -0,0 +1,43 @@
+From 946650b1bc9918336e22eb81f7994fd4742ed1f1 Mon Sep 17 00:00:00 2001
+From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
+Date: Fri, 12 Feb 2016 11:42:41 -0500
+Subject: [PATCH 0806/1110] drm/amd/dal: Reset unreference clock when switching
+ streams.
+
+Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+---
+ drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c
+index 810f6d5..4e73ad1 100644
+--- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c
++++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c
+@@ -776,9 +776,13 @@ static enum dc_status apply_single_controller_ctx_to_hw(
+ /*
+ * only disable stream in case it was ever enabled
+ */
+- if (old_pipe_ctx->stream)
++ if (old_pipe_ctx->stream) {
+ core_link_disable_stream(old_pipe_ctx);
+
++ ASSERT(old_pipe_ctx->clock_source);
++ unreference_clock_source(&dc->current_context.res_ctx, old_pipe_ctx->clock_source);
++ }
++
+ /*TODO: AUTO check if timing changed*/
+ if (false == pipe_ctx->clock_source->funcs->program_pix_clk(
+ pipe_ctx->clock_source,
+@@ -1499,6 +1503,8 @@ static void reset_single_pipe_hw_ctx(
+ dc->hwss.enable_display_power_gating(
+ pipe_ctx->stream->ctx, pipe_ctx->pipe_idx, dcb,
+ PIPE_GATING_CONTROL_ENABLE);
++
++ pipe_ctx->stream = NULL;
+ }
+
+ static void reset_hw_ctx(
+--
+2.7.4
+