File xf86-video-ati-bug-561880-keep_crtc_enabled.diff of Package xorg-x11-driver-video

From 3a30210d50b27f8772fc5045133940246764fce9 Mon Sep 17 00:00:00 2001
From: Matthias Hopf <mhopf@suse.de>
Date: Tue, 15 Dec 2009 10:53:48 -0500
Subject: [PATCH] fix 200M freezes on VT switch if CRTC is disabled

It appears that RS4xx chips need to have the crtc
enabled when the timing is programmed.

agd5f: minor fixes/cleanup of the original patch
---
 src/legacy_crtc.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/legacy_crtc.c b/src/legacy_crtc.c
index ed339ab..0ad762b 100644
--- a/src/legacy_crtc.c
+++ b/src/legacy_crtc.c
@@ -912,6 +912,11 @@ RADEONInitCrtcRegisters(xf86CrtcPtr crtc, RADEONSavePtr save,
 			      ? RADEON_CRTC_INTERLACE_EN
 			      : 0));
 
+    /* 200M freezes on VT switch sometimes if CRTC is disabled */
+    if ((info->ChipFamily == CHIP_FAMILY_RS400) ||
+	(info->ChipFamily == CHIP_FAMILY_RS480))
+	save->crtc_gen_cntl |= RADEON_CRTC_EN;
+
     save->crtc_ext_cntl |= (RADEON_XCRT_CNT_EN|
 			    RADEON_CRTC_VSYNC_DIS |
 			    RADEON_CRTC_HSYNC_DIS |
@@ -1162,6 +1167,11 @@ RADEONInitCrtc2Registers(xf86CrtcPtr crtc, RADEONSavePtr save,
 				? RADEON_CRTC2_INTERLACE_EN
 				: 0));
 
+    /* 200M freezes on VT switch sometimes if CRTC is disabled */
+    if ((info->ChipFamily == CHIP_FAMILY_RS400) ||
+	(info->ChipFamily == CHIP_FAMILY_RS480))
+	save->crtc2_gen_cntl |= RADEON_CRTC2_EN;
+
     save->disp2_merge_cntl = info->SavedReg->disp2_merge_cntl;
     save->disp2_merge_cntl &= ~(RADEON_DISP2_RGB_OFFSET_EN);
 
-- 
1.5.4.3

openSUSE Build Service is sponsored by