diff options
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.patch | 59 |
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 + |