aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4679-drm-amd-display-fix-invalid-function-table-override.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4679-drm-amd-display-fix-invalid-function-table-override.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4679-drm-amd-display-fix-invalid-function-table-override.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4679-drm-amd-display-fix-invalid-function-table-override.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4679-drm-amd-display-fix-invalid-function-table-override.patch
new file mode 100644
index 00000000..5aa95528
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4679-drm-amd-display-fix-invalid-function-table-override.patch
@@ -0,0 +1,73 @@
+From f5adcecec19eb742b92c3a24dac3d2672024b9fe Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Fri, 6 Jul 2018 13:46:05 +0200
+Subject: [PATCH 4679/5725] drm/amd/display: fix invalid function table
+ override
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Otherwise we try to program hardware with the wrong watermark functions
+when multiple DCE generations are installed in one system.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Harry Wentland <harry.wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Cc: stable@vger.kernel.org
+---
+ drivers/gpu/drm/amd/display/dc/dce/dce_mem_input.c | 27 ++++++++++++++++++++--
+ 1 file changed, 25 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_mem_input.c b/drivers/gpu/drm/amd/display/dc/dce/dce_mem_input.c
+index b235a75..bae7523 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce/dce_mem_input.c
++++ b/drivers/gpu/drm/amd/display/dc/dce/dce_mem_input.c
+@@ -741,6 +741,29 @@ static struct mem_input_funcs dce_mi_funcs = {
+ .mem_input_is_flip_pending = dce_mi_is_flip_pending
+ };
+
++static struct mem_input_funcs dce112_mi_funcs = {
++ .mem_input_program_display_marks = dce112_mi_program_display_marks,
++ .allocate_mem_input = dce_mi_allocate_dmif,
++ .free_mem_input = dce_mi_free_dmif,
++ .mem_input_program_surface_flip_and_addr =
++ dce_mi_program_surface_flip_and_addr,
++ .mem_input_program_pte_vm = dce_mi_program_pte_vm,
++ .mem_input_program_surface_config =
++ dce_mi_program_surface_config,
++ .mem_input_is_flip_pending = dce_mi_is_flip_pending
++};
++
++static struct mem_input_funcs dce120_mi_funcs = {
++ .mem_input_program_display_marks = dce120_mi_program_display_marks,
++ .allocate_mem_input = dce_mi_allocate_dmif,
++ .free_mem_input = dce_mi_free_dmif,
++ .mem_input_program_surface_flip_and_addr =
++ dce_mi_program_surface_flip_and_addr,
++ .mem_input_program_pte_vm = dce_mi_program_pte_vm,
++ .mem_input_program_surface_config =
++ dce_mi_program_surface_config,
++ .mem_input_is_flip_pending = dce_mi_is_flip_pending
++};
+
+ void dce_mem_input_construct(
+ struct dce_mem_input *dce_mi,
+@@ -769,7 +792,7 @@ void dce112_mem_input_construct(
+ const struct dce_mem_input_mask *mi_mask)
+ {
+ dce_mem_input_construct(dce_mi, ctx, inst, regs, mi_shift, mi_mask);
+- dce_mi->base.funcs->mem_input_program_display_marks = dce112_mi_program_display_marks;
++ dce_mi->base.funcs = &dce112_mi_funcs;
+ }
+
+ void dce120_mem_input_construct(
+@@ -781,5 +804,5 @@ void dce120_mem_input_construct(
+ const struct dce_mem_input_mask *mi_mask)
+ {
+ dce_mem_input_construct(dce_mi, ctx, inst, regs, mi_shift, mi_mask);
+- dce_mi->base.funcs->mem_input_program_display_marks = dce120_mi_program_display_marks;
++ dce_mi->base.funcs = &dce120_mi_funcs;
+ }
+--
+2.7.4
+