aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2011-06-13 17:13:35 -0400
committerDave Airlie <airlied@redhat.com>2011-06-16 19:28:07 -0400
commitf89931f345f26c43b109191fbfcfa506781111c0 (patch)
tree66015ab6cb58d2e3aa98772383252689f420b75b
parentd6c669528a5367aaa5f4e712acef990b7148aee8 (diff)
drm/radeon/kms: fix handling of DP to LVDS bridges
They need to be treated like eDP rather than DP. May fix: https://bugzilla.kernel.org/show_bug.cgi?id=34822 Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--drivers/gpu/drm/radeon/radeon_connectors.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index 613e36f83b71..cbfca3a24fdf 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -1075,7 +1075,8 @@ static int radeon_dp_get_modes(struct drm_connector *connector)
1075 struct drm_encoder *encoder = radeon_best_single_encoder(connector); 1075 struct drm_encoder *encoder = radeon_best_single_encoder(connector);
1076 int ret; 1076 int ret;
1077 1077
1078 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { 1078 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) ||
1079 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) {
1079 struct drm_display_mode *mode; 1080 struct drm_display_mode *mode;
1080 1081
1081 if (!radeon_dig_connector->edp_on) 1082 if (!radeon_dig_connector->edp_on)
@@ -1208,7 +1209,8 @@ radeon_dp_detect(struct drm_connector *connector, bool force)
1208 radeon_connector->edid = NULL; 1209 radeon_connector->edid = NULL;
1209 } 1210 }
1210 1211
1211 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { 1212 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) ||
1213 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) {
1212 if (encoder) { 1214 if (encoder) {
1213 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 1215 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1214 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; 1216 struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
@@ -1271,7 +1273,8 @@ static int radeon_dp_mode_valid(struct drm_connector *connector,
1271 1273
1272 /* XXX check mode bandwidth */ 1274 /* XXX check mode bandwidth */
1273 1275
1274 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { 1276 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) ||
1277 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) {
1275 struct drm_encoder *encoder = radeon_best_single_encoder(connector); 1278 struct drm_encoder *encoder = radeon_best_single_encoder(connector);
1276 1279
1277 if ((mode->hdisplay < 320) || (mode->vdisplay < 240)) 1280 if ((mode->hdisplay < 320) || (mode->vdisplay < 240))
@@ -1281,7 +1284,7 @@ static int radeon_dp_mode_valid(struct drm_connector *connector,
1281 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 1284 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1282 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; 1285 struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
1283 1286
1284 /* AVIVO hardware supports downscaling modes larger than the panel 1287 /* AVIVO hardware supports downscaling modes larger than the panel
1285 * to the panel size, but I'm not sure this is desirable. 1288 * to the panel size, but I'm not sure this is desirable.
1286 */ 1289 */
1287 if ((mode->hdisplay > native_mode->hdisplay) || 1290 if ((mode->hdisplay > native_mode->hdisplay) ||