drm/radeon: fix dp link rate selection (v2)
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / radeon / radeon_dp_mst.c
index 744f5c49c66463c56187dbc2130a77539a264130..b431c9c2b247b193b62292f77852c52a989050f1 100644 (file)
@@ -525,11 +525,17 @@ static bool radeon_mst_mode_fixup(struct drm_encoder *encoder,
        drm_mode_set_crtcinfo(adjusted_mode, 0);
        {
          struct radeon_connector_atom_dig *dig_connector;
+         int ret;
 
          dig_connector = mst_enc->connector->con_priv;
-         dig_connector->dp_lane_count = drm_dp_max_lane_count(dig_connector->dpcd);
-         dig_connector->dp_clock = radeon_dp_get_max_link_rate(&mst_enc->connector->base,
-                                                               dig_connector->dpcd);
+         ret = radeon_dp_get_dp_link_config(&mst_enc->connector->base,
+                                            dig_connector->dpcd, adjusted_mode->clock,
+                                            &dig_connector->dp_lane_count,
+                                            &dig_connector->dp_clock);
+         if (ret) {
+                 dig_connector->dp_lane_count = 0;
+                 dig_connector->dp_clock = 0;
+         }
          DRM_DEBUG_KMS("dig clock %p %d %d\n", dig_connector,
                        dig_connector->dp_lane_count, dig_connector->dp_clock);
        }