drm/amd/display: Apply fake sink back to MST sequence
authorJerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>
Wed, 23 Jan 2019 16:41:18 +0000 (11:41 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 6 Feb 2019 02:16:23 +0000 (21:16 -0500)
[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.

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>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c

index 06fc7c5..bcc906a 100644 (file)
@@ -2959,11 +2959,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;
        }
index 60da122..73f8e8f 100644 (file)
@@ -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 = {