hrev43867 adds 2 changesets to branch 'master' old head: e58807ed85d518c3ccf9e0a7ec77b55a3d3e2701 new head: 00cc4e4ff4d3a1724a05768deec0706bfa0f4c9c ---------------------------------------------------------------------------- 4eabb64: 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 00cc4e4: radeon_hd: Fix nutmeg check to external encoder [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] ---------------------------------------------------------------------------- 2 files changed, 17 insertions(+), 2 deletions(-) src/add-ons/accelerants/radeon_hd/display.cpp | 17 ++++++++++++++++- src/add-ons/accelerants/radeon_hd/displayport.cpp | 2 +- ############################################################################ Commit: 4eabb6487d142caf3d8a9e8e8cfbfa7f7e2aee6d URL: http://cgit.haiku-os.org/haiku/commit/?id=4eabb64 Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Sat Mar 17 02:38:22 2012 UTC 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 ---------------------------------------------------------------------------- diff --git a/src/add-ons/accelerants/radeon_hd/display.cpp b/src/add-ons/accelerants/radeon_hd/display.cpp index a3d14b2..5cb1bd4 100644 --- a/src/add-ons/accelerants/radeon_hd/display.cpp +++ b/src/add-ons/accelerants/radeon_hd/display.cpp @@ -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: ############################################################################ Revision: hrev43867 Commit: 00cc4e4ff4d3a1724a05768deec0706bfa0f4c9c URL: http://cgit.haiku-os.org/haiku/commit/?id=00cc4e4 Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Sat Mar 17 02:59:08 2012 UTC radeon_hd: Fix nutmeg check to external encoder ---------------------------------------------------------------------------- diff --git a/src/add-ons/accelerants/radeon_hd/displayport.cpp b/src/add-ons/accelerants/radeon_hd/displayport.cpp index 19bd914..be7d92a 100644 --- a/src/add-ons/accelerants/radeon_hd/displayport.cpp +++ b/src/add-ons/accelerants/radeon_hd/displayport.cpp @@ -323,7 +323,7 @@ dp_aux_set_i2c_byte(uint32 hwPin, uint16 address, uint8* data, bool end) uint32 dp_get_link_clock(uint32 connectorIndex) { - uint16 encoderID = gConnector[connectorIndex]->encoder.objectID; + uint16 encoderID = gConnector[connectorIndex]->encoderExternal.objectID; if (encoderID == ENCODER_OBJECT_ID_NUTMEG) return 270000;