xf86-video-ati: Branch 'master'

Alex Deucher agd5f at kemper.freedesktop.org
Mon Feb 11 12:27:12 PST 2008


 src/radeon_crtc.c   |   17 +++++++++++++++++
 src/radeon_output.c |    1 +
 2 files changed, 18 insertions(+)

New commits:
commit 9ab5d2ec7c583c74f364d7cfbb54bcd2cd8ae2f5
Author: Alex Deucher <alex at botch2.(none)>
Date:   Mon Feb 11 15:26:51 2008 -0500

    RADEON: always restore crtc1 before crtc0 when using both crtcs
    
    In some rare cases restoring crtc0 first will result in a blank screen
    on crtc1.  If you are having issues with a blank screen on crtc1
    that used to work on 6.6.3 or before, this should help.

diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c
index e1e4550..d21612a 100644
--- a/src/radeon_crtc.c
+++ b/src/radeon_crtc.c
@@ -68,11 +68,28 @@ static void
 radeon_crtc_dpms(xf86CrtcPtr crtc, int mode)
 {
     RADEONInfoPtr info = RADEONPTR(crtc->scrn);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
+    RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+    xf86CrtcPtr crtc0 = pRADEONEnt->pCrtc[0];
 
     if (IS_AVIVO_VARIANT) {
 	atombios_crtc_dpms(crtc, mode);
     } else {
+
+	/* need to restore crtc1 before crtc0 or we may get a blank screen
+	 * in some cases
+	 */
+	if ((radeon_crtc->crtc_id == 1) && (mode == DPMSModeOn)) {
+	    if (crtc0->enabled)
+		crtc0->funcs->dpms(crtc0, DPMSModeOff);
+	}
+
 	legacy_crtc_dpms(crtc, mode);
+
+	if ((radeon_crtc->crtc_id == 1) && (mode == DPMSModeOn)) {
+	    if (crtc0->enabled)
+		crtc0->funcs->dpms(crtc0, mode);
+	}
     }
 }
 
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 9d53b6e..7d73fa8 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -633,6 +633,7 @@ static void
 radeon_mode_prepare(xf86OutputPtr output)
 {
     radeon_bios_output_lock(output, TRUE);
+    radeon_dpms(output, DPMSModeOff);
 }
 
 static void


More information about the xorg-commit mailing list