diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2006-04-24 07:44:52 +0000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2006-04-24 07:44:52 +0000 |
commit | cc1825b503ce7e785cbb4611fd177477a1081b6e (patch) | |
tree | 5f55a35cd1d01d5678a7c15a3da11ee77d779617 | |
parent | a66145bc9d487f7e19237cf292f12750cb959f61 (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-- | ChangeLog | 12 | ||||
-rw-r--r-- | src/radeon_driver.c | 13 |
2 files changed, 22 insertions, 3 deletions
@@ -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; |