summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2006-04-24 07:46:37 +0000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2006-04-24 07:46:37 +0000
commit037681d7fc895d5f5f33a6f1402de31143594e68 (patch)
tree5f65e1914989f424d4bfe9f7f830ea34cb7878c6
parenta8c831e62d59760ad537eb6ad867b8dfcf1f5dd4 (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 813df289..c408ba4c 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 a4951775..7180a879 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.92.2.15 2006/04/21 00:44:58 airlied Exp $ */
+/* $XdotOrg: driver/xf86-video-ati/src/radeon_driver.c,v 1.92.2.16 2006/04/21 00:46:53 airlied Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario, and
* VA Linux Systems Inc., Fremont, California.
@@ -7776,13 +7776,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);
@@ -7946,7 +7954,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;