aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_encoders.c
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2011-10-31 08:58:47 -0400
committerDave Airlie <airlied@redhat.com>2011-11-01 12:04:39 -0400
commit1d33e1fc8dcce667a70387b666a8b6f60153d90f (patch)
tree83ce0cbf593323e00e3fcf2bdf83bdc1a4a2d5ab /drivers/gpu/drm/radeon/radeon_encoders.c
parent54bd5206bf1615eadee5b87c64252c6991d737dc (diff)
drm/radeon/kms: rework DP bridge checks
Return the encoder id rather than a boolean. This is needed for differentiate between multiple DP bridge chips. Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_encoders.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_encoders.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
index eb3f6dc6df83..9838865e223b 100644
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
@@ -266,7 +266,7 @@ struct drm_encoder *radeon_atom_get_external_encoder(struct drm_encoder *encoder
266 return NULL; 266 return NULL;
267} 267}
268 268
269bool radeon_encoder_is_dp_bridge(struct drm_encoder *encoder) 269u16 radeon_encoder_get_dp_bridge_encoder_id(struct drm_encoder *encoder)
270{ 270{
271 struct drm_encoder *other_encoder = radeon_atom_get_external_encoder(encoder); 271 struct drm_encoder *other_encoder = radeon_atom_get_external_encoder(encoder);
272 272
@@ -368,7 +368,7 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
368 368
369 if (ASIC_IS_DCE3(rdev) && 369 if (ASIC_IS_DCE3(rdev) &&
370 ((radeon_encoder->active_device & (ATOM_DEVICE_DFP_SUPPORT | ATOM_DEVICE_LCD_SUPPORT)) || 370 ((radeon_encoder->active_device & (ATOM_DEVICE_DFP_SUPPORT | ATOM_DEVICE_LCD_SUPPORT)) ||
371 radeon_encoder_is_dp_bridge(encoder))) { 371 (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE))) {
372 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); 372 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
373 radeon_dp_set_link_config(connector, mode); 373 radeon_dp_set_link_config(connector, mode);
374 } 374 }
@@ -658,7 +658,7 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
658 struct radeon_connector_atom_dig *dig_connector; 658 struct radeon_connector_atom_dig *dig_connector;
659 659
660 /* dp bridges are always DP */ 660 /* dp bridges are always DP */
661 if (radeon_encoder_is_dp_bridge(encoder)) 661 if (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE)
662 return ATOM_ENCODER_MODE_DP; 662 return ATOM_ENCODER_MODE_DP;
663 663
664 /* DVO is always DVO */ 664 /* DVO is always DVO */
@@ -1638,7 +1638,7 @@ atombios_set_encoder_crtc_source(struct drm_encoder *encoder)
1638 break; 1638 break;
1639 case 2: 1639 case 2:
1640 args.v2.ucCRTC = radeon_crtc->crtc_id; 1640 args.v2.ucCRTC = radeon_crtc->crtc_id;
1641 if (radeon_encoder_is_dp_bridge(encoder)) { 1641 if (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE) {
1642 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); 1642 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
1643 1643
1644 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) 1644 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)
@@ -2099,7 +2099,8 @@ static void radeon_atom_encoder_prepare(struct drm_encoder *encoder)
2099 2099
2100 if ((radeon_encoder->active_device & 2100 if ((radeon_encoder->active_device &
2101 (ATOM_DEVICE_DFP_SUPPORT | ATOM_DEVICE_LCD_SUPPORT)) || 2101 (ATOM_DEVICE_DFP_SUPPORT | ATOM_DEVICE_LCD_SUPPORT)) ||
2102 radeon_encoder_is_dp_bridge(encoder)) { 2102 (radeon_encoder_get_dp_bridge_encoder_id(encoder) !=
2103 ENCODER_OBJECT_ID_NONE)) {
2103 struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; 2104 struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
2104 if (dig) 2105 if (dig)
2105 dig->dig_encoder = radeon_atom_pick_dig_encoder(encoder); 2106 dig->dig_encoder = radeon_atom_pick_dig_encoder(encoder);