xf86-video-ati: Branch 'master'

Alex Deucher agd5f at kemper.freedesktop.org
Thu Dec 16 15:51:10 PST 2010


 src/atombios_output.c |   63 ++++++++++++++++++++++----------------------------
 1 file changed, 28 insertions(+), 35 deletions(-)

New commits:
commit e97079c1b621433b4aa3ecfdd2aa0884aac5df76
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Thu Dec 16 18:49:55 2010 -0500

    DCE4.1: fix DIGx routing
    
    Works more like DCE4.0.  With only two DIGx blocks
    the routing is hardcoded based on link.
    This fixes blank screen issues when changing crtc
    routing due to incorrect crtc to dig mapping.
    
    Signed-off-by: Alex Deucher <alexdeucher at gmail.com>

diff --git a/src/atombios_output.c b/src/atombios_output.c
index 006905b..cad506e 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -731,17 +731,9 @@ atombios_output_dig_transmitter_setup(xf86OutputPtr output, int action, uint8_t
 	else
 	    disp_data.v3.ucLaneNum = 4;
 
-	if (IS_DCE41_VARIANT) {
-	    if (radeon_output->dig_encoder)
-		disp_data.v3.acConfig.ucEncoderSel = 1;
-
-	    if (radeon_output->linkb)
-		disp_data.v3.acConfig.ucLinkSel = 1;
-	} else {
-	    if (radeon_output->linkb) {
-		disp_data.v3.acConfig.ucLinkSel = 1;
-		disp_data.v2.acConfig.ucEncoderSel = 1;
-	    }
+	if (radeon_output->linkb) {
+	    disp_data.v3.acConfig.ucLinkSel = 1;
+	    disp_data.v2.acConfig.ucEncoderSel = 1;
 	}
 
 	// select the PLL for the UNIPHY
@@ -1638,37 +1630,38 @@ atombios_pick_dig_encoder(xf86OutputPtr output)
         mode == ATOM_ENCODER_MODE_CV)
         return;
 
-    if (IS_DCE41_VARIANT) {
-        RADEONCrtcPrivatePtr radeon_crtc = output->crtc->driver_private;
-        radeon_output->dig_encoder = radeon_crtc->crtc_id;
-        return;
-    }
-
     if (IS_DCE4_VARIANT) {
         radeon_encoder = radeon_get_encoder(output);
 
-	switch (radeon_encoder->encoder_id) {
-	case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
+	if (IS_DCE41_VARIANT) {
 	    if (radeon_output->linkb)
 		radeon_output->dig_encoder = 1;
 	    else
 		radeon_output->dig_encoder = 0;
-	    break;
-	case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
-	    if (radeon_output->linkb)
-		radeon_output->dig_encoder = 3;
-	    else
-		radeon_output->dig_encoder = 2;
-	    break;
-	case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
-	    if (radeon_output->linkb)
-		radeon_output->dig_encoder = 5;
-	    else
-		radeon_output->dig_encoder = 4;
-	    break;
-	default:
-	    ErrorF("Unknown encoder\n");
-	    break;
+	} else {
+	    switch (radeon_encoder->encoder_id) {
+	    case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
+		if (radeon_output->linkb)
+		    radeon_output->dig_encoder = 1;
+		else
+		    radeon_output->dig_encoder = 0;
+		break;
+	    case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
+		if (radeon_output->linkb)
+		    radeon_output->dig_encoder = 3;
+		else
+		    radeon_output->dig_encoder = 2;
+		break;
+	    case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
+		if (radeon_output->linkb)
+		    radeon_output->dig_encoder = 5;
+		else
+		    radeon_output->dig_encoder = 4;
+		break;
+	    default:
+		ErrorF("Unknown encoder\n");
+		break;
+	    }
 	}
 	return;
     }


More information about the xorg-commit mailing list