aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1214-drm-amd-display-Apply-fake-sink-back-to-MST-sequence.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1214-drm-amd-display-Apply-fake-sink-back-to-MST-sequence.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1214-drm-amd-display-Apply-fake-sink-back-to-MST-sequence.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1214-drm-amd-display-Apply-fake-sink-back-to-MST-sequence.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1214-drm-amd-display-Apply-fake-sink-back-to-MST-sequence.patch
new file mode 100644
index 00000000..619f973f
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1214-drm-amd-display-Apply-fake-sink-back-to-MST-sequence.patch
@@ -0,0 +1,59 @@
+From 4ebb45112384673765e3411f40097dcccc4a181f Mon Sep 17 00:00:00 2001
+From: "Jerry (Fangzhi) Zuo" <Jerry.Zuo@amd.com>
+Date: Wed, 23 Jan 2019 11:41:18 -0500
+Subject: [PATCH 1214/2940] drm/amd/display: Apply fake sink back to MST
+ sequence
+
+[Why]
+It fixes the failure to create stream for sink in the scenario
+when hotplug SST and MST in sequence, and disconnect MST.
+
+[How]
+Add the fake sink back after the majority of MST rework is done.
+
+Change-Id: I0e4be01f78e337ab6f9f1813b091c081ebdd54b3
+Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>
+Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
+Acked-by: Tony Cheng <Tony.Cheng@amd.com>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 +++-----
+ .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 3 +++
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+index f072a996faee..234ecae1ae83 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -3061,11 +3061,9 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector,
+ drm_connector = &aconnector->base;
+
+ if (!aconnector->dc_sink) {
+- if (!aconnector->mst_port) {
+- sink = create_fake_sink(aconnector);
+- if (!sink)
+- return stream;
+- }
++ sink = create_fake_sink(aconnector);
++ if (!sink)
++ return stream;
+ } else {
+ sink = aconnector->dc_sink;
+ }
+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 60da1222afaa..73f8e8fa6edb 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
+@@ -173,6 +173,9 @@ static int dm_dp_mst_get_modes(struct drm_connector *connector)
+ aconnector->edid = edid;
+ }
+
++ if (aconnector->dc_sink && aconnector->dc_sink->sink_signal == SIGNAL_TYPE_VIRTUAL)
++ dc_sink_release(aconnector->dc_sink);
++
+ if (!aconnector->dc_sink) {
+ struct dc_sink *dc_sink;
+ struct dc_sink_init_data init_params = {
+--
+2.17.1
+