xf86-video-ati: Branch 'master'

Alex Deucher agd5f at kemper.freedesktop.org
Wed Jan 9 09:47:41 PST 2008


 src/legacy_output.c |   19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

New commits:
commit 10e7636c02478b8ffe183bb0c46229ca0d6584e1
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Wed Jan 9 12:47:39 2008 -0500

    RADEON: fix crtc routing on r4xx cards when using atom to init DVO chip

diff --git a/src/legacy_output.c b/src/legacy_output.c
index 595b243..45706b9 100644
--- a/src/legacy_output.c
+++ b/src/legacy_output.c
@@ -1230,11 +1230,24 @@ legacy_output_mode_set(xf86OutputPtr output, DisplayModePtr mode,
 	    RADEONRestoreFPRegisters(pScrn, info->ModeReg);
 	} else {
 	    ErrorF("restore FP2\n");
-	    RADEONRestoreFP2Registers(pScrn, info->ModeReg);
-	    if (info->IsAtomBios)
+	    if (info->IsAtomBios) {
+		unsigned char *RADEONMMIO = info->MMIO;
+		CARD32 fp2_gen_cntl;
+
 		atombios_external_tmds_setup(output, mode);
-	    else
+		/* r4xx atom seems to have hard coded crtc mappings in the atom code
+		 * Fix it up here.
+		 */
+		fp2_gen_cntl = INREG(RADEON_FP2_GEN_CNTL) & ~R200_FP2_SOURCE_SEL_MASK;
+		if (radeon_crtc->crtc_id == 1)
+		    fp2_gen_cntl |= R200_FP2_SOURCE_SEL_CRTC2;
+		else
+		    fp2_gen_cntl |= R200_FP2_SOURCE_SEL_CRTC1;
+		OUTREG(RADEON_FP2_GEN_CNTL, fp2_gen_cntl);
+	    } else {
 		RADEONRestoreDVOChip(pScrn, output);
+		RADEONRestoreFP2Registers(pScrn, info->ModeReg);
+	    }
 	}
 	break;
     case MT_STV:


More information about the xorg-commit mailing list