drm/amd/display: Handle virtual signal type in disable_link()
authorMartin Tsai <martin.tsai@amd.com>
Thu, 22 Aug 2019 02:02:13 +0000 (10:02 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 17 Sep 2019 13:06:54 +0000 (08:06 -0500)
[Why]
The new implementation changed the behavior to allow process setMode
to DAL when DAL returns empty mode query for unplugged display.
This will trigger additional disable_link().
When unplug HDMI from MST dock, driver will update stream->signal to
"Virtual". disable_link() will call disable_output() if the signal type
is not DP and induce other displays on MST dock show black screen.

[How]
Don't need to process disable_output() if the signal type is virtual.

Signed-off-by: Martin Tsai <martin.tsai@amd.com>
Reviewed-by: Charlene Liu <Charlene.Liu@amd.com>
Acked-by: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_link.c

index 40fe54c..15b1498 100644 (file)
@@ -2168,8 +2168,10 @@ static void disable_link(struct dc_link *link, enum signal_type signal)
                        dp_set_fec_ready(link, false);
                }
 #endif
-       } else
-               link->link_enc->funcs->disable_output(link->link_enc, signal);
+       } else {
+               if (signal != SIGNAL_TYPE_VIRTUAL)
+                       link->link_enc->funcs->disable_output(link->link_enc, signal);
+       }
 
        if (signal == SIGNAL_TYPE_DISPLAY_PORT_MST) {
                /* MST disable link only when no stream use the link */