summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Hopf <mhopf@suse.de>2009-12-15 10:53:48 -0500
committerAlex Deucher <alexdeucher@gmail.com>2009-12-15 13:29:20 -0500
commite7b26abc3c20fb53bf2cd02404ac5e0654fee18d (patch)
tree2eb7448180ac16263fd1088f4a015cb8d2bf7e0e
parent45edca0e9d7b833b9de3037e94f293122c922e42 (diff)
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
-rw-r--r--src/legacy_crtc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/legacy_crtc.c b/src/legacy_crtc.c
index aee3d15a..ba3b1022 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);