Commit 4a897de1 authored by Sung Joon Kim's avatar Sung Joon Kim Committed by Alex Deucher

drm/amd/display: disable HPD SW timer for passive dongle type 1 only

[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: default avatarCharlene Liu <Charlene.Liu@amd.com>
Acked-by: default avatarAlan Liu <HaoPing.Liu@amd.com>
Signed-off-by: default avatarSung Joon Kim <sungjoon.kim@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 76a52f36
...@@ -731,6 +731,7 @@ static bool detect_dp(struct dc_link *link, ...@@ -731,6 +731,7 @@ static bool detect_dp(struct dc_link *link,
sink_caps, sink_caps,
audio_support); audio_support);
link->dpcd_caps.dongle_type = sink_caps->dongle_type; 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; link->dpcd_caps.dpcd_rev.raw = 0;
} }
......
...@@ -493,6 +493,7 @@ void dal_ddc_service_i2c_query_dp_dual_mode_adaptor( ...@@ -493,6 +493,7 @@ void dal_ddc_service_i2c_query_dp_dual_mode_adaptor(
sink_cap->max_hdmi_pixel_clock = sink_cap->max_hdmi_pixel_clock =
max_tmds_clk * 1000; max_tmds_clk * 1000;
} }
sink_cap->is_dongle_type_one = false;
} else { } else {
if (is_valid_hdmi_signature == true) { if (is_valid_hdmi_signature == true) {
...@@ -510,6 +511,7 @@ void dal_ddc_service_i2c_query_dp_dual_mode_adaptor( ...@@ -510,6 +511,7 @@ void dal_ddc_service_i2c_query_dp_dual_mode_adaptor(
"Type 1 DP-HDMI passive dongle (no signature) %dMhz: ", "Type 1 DP-HDMI passive dongle (no signature) %dMhz: ",
sink_cap->max_hdmi_pixel_clock / 1000); sink_cap->max_hdmi_pixel_clock / 1000);
} }
sink_cap->is_dongle_type_one = true;
} }
return; return;
......
...@@ -1206,6 +1206,7 @@ struct dpcd_caps { ...@@ -1206,6 +1206,7 @@ struct dpcd_caps {
/* dongle type (DP converter, CV smart dongle) */ /* dongle type (DP converter, CV smart dongle) */
enum display_dongle_type dongle_type; enum display_dongle_type dongle_type;
bool is_dongle_type_one;
/* branch device or sink device */ /* branch device or sink device */
bool is_branch_dev; bool is_branch_dev;
/* Dongle's downstream count. */ /* Dongle's downstream count. */
......
...@@ -64,6 +64,7 @@ enum ddc_service_type { ...@@ -64,6 +64,7 @@ enum ddc_service_type {
struct display_sink_capability { struct display_sink_capability {
/* dongle type (DP converter, CV smart dongle) */ /* dongle type (DP converter, CV smart dongle) */
enum display_dongle_type dongle_type; enum display_dongle_type dongle_type;
bool is_dongle_type_one;
/********************************************************** /**********************************************************
capabilities going INTO SINK DEVICE (stream capabilities) capabilities going INTO SINK DEVICE (stream capabilities)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment