drm/radeon/mst: fix regression in lane/link handling.
authorDave Airlie <airlied@redhat.com>
Mon, 21 Mar 2016 23:38:18 +0000 (09:38 +1000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Sep 2016 06:27:47 +0000 (08:27 +0200)
[ Upstream commit b36f7d26a7fdc0b07b1217368ee09bb8560269f8 ]

The function this used changed in
    092c96a8ab9d1bd60ada2ed385cc364ce084180e
    drm/radeon: fix dp link rate selection (v2)

However for MST we should just always train to the
max link/rate. Though we probably need to limit this
for future hw, in theory radeon won't support it.

This fixes my 30" monitor with MST enabled.

Cc: stable@vger.kernel.org # v4.4
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/radeon/radeon_dp_mst.c

index b431c9c2b247b193b62292f77852c52a989050f1..6dd39bdedb97e42a29688b102eff524eb85eca38 100644 (file)
@@ -525,17 +525,9 @@ 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;
-         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;
-         }
+         dig_connector->dp_lane_count = drm_dp_max_lane_count(dig_connector->dpcd);
+         dig_connector->dp_clock = drm_dp_max_link_rate(dig_connector->dpcd);
          DRM_DEBUG_KMS("dig clock %p %d %d\n", dig_connector,
                        dig_connector->dp_lane_count, dig_connector->dp_clock);
        }