Merge tag 'amd-drm-next-5.14-2021-05-19' of https://gitlab.freedesktop.org/agd5f...
[sfrench/cifs-2.6.git] / drivers / gpu / drm / amd / display / amdgpu_dm / amdgpu_dm_mst_types.c
index 9b221db526dc924c11ddf901e001d548e669ea5b..e6b2eec9fb59ac5cdbc0b5392404ad17b73399bd 100644 (file)
@@ -278,6 +278,9 @@ dm_dp_mst_detect(struct drm_connector *connector,
        struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
        struct amdgpu_dm_connector *master = aconnector->mst_port;
 
+       if (drm_connector_is_unregistered(connector))
+               return connector_status_disconnected;
+
        return drm_dp_mst_detect_port(connector, ctx, &master->mst_mgr,
                                      aconnector->port);
 }
@@ -434,10 +437,13 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
                                       struct amdgpu_dm_connector *aconnector,
                                       int link_index)
 {
+       struct dc_link_settings max_link_enc_cap = {0};
+
        aconnector->dm_dp_aux.aux.name =
                kasprintf(GFP_KERNEL, "AMDGPU DM aux hw bus %d",
                          link_index);
        aconnector->dm_dp_aux.aux.transfer = dm_dp_aux_transfer;
+       aconnector->dm_dp_aux.aux.drm_dev = dm->ddev;
        aconnector->dm_dp_aux.ddc_service = aconnector->dc_link->ddc;
 
        drm_dp_aux_init(&aconnector->dm_dp_aux.aux);
@@ -447,6 +453,7 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
        if (aconnector->base.connector_type == DRM_MODE_CONNECTOR_eDP)
                return;
 
+       dc_link_dp_get_max_link_enc_cap(aconnector->dc_link, &max_link_enc_cap);
        aconnector->mst_mgr.cbs = &dm_mst_cbs;
        drm_dp_mst_topology_mgr_init(
                &aconnector->mst_mgr,
@@ -454,6 +461,8 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
                &aconnector->dm_dp_aux.aux,
                16,
                4,
+               (u8)max_link_enc_cap.lane_count,
+               (u8)max_link_enc_cap.link_rate,
                aconnector->connector_id);
 
        drm_connector_attach_dp_subconnector_property(&aconnector->base);