aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_connectors.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2011-06-13 17:13:33 -0400
committerDave Airlie <airlied@redhat.com>2011-06-16 19:28:02 -0400
commitd629a3ceb4fc1ab5aab737b964100d114aba1173 (patch)
tree9bf07b4c4e2552b070283a347fb6c314c813dffa /drivers/gpu/drm/radeon/radeon_connectors.c
parent7ec478f835a391d27491493ebfd91f2bed98dbd9 (diff)
drm/radeon/kms: add support for load detection on dp bridges
dp to vga bridges for example. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_connectors.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_connectors.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index c04e18ee8a87..dc7852b3c5ca 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -1235,6 +1235,16 @@ radeon_dp_detect(struct drm_connector *connector, bool force)
1235 ret = connector_status_connected; 1235 ret = connector_status_connected;
1236 } 1236 }
1237 } 1237 }
1238
1239 if ((ret == connector_status_disconnected) &&
1240 radeon_connector->dac_load_detect) {
1241 struct drm_encoder *encoder = radeon_best_single_encoder(connector);
1242 struct drm_encoder_helper_funcs *encoder_funcs;
1243 if (encoder) {
1244 encoder_funcs = encoder->helper_private;
1245 ret = encoder_funcs->detect(encoder, connector);
1246 }
1247 }
1238 } 1248 }
1239 1249
1240 radeon_connector_update_scratch_regs(connector, ret); 1250 radeon_connector_update_scratch_regs(connector, ret);
@@ -1408,6 +1418,10 @@ radeon_add_atom_connector(struct drm_device *dev,
1408 default: 1418 default:
1409 connector->interlace_allowed = true; 1419 connector->interlace_allowed = true;
1410 connector->doublescan_allowed = true; 1420 connector->doublescan_allowed = true;
1421 radeon_connector->dac_load_detect = true;
1422 drm_connector_attach_property(&radeon_connector->base,
1423 rdev->mode_info.load_detect_property,
1424 1);
1411 break; 1425 break;
1412 case DRM_MODE_CONNECTOR_DVII: 1426 case DRM_MODE_CONNECTOR_DVII:
1413 case DRM_MODE_CONNECTOR_DVID: 1427 case DRM_MODE_CONNECTOR_DVID:
@@ -1429,6 +1443,12 @@ radeon_add_atom_connector(struct drm_device *dev,
1429 connector->doublescan_allowed = true; 1443 connector->doublescan_allowed = true;
1430 else 1444 else
1431 connector->doublescan_allowed = false; 1445 connector->doublescan_allowed = false;
1446 if (connector_type == DRM_MODE_CONNECTOR_DVII) {
1447 radeon_connector->dac_load_detect = true;
1448 drm_connector_attach_property(&radeon_connector->base,
1449 rdev->mode_info.load_detect_property,
1450 1);
1451 }
1432 break; 1452 break;
1433 case DRM_MODE_CONNECTOR_LVDS: 1453 case DRM_MODE_CONNECTOR_LVDS:
1434 case DRM_MODE_CONNECTOR_eDP: 1454 case DRM_MODE_CONNECTOR_eDP: