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:
@@ -374,6 +374,21 @@ debug_displays()
|
|||||||
uint32
|
uint32
|
||||||
display_get_encoder_mode(uint32 connectorIndex)
|
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) {
|
switch (gConnector[connectorIndex]->type) {
|
||||||
case VIDEO_CONNECTOR_DVII:
|
case VIDEO_CONNECTOR_DVII:
|
||||||
case VIDEO_CONNECTOR_HDMIB: /* HDMI-B is DL-DVI; analog works fine */
|
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
|
// TODO: if audio detected on edid and DCE4, ATOM_ENCODER_MODE_DVI
|
||||||
// if audio detected on edid not DCE4, ATOM_ENCODER_MODE_HDMI
|
// 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:
|
case VIDEO_CONNECTOR_EDP:
|
||||||
return ATOM_ENCODER_MODE_DP;
|
return ATOM_ENCODER_MODE_DP;
|
||||||
case VIDEO_CONNECTOR_DVIA:
|
case VIDEO_CONNECTOR_DVIA:
|
||||||
|
|||||||
Reference in New Issue
Block a user