From: Lewis Huang <lewis.hu...@amd.com>

Add a flag to dc_debug_options to determine if a disconnected edp link
should be destroyed.

Change-Id: I49ccabe2cedc02d49fe3cd085710ea7459bca205
Signed-off-by: Lewis Huang <lewis.hu...@amd.com>
Reviewed-by: Yongqiang Sun <yongqiang....@amd.com>
Acked-by: Leo Li <sunpeng...@amd.com>
---
 drivers/gpu/drm/amd/display/dc/core/dc.c | 20 ++++++++++++++++----
 drivers/gpu/drm/amd/display/dc/dc.h      |  1 +
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c 
b/drivers/gpu/drm/amd/display/dc/core/dc.c
index c445de4d272e..dbfc530bcf68 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -178,13 +178,25 @@ static bool create_links(
                link = link_create(&link_init_params);
 
                if (link) {
-                       if (dc->config.edp_not_connected &&
-                                       link->connector_signal == 
SIGNAL_TYPE_EDP) {
-                               link_destroy(&link);
-                       } else {
+                       bool should_destory_link = false;
+
+                       if (link->connector_signal == SIGNAL_TYPE_EDP) {
+                               if (dc->config.edp_not_connected)
+                                       should_destory_link = true;
+                               else if (dc->debug.remove_disconnect_edp) {
+                                       enum dc_connection_type type;
+                                       dc_link_detect_sink(link, &type);
+                                       if (type == dc_connection_none)
+                                               should_destory_link = true;
+                               }
+                       }
+
+                       if (!should_destory_link) {
                                dc->links[dc->link_count] = link;
                                link->dc = dc;
                                ++dc->link_count;
+                       } else {
+                               link_destroy(&link);
                        }
                }
        }
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h 
b/drivers/gpu/drm/amd/display/dc/dc.h
index 6da0a6fe2973..c585e16bc9f1 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -378,6 +378,7 @@ struct dc_debug_options {
        bool scl_reset_length10;
        bool hdmi20_disable;
        bool skip_detection_link_training;
+       bool remove_disconnect_edp;
        unsigned int force_odm_combine; //bit vector based on otg inst
        unsigned int force_fclk_khz;
        bool disable_tri_buf;
-- 
2.22.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to