aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c47
-rw-r--r--drivers/gpu/drm/amd/display/dc/dc_link.h1
2 files changed, 27 insertions, 21 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
index 64a309a5e1c9..1ee544a32ebb 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
@@ -2185,6 +2185,30 @@ static int translate_dpcd_max_bpc(enum dpcd_downstream_port_max_bpc bpc)
2185 return -1; 2185 return -1;
2186} 2186}
2187 2187
2188static void read_dp_device_vendor_id(struct dc_link *link)
2189{
2190 struct dp_device_vendor_id dp_id;
2191
2192 /* read IEEE branch device id */
2193 core_link_read_dpcd(
2194 link,
2195 DP_BRANCH_OUI,
2196 (uint8_t *)&dp_id,
2197 sizeof(dp_id));
2198
2199 link->dpcd_caps.branch_dev_id =
2200 (dp_id.ieee_oui[0] << 16) +
2201 (dp_id.ieee_oui[1] << 8) +
2202 dp_id.ieee_oui[2];
2203
2204 memmove(
2205 link->dpcd_caps.branch_dev_name,
2206 dp_id.ieee_device_id,
2207 sizeof(dp_id.ieee_device_id));
2208}
2209
2210
2211
2188static void get_active_converter_info( 2212static void get_active_converter_info(
2189 uint8_t data, struct dc_link *link) 2213 uint8_t data, struct dc_link *link)
2190{ 2214{
@@ -2271,27 +2295,6 @@ static void get_active_converter_info(
2271 ddc_service_set_dongle_type(link->ddc, link->dpcd_caps.dongle_type); 2295 ddc_service_set_dongle_type(link->ddc, link->dpcd_caps.dongle_type);
2272 2296
2273 { 2297 {
2274 struct dp_device_vendor_id dp_id;
2275
2276 /* read IEEE branch device id */
2277 core_link_read_dpcd(
2278 link,
2279 DP_BRANCH_OUI,
2280 (uint8_t *)&dp_id,
2281 sizeof(dp_id));
2282
2283 link->dpcd_caps.branch_dev_id =
2284 (dp_id.ieee_oui[0] << 16) +
2285 (dp_id.ieee_oui[1] << 8) +
2286 dp_id.ieee_oui[2];
2287
2288 memmove(
2289 link->dpcd_caps.branch_dev_name,
2290 dp_id.ieee_device_id,
2291 sizeof(dp_id.ieee_device_id));
2292 }
2293
2294 {
2295 struct dp_sink_hw_fw_revision dp_hw_fw_revision; 2298 struct dp_sink_hw_fw_revision dp_hw_fw_revision;
2296 2299
2297 core_link_read_dpcd( 2300 core_link_read_dpcd(
@@ -2455,6 +2458,8 @@ static bool retrieve_link_cap(struct dc_link *link)
2455 ds_port.byte = dpcd_data[DP_DOWNSTREAMPORT_PRESENT - 2458 ds_port.byte = dpcd_data[DP_DOWNSTREAMPORT_PRESENT -
2456 DP_DPCD_REV]; 2459 DP_DPCD_REV];
2457 2460
2461 read_dp_device_vendor_id(link);
2462
2458 get_active_converter_info(ds_port.byte, link); 2463 get_active_converter_info(ds_port.byte, link);
2459 2464
2460 dp_wa_power_up_0010FA(link, dpcd_data, sizeof(dpcd_data)); 2465 dp_wa_power_up_0010FA(link, dpcd_data, sizeof(dpcd_data));
diff --git a/drivers/gpu/drm/amd/display/dc/dc_link.h b/drivers/gpu/drm/amd/display/dc/dc_link.h
index cc7ffac64c96..7b9429e30d82 100644
--- a/drivers/gpu/drm/amd/display/dc/dc_link.h
+++ b/drivers/gpu/drm/amd/display/dc/dc_link.h
@@ -120,6 +120,7 @@ struct dc_link {
120 /* MST record stream using this link */ 120 /* MST record stream using this link */
121 struct link_flags { 121 struct link_flags {
122 bool dp_keep_receiver_powered; 122 bool dp_keep_receiver_powered;
123 bool dp_skip_DID2;
123 } wa_flags; 124 } wa_flags;
124 struct link_mst_stream_allocation_table mst_stream_alloc_table; 125 struct link_mst_stream_allocation_table mst_stream_alloc_table;
125 126