drm/amd/display: disable HPD SW timer for passive dongle type 1 only
authorSung Joon Kim <sungjoon.kim@amd.com>
Thu, 24 Feb 2022 19:58:52 +0000 (14:58 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 15 Mar 2022 18:25:15 +0000 (14:25 -0400)
[why]
Need to provide this workaround
only for type 1 passive dongle

[how]
Detect if dongle is type 1 or 2.
And use it to determine if w/a is needed.

Reviewed-by: Charlene Liu <Charlene.Liu@amd.com>
Acked-by: Alan Liu <HaoPing.Liu@amd.com>
Signed-off-by: Sung Joon Kim <sungjoon.kim@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_link.c
drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c
drivers/gpu/drm/amd/display/dc/dc.h
drivers/gpu/drm/amd/display/include/ddc_service_types.h

index 1951a92..b3ca330 100644 (file)
@@ -731,6 +731,7 @@ static bool detect_dp(struct dc_link *link,
                                                                sink_caps,
                                                                audio_support);
                link->dpcd_caps.dongle_type = sink_caps->dongle_type;
+               link->dpcd_caps.is_dongle_type_one = sink_caps->is_dongle_type_one;
                link->dpcd_caps.dpcd_rev.raw = 0;
        }
 
index f1bbd91..1d48637 100644 (file)
@@ -493,6 +493,7 @@ void dal_ddc_service_i2c_query_dp_dual_mode_adaptor(
                        sink_cap->max_hdmi_pixel_clock =
                                max_tmds_clk * 1000;
                }
+               sink_cap->is_dongle_type_one = false;
 
        } else {
                if (is_valid_hdmi_signature == true) {
@@ -510,6 +511,7 @@ void dal_ddc_service_i2c_query_dp_dual_mode_adaptor(
                                        "Type 1 DP-HDMI passive dongle (no signature) %dMhz: ",
                                        sink_cap->max_hdmi_pixel_clock / 1000);
                }
+               sink_cap->is_dongle_type_one = true;
        }
 
        return;
index 333f4a4..a57ac08 100644 (file)
@@ -1206,6 +1206,7 @@ struct dpcd_caps {
 
        /* dongle type (DP converter, CV smart dongle) */
        enum display_dongle_type dongle_type;
+       bool is_dongle_type_one;
        /* branch device or sink device */
        bool is_branch_dev;
        /* Dongle's downstream count. */
index f561e21..f883d87 100644 (file)
@@ -64,6 +64,7 @@ enum ddc_service_type {
 struct display_sink_capability {
        /* dongle type (DP converter, CV smart dongle) */
        enum display_dongle_type dongle_type;
+       bool is_dongle_type_one;
 
        /**********************************************************
         capabilities going INTO SINK DEVICE (stream capabilities)