summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2006-04-24 07:44:52 +0000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2006-04-24 07:44:52 +0000
commitcc1825b503ce7e785cbb4611fd177477a1081b6e (patch)
tree5f55a35cd1d01d5678a7c15a3da11ee77d779617
parenta66145bc9d487f7e19237cf292f12750cb959f61 (diff)
Fix enabling of external VGA output on some cards with dual entity setup
instead of MergedFB. This was broken due to bogus manipulations of a register between the 2 entities. This fix is a big "violent" in that it always enables the analog output regardless of what is plugged. It should work though (at the expense of some additional power consumption). A proper fix should be easy to do once Alex gets his output mapping rework in.
-rw-r--r--ChangeLog12
-rw-r--r--src/radeon_driver.c13
2 files changed, 22 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index c6164fce..9a891e40 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2006-04-24 Benjamin Herrenschmidt <benh@kernel.crashing.org>
+
+ * src/radeon_driver.c: (RADEONInitCrtcRegisters),
+ (RADEONInitCrtc2Registers):
+ Fix enabling of external VGA output on some cards with dual entity
+ setup instead of MergedFB. This was broken due to bogus manipulations
+ of a register between the 2 entities. This fix is a big "violent" in
+ that it always enables the analog output regardless of what is
+ plugged. It should work though (at the expense of some additional
+ power consumption). A proper fix should be easy to do once Alex gets
+ his output mapping rework in.
+
2006-04-21 Dave Airlie <airlied@linux.ie>
* src/radeon_driver.c: (RADEONRestoreMode):
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 2e70c58c..579650d6 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -1,5 +1,5 @@
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v 1.117 2004/02/19 22:38:12 tsi Exp $ */
-/* $XdotOrg: driver/xf86-video-ati/src/radeon_driver.c,v 1.111 2006/04/21 00:34:43 airlied Exp $ */
+/* $XdotOrg: driver/xf86-video-ati/src/radeon_driver.c,v 1.112 2006/04/21 00:38:44 airlied Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario, and
* VA Linux Systems Inc., Fremont, California.
@@ -7806,13 +7806,21 @@ static Bool RADEONInitCrtcRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save,
? RADEON_CRTC_INTERLACE_EN
: 0));
+ /* Don't try to be smart and unconditionally enable the analog output
+ * for now as the dodgy code to handle it for the second head doesn't
+ * work. This will be correctly fixed when Alex' megapatch gets in that
+ * reworks the whole output mapping
+ */
+#if 0
if ((info->DisplayType == MT_DFP) ||
(info->DisplayType == MT_LCD)) {
save->crtc_ext_cntl = RADEON_VGA_ATI_LINEAR | RADEON_XCRT_CNT_EN;
save->crtc_gen_cntl &= ~(RADEON_CRTC_DBL_SCAN_EN |
RADEON_CRTC_CSYNC_EN |
RADEON_CRTC_INTERLACE_EN);
- } else {
+ } else
+#endif
+ {
save->crtc_ext_cntl = (RADEON_VGA_ATI_LINEAR |
RADEON_XCRT_CNT_EN |
RADEON_CRTC_CRT_ON);
@@ -7976,7 +7984,6 @@ static Bool RADEONInitCrtc2Registers(ScrnInfoPtr pScrn, RADEONSavePtr save,
: 0));
/* Turn CRT on in case the first head is a DFP */
- save->crtc_ext_cntl |= RADEON_CRTC_CRT_ON;
save->dac2_cntl = info->SavedReg.dac2_cntl;
/* always let TVDAC drive CRT2, we don't support tvout yet */
save->dac2_cntl |= RADEON_DAC2_DAC2_CLK_SEL;