aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2810-drm-amd-display-Miss-register-MST-encoder-cbs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2810-drm-amd-display-Miss-register-MST-encoder-cbs.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2810-drm-amd-display-Miss-register-MST-encoder-cbs.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2810-drm-amd-display-Miss-register-MST-encoder-cbs.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2810-drm-amd-display-Miss-register-MST-encoder-cbs.patch
new file mode 100644
index 00000000..b9321f95
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2810-drm-amd-display-Miss-register-MST-encoder-cbs.patch
@@ -0,0 +1,52 @@
+From 0426bf903421aee4f502c4cfe699c09d826fccab Mon Sep 17 00:00:00 2001
+From: "Jerry (Fangzhi) Zuo" <Jerry.Zuo@amd.com>
+Date: Fri, 3 Nov 2017 14:19:06 -0400
+Subject: [PATCH 2810/4131] drm/amd/display: Miss register MST encoder cbs
+
+It is to fix: MST display failed to resume from S3
+
+Need to properly setup MST encoder cbs. Otherwise drm_device
+encoder doesn't register its own cbs, leading to NULL
+encoder->funcs in drm_atomic_helper_resume().
+
+Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>
+Reviewed-by: Roman Li <Roman.Li@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+index 5088115..399be00 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+@@ -247,6 +247,16 @@ static const struct drm_connector_helper_funcs dm_dp_mst_connector_helper_funcs
+ .best_encoder = dm_mst_best_encoder,
+ };
+
++static void amdgpu_dm_encoder_destroy(struct drm_encoder *encoder)
++{
++ drm_encoder_cleanup(encoder);
++ kfree(encoder);
++}
++
++static const struct drm_encoder_funcs amdgpu_dm_encoder_funcs = {
++ .destroy = amdgpu_dm_encoder_destroy,
++};
++
+ static struct amdgpu_encoder *
+ dm_dp_create_fake_mst_encoder(struct amdgpu_dm_connector *connector)
+ {
+@@ -270,7 +280,7 @@ dm_dp_create_fake_mst_encoder(struct amdgpu_dm_connector *connector)
+ drm_encoder_init(
+ dev,
+ &amdgpu_encoder->base,
+- NULL,
++ &amdgpu_dm_encoder_funcs,
+ DRM_MODE_ENCODER_DPMST,
+ NULL);
+
+--
+2.7.4
+