radeon_hd: DisplayPort encoder fixes.

* Handle external encoder case properly when
  pulling encoder mode.
* Return DisplayPort encoder if DisplayPort
  connector.
* Handle DVO properly when pulling encoder mode
This commit is contained in:
Alexander von Gluck IV
2012-03-16 21:52:17 -05:00
parent e58807ed85
commit 4eabb6487d
+16 -1
View File
@@ -374,6 +374,21 @@ debug_displays()
uint32
display_get_encoder_mode(uint32 connectorIndex)
{
// Is external DisplayPort Bridge?
if (gConnector[connectorIndex]->encoderExternal.valid == true
&& gConnector[connectorIndex]->encoderExternal.isDPBridge == true) {
return ATOM_ENCODER_MODE_DP;
}
// DVO Encoders (should be bridges)
switch (gConnector[connectorIndex]->encoder.objectID) {
case ENCODER_OBJECT_ID_INTERNAL_DVO1:
case ENCODER_OBJECT_ID_INTERNAL_DDI:
case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
return ATOM_ENCODER_MODE_DVO;
}
// Normal encoder situations
switch (gConnector[connectorIndex]->type) {
case VIDEO_CONNECTOR_DVII:
case VIDEO_CONNECTOR_HDMIB: /* HDMI-B is DL-DVI; analog works fine */
@@ -401,7 +416,7 @@ display_get_encoder_mode(uint32 connectorIndex)
// }
// TODO: if audio detected on edid and DCE4, ATOM_ENCODER_MODE_DVI
// if audio detected on edid not DCE4, ATOM_ENCODER_MODE_HDMI
return ATOM_ENCODER_MODE_DVI;
return ATOM_ENCODER_MODE_DP;
case VIDEO_CONNECTOR_EDP:
return ATOM_ENCODER_MODE_DP;
case VIDEO_CONNECTOR_DVIA: