diff options
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 47 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dc_link.h | 1 |
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 | ||
| 2188 | static 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 | |||
| 2188 | static void get_active_converter_info( | 2212 | static 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 | ||
