diff options
author | 2007-11-16 16:28:01 +0000 | |
---|---|---|
committer | 2007-11-16 16:28:01 +0000 | |
commit | 1112a57e963de5a81cc627b2d0ba492d4868164c (patch) | |
tree | 26efc9ce32ea04084faa26de582afc0481c6f27a /x11-drivers | |
parent | Stable on ppc wrt bug 182392 (diff) | |
download | gentoo-2-1112a57e963de5a81cc627b2d0ba492d4868164c.tar.gz gentoo-2-1112a57e963de5a81cc627b2d0ba492d4868164c.tar.bz2 gentoo-2-1112a57e963de5a81cc627b2d0ba492d4868164c.zip |
Fix "washed out colors" problem on IGP chips over analog link
(Portage version: 2.1.3.19)
Diffstat (limited to 'x11-drivers')
4 files changed, 149 insertions, 1 deletions
diff --git a/x11-drivers/xf86-video-ati/ChangeLog b/x11-drivers/xf86-video-ati/ChangeLog index 7fb834816932..4552ce434e7a 100644 --- a/x11-drivers/xf86-video-ati/ChangeLog +++ b/x11-drivers/xf86-video-ati/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for x11-drivers/xf86-video-ati # Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/x11-drivers/xf86-video-ati/ChangeLog,v 1.55 2007/11/13 04:53:45 dberkholz Exp $ +# $Header: /var/cvsroot/gentoo-x86/x11-drivers/xf86-video-ati/ChangeLog,v 1.56 2007/11/16 16:28:00 leio Exp $ + +*xf86-video-ati-6.7.196-r1 (16 Nov 2007) + + 16 Nov 2007; Mart Raudsepp <leio@gentoo.org> + +files/6.7.196-fix_washed_color.patch, +xf86-video-ati-6.7.196-r1.ebuild: + Fix "washed out colors" problem on IGP chips over analog link *xf86-video-ati-6.7.196 (13 Nov 2007) diff --git a/x11-drivers/xf86-video-ati/files/6.7.196-fix_washed_color.patch b/x11-drivers/xf86-video-ati/files/6.7.196-fix_washed_color.patch new file mode 100644 index 000000000000..2bf48dc86211 --- /dev/null +++ b/x11-drivers/xf86-video-ati/files/6.7.196-fix_washed_color.patch @@ -0,0 +1,99 @@ +From the fix for https://bugs.freedesktop.org/show_bug.cgi?id=12844 - "Display is washed out, too bright. No adjustment will correct for over bright display" +Affecting mostly radeon IGP chips, such as the Radeon XPRESS +Fixed by setting the TV DAC up correctly, etc + +diff --git a/src/radeon_output.c b/src/radeon_output.c +index 599a89c..54c27cd 100644 +--- a/src/radeon_output.c ++++ b/src/radeon_output.c +@@ -1039,11 +1039,12 @@ static void RADEONInitDACRegisters(xf86OutputPtr output, RADEONSavePtr save, + save->dac_macro_cntl = info->SavedReg.dac_macro_cntl; + } + +-/* XXX: fix me */ + static void +-RADEONInitTvDacCntl(ScrnInfoPtr pScrn, RADEONSavePtr save) ++RADEONInitTvDacCntl(xf86OutputPtr output, RADEONSavePtr save) + { ++ ScrnInfoPtr pScrn = output->scrn; + RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; + + if (info->ChipFamily == CHIP_FAMILY_R420 || + info->ChipFamily == CHIP_FAMILY_RV410) { +@@ -1064,10 +1065,11 @@ RADEONInitTvDacCntl(ScrnInfoPtr pScrn, RADEONSavePtr save) + RADEON_TV_DAC_GDACPD | + RADEON_TV_DAC_GDACPD); + } +- /* FIXME: doesn't make sense, this just replaces the previous value... */ ++ + save->tv_dac_cntl |= (RADEON_TV_DAC_NBLANK | +- RADEON_TV_DAC_NHOLD | +- RADEON_TV_DAC_STD_PS2); ++ RADEON_TV_DAC_NHOLD | ++ RADEON_TV_DAC_STD_PS2 | ++ radeon_output->tv_dac_adj); + + } + +@@ -1078,7 +1080,7 @@ static void RADEONInitDAC2Registers(xf86OutputPtr output, RADEONSavePtr save, + RADEONInfoPtr info = RADEONPTR(pScrn); + + /*0x0028023;*/ +- RADEONInitTvDacCntl(pScrn, save); ++ RADEONInitTvDacCntl(output, save); + + if (IS_R300_VARIANT) + save->gpiopad_a = info->SavedReg.gpiopad_a | 1; +@@ -1671,9 +1673,13 @@ radeon_detect(xf86OutputPtr output) + * so we can get something on the screen + */ + if (((radeon_output->type == OUTPUT_VGA || radeon_output->type == OUTPUT_DVI) && +- radeon_output->DACType == DAC_TVDAC) || +- (info->IsIGP && radeon_output->type == OUTPUT_DVI)) ++ radeon_output->DACType == DAC_TVDAC)) { ++ radeon_output->MonType = MT_CRT; + return XF86OutputStatusUnknown; ++ } else if (info->IsIGP && radeon_output->type == OUTPUT_DVI) { ++ radeon_output->MonType = MT_DFP; /* MT_LCD ??? */ ++ return XF86OutputStatusUnknown; ++ } + } + + if (connected) +@@ -2623,6 +2629,7 @@ void RADEONInitConnector(xf86OutputPtr output) + if (radeon_output->type == OUTPUT_STV || + radeon_output->type == OUTPUT_CTV) { + RADEONGetTVInfo(output); ++ RADEONGetTVDacAdjInfo(output); + } + + if (radeon_output->DACType == DAC_TVDAC) { +diff --git a/src/radeon_tv.c b/src/radeon_tv.c +index 3a26a0a..2a8873c 100644 +--- a/src/radeon_tv.c ++++ b/src/radeon_tv.c +@@ -434,7 +434,7 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save, + + save->tv_vscaler_cntl2 = ((save->tv_vscaler_cntl2 & 0x00fffff0) + | (0x10 << 24) +- | RADEON_DITHER_MODE ++ | RADEON_DITHER_MODE + | RADEON_Y_OUTPUT_DITHER_EN + | RADEON_UV_OUTPUT_DITHER_EN + | RADEON_UV_TO_BUF_DITHER_EN); +@@ -444,10 +444,12 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save, + tmp = (tmp << RADEON_UV_OUTPUT_POST_SCALE_SHIFT) | 0x000b0000; + save->tv_timing_cntl = tmp; + +- save->tv_dac_cntl = RADEON_TV_DAC_NBLANK | RADEON_TV_DAC_NHOLD | (8 << 16) | (6 << 20); ++ save->tv_dac_cntl = (RADEON_TV_DAC_NBLANK | ++ RADEON_TV_DAC_NHOLD | ++ radeon_output->tv_dac_adj /*(8 << 16) | (6 << 20)*/); + + if (radeon_output->tvStd == TV_STD_NTSC || +- radeon_output->tvStd == TV_STD_NTSC_J) ++ radeon_output->tvStd == TV_STD_NTSC_J) + save->tv_dac_cntl |= RADEON_TV_DAC_STD_NTSC; + else + save->tv_dac_cntl |= RADEON_TV_DAC_STD_PAL; diff --git a/x11-drivers/xf86-video-ati/files/digest-xf86-video-ati-6.7.196-r1 b/x11-drivers/xf86-video-ati/files/digest-xf86-video-ati-6.7.196-r1 new file mode 100644 index 000000000000..97f34ffcf0c4 --- /dev/null +++ b/x11-drivers/xf86-video-ati/files/digest-xf86-video-ati-6.7.196-r1 @@ -0,0 +1,6 @@ +MD5 56566e8c3fb4bb99791d1788d0a9a1a8 x11-driver-patches-4.tar.bz2 346 +RMD160 fcbd405de080d07612d46f455b927035fd8123a8 x11-driver-patches-4.tar.bz2 346 +SHA256 07069bbd072f2def50e83801a8f2a41a4c96495104f15cd6f56f7df7f89769bf x11-driver-patches-4.tar.bz2 346 +MD5 06db625391c75c8be86c4dd5a5d713e6 xf86-video-ati-6.7.196.tar.bz2 787475 +RMD160 fae77f0f9e4acaed755617ce53214e73f53c10cf xf86-video-ati-6.7.196.tar.bz2 787475 +SHA256 8923a08232255ceacf770ef767d86bbfb195dffa9559baa1b1de90f9c947a6d9 xf86-video-ati-6.7.196.tar.bz2 787475 diff --git a/x11-drivers/xf86-video-ati/xf86-video-ati-6.7.196-r1.ebuild b/x11-drivers/xf86-video-ati/xf86-video-ati-6.7.196-r1.ebuild new file mode 100644 index 000000000000..8f5d54b6b2ba --- /dev/null +++ b/x11-drivers/xf86-video-ati/xf86-video-ati-6.7.196-r1.ebuild @@ -0,0 +1,37 @@ +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/x11-drivers/xf86-video-ati/xf86-video-ati-6.7.196-r1.ebuild,v 1.1 2007/11/16 16:28:00 leio Exp $ + +# Must be before x-modular eclass is inherited +#SNAPSHOT="yes" +XDPVER=4 + +inherit x-modular + +DESCRIPTION="ATI video driver" + +KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd" +IUSE="dri" + +RDEPEND=">=x11-base/xorg-server-1.2" +DEPEND="${RDEPEND} + x11-proto/fontsproto + x11-proto/randrproto + x11-proto/videoproto + x11-proto/xextproto + x11-proto/xineramaproto + x11-proto/xf86miscproto + x11-proto/xproto + dri? ( x11-proto/glproto + x11-proto/xf86driproto + >=x11-libs/libdrm-2 )" + +PATCHES="${PV}-fix_washed_color.patch" + +CONFIGURE_OPTIONS="$(use_enable dri)" + +pkg_setup() { + if use dri && ! built_with_use x11-base/xorg-server dri; then + die "Build x11-base/xorg-server with USE=dri." + fi +} |