xf86-video-ati: Branch 'master'

Alex Deucher agd5f at kemper.freedesktop.org
Tue Feb 12 09:53:17 PST 2008


 src/legacy_output.c |   72 ++++++++++++++++++++++++----------------------------
 1 file changed, 34 insertions(+), 38 deletions(-)

New commits:
commit 8d64be6ebd7f50d4bcb587afeee8252c1367dc77
Author: Alex Deucher <alex at samba.(none)>
Date:   Tue Feb 12 12:53:09 2008 -0500

    RADEON: make sure we always set up the FP crtc shadow registers for crtc0
    
    The behavior changed when I added rmx center mode support.  In cases where
    crtc0 drives a DAC this can lead to a blank screen.

diff --git a/src/legacy_output.c b/src/legacy_output.c
index bac1b67..0de13df 100644
--- a/src/legacy_output.c
+++ b/src/legacy_output.c
@@ -1018,6 +1018,8 @@ RADEONInitRMXRegisters(xf86OutputPtr output, RADEONSavePtr save,
     float  Hratio, Vratio;
     int    hsync_wid;
     int    vsync_wid;
+    int    hsync_start;
+
 
     save->fp_vert_stretch = info->SavedReg->fp_vert_stretch &
 	                    RADEON_VERT_STRETCH_RESERVED;
@@ -1034,15 +1036,38 @@ RADEONInitRMXRegisters(xf86OutputPtr output, RADEONSavePtr save,
 	save->crtc_more_cntl |= RADEON_CRTC_H_CUTOFF_ACTIVE_EN;
     }
 
+
+    save->fp_crtc_h_total_disp = ((((mode->CrtcHTotal / 8) - 1) & 0x3ff)
+				  | ((((mode->CrtcHDisplay / 8) - 1) & 0x1ff)
+				     << 16));
+
+    hsync_wid = (mode->CrtcHSyncEnd - mode->CrtcHSyncStart) / 8;
+    if (!hsync_wid)       hsync_wid = 1;
+    hsync_start = mode->CrtcHSyncStart - 8;
+
+    save->fp_h_sync_strt_wid = ((hsync_start & 0x1fff)
+				| ((hsync_wid & 0x3f) << 16)
+				| ((mode->Flags & V_NHSYNC)
+				   ? RADEON_CRTC_H_SYNC_POL
+				   : 0));
+
+    save->fp_crtc_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
+				  | ((mode->CrtcVDisplay - 1) << 16));
+
+    vsync_wid = mode->CrtcVSyncEnd - mode->CrtcVSyncStart;
+    if (!vsync_wid)       vsync_wid = 1;
+
+    save->fp_v_sync_strt_wid = (((mode->CrtcVSyncStart - 1) & 0xfff)
+				| ((vsync_wid & 0x1f) << 16)
+				| ((mode->Flags & V_NVSYNC)
+				   ? RADEON_CRTC_V_SYNC_POL
+				   : 0));
+
+    save->fp_horz_vert_active = 0;
+
     if (radeon_output->MonType != MT_LCD && radeon_output->MonType != MT_DFP)
 	return;
 
-    if ((radeon_output->rmx_type == RMX_CENTER) &&
-	(radeon_output->Flags & RADEON_USE_RMX)) {
-	save->crtc_more_cntl |= (RADEON_CRTC_AUTO_HORZ_CENTER_EN |
-				 RADEON_CRTC_AUTO_VERT_CENTER_EN);
-    }
-
     if (radeon_output->PanelXRes == 0 || radeon_output->PanelYRes == 0) {
 	Hratio = 1.0;
 	Vratio = 1.0;
@@ -1077,12 +1102,13 @@ RADEONInitRMXRegisters(xf86OutputPtr output, RADEONSavePtr save,
 				  ((radeon_output->PanelYRes-1)<<12));
     }
 
-
-
     if ((radeon_output->rmx_type == RMX_CENTER) &&
 	(radeon_output->Flags & RADEON_USE_RMX)) {
 	int    blank_width;
 
+	save->crtc_more_cntl |= (RADEON_CRTC_AUTO_HORZ_CENTER_EN |
+				 RADEON_CRTC_AUTO_VERT_CENTER_EN);
+
 	blank_width = (mode->CrtcHBlankEnd - mode->CrtcHBlankStart) / 8;
 	if (blank_width > 110) blank_width = 110;
 
@@ -1114,36 +1140,6 @@ RADEONInitRMXRegisters(xf86OutputPtr output, RADEONSavePtr save,
 	save->fp_horz_vert_active = (((radeon_output->PanelYRes) & 0xfff) |
 				     (((radeon_output->PanelXRes / 8) & 0x1ff) << 16));
 
-    } else {
-	int    hsync_start;
-
-	save->fp_crtc_h_total_disp = ((((mode->CrtcHTotal / 8) - 1) & 0x3ff)
-				      | ((((mode->CrtcHDisplay / 8) - 1) & 0x1ff)
-					 << 16));
-
-	hsync_wid = (mode->CrtcHSyncEnd - mode->CrtcHSyncStart) / 8;
-	if (!hsync_wid)       hsync_wid = 1;
-	hsync_start = mode->CrtcHSyncStart - 8;
-
-	save->fp_h_sync_strt_wid = ((hsync_start & 0x1fff)
-				    | ((hsync_wid & 0x3f) << 16)
-				    | ((mode->Flags & V_NHSYNC)
-				       ? RADEON_CRTC_H_SYNC_POL
-				       : 0));
-
-	save->fp_crtc_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
-				      | ((mode->CrtcVDisplay - 1) << 16));
-
-	vsync_wid = mode->CrtcVSyncEnd - mode->CrtcVSyncStart;
-	if (!vsync_wid)       vsync_wid = 1;
-
-	save->fp_v_sync_strt_wid = (((mode->CrtcVSyncStart - 1) & 0xfff)
-				    | ((vsync_wid & 0x1f) << 16)
-				    | ((mode->Flags & V_NVSYNC)
-				       ? RADEON_CRTC_V_SYNC_POL
-				       : 0));
-
-	save->fp_horz_vert_active = 0;
     }
 }
 


More information about the xorg-commit mailing list