--- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/compat +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/compat @@ -0,0 +1 @@ +5 --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/xserver-xorg-video-radeon.manpages +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/xserver-xorg-video-radeon.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man4/radeon.4 --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/NEWS +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/NEWS @@ -0,0 +1,18 @@ +xserver-xorg-video-ati (1:6.8.1~git20080302.a4398ac3-1) experimental; urgency=low + + * The 'ati' Xorg driver module does not contain the 'r128' and 'mach64' + submodules anymore. Users of Rage or Mach boards may safely remove + the xserver-xorg-video-ati packages only if they use Driver "r128" or + "mach64" instead of "ati" in their /etc/X11/xorg.conf. + + -- Brice Goglin Sun, 02 Mar 2008 13:22:03 +0100 + +xserver-xorg-video-ati (1:6.7.197-1) unstable; urgency=low + + * The X.Org ATI driver supports RandR 1.2 which enables dynamic + enabling, disabling, resizing, rotating, placing, ... of multiple + outputs at runtime. You might want to update your /etc/X11/xorg.conf + accordingly. See http://wiki.debian.org/XStrikeForce/HowToRandR12 + and http://www.intellinuxgraphics.org/dualhead.html for some help. + + -- Brice Goglin Fri, 21 Dec 2007 08:12:13 +0100 --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/xserver-xorg-video-radeon.links +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/xserver-xorg-video-radeon.links @@ -0,0 +1 @@ +usr/share/bug/xserver-xorg-core/script usr/share/bug/xserver-xorg-video-radeon/script --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/xserver-xorg-video-radeon.install +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/xserver-xorg-video-radeon.install @@ -0,0 +1,3 @@ +usr/lib/xorg/modules/drivers/radeon_drv.so +usr/lib/xorg/modules/multimedia/*.so +usr/share/xserver-xorg/pci/* --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/rules +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/rules @@ -0,0 +1,104 @@ +#!/usr/bin/make -f +# debian/rules for the Debian xserver-xorg-driver-ati package. +# Copyright © 2004 Scott James Remnant +# Copyright © 2005 Daniel Stone +# Copyright © 2005 David Nusinow + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +include debian/xsfbs/xsfbs.mk + +CFLAGS = -Wall -g -fvisibility=hidden +ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + MAKEFLAGS += -j$(NUMJOBS) +endif + +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + confflags += --build=$(DEB_HOST_GNU_TYPE) +else + confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) +endif + +# kbd_drv.a isn't phenomenally useful; kbd_drv.so more so +confflags += --disable-static + +configure: $(STAMP_DIR)/patch + dh_testdir + autoreconf -vfi + +obj-$(DEB_BUILD_GNU_TYPE)/config.status: configure + dh_testdir + test -d obj-$(DEB_BUILD_GNU_TYPE) || mkdir obj-$(DEB_BUILD_GNU_TYPE) + cd obj-$(DEB_BUILD_GNU_TYPE) && \ + ../configure --prefix=/usr --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info $(confflags) \ + CFLAGS="$(CFLAGS)" + +.PHONY: build +build: build-stamp +build-stamp: obj-$(DEB_BUILD_GNU_TYPE)/config.status + dh_testdir + cd obj-$(DEB_BUILD_GNU_TYPE) && $(MAKE) + >$@ + +clean: xsfclean + dh_testdir + dh_testroot + rm -f build-stamp + + rm -f config.cache config.log config.status + rm -f */config.cache */config.log */config.status + rm -f conftest* */conftest* + rm -rf autom4te.cache */autom4te.cache + rm -rf obj-* + rm -f $$(find -name Makefile.in) + rm -f compile config.guess config.sub configure depcomp install-sh + rm -f ltmain.sh missing INSTALL aclocal.m4 config.h.in mkinstalldirs + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + cd obj-$(DEB_BUILD_GNU_TYPE) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install + +# Build architecture-dependent files here. +binary-arch: build install serverabi + dh_testdir + dh_testroot + + dh_installdocs + dh_installchangelogs ChangeLog + dh_install --sourcedir=debian/tmp --list-missing --exclude=.la --exclude=usr/share/man/man4 + dh_installman + dh_link + dh_strip -pxserver-xorg-video-ati --dbg-package=xserver-xorg-video-ati-dbg + dh_strip -pxserver-xorg-video-radeon --dbg-package=xserver-xorg-video-radeon-dbg + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps -- --warnings=6 + cp -f debian/xserver-xorg-video-ati.substvars debian/xserver-xorg-video-radeon.substvars # xsfbs serverabi hack + dh_gencontrol + dh_md5sums + dh_builddeb + +# Build architecture-independent files here. +binary-indep: build install +# Nothing to do + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/xserver-xorg-video-ati.links +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/xserver-xorg-video-ati.links @@ -0,0 +1 @@ +usr/share/bug/xserver-xorg-core/script usr/share/bug/xserver-xorg-video-ati/script --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/xserver-xorg-video-ati.install +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/xserver-xorg-video-ati.install @@ -0,0 +1 @@ +usr/lib/xorg/modules/drivers/ati_drv.so --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/xserver-xorg-video-ati.manpages +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/xserver-xorg-video-ati.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man4/ati.4 --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/watch +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/watch @@ -0,0 +1,2 @@ +version=3 +http://xorg.freedesktop.org/releases/individual/driver/ xf86-video-ati-(.*)\.tar\.gz --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/control +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/control @@ -0,0 +1,79 @@ +Source: xserver-xorg-video-ati +Section: x11 +Priority: optional +Maintainer: Ubuntu Core Developers +XSBC-Original-Maintainer: Debian X Strike Force +Uploaders: David Nusinow , Drew Parsons , Brice Goglin +Build-Depends: debhelper (>= 5), pkg-config, xserver-xorg-dev (>= 2:1.4.99), x11proto-gl-dev, x11proto-xext-dev, x11proto-core-dev, x11proto-video-dev, x11proto-xinerama-dev, x11proto-xf86misc-dev, libgl1-mesa-dev | libgl-dev, x11proto-fonts-dev, x11proto-randr-dev (>= 1.2), x11proto-render-dev, libdrm-dev (>> 2.2) [!hurd-i386], x11proto-xf86dri-dev, quilt, dpkg-dev (>= 1.14.17), automake, libtool, xutils-dev +Standards-Version: 3.7.3 +Vcs-Git: git://git.debian.org/git/pkg-xorg/driver/xserver-xorg-video-ati +Vcs-Browser: http://git.debian.org/?p=pkg-xorg/driver/xserver-xorg-video-ati.git + +Package: xserver-xorg-video-ati +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, ${xserver:Depends}, xserver-xorg-video-r128, xserver-xorg-video-mach64, xserver-xorg-video-radeon +Description: X.Org X server -- ATI display driver wrapper + This driver for the X.Org X server (see xserver-xorg for a further description) + provides support for the ATI Mach64, Rage128, Radeon and FireGL series. + It provides the 'ati' driver wrapper which loads one of the 'mach64', 'r128' + or 'radeon' sub-drivers depending on the hardware. These sub-drivers are brought + through package dependencies. + . + More information about X.Org can be found at: + + + + . + This package is built from the X.org xf86-video-ati driver module. + +Package: xserver-xorg-video-ati-dbg +Architecture: any +Depends: xserver-xorg-video-ati (= ${binary:Version}), xserver-xorg-video-mach64-dbg, xserver-xorg-video-r128-dbg, xserver-xorg-video-radeon-dbg, +Priority: extra +Description: X.Org X server -- ATI display driver wrapper (debugging symbols) + This driver for the X.Org X server (see xserver-xorg for a further description) + provides support for the ATI Mach64, Rage128, Radeon and FireGL series. + It provides the 'ati' driver wrapper which loads one of the 'mach64', 'r128' + or 'radeon' sub-drivers depending on the hardware. + . + This package provides debugging symbols for the Xorg X server ATI display + driver wrapper and brings debugging symbols for these sub-drivers through + package dependencies. + +Package: xserver-xorg-video-radeon +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, ${xserver:Depends} +Provides: ${xviddriver:Provides} +Replaces: xserver-xorg-video-ati (<= 1:6.8.191-1) +Description: X.Org X server -- ATI Radeon display driver + This driver for the X.Org X server (see xserver-xorg for a further description) + provides support for the ATI Radeon and FireGL series. It provides the 'radeon' + driver. + . + Note that this is not the same as the ATI-provided, binary-only, 'fglrx' + driver, which provides additional 3D functionality for some newer Radeon + cards, but is not supported. + . + This driver provides support for Radeon and FireGL series ATI cards. + . + More information about X.Org can be found at: + + + + . + This package is built from the X.org xf86-video-ati driver module. + +Package: xserver-xorg-video-radeon-dbg +Architecture: any +Depends: xserver-xorg-video-radeon (= ${binary:Version}) +Replaces: xserver-xorg-video-ati-dbg (<= 1:6.8.191-1) +Priority: extra +Description: X.Org X server -- ATI Radeon display driver (debugging symbols) + This driver for the X.Org X server (see xserver-xorg for a further description) + provides support for the ATI Radeon and FireGL series. It provides the 'radeon' + driver. + . + This driver provides support for Radeon and FireGL series ATI cards. + . + This package provides debugging symbols for the Xorg X server ATI Radeon + display driver. --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/changelog +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/changelog @@ -0,0 +1,625 @@ +xserver-xorg-video-ati (1:6.9.0+git20081003.f9826a56-0ubuntu5) jaunty; urgency=low + + * Rebuild against the new xserver + + -- Timo Aaltonen Mon, 15 Dec 2008 10:19:03 +0200 + +xserver-xorg-video-ati (1:6.9.0+git20081003.f9826a56-0ubuntu4) jaunty; urgency=low + + * 100_quirk_system.patch: Add three more quirks for AGPMode issues + (LP: #296617, #141551) + + -- Bryce Harrington Mon, 24 Nov 2008 20:32:11 -0800 + +xserver-xorg-video-ati (1:6.9.0+git20081003.f9826a56-0ubuntu3) jaunty; urgency=low + + * Add 103_dithering_rework.patch: Complete, correct fix for dithering + issues we'd initially worked around in patches 101 and 102. Those + patches also appear to have introduced regressions on certain hardware, + which this rework addresses more elegantly. This patch essentially + includes all of upstream's work up to commit 435cf7da, except that it + drops commit 0975e007 (rename radeon_memory to radeon_legacy_memory) + which is unrelated to the dithering problem. + (Closes LP: #274234, #284346) + + -- Bryce Harrington Tue, 25 Nov 2008 03:38:53 +0000 + +xserver-xorg-video-ati (1:6.9.0+git20081003.f9826a56-0ubuntu2) intrepid; urgency=low + + * 102_rv530_dithering.patch: Expands previous dithering fixup to the RV530 + (LP: #264535) + + -- Bryce Harrington Fri, 03 Oct 2008 19:51:56 -0700 + +xserver-xorg-video-ati (1:6.9.0+git20081003.f9826a56-0ubuntu1) intrepid; urgency=low + + * Pull upstream snapshot, up to commit f9826a56 (LP: #277104) + - Add support for DDC via atom commands for RV410 (LP: #227520?) + - man page updates (fdo #17887) + - Make initial rotation work, by initializing acceleration _before_ + setting the mode + - Fix Xv video corruption by passing base offset into + RADEONDisplayVideo() explicitly (fdo #17254, LP: #267297) + - Fix sync-to-vblank hangs after mode switch with DRM vblank-rework. + - pll adjustments + - Add quirk to fix macbook hardware (fdo #17625) + * Drop 103_rotation_reset.patch - already upstream + + -- Bryce Harrington Fri, 03 Oct 2008 18:56:44 -0700 + +xserver-xorg-video-ati (1:6.9.0+git20080826.a3cc1d7a-2ubuntu4) intrepid; urgency=low + + * 103_rotation_reset.patch: Fixes corruption on screen rotation + (LP: #267266) + + -- Bryce Harrington Thu, 02 Oct 2008 11:55:04 -0700 + +xserver-xorg-video-ati (1:6.9.0+git20080826.a3cc1d7a-2ubuntu3) intrepid; urgency=low + + * 101_rv635_enable_dithering.patch: Enables dithering for RV620, RV635, + RS780, and RV770 chipsets to eliminate gradient banding issue + (fdo #17094) + + -- Bryce Harrington Mon, 22 Sep 2008 12:50:56 -0700 + +xserver-xorg-video-ati (1:6.9.0+git20080826.a3cc1d7a-2ubuntu2) intrepid; urgency=low + + * Rebuild against the new xserver-xorg-dev. + + -- Timo Aaltonen Fri, 12 Sep 2008 01:06:29 +0300 + +xserver-xorg-video-ati (1:6.9.0+git20080826.a3cc1d7a-2ubuntu1) intrepid; urgency=low + + * debian/control: Reduce xorg-server Build-Depends version to 1.4.99 (FTBS) + * 100_quirk_system.patch: Adds a quirk system for setting specific + AGPMode values for particular hardware combinations. See + https://wiki.ubuntu.com/X/Quirks for details about this. + (LP: #248438) + * Modify Maintainer value to match the DebianMaintainerField + specification. + + -- Bryce Harrington Fri, 05 Sep 2008 18:47:50 -0700 + +xserver-xorg-video-ati (1:6.9.0+git20080826.a3cc1d7a-2) experimental; urgency=low + + * Build against xserver 1.5. + + -- Julien Cristau Thu, 04 Sep 2008 14:21:38 +0200 + +xserver-xorg-video-ati (1:6.9.0+git20080826.a3cc1d7a-1) experimental; urgency=low + + [ Brice Goglin ] + * Pull upstream snapshot, up to commit a3cc1d7a. + + [ Julien Cristau ] + * Build with -fvisibility=hidden, avoiding symbol name clashes with + radeonhd (closes: #472252). + + -- Brice Goglin Tue, 26 Aug 2008 21:33:42 +0200 + +xserver-xorg-video-ati (1:6.9.0+git20080802.1f3eee36-1) experimental; urgency=low + + * Pull upstream snapshot, up to commit 1f3eee36. + * Don't handle the nostrip build option in debian/rules, dh_strip does that; + allow the parallel=n option. + * Run autoreconf at build-time; build-depend on automake, libtool and + xutils-dev. + + -- Brice Goglin Sat, 02 Aug 2008 22:56:07 +0200 + +xserver-xorg-video-ati (1:6.9.0-2) experimental; urgency=low + + * Build against xserver 1.5 rc5. + + -- Julien Cristau Mon, 14 Jul 2008 01:35:34 +0200 + +xserver-xorg-video-ati (1:6.9.0-1+lenny3) unstable; urgency=low + + * Cherry-pick patches from the upstream git repository: + + Fix VT switching on M6 chips, closes: #435040. + + Remove un-needed dac check for single crtc cards. + + Make sure video offerlay offsets don't exceed the hardware limit + of 128 MB. + + Fix pasto in connector table setup for vga powerbooks + + -- Brice Goglin Tue, 26 Aug 2008 20:49:34 +0200 + +xserver-xorg-video-ati (1:6.9.0-1+lenny2) unstable; urgency=low + + * Cherry-pick patches from the upstream git repository: + + IGP VGA fixes. + + Add PCI ids for FireMV 2400 and HD3850. + + Clamp tex coords (r100/r200) for textured video (closes: #489779). + + Atombios: add support for other endians. + + Add quirk for Falcon NW laptop. + + Fix cursor with multi-head and rotation. + + Make sure cursor offsets are properly aligned when using EXA. + + Atombios: fix typo in mode conversion for panel. + + ATOM: fix for r4xx cards with no VRAM_Usage tables (closes: #467263) + + Fix console switch on R500. + + Add oem quirk for external tmds setup on Dell Inspiron 8600. + + Clean up legacy display watermark setup. + + Clear display priority bits before resetting them. + + Interlaced mode fixups for AVIVO chips. + + Add quirk for oem x300 card (closes: #492457). + + Fix error in driver connector table for powerbook w/ vga. + + R300: NUM_FPU adjustments for VAP_CNTL. + * Fix debian/rules build/patch dependencies. + + -- Brice Goglin Sat, 02 Aug 2008 18:54:49 +0200 + +xserver-xorg-video-ati (1:6.9.0-1+lenny1) unstable; urgency=low + + * Do not export MACH64, MACH32 and R128 pci ids in radeon.ids, + closes: #490990. + + -- Brice Goglin Tue, 15 Jul 2008 23:10:04 +0200 + +xserver-xorg-video-ati (1:6.9.0-1) unstable; urgency=low + + * New upstream release. + + -- Brice Goglin Fri, 27 Jun 2008 07:22:21 +0200 + +xserver-xorg-video-ati (1:6.8.192-1) unstable; urgency=low + + * New upstream release. + + Add some PLL tweaks, closes: #465864. + * Fix typo in long description, thanks Anders Semb Hermansen, + closes: #487628. + + -- Brice Goglin Wed, 25 Jun 2008 07:26:16 +0200 + +xserver-xorg-video-ati (1:6.8.191-3) unstable; urgency=low + + * xserver-xorg-video-radeon replaces earlier -ati packages, closes: #487527. + + -- Brice Goglin Sun, 22 Jun 2008 15:19:12 +0200 + +xserver-xorg-video-ati (1:6.8.191-2) unstable; urgency=low + + * Split the package into into the -ati package containing the ati driver + wrapper, and xserver-xorg-video-radeon containing the actual radeon + sub-driver. + xserver-xorg-video-ati now depends on -r128, -mach64 and -radeon + while -ati-dbg depends on their corresponding -dbg packages. + + -- Brice Goglin Thu, 19 Jun 2008 07:59:57 +0200 + +xserver-xorg-video-ati (1:6.8.191-1) unstable; urgency=low + + * New upstream release candidate. + + -- Brice Goglin Fri, 13 Jun 2008 01:38:55 +0200 + +xserver-xorg-video-ati (1:6.8.1~git20080528.faea0088-1) experimental; urgency=low + + * New upstream snapshot, up to commit faea0088. + + -- Brice Goglin Wed, 28 May 2008 11:54:21 +0200 + +xserver-xorg-video-ati (1:6.8.1~git20080521.04500c84-1) experimental; urgency=low + + * New upstream snapshot, up to commit 04500c84. + + Fix lockup on startup on IGP320M, closes: #480312. + + -- Brice Goglin Wed, 21 May 2008 07:54:45 +0200 + +xserver-xorg-video-ati (1:6.8.1~git20080512.94bf8f01-1) experimental; urgency=low + + * New upstream snapshot, up to commit 94bf8f01. + + Fix some DPMS-related brief blanking, closes: #467105. + * Build-depend on dpkg-dev >= 1.14.17 for dpkg-shlibdeps --warnings. + + -- Brice Goglin Mon, 12 May 2008 13:41:04 +0200 + +xserver-xorg-video-ati (1:6.8.1~git20080417.c5d62fa0-1) experimental; urgency=low + + * New upstream snapshot, up to commit c5d62fa0. + * Run dpkg-shlibdeps with --warnings=6. Drivers reference symbols from + /usr/bin/Xorg and other modules, and that's not a bug, so we want + dpkg-shlibdeps to shut up about symbols it can't find. + + -- Brice Goglin Mon, 21 Apr 2008 02:40:28 +0200 + +xserver-xorg-video-ati (1:6.8.1~git20080320.5e3b2128-1) experimental; urgency=low + + * New upstream snapshot, up to commit 5e3b2128. + + Driver-side fix of two colour cursors to ARGB conversion on + big endian platforms, needs a recent xserver-xorg-core to be + be complete, closes: #446123. + + -- Brice Goglin Thu, 20 Mar 2008 09:10:18 +0100 + +xserver-xorg-video-ati (1:6.8.1~git20080310.38606b08-1) experimental; urgency=low + + * New upstream snapshap, up to commit 38606b08. + + -- Brice Goglin Mon, 10 Mar 2008 23:48:13 +0100 + +xserver-xorg-video-ati (1:6.8.1~git20080302.a4398ac3-1) experimental; urgency=low + + * New upstream snapshot, after r128 and mach64 got split out. + + Depends on xserver-xorg-video-r128 and xserver-xorg-video-mach64. + + Drop obsolete conflicts/replaces. + + Add a NEWS entry about the need to change Driver ati into mach64/r128. + * Bump Standards-Version: to 3.7.3, no change needed. + * Remove XS- prefix to Vcs-Browser and Vcs-Git fields. + + -- Brice Goglin Sun, 02 Mar 2008 13:20:59 +0100 + +xserver-xorg-video-ati (1:6.8.0-1) unstable; urgency=low + + * New upstream release. + + Bring back to life planar-to-packed conversion for rs4xx, + closes: #448577. + + -- Brice Goglin Tue, 19 Feb 2008 08:24:35 +0100 + +xserver-xorg-video-ati (1:6.7.198~git20080203.f65e8dfa-1) experimental; urgency=low + + * New upstream snapshot, containing commits up to f65e8dfa. + + Reverts "Default to 1x again with non-v3 AGP cards", closes: #457767. + + -- Brice Goglin Sun, 03 Feb 2008 10:49:43 +0100 + +xserver-xorg-video-ati (1:6.7.198~git20080117.6bd510a2-1) experimental; urgency=low + + * New upstream snapshot, containing commits up to 6bd510a2. + + -- Brice Goglin Thu, 17 Jan 2008 10:54:03 +0100 + +xserver-xorg-video-ati (1:6.7.198~git20080109.10e7636c-1) experimental; urgency=low + + * New upstream snapshot, containing commits up to 10e7636c. + + -- Brice Goglin Wed, 09 Jan 2008 23:43:53 +0100 + +xserver-xorg-video-ati (1:6.7.198~git20080102.30cab1db-1) experimental; urgency=low + + * New upstream snapshot, containing commits up to 30cab1db. + + -- Brice Goglin Wed, 02 Jan 2008 22:04:12 +0100 + +xserver-xorg-video-ati (1:6.7.198~git20080101.f65374f5-1) experimental; urgency=low + + * New upstream snapshot, containing commits up to f65374f5. + + -- Brice Goglin Tue, 01 Jan 2008 11:37:58 +0100 + +xserver-xorg-video-ati (1:6.7.198~git20071223.ad3325f6-1) experimental; urgency=low + + * New upstream snapshot, containing commits up to ad3325f6. + + Add IgnoreLidStatus option to enable lid even when closed, + closes: #457612, #457516. + + Fix PLL input setup on mac cards, closes: #457563. + + -- Brice Goglin Sun, 23 Dec 2007 23:24:43 +0100 + +xserver-xorg-video-ati (1:6.7.198~git20071221.be7f8fd3-1) experimental; urgency=low + + * New upstream snapshot, containing commits up to be7f8fd3. + + New atombios based support for r500 and r600 boards. + + Zaphod mode is back, reimplemented on top of RandR 1.2. + + -- Brice Goglin Fri, 21 Dec 2007 08:39:57 +0100 + +xserver-xorg-video-ati (1:6.7.197-1) unstable; urgency=low + + * New upstream release candidate. + * Upload to unstable since this release candidate is supposed + to be much better than the old 1:6.6.193-3. + * Add a NEWS entry pointing to some RandR 1.2 documentation. + + -- Brice Goglin Fri, 21 Dec 2007 08:11:07 +0100 + +xserver-xorg-video-ati (1:6.7.197~git20071219.ce4fa1ce-1) experimental; urgency=low + + * New upstream snapshot, containing commits up to ce4fa1ce. + + Default to 1x again with non-v3 AGP cards, closes: #444049. + + -- Brice Goglin Wed, 19 Dec 2007 08:44:33 +0100 + +xserver-xorg-video-ati (1:6.7.196-2) experimental; urgency=low + + * New upstream snapshot, containing commits up to 5022d006. + + Fix the washed out color, closes: #440174. + + Update 01_gen_pci_ids.diff to use the new ati_pciids_gen.h. + + -- Brice Goglin Mon, 03 Dec 2007 21:26:02 +0100 + +xserver-xorg-video-ati (1:6.7.196-1) experimental; urgency=low + + * New upstream release candidate. + + -- Brice Goglin Mon, 12 Nov 2007 08:38:43 +0100 + +xserver-xorg-video-ati (1:6.7.195-2) experimental; urgency=low + + * New upstream snapshot, + based on commit ddec5783103045084a66a34d71326cc6e4a3f598 + + Fixes some LVDS issues, closes: #445746. + + -- Brice Goglin Tue, 09 Oct 2007 18:27:22 +0200 + +xserver-xorg-video-ati (1:6.7.195-1) experimental; urgency=low + + * New upstream release candidate. + + -- Julien Cristau Sat, 06 Oct 2007 02:56:56 +0200 + +xserver-xorg-video-ati (1:6.7.194-1) experimental; urgency=low + + * New upstream release candidate. + + Add MacModel "mini" option to support Mac Mini connector table, + closes: #443570. + + Fix crash when Xv window is outside of either crtc, + closes: #441902. + + -- Brice Goglin Mon, 24 Sep 2007 07:59:36 +0200 + +xserver-xorg-video-ati (1:6.7.193-1) experimental; urgency=low + + * New upstream release candidate. + + Fix distortion after lid close/reopen, closes: #435114. + + Stop wrongly detecting the TV-output as connected, closes: #439322. + + Fix outputs after VT switch, closes: #443151. + + -- Brice Goglin Thu, 20 Sep 2007 07:34:02 +0200 + +xserver-xorg-video-ati (1:6.7.192-4) experimental; urgency=low + + * Really build against xserver 2:1.4. + * Pull upstream commits up to 2d78e2b6f36c21812b15eea0f1c7004e748fd5ab. + + -- Brice Goglin Thu, 13 Sep 2007 22:35:56 +0200 + +xserver-xorg-video-ati (1:6.7.192-3) experimental; urgency=low + + * Build against xserver 2:1.4-1. + + -- Brice Goglin Fri, 07 Sep 2007 17:52:57 +0200 + +xserver-xorg-video-ati (1:6.7.192-2) experimental; urgency=low + + * Build against xserver 1.3.99.2. + + -- Brice Goglin Tue, 04 Sep 2007 19:12:45 +0200 + +xserver-xorg-video-ati (1:6.7.192-1) experimental; urgency=low + + * New upstream release candidate. + + UseFBDev option removed, closes: #372920. + + Monitor detection fixed, closes: #413500. + + -- Brice Goglin Mon, 27 Aug 2007 08:26:38 +0200 + +xserver-xorg-video-ati (1:6.7.191-1) experimental; urgency=low + + * New upstream release candidate. + + TV-output support, closes: #332410, #360186, #378594, #435691. + + Bump x11proto-randr-dev build-dependency to >= 1.2 for RandR-1.2 + support. + + -- Brice Goglin Thu, 23 Aug 2007 08:15:03 +0200 + +xserver-xorg-video-ati (1:6.6.193-2) experimental; urgency=low + + * Build against xserver 1.3.99.0. + * Add 01_gen_pci_ids.diff. This patch adds a list of pci id's that the + driver supports so that the server can automatically load it. + * Use ${binary:Version} instead of ${Source-Version}. + + -- Brice Goglin Mon, 20 Aug 2007 19:49:33 +0200 + +xserver-xorg-video-ati (1:6.6.193-1) experimental; urgency=low + + [ Brice Goglin ] + * New upstream release candidate. + + Add references to radeon and r128 manpages in SEE ALSO + in the ati(4) manpage (closes: #386001). + + Fix typo in "specifying" in the radeon(4) manpage + (closes: #432059). + + Fully zero-initialize info->CRT2pScrn->monitor (closes: #422777). + + Avoid crash in MACH64 Xv code (closes: #320828). + + Drop 01_ati_r128_update_chip_identification.diff since + this information is redundant and does not matter anyway + since the driver auto-detects how the card is connected + to the system. + + Drop 02_radeon_manpage.diff, merged upstream. + + [ Julien Cristau ] + * Add upstream URL to debian/copyright. Thanks, Loïc Minier. + + -- Brice Goglin Sat, 4 Aug 2007 15:14:49 +0200 + +xserver-xorg-video-ati (1:6.6.192-1) experimental; urgency=low + + [ Brice Goglin ] + * Build a xserver-xorg-video-ati-dbg package with debugging symbols. + * Fix Provides: xf86-video-driver-atimisc to match Replaces: and + Conflicts: xserver-xorg-video-atimisc. + Thanks to Eric Lavarde (closes: #372312). + * Bump Build-Depends: xserver-xorg-dev to >= 2:1.2.99.902 + (needed to let xsfbs get access to serverminver). + * Add XS-Vcs-*. + * Add a link to www.X.org and a reference to the xf86-video-ati + module in the long description (closes: #425321). + + [ Timo Aaltonen ] + * Replaces/Conflicts: xserver-xorg-driver-ati. + + [ Julien Cristau ] + * New upstream release candidate + * Refresh patch 02_radeon_manpage.diff. + + -- Julien Cristau Mon, 21 May 2007 01:28:33 +0200 + +xserver-xorg-video-ati (1:6.6.191-1) experimental; urgency=low + + [ Brice Goglin ] + * New upstream release candidate. + * autoreconf. + + [ Julien Cristau ] + * Drop Fabio and Branden from Uploaders, with their permission. Hopefully + they'll come back when they have more time! + + -- Julien Cristau Wed, 28 Mar 2007 14:26:43 +0200 + +xserver-xorg-video-ati (1:6.6.3-5) experimental; urgency=low + + * Bump build-dep on libdrm-dev to >= 2.2 to fix FTBFS (closes: #413100). + Thanks, Frank Lichtenheld! + * Add patch 02_radeon_manpage.diff to replace non-ascii character with the + corresponding groff escape sequence in the radeon manpage. + + -- Julien Cristau Fri, 2 Mar 2007 22:44:03 +0100 + +xserver-xorg-video-ati (1:6.6.3-4) experimental; urgency=low + + * Generate server dependencies automatically from the ABI + * Merge changes from upstream pre-release + * Remove obsolete 02_radeon_memmap_fbdev.diff + + -- David Nusinow Wed, 21 Feb 2007 22:54:17 -0500 + +xserver-xorg-video-ati (1:6.6.3-3) UNRELEASED; urgency=low + + * Add link to xserver-xorg-core bug script, so that bugreports contain + the user's config and log files. + * Bump dependency on xserver-xorg-core to >= 2:1.1.1-11, as previous + versions don't have the bug script. + + -- Julien Cristau Tue, 7 Nov 2006 07:30:39 +0100 + +xserver-xorg-video-ati (1:6.6.3-2) unstable; urgency=low + + * Add 02_radeon_memmap_fbdev.diff. This should fix breakage when using + fbdev. Thanks Michel Dänzer. Closes: #369167 + * Don't require libdrm-dev on hurd-i386. Thanks Michael Banck. + Closes: #392876 + + -- David Nusinow Sat, 14 Oct 2006 14:30:22 -0400 + +xserver-xorg-video-ati (1:6.6.3-1) unstable; urgency=low + + * New upstream release + + -- David Nusinow Fri, 13 Oct 2006 14:02:45 -0400 + +xserver-xorg-video-ati (1:6.6.2-2) unstable; urgency=low + + [ Drew Parsons ] + * Include upstream ChangeLog. Closes: #365104. + * Upload to unstable (X11R7.1 transition). + + -- David Nusinow Mon, 18 Sep 2006 19:57:28 -0400 + +xserver-xorg-video-ati (1:6.6.2-1) experimental; urgency=low + + * New upstream version. Happy birthday. + * Use debhelper 5. + * Standards version 3.7.2. + * Add reference to /usr/share/common-licenses/GPL to debian/copyright. + * Use dh_installman to install man pages. + * Exclude .la files from dh_install. + + -- Drew Parsons Thu, 31 Aug 2006 21:36:05 +1000 + +xserver-xorg-video-ati (1:6.6.1-2) experimental; urgency=low + + [ Drew Parsons ] + * Provides: xserver-xorg-video-1.0 not xserver-xorg-video. + + [ David Nusinow ] + * Bump xserver (build-)depends epochs to 2: to deal with botched + server upload + + -- David Nusinow Tue, 22 Aug 2006 23:46:26 +0000 + +xserver-xorg-video-ati (1:6.6.1-1) experimental; urgency=low + + [ Andres Salomon ] + * Test for obj-$(DEB_BUILD_GNU_TYPE) before creating it during build; + idempotency fix. + + [ David Nusinow ] + * New upstream release + * Bump dependency on xserver-xorg-core to >= 1:1.1.1. Do the same thing for + the build-dep on xserver-xorg-dev. + + -- David Nusinow Sun, 6 Aug 2006 20:15:19 +0000 + +xserver-xorg-video-ati (1:6.5.8.0-1) unstable; urgency=low + + * New upstream release + * Use dh_install with --list-missing + * Add build-dep on quilt + * Remove obsolete 02_ppc_fix.diff. Now incorporated upstream. + + -- David Nusinow Tue, 25 Apr 2006 22:11:48 -0400 + +xserver-xorg-video-ati (1:6.5.7.3-3) unstable; urgency=low + + * Upload to modular + + -- David Nusinow Sun, 26 Mar 2006 20:25:26 -0500 + +xserver-xorg-video-ati (1:6.5.7.3-2) experimental; urgency=low + + * Port patches from trunk + + general/043_ati_r128_update_chip_identification.diff + * Apply ppc-fix.patch and incorporate it in to our patch system instead of + just having it sit in the debian directory + + -- David Nusinow Sun, 26 Feb 2006 17:46:59 -0500 + +xserver-xorg-video-ati (1:6.5.7.3-1) experimental; urgency=low + + * First upload to Debian + * Change source package, package, and provides names to denote the + type of driver and that they are for xserver-xorg + + -- David Nusinow Fri, 13 Jan 2006 00:35:49 -0500 + +xserver-xorg-driver-ati (1:6.5.7.3-0ubuntu1) dapper; urgency=low + + * New upstream release. + * Also install Rage Theatre multimedia modules. + + -- Daniel Stone Wed, 4 Jan 2006 17:21:27 +1100 + +xserver-xorg-driver-ati (1:6.5.7-0ubuntu3) dapper; urgency=low + + * Add missing Build-Depends (x11proto-fonts-dev, x11proto-randr-dev, + x11proto-render-dev, libdrm (>> 1.0.5), x11proto-xf86dri-dev). + + -- Daniel Stone Mon, 5 Dec 2005 14:52:47 +1100 + +xserver-xorg-driver-ati (1:6.5.7-0ubuntu2) dapper; urgency=low + + * Apply patch from https://bugs.freedesktop.org/attachment.cgi?id=3620 to + fix hard crash on powerpc. The patch is also stored in + debian/ppc-fix.patch. + NOTE: according to benh the patch still needs some extra polishing. + + -- Fabio M. Di Nitto Fri, 25 Nov 2005 11:34:33 +0100 + +xserver-xorg-driver-ati (1:6.5.7-0ubuntu1) dapper; urgency=low + + * New upstream release. + + -- Daniel Stone Tue, 22 Nov 2005 13:25:16 +1100 + +xserver-xorg-driver-ati (1:6.5.6.1-1) dapper; urgency=low + + * New upstream release. + + -- Daniel Stone Tue, 25 Oct 2005 18:01:13 +1000 + +xserver-xorg-driver-ati (1:6.5.6-1) breezy; urgency=low + + * First xserver-xorg-driver-ati release. + + -- Daniel Stone Wed, 6 Jul 2005 15:48:17 +1000 --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/copyright +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/copyright @@ -0,0 +1,122 @@ +This package was downloaded from +http://xorg.freedesktop.org/releases/individual/driver/ + +Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and +that the name of Marc Aurele La France not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. Marc Aurele La France makes no representations +about the suitability of this software for any purpose. It is provided +"as-is" without express or implied warranty. + +MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +Copyright 2000 Gareth Hughes +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +GARETH HUGHES BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +(c) 2004 Adam Jackson. Standard MIT license applies. + +Copyright 1999-2000 Precision Insight, Inc., Cedar Park, Texas. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL +PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario, +Precision Insight, Inc., Cedar Park, Texas, and +VA Linux Systems Inc., Fremont, California. + +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation on the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NON-INFRINGEMENT. IN NO EVENT SHALL ATI, PRECISION INSIGHT, VA LINUX +SYSTEMS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Copyright 2003 Alex Deucher. + +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation on the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NON-INFRINGEMENT. IN NO EVENT SHALL ALEX DEUCHER, OR ANY OTHER +CONTRIBUTORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +Created by Bogdan D. bogdand@users.sourceforge.net +License: GPL (see /usr/share/common-licenses/GPL) --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/patches/series +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/patches/series @@ -0,0 +1,3 @@ +01_gen_pci_ids.diff +100_quirk_system.patch +103_dithering_rework.patch --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/patches/100_quirk_system.patch +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/patches/100_quirk_system.patch @@ -0,0 +1,90 @@ +diff --git a/src/atipciids.h b/src/atipciids.h +index f24f8fb..7735e93 100644 +--- a/src/atipciids.h ++++ b/src/atipciids.h +@@ -35,8 +35,11 @@ + + /* PCI Vendor */ + #define PCI_VENDOR_ATI 0x1002 ++#define PCI_VENDOR_IBM 0x1014 + #define PCI_VENDOR_AMD 0x1022 + #define PCI_VENDOR_DELL 0x1028 ++#define PCI_VENDOR_VIA 0x1106 ++#define PCI_VENDOR_INTEL 0x8086 + + #include "ati_pciids_gen.h" + +diff --git a/src/radeon_dri.c b/src/radeon_dri.c +index 5542d2b..cb7df2c 100644 +--- a/src/radeon_dri.c ++++ b/src/radeon_dri.c +@@ -719,6 +719,47 @@ static void RADEONDRIInitGARTValues(RADEONInfoPtr info) + info->dri->log2GARTTexGran = l; + } + ++/* AGP Mode Quirk List - Certain hostbridge/gfx-card combos don't work with ++ * the standard AGPMode settings, so we detect and handle these ++ * on a case-by-base basis with quirks. To see if an AGPMode is valid, test ++ * it by setting Option "AGPMode" "1" (or "2", or "4" or "8"). */ ++typedef struct { ++ unsigned int hostbridgeVendor; ++ unsigned int hostbridgeDevice; ++ unsigned int chipVendor; ++ unsigned int chipDevice; ++ unsigned int subsysVendor; ++ unsigned int subsysDevice; ++ unsigned int defaultMode; ++} radeon_agpmode_quirk, *radeon_agpmode_quirk_ptr; ++ ++/* Keep sorted by hostbridge vendor and device */ ++static radeon_agpmode_quirk radeon_agpmode_quirk_list[] = { ++ ++ /* Intel 82865G/PE/P DRAM Controller/Host-Hub / Mobility 9800 Needs AGPMode 4 (deb #462590) */ ++ { PCI_VENDOR_INTEL,0x2570, PCI_VENDOR_ATI,0x4a4e, PCI_VENDOR_DELL,0x5106, 4 }, ++ /* Intel 82855PM Processor to I/O Controller / Mobility M6 LY Needs AGPMode 1 (deb #467235) */ ++ { PCI_VENDOR_INTEL,0x3340, PCI_VENDOR_ATI,0x4c59, 0x1014,0x052f, 1}, ++ /* Intel 82830 830 Chipset Host Bridge / Mobility M6 LY Needs AGPMode 2 (fdo #17360)*/ ++ { PCI_VENDOR_INTEL,0x3575, PCI_VENDOR_ATI,0x4c59, PCI_VENDOR_DELL,0x00e3, 2 }, ++ /* Intel 82852/82855 host bridge / Mobility 9600 M10 RV350 Needs AGPMode 1 (deb #467460) */ ++ { PCI_VENDOR_INTEL,0x3580, PCI_VENDOR_ATI,0x4e50, 0x1025,0x0061, 1 }, ++ /* Intel 82852/82855 host bridge / Mobility 9600 M10 RV350 Needs AGPMode 1 (lp #141551) */ ++ { PCI_VENDOR_INTEL,0x3580, PCI_VENDOR_ATI,0x4e50, 0x1043,0x1942, 1 }, ++ /* Intel 82852/82855 host bridge / Mobility FireGL 9000 R250 Needs AGPMode 1 (lp #296617) */ ++ { PCI_VENDOR_INTEL,0x3580, PCI_VENDOR_ATI,0x4c66, 0x1028,0x0149, 1 }, ++ ++ /* ASRock K7VT4A+ AGP 8x / ATI Radeon 9250 AGP Needs AGPMode 4 (LP: #133192) */ ++ { 0x1849,0x3189, PCI_VENDOR_ATI,0x5960, 0x1787, 0x5960, 4}, ++ ++ /* VIA VT8363 Host Bridge / R200 QL [Radeon 8500] Needs AGPMode 2 (lp #141551) */ ++ { 0x1106,0x0305, PCI_VENDOR_ATI,0x514c, 0x1002,0x013a, 2 }, ++ /* VIA VT8377 Host Bridge / R200 QM [Radeon 9100] Needs AGPMode 4 (deb #461144) */ ++ { 0x1106,0x3189, PCI_VENDOR_ATI,0x514d, 0x174b,0x7149, 4 }, ++ ++ { 0, 0, 0, 0, 0, 0, 0 }, ++}; ++ + /* Set AGP transfer mode according to requests and constraints */ + static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen) + { +@@ -741,6 +776,21 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen) + else defaultMode = 1; + } + ++ /* Apply AGPMode Quirks */ ++ radeon_agpmode_quirk_ptr p = radeon_agpmode_quirk_list; ++ while (p && p->chipDevice != 0) { ++ if (vendor == p->hostbridgeVendor && ++ device == p->hostbridgeDevice && ++ PCI_DEV_VENDOR_ID(info->PciInfo) == p->chipVendor && ++ PCI_DEV_DEVICE_ID(info->PciInfo) == p->chipDevice && ++ PCI_SUB_VENDOR_ID(info->PciInfo) == p->subsysVendor && ++ PCI_SUB_DEVICE_ID(info->PciInfo) == p->subsysDevice) ++ { ++ defaultMode = p->defaultMode; ++ } ++ ++p; ++ } ++ + from = X_DEFAULT; + + if (xf86GetOptValInteger(info->Options, OPTION_AGP_MODE, &info->dri->agpMode)) { --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/patches/103_dithering_rework.patch +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/patches/103_dithering_rework.patch @@ -0,0 +1,552 @@ +diff -Nurp patched/src/atombios_crtc.c working/src/atombios_crtc.c +--- patched/src/atombios_crtc.c 2008-11-10 14:48:08.000000000 -0800 ++++ working/src/atombios_crtc.c 2008-11-10 14:48:23.000000000 -0800 +@@ -224,7 +224,7 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, + if (IS_AVIVO_VARIANT) { + uint32_t temp; + +- if (mode->Clock > 200000) /* range limits??? */ ++ if (IS_DCE3_VARIANT && mode->Clock > 200000) /* range limits??? */ + pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; + else + pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; +diff -Nurp patched/src/atombios_output.c working/src/atombios_output.c +--- patched/src/atombios_output.c 2008-11-10 14:48:08.000000000 -0800 ++++ working/src/atombios_output.c 2008-11-10 14:48:23.000000000 -0800 +@@ -43,6 +43,8 @@ + #include "radeon_macros.h" + #include "radeon_atombios.h" + ++#include "ati_pciids_gen.h" ++ + static int + atombios_output_dac1_setup(xf86OutputPtr output, DisplayModePtr mode) + { +@@ -206,7 +208,8 @@ atombios_output_tv1_setup(xf86OutputPtr + int + atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode) + { +- RADEONInfoPtr info = RADEONPTR(output->scrn); ++ ScrnInfoPtr pScrn = output->scrn; ++ RADEONInfoPtr info = RADEONPTR(pScrn); + ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION disp_data; + AtomBiosArgRec data; + unsigned char *space; +@@ -218,7 +221,7 @@ atombios_external_tmds_setup(xf86OutputP + else + disp_data.sXTmdsEncoder.ucMisc = 0; + +- if (!info->dac6bits) ++ if (pScrn->rgbBits == 8) + disp_data.sXTmdsEncoder.ucMisc |= (1 << 1); + + data.exec.index = GetIndexIntoMasterTable(COMMAND, DVOEncoderControl); +@@ -264,84 +267,109 @@ atombios_output_ddia_setup(xf86OutputPtr + } + + static int +-atombios_output_tmds1_setup(xf86OutputPtr output, DisplayModePtr mode) ++atombios_output_digital_setup(xf86OutputPtr output, int device, DisplayModePtr mode) + { +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- TMDS1_ENCODER_CONTROL_PS_ALLOCATION disp_data; ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ ScrnInfoPtr pScrn = output->scrn; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ LVDS_ENCODER_CONTROL_PS_ALLOCATION disp_data; ++ LVDS_ENCODER_CONTROL_PS_ALLOCATION_V2 disp_data2; + AtomBiosArgRec data; + unsigned char *space; ++ int index; ++ int major, minor; + +- disp_data.ucAction = 1; +- if (mode->Clock > 165000) +- disp_data.ucMisc = 1; +- else +- disp_data.ucMisc = 0; +- disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); +- data.exec.index = GetIndexIntoMasterTable(COMMAND, TMDS1EncoderControl); +- data.exec.dataSpace = (void *)&space; +- data.exec.pspace = &disp_data; +- +- if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { +- ErrorF("Output TMDS1 setup success\n"); +- return ATOM_SUCCESS; ++ switch (device) { ++ case ATOM_DEVICE_DFP1_INDEX: ++ index = GetIndexIntoMasterTable(COMMAND, TMDS1EncoderControl); ++ break; ++ case ATOM_DEVICE_LCD1_INDEX: ++ index = GetIndexIntoMasterTable(COMMAND, LVDSEncoderControl); ++ break; ++ case ATOM_DEVICE_DFP3_INDEX: ++ index = GetIndexIntoMasterTable(COMMAND, TMDS2EncoderControl); ++ break; ++ default: ++ return ATOM_NOT_IMPLEMENTED; ++ break; + } + +- ErrorF("Output TMDS1 setup failed\n"); +- return ATOM_NOT_IMPLEMENTED; +- +-} +- +-static int +-atombios_output_tmds2_setup(xf86OutputPtr output, DisplayModePtr mode) +-{ +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- TMDS2_ENCODER_CONTROL_PS_ALLOCATION disp_data; +- AtomBiosArgRec data; +- unsigned char *space; +- +- disp_data.ucAction = 1; +- if (mode->Clock > 165000) +- disp_data.ucMisc = 1; +- else +- disp_data.ucMisc = 0; +- disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); +- data.exec.index = GetIndexIntoMasterTable(COMMAND, TMDS2EncoderControl); +- data.exec.dataSpace = (void *)&space; +- data.exec.pspace = &disp_data; ++ atombios_get_command_table_version(info->atomBIOS, index, &major, &minor); + +- if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { +- ErrorF("Output TMDS2 setup success\n"); +- return ATOM_SUCCESS; ++ /*ErrorF("table is %d %d\n", major, minor);*/ ++ switch (major) { ++ case 0: ++ case 1: ++ switch (minor) { ++ case 1: ++ disp_data.ucMisc = 0; ++ disp_data.ucAction = PANEL_ENCODER_ACTION_ENABLE; ++ if (radeon_output->type == OUTPUT_HDMI) ++ disp_data.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); ++ if (device == ATOM_DEVICE_LCD1_INDEX) { ++ if (radeon_output->lvds_misc & (1 << 0)) ++ disp_data.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ if (radeon_output->lvds_misc & (1 << 1)) ++ disp_data.ucMisc |= (1 << 1); ++ } else { ++ if (mode->Clock > 165000) ++ disp_data.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ if (pScrn->rgbBits == 8) ++ disp_data.ucMisc |= (1 << 1); ++ } ++ data.exec.pspace = &disp_data; ++ break; ++ case 2: ++ case 3: ++ disp_data2.ucMisc = 0; ++ disp_data2.ucAction = PANEL_ENCODER_ACTION_ENABLE; ++ if (minor == 3) { ++ if (radeon_output->coherent_mode) { ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_COHERENT; ++ xf86DrvMsg(output->scrn->scrnIndex, X_INFO, "Coherent Mode enabled\n"); ++ } ++ } ++ if (radeon_output->type == OUTPUT_HDMI) ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE; ++ disp_data2.ucTruncate = 0; ++ disp_data2.ucSpatial = 0; ++ disp_data2.ucTemporal = 0; ++ disp_data2.ucFRC = 0; ++ if (device == ATOM_DEVICE_LCD1_INDEX) { ++ if (radeon_output->lvds_misc & (1 << 0)) ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ if (radeon_output->lvds_misc & (1 << 5)) { ++ disp_data2.ucSpatial = PANEL_ENCODER_SPATIAL_DITHER_EN; ++ if (radeon_output->lvds_misc & (1 << 1)) ++ disp_data2.ucSpatial |= PANEL_ENCODER_SPATIAL_DITHER_DEPTH; ++ } ++ if (radeon_output->lvds_misc & (1 << 6)) { ++ disp_data2.ucTemporal = PANEL_ENCODER_TEMPORAL_DITHER_EN; ++ if (radeon_output->lvds_misc & (1 << 1)) ++ disp_data2.ucTemporal |= PANEL_ENCODER_TEMPORAL_DITHER_DEPTH; ++ if (((radeon_output->lvds_misc >> 2) & 0x3) == 2) ++ disp_data2.ucTemporal |= PANEL_ENCODER_TEMPORAL_LEVEL_4; ++ } ++ } else { ++ if (mode->Clock > 165000) ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ } ++ data.exec.pspace = &disp_data2; ++ break; ++ } ++ break; + } + +- ErrorF("Output TMDS2 setup failed\n"); +- return ATOM_NOT_IMPLEMENTED; +-} +- +-static int +-atombios_output_lvds_setup(xf86OutputPtr output, DisplayModePtr mode) +-{ +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- LVDS_ENCODER_CONTROL_PS_ALLOCATION disp_data; +- AtomBiosArgRec data; +- unsigned char *space; +- +- disp_data.ucAction = 1; +- if (mode->Clock > 165000) +- disp_data.ucMisc = 1; +- else +- disp_data.ucMisc = 0; +- disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); +- data.exec.index = GetIndexIntoMasterTable(COMMAND, LVDSEncoderControl); ++ data.exec.index = index; + data.exec.dataSpace = (void *)&space; +- data.exec.pspace = &disp_data; + + if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { +- ErrorF("Output LVDS setup success\n"); ++ ErrorF("Output digital setup success\n"); + return ATOM_SUCCESS; + } + +- ErrorF("Output LVDS setup failed\n"); ++ ErrorF("Output digital setup failed\n"); + return ATOM_NOT_IMPLEMENTED; + } + +@@ -600,34 +628,6 @@ atombios_output_scaler_setup(xf86OutputP + + } + +-static void +-dfp_disable_dither(xf86OutputPtr output, int device) +-{ +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- unsigned char *RADEONMMIO = info->MMIO; +- +- switch (device) { +- case ATOM_DEVICE_DFP1_SUPPORT: +- OUTREG(AVIVO_TMDSA_BIT_DEPTH_CONTROL, 0); /* TMDSA */ +- break; +- case ATOM_DEVICE_DFP2_SUPPORT: +- if ((info->ChipFamily == CHIP_FAMILY_RS600) || +- (info->ChipFamily == CHIP_FAMILY_RS690) || +- (info->ChipFamily == CHIP_FAMILY_RS740)) +- OUTREG(AVIVO_DDIA_BIT_DEPTH_CONTROL, 0); /* DDIA */ +- else +- OUTREG(AVIVO_DVOA_BIT_DEPTH_CONTROL, 0); /* DVO */ +- break; +- /*case ATOM_DEVICE_LCD1_SUPPORT:*/ /* LVDS panels need dither enabled */ +- case ATOM_DEVICE_DFP3_SUPPORT: +- OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, 0); /* LVTMA */ +- break; +- default: +- break; +- } +- +-} +- + static AtomBiosResult + atombios_display_device_control(atomBiosHandlePtr atomBIOS, int device, Bool state) + { +@@ -896,6 +896,30 @@ atombios_set_output_crtc_source(xf86Outp + return; + } + ++static void ++atombios_apply_output_quirks(xf86OutputPtr output) ++{ ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(output->scrn); ++ unsigned char *RADEONMMIO = info->MMIO; ++ ++ /* Funky macbooks */ ++ if ((info->Chipset == PCI_CHIP_RV530_71C5) && ++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x106b) && ++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x0080)) { ++ if (radeon_output->MonType == MT_LCD) { ++ if (radeon_output->devices & ATOM_DEVICE_LCD1_SUPPORT) { ++ uint32_t lvtma_bit_depth_control = INREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL); ++ ++ lvtma_bit_depth_control &= ~AVIVO_LVTMA_BIT_DEPTH_CONTROL_TRUNCATE_EN; ++ lvtma_bit_depth_control &= ~AVIVO_LVTMA_BIT_DEPTH_CONTROL_SPATIAL_DITHER_EN; ++ ++ OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, lvtma_bit_depth_control); ++ } ++ } ++ } ++} ++ + void + atombios_output_mode_set(xf86OutputPtr output, + DisplayModePtr mode, +@@ -920,10 +944,8 @@ atombios_output_mode_set(xf86OutputPtr o + if (IS_DCE3_VARIANT) { + atombios_output_dig1_setup(output, adjusted_mode); + atombios_output_dig1_transmitter_setup(output, adjusted_mode); +- } else { +- atombios_output_tmds1_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_DFP1_SUPPORT); +- } ++ } else ++ atombios_output_digital_setup(output, ATOM_DEVICE_DFP1_INDEX, adjusted_mode); + } else if (radeon_output->devices & ATOM_DEVICE_DFP2_SUPPORT) { + if (IS_DCE3_VARIANT) { + // fix me +@@ -934,26 +956,21 @@ atombios_output_mode_set(xf86OutputPtr o + atombios_output_ddia_setup(output, adjusted_mode); + else + atombios_external_tmds_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_DFP2_SUPPORT); + } + } else if (radeon_output->devices & ATOM_DEVICE_DFP3_SUPPORT) { + if (IS_DCE3_VARIANT) { + atombios_output_dig2_setup(output, adjusted_mode); + atombios_output_dig2_transmitter_setup(output, adjusted_mode); +- } else { +- atombios_output_tmds2_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_DFP3_SUPPORT); +- } ++ } else ++ atombios_output_digital_setup(output, ATOM_DEVICE_DFP3_INDEX, adjusted_mode); + } + } else if (radeon_output->MonType == MT_LCD) { + if (radeon_output->devices & ATOM_DEVICE_LCD1_SUPPORT) { + if (IS_DCE3_VARIANT) { + atombios_output_dig2_setup(output, adjusted_mode); + atombios_output_dig2_transmitter_setup(output, adjusted_mode); +- } else { +- atombios_output_lvds_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_LCD1_SUPPORT); +- } ++ } else ++ atombios_output_digital_setup(output, ATOM_DEVICE_LCD1_INDEX, adjusted_mode); + } + } else if ((radeon_output->MonType == MT_CTV) || + (radeon_output->MonType == MT_STV) || +@@ -964,7 +981,7 @@ atombios_output_mode_set(xf86OutputPtr o + atombios_output_dac2_setup(output, adjusted_mode); + atombios_output_tv1_setup(output, adjusted_mode); + } +- ++ atombios_apply_output_quirks(output); + } + + static AtomBiosResult +diff -Nurp patched/src/radeon_atombios.c working/src/radeon_atombios.c +--- patched/src/radeon_atombios.c 2008-11-10 14:48:08.000000000 -0800 ++++ working/src/radeon_atombios.c 2008-11-10 14:48:23.000000000 -0800 +@@ -1594,15 +1594,23 @@ RADEONGetATOMConnectorInfoFromBIOSObject + break; + case ENCODER_OBJECT_ID_INTERNAL_TMDS1: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1: +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); +- info->BiosConnector[i].TMDSType = TMDS_INT; ++ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_LCD1_INDEX); ++ else { ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); ++ info->BiosConnector[i].TMDSType = TMDS_INT; ++ } + break; + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: +- if (num == 1) +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); +- else +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP2_INDEX); +- info->BiosConnector[i].TMDSType = TMDS_UNIPHY; ++ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_LCD1_INDEX); ++ else { ++ if (num == 1) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); ++ else ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP2_INDEX); ++ info->BiosConnector[i].TMDSType = TMDS_UNIPHY; ++ } + break; + case ENCODER_OBJECT_ID_INTERNAL_TMDS2: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1: +@@ -1611,8 +1619,12 @@ RADEONGetATOMConnectorInfoFromBIOSObject + break; + case ENCODER_OBJECT_ID_INTERNAL_LVTM1: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP3_INDEX); +- info->BiosConnector[i].TMDSType = TMDS_LVTMA; ++ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_LCD1_INDEX); ++ else { ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP3_INDEX); ++ info->BiosConnector[i].TMDSType = TMDS_LVTMA; ++ } + break; + case ENCODER_OBJECT_ID_INTERNAL_DAC1: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: +@@ -1668,6 +1680,71 @@ RADEONGetATOMConnectorInfoFromBIOSObject + } + + Bool ++RADEONGetATOMLVDSInfo(xf86OutputPtr output) ++{ ++ ScrnInfoPtr pScrn = output->scrn; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ atomDataTablesPtr atomDataPtr; ++ uint8_t crev, frev; ++ ++ atomDataPtr = info->atomBIOS->atomDataPtr; ++ ++ if (!rhdAtomGetTableRevisionAndSize( ++ (ATOM_COMMON_TABLE_HEADER *)(atomDataPtr->LVDS_Info.base), ++ &frev,&crev,NULL)) { ++ return FALSE; ++ } ++ ++ switch (crev) { ++ case 1: ++ radeon_output->PanelXRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHActive); ++ radeon_output->PanelYRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVActive); ++ radeon_output->DotClock = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usPixClk) * 10; ++ radeon_output->HBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHBlanking_Time); ++ radeon_output->HOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHSyncOffset); ++ radeon_output->HSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHSyncWidth); ++ radeon_output->VBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVBlanking_Time); ++ radeon_output->VOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVSyncOffset); ++ radeon_output->VSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVSyncWidth); ++ radeon_output->PanelPwrDly = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->usOffDelayInMs); ++ radeon_output->lvds_misc = atomDataPtr->LVDS_Info.LVDS_Info->ucLVDS_Misc; ++ radeon_output->lvds_ss_id = atomDataPtr->LVDS_Info.LVDS_Info->ucSS_Id; ++ break; ++ case 2: ++ radeon_output->PanelXRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHActive); ++ radeon_output->PanelYRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVActive); ++ radeon_output->DotClock = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usPixClk) * 10; ++ radeon_output->HBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHBlanking_Time); ++ radeon_output->HOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHSyncOffset); ++ radeon_output->HSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHSyncWidth); ++ radeon_output->VBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVBlanking_Time); ++ radeon_output->VOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVSyncOffset); ++ radeon_output->VSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVSyncWidth); ++ radeon_output->PanelPwrDly = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->usOffDelayInMs); ++ radeon_output->lvds_misc = atomDataPtr->LVDS_Info.LVDS_Info_v12->ucLVDS_Misc; ++ radeon_output->lvds_ss_id = atomDataPtr->LVDS_Info.LVDS_Info_v12->ucSS_Id; ++ break; ++ } ++ ++ if (radeon_output->PanelPwrDly > 2000 || radeon_output->PanelPwrDly < 0) ++ radeon_output->PanelPwrDly = 2000; ++ ++ radeon_output->Flags = 0; ++ ++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, ++ "LVDS Info:\n" ++ "XRes: %d, YRes: %d, DotClock: %d\n" ++ "HBlank: %d, HOverPlus: %d, HSyncWidth: %d\n" ++ "VBlank: %d, VOverPlus: %d, VSyncWidth: %d\n", ++ radeon_output->PanelXRes, radeon_output->PanelYRes, radeon_output->DotClock, ++ radeon_output->HBlank, radeon_output->HOverPlus, radeon_output->HSyncWidth, ++ radeon_output->VBlank, radeon_output->VOverPlus, radeon_output->VSyncWidth); ++ ++ return TRUE; ++} ++ ++Bool + RADEONGetATOMTVInfo(xf86OutputPtr output) + { + ScrnInfoPtr pScrn = output->scrn; +diff -Nurp patched/src/radeon_atombios.h working/src/radeon_atombios.h +--- patched/src/radeon_atombios.h 2008-11-10 14:48:08.000000000 -0800 ++++ working/src/radeon_atombios.h 2008-11-10 14:48:23.000000000 -0800 +@@ -125,6 +125,9 @@ atombios_static_pwrmgt_setup(ScrnInfoPtr + extern Bool + RADEONGetATOMTVInfo(xf86OutputPtr output); + ++extern Bool ++RADEONGetATOMLVDSInfo(xf86OutputPtr output); ++ + extern int + atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode); + +diff -Nurp patched/src/radeon_bios.c working/src/radeon_bios.c +--- patched/src/radeon_bios.c 2008-11-10 14:48:08.000000000 -0800 ++++ working/src/radeon_bios.c 2008-11-10 14:48:23.000000000 -0800 +@@ -975,30 +975,9 @@ Bool RADEONGetLVDSInfoFromBIOS (xf86Outp + + if (!info->VBIOS) return FALSE; + +- if (info->IsAtomBios) { +- if((tmp = RADEON_BIOS16 (info->MasterDataStart + 16))) { +- +- radeon_output->PanelXRes = RADEON_BIOS16(tmp+6); +- radeon_output->PanelYRes = RADEON_BIOS16(tmp+10); +- radeon_output->DotClock = RADEON_BIOS16(tmp+4)*10; +- radeon_output->HBlank = RADEON_BIOS16(tmp+8); +- radeon_output->HOverPlus = RADEON_BIOS16(tmp+14); +- radeon_output->HSyncWidth = RADEON_BIOS16(tmp+16); +- radeon_output->VBlank = RADEON_BIOS16(tmp+12); +- radeon_output->VOverPlus = RADEON_BIOS16(tmp+18); +- radeon_output->VSyncWidth = RADEON_BIOS16(tmp+20); +- radeon_output->PanelPwrDly = RADEON_BIOS16(tmp+40); +- +- if (radeon_output->PanelPwrDly > 2000 || radeon_output->PanelPwrDly < 0) +- radeon_output->PanelPwrDly = 2000; +- +- radeon_output->Flags = 0; +- } else { +- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +- "No LVDS Info Table found in BIOS!\n"); +- return FALSE; +- } +- } else { ++ if (info->IsAtomBios) ++ return RADEONGetATOMLVDSInfo(output); ++ else { + + tmp = RADEON_BIOS16(info->ROMHeaderStart + 0x40); + +@@ -1021,7 +1000,7 @@ Bool RADEONGetLVDSInfoFromBIOS (xf86Outp + radeon_output->PanelYRes = RADEON_BIOS16(tmp+27); + xf86DrvMsg(0, X_INFO, "Panel Size from BIOS: %dx%d\n", + radeon_output->PanelXRes, radeon_output->PanelYRes); +- ++ + radeon_output->PanelPwrDly = RADEON_BIOS16(tmp+44); + if (radeon_output->PanelPwrDly > 2000 || radeon_output->PanelPwrDly < 0) + radeon_output->PanelPwrDly = 2000; +diff -Nurp patched/src/radeon_output.c working/src/radeon_output.c +--- patched/src/radeon_output.c 2008-11-10 14:48:08.000000000 -0800 ++++ working/src/radeon_output.c 2008-11-10 14:48:23.000000000 -0800 +@@ -1146,8 +1146,7 @@ radeon_create_resources(xf86OutputPtr ou + } + } + +- if (IS_DCE3_VARIANT && +- (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI))) { ++ if (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI)) { + coherent_mode_atom = MAKE_ATOM("coherent_mode"); + + range[0] = 0; /* off */ +@@ -1159,7 +1158,7 @@ radeon_create_resources(xf86OutputPtr ou + "RRConfigureOutputProperty error, %d\n", err); + } + +- data = 1; /* use coherent mode by default */ ++ data = 0; /* coherent mode off by default */ + + err = RRChangeOutputProperty(output->randr_output, coherent_mode_atom, + XA_INTEGER, 32, PropModeReplace, 1, &data, +diff -Nurp patched/src/radeon_probe.h working/src/radeon_probe.h +--- patched/src/radeon_probe.h 2008-11-10 14:48:08.000000000 -0800 ++++ working/src/radeon_probe.h 2008-11-10 14:48:23.000000000 -0800 +@@ -237,8 +237,10 @@ typedef struct _RADEONOutputPrivateRec { + int VSyncWidth; + int VBlank; + int Flags; /* Saved copy of mode flags */ +- int PanelPwrDly; + int DotClock; ++ int PanelPwrDly; ++ int lvds_misc; ++ int lvds_ss_id; + RADEONTMDSPll tmds_pll[4]; + RADEONRMXType rmx_type; + /* dvo */ --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/patches/01_gen_pci_ids.diff +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/patches/01_gen_pci_ids.diff @@ -0,0 +1,21 @@ +--- + src/Makefile.am | 6 ++++++ + 1 file changed, 6 insertions(+) + +Index: xserver-xorg-video-ati/src/Makefile.am +=================================================================== +--- xserver-xorg-video-ati.orig/src/Makefile.am 2007-10-06 02:44:47.000000000 +0200 ++++ xserver-xorg-video-ati/src/Makefile.am 2007-10-06 02:48:34.000000000 +0200 +@@ -153,3 +153,12 @@ + pcidb/ati_pciids.csv \ + pcidb/parse_pci_ids.pl \ + radeon_atombios.h ++ ++pcidatadir = $(datadir)/xserver-xorg/pci ++pcidata_DATA = radeon.ids ++ ++radeon.ids: ati_pciids_gen.h ++ cat ${srcdir}/ati_pciids_gen.h \ ++ | grep -v PCI_CHIP_MACH32 | grep -v PCI_CHIP_MACH64 | grep -v PCI_CHIP_RAGE128 \ ++ | awk '/^#define.*PCI_CHIP/ {print $$3}' \ ++ | sed -e 's/0x/1002/' > radeon.ids --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/xsfbs/xsfbs.sh +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/xsfbs/xsfbs.sh @@ -0,0 +1,931 @@ +# $Id$ + +# This is the X Strike Force shell library for X Window System package +# maintainer scripts. It serves to define shell functions commonly used by +# such packages, and performs some error checking necessary for proper operation +# of those functions. By itself, it does not "do" much; the maintainer scripts +# invoke the functions defined here to accomplish package installation and +# removal tasks. + +# If you are reading this within a Debian package maintainer script (e.g., +# /var/lib/dpkg)info/PACKAGE.{config,preinst,postinst,prerm,postrm}), you can +# skip past this library by scanning forward in this file to the string +# "GOBSTOPPER". + +SOURCE_VERSION=@SOURCE_VERSION@ +OFFICIAL_BUILD=@OFFICIAL_BUILD@ + +# Use special abnormal exit codes so that problems with this library are more +# easily tracked down. +SHELL_LIB_INTERNAL_ERROR=86 +SHELL_LIB_THROWN_ERROR=74 +SHELL_LIB_USAGE_ERROR=99 + +# old -> new variable names +if [ -z "$DEBUG_XORG_PACKAGE" ] && [ -n "$DEBUG_XFREE86_PACKAGE" ]; then + DEBUG_XORG_PACKAGE="$DEBUG_XFREE86_PACKAGE" +fi +if [ -z "$DEBUG_XORG_DEBCONF" ] && [ -n "$DEBUG_XFREE86_DEBCONF" ]; then + DEBUG_XORG_DEBCONF="$DEBUG_XFREE86_DEBCONF" +fi + +# initial sanity checks +if [ -z "$THIS_PACKAGE" ]; then + cat >&2 < on the World Wide Web for +instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the +"doc-debian" package, or install the "reportbug" package and use the command of +the same name to file a report against version $SOURCE_VERSION of this package. +EOF + exit $SHELL_LIB_USAGE_ERROR +fi + +if [ -z "$THIS_SCRIPT" ]; then + cat >&2 < on the World Wide Web for +instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the +"doc-debian" package, or install the "reportbug" package and use the command of +the same name to file a report against version $SOURCE_VERSION of the +"$THIS_PACKAGE" package. +EOF + exit $SHELL_LIB_USAGE_ERROR +fi + +ARCHITECTURE="$(dpkg --print-installation-architecture)" + +if [ "$1" = "reconfigure" ] || [ -n "$DEBCONF_RECONFIGURE" ]; then + RECONFIGURE="true" +else + RECONFIGURE= +fi + +if ([ "$1" = "install" ] || [ "$1" = "configure" ]) && [ -z "$2" ]; then + FIRSTINST="yes" +fi + +if [ -z "$RECONFIGURE" ] && [ -z "$FIRSTINST" ]; then + UPGRADE="yes" +fi + +trap "message;\ + message \"Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\ + message;\ + exit 1" HUP INT QUIT TERM + +reject_nondigits () { + # syntax: reject_nondigits [ operand ... ] + # + # scan operands (typically shell variables whose values cannot be trusted) for + # characters other than decimal digits and barf if any are found + while [ -n "$1" ]; do + # does the operand contain anything but digits? + if ! expr "$1" : "[[:digit:]]\+$" > /dev/null 2>&1; then + # can't use die(), because it wraps message() which wraps this function + echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_nondigits() encountered" \ + "possibly malicious garbage \"$1\"" >&2 + exit $SHELL_LIB_THROWN_ERROR + fi + shift + done +} + +reject_whitespace () { + # syntax: reject_whitespace [ operand ] + # + # scan operand (typically a shell variable whose value cannot be trusted) for + # whitespace characters and barf if any are found + if [ -n "$1" ]; then + # does the operand contain any whitespace? + if expr "$1" : "[[:space:]]" > /dev/null 2>&1; then + # can't use die(), because I want to avoid forward references + echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_whitespace() encountered" \ + "possibly malicious garbage \"$1\"" >&2 + exit $SHELL_LIB_THROWN_ERROR + fi + fi +} + +reject_unlikely_path_chars () { + # syntax: reject_unlikely_path_chars [ operand ... ] + # + # scan operands (typically shell variables whose values cannot be trusted) for + # characters unlikely to be seen in a path and which the shell might + # interpret and barf if any are found + while [ -n "$1" ]; do + # does the operand contain any funny characters? + if expr "$1" : '.*[!$&()*;<>?|].*' > /dev/null 2>&1; then + # can't use die(), because I want to avoid forward references + echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_unlikely_path_chars()" \ + "encountered possibly malicious garbage \"$1\"" >&2 + exit $SHELL_LIB_THROWN_ERROR + fi + shift + done +} + +# Query the terminal to establish a default number of columns to use for +# displaying messages to the user. This is used only as a fallback in the +# event the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while +# the script is running, and this cannot, only being calculated once.) +DEFCOLUMNS=$(stty size 2> /dev/null | awk '{print $2}') || true +if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" > /dev/null 2>&1; then + DEFCOLUMNS=80 +fi + +message () { + # pretty-print messages of arbitrary length + reject_nondigits "$COLUMNS" + echo "$*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS} >&2 +} + +observe () { + # syntax: observe message ... + # + # issue observational message suitable for logging someday when support for + # it exists in dpkg + if [ -n "$DEBUG_XORG_PACKAGE" ]; then + message "$THIS_PACKAGE $THIS_SCRIPT note: $*" + fi +} + +warn () { + # syntax: warn message ... + # + # issue warning message suitable for logging someday when support for + # it exists in dpkg; also send to standard error + message "$THIS_PACKAGE $THIS_SCRIPT warning: $*" +} + +die () { + # syntax: die message ... + # + # exit script with error message + message "$THIS_PACKAGE $THIS_SCRIPT error: $*" + exit $SHELL_LIB_THROWN_ERROR +} + +internal_error () { + # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message + message "internal error: $*" + if [ -n "$OFFICIAL_BUILD" ]; then + message "Please report a bug in the $THIS_SCRIPT script of the" \ + "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \ + "Tracking System. Include all messages above that mention the" \ + "$THIS_PACKAGE package. Visit " \ + " on the World Wide Web for" \ + "instructions, read the file" \ + "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \ + "package, or install the reportbug package and use the command of" \ + "the same name to file a report." + fi + exit $SHELL_LIB_INTERNAL_ERROR +} + +usage_error () { + message "usage error: $*" + message "Please report a bug in the $THIS_SCRIPT script of the" \ + "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \ + "Tracking System. Include all messages above that mention the" \ + "$THIS_PACKAGE package. Visit " \ + " on the World Wide Web for" \ + "instructions, read the file" \ + "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \ + "package, or install the reportbug package and use the command of" \ + "the same name to file a report." + exit $SHELL_LIB_USAGE_ERROR +} + + +maplink () { + # returns what symlink should point to; i.e., what the "sane" answer is + # Keep this in sync with the debian/*.links files. + # This is only needed for symlinks to directories. + # + # XXX: Most of these look wrong in the X11R7 world and need to be fixed. + # If we've stopped using this function, fixing it might enable us to re-enable + # it again and catch more errors. + case "$1" in + /etc/X11/xkb/compiled) echo /var/lib/xkb ;; + /etc/X11/xkb/xkbcomp) echo /usr/X11R6/bin/xkbcomp ;; + /usr/X11R6/lib/X11/app-defaults) echo /etc/X11/app-defaults ;; + /usr/X11R6/lib/X11/fs) echo /etc/X11/fs ;; + /usr/X11R6/lib/X11/lbxproxy) echo /etc/X11/lbxproxy ;; + /usr/X11R6/lib/X11/proxymngr) echo /etc/X11/proxymngr ;; + /usr/X11R6/lib/X11/rstart) echo /etc/X11/rstart ;; + /usr/X11R6/lib/X11/twm) echo /etc/X11/twm ;; + /usr/X11R6/lib/X11/xdm) echo /etc/X11/xdm ;; + /usr/X11R6/lib/X11/xinit) echo /etc/X11/xinit ;; + /usr/X11R6/lib/X11/xkb) echo /etc/X11/xkb ;; + /usr/X11R6/lib/X11/xserver) echo /etc/X11/xserver ;; + /usr/X11R6/lib/X11/xsm) echo /etc/X11/xsm ;; + /usr/bin/X11) echo ../X11R6/bin ;; + /usr/bin/rstartd) echo ../X11R6/bin/rstartd ;; + /usr/include/X11) echo ../X11R6/include/X11 ;; + /usr/lib/X11) echo ../X11R6/lib/X11 ;; + *) internal_error "maplink() called with unknown path \"$1\"" ;; + esac +} + +analyze_path () { + # given a supplied set of pathnames, break each one up by directory and do an + # ls -dl on each component, cumulatively; i.e. + # analyze_path /usr/X11R6/bin -> ls -dl /usr /usr/X11R6 /usr/X11R6/bin + # Thanks to Randolph Chung for this clever hack. + + local f g + + while [ -n "$1" ]; do + reject_whitespace "$1" + g= + message "Analyzing $1:" + for f in $(echo "$1" | tr / \ ); do + if [ -e /$g$f ]; then + ls -dl /$g$f /$g$f.dpkg-* 2> /dev/null || true + g=$g$f/ + else + message "/$g$f: nonexistent; directory contents of /$g:" + ls -l /$g + break + fi + done + shift + done +} + +find_culprits () { + local f p dpkg_info_dir possible_culprits smoking_guns bad_packages package \ + msg + + reject_whitespace "$1" + message "Searching for overlapping packages..." + dpkg_info_dir=/var/lib/dpkg/info + if [ -d $dpkg_info_dir ]; then + if [ "$(echo $dpkg_info_dir/*.list)" != "$dpkg_info_dir/*.list" ]; then + possible_culprits=$(ls -1 $dpkg_info_dir/*.list | egrep -v \ + "(xbase-clients|x11-common|xfs|xlibs)") + if [ -n "$possible_culprits" ]; then + smoking_guns=$(grep -l "$1" $possible_culprits || true) + if [ -n "$smoking_guns" ]; then + bad_packages=$(printf "\\n") + for f in $smoking_guns; do + # too bad you can't nest parameter expansion voodoo + p=${f%*.list} # strip off the trailing ".list" + package=${p##*/} # strip off the directories + bad_packages=$(printf "%s\n%s" "$bad_packages" "$package") + done + msg=$(cat < /dev/null 2>&1; then + message "The readlink command was not found. Please install version" \ + "1.13.1 or later of the debianutils package." + readlink () { + # returns what symlink in $1 actually points to + perl -e '$l = shift; exit 1 unless -l $l; $r = readlink $l; exit 1 unless $r; print "$r\n"' "$1" + } +fi + +check_symlink () { + # syntax: check_symlink symlink + # + # See if specified symlink points where it is supposed to. Return 0 if it + # does, and 1 if it does not. + # + # Primarily used by check_symlinks_and_warn() and check_symlinks_and_bomb(). + + local symlink + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "check_symlink() called with wrong number of arguments;" \ + "expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + symlink="$1" + + if [ "$(maplink "$symlink")" = "$(readlink "$symlink")" ]; then + return 0 + else + return 1 + fi +} + +check_symlinks_and_warn () { + # syntax: check_symlinks_and_warn symlink ... + # + # For each argument, check for symlink sanity, and warn if it isn't sane. + # + # Call this function from a preinst script in the event $1 is "upgrade" or + # "install". + + local errmsg symlink + + # validate arguments + if [ $# -lt 1 ]; then + usage_error "check_symlinks_and_warn() called with wrong number of" \ + "arguments; expected at least 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + while [ -n "$1" ]; do + symlink="$1" + if [ -L "$symlink" ]; then + if ! check_symlink "$symlink"; then + observe "$symlink symbolic link points to wrong location" \ + "$(readlink "$symlink"); removing" + rm "$symlink" + fi + elif [ -e "$symlink" ]; then + errmsg="$symlink exists and is not a symbolic link; this package cannot" + errmsg="$errmsg be installed until this" + if [ -f "$symlink" ]; then + errmsg="$errmsg file" + elif [ -d "$symlink" ]; then + errmsg="$errmsg directory" + else + errmsg="$errmsg thing" + fi + errmsg="$errmsg is removed" + die "$errmsg" + fi + shift + done +} + +check_symlinks_and_bomb () { + # syntax: check_symlinks_and_bomb symlink ... + # + # For each argument, check for symlink sanity, and bomb if it isn't sane. + # + # Call this function from a postinst script. + + local problem symlink + + # validate arguments + if [ $# -lt 1 ]; then + usage_error "check_symlinks_and_bomb() called with wrong number of" + "arguments; expected at least 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + while [ -n "$1" ]; do + problem= + symlink="$1" + if [ -L "$symlink" ]; then + if ! check_symlink "$symlink"; then + problem=yes + warn "$symlink symbolic link points to wrong location" \ + "$(readlink "$symlink")" + fi + elif [ -e "$symlink" ]; then + problem=yes + warn "$symlink is not a symbolic link" + else + problem=yes + warn "$symlink symbolic link does not exist" + fi + if [ -n "$problem" ]; then + analyze_path "$symlink" "$(readlink "$symlink")" + find_culprits "$symlink" + die "bad symbolic links on system" + fi + shift + done +} + +font_update () { + # run $UPDATECMDS in $FONTDIRS + + local dir cmd shortcmd x_font_dir_prefix + + x_font_dir_prefix="/usr/share/fonts/X11" + + if [ -z "$UPDATECMDS" ]; then + usage_error "font_update() called but \$UPDATECMDS not set" + fi + if [ -z "$FONTDIRS" ]; then + usage_error "font_update() called but \$FONTDIRS not set" + fi + + reject_unlikely_path_chars "$UPDATECMDS" + reject_unlikely_path_chars "$FONTDIRS" + + for dir in $FONTDIRS; do + if [ -d "$x_font_dir_prefix/$dir" ]; then + for cmd in $UPDATECMDS; do + if which "$cmd" > /dev/null 2>&1; then + shortcmd=${cmd##*/} + observe "running $shortcmd in $dir font directory" + cmd_opts= + if [ "$shortcmd" = "update-fonts-alias" ]; then + cmd_opts=--x11r7-layout + fi + if [ "$shortcmd" = "update-fonts-dir" ]; then + cmd_opts=--x11r7-layout + fi + if [ "$shortcmd" = "update-fonts-scale" ]; then + cmd_opts=--x11r7-layout + fi + $cmd $cmd_opts $dir || warn "$cmd $cmd_opts $dir" \ + "failed; font directory data may not" \ + "be up to date" + else + warn "$cmd not found; not updating corresponding $dir font" \ + "directory data" + fi + done + else + warn "$dir is not a directory; not updating font directory data" + fi + done +} + +remove_conffile_prepare () { + # syntax: remove_conffile_prepare filename official_md5sum ... + # + # Check a conffile "filename" against a list of canonical MD5 checksums. + # If the file's current MD5 checksum matches one of the "official_md5sum" + # operands provided, then prepare the conffile for removal from the system. + # We defer actual deletion until the package is configured so that we can + # roll this operation back if package installation fails. + # + # Call this function from a preinst script in the event $1 is "upgrade" or + # "install" and verify $2 to ensure the package is being upgraded from a + # version (or installed over a version removed-but-not-purged) prior to the + # one in which the conffile was obsoleted. + + local conffile current_checksum + + # validate arguments + if [ $# -lt 2 ]; then + usage_error "remove_conffile_prepare() called with wrong number of" \ + "arguments; expected at least 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + shift + + # does the conffile even exist? + if [ -e "$conffile" ]; then + # calculate its checksum + current_checksum=$(md5sum < "$conffile" | sed 's/[[:space:]].*//') + # compare it to each supplied checksum + while [ -n "$1" ]; do + if [ "$current_checksum" = "$1" ]; then + # we found a match; move the confffile and stop looking + observe "preparing obsolete conffile $conffile for removal" + mv "$conffile" "$conffile.$THIS_PACKAGE-tmp" + break + fi + shift + done + fi +} + +remove_conffile_lookup () { + # syntax: remove_conffile_lookup package filename + # + # Lookup the md5sum of a conffile in dpkg's database, and prepare for removal + # if it matches the actual file's md5sum. + # + # Call this function when you would call remove_conffile_prepare but only + # want to check against dpkg's status database instead of known checksums. + + local package conffile old_md5sum + + # validate arguments + if [ $# -ne 2 ]; then + usage_error "remove_conffile_lookup() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + package="$1" + conffile="$2" + + if ! [ -e "$conffile" ]; then + return + fi + old_md5sum="$(dpkg-query -W -f='${Conffiles}' "$package" | \ + awk '{ if (match($0, "^ '"$conffile"' ")) print $2}')" + if [ -n "$old_md5sum" ]; then + remove_conffile_prepare "$conffile" "$old_md5sum" + fi +} + +remove_conffile_commit () { + # syntax: remove_conffile_commit filename + # + # Complete the removal of a conffile "filename" that has become obsolete. + # + # Call this function from a postinst script after having used + # remove_conffile_prepare() in the preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "remove_conffile_commit() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + # if the temporary file created by remove_conffile_prepare() exists, remove it + if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then + observe "committing removal of obsolete conffile $conffile" + rm "$conffile.$THIS_PACKAGE-tmp" + fi +} + +remove_conffile_rollback () { + # syntax: remove_conffile_rollback filename + # + # Roll back the removal of a conffile "filename". + # + # Call this function from a postrm script in the event $1 is "abort-upgrade" + # or "abort-install" is after having used remove_conffile_prepare() in the + # preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "remove_conffile_rollback() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + # if the temporary file created by remove_conffile_prepare() exists, move it + # back + if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then + observe "rolling back removal of obsolete conffile $conffile" + mv "$conffile.$THIS_PACKAGE-tmp" "$conffile" + fi +} + +replace_conffile_with_symlink_prepare () { + # syntax: replace_conffile_with_symlink_prepare oldfilename newfilename \ + # official_md5sum ... + # + # Check a conffile "oldfilename" against a list of canonical MD5 checksums. + # If the file's current MD5 checksum matches one of the "official_md5sum" + # operands provided, then prepare the conffile for removal from the system. + # We defer actual deletion until the package is configured so that we can + # roll this operation back if package installation fails. Otherwise copy it + # to newfilename and let dpkg handle it through conffiles mechanism. + # + # Call this function from a preinst script in the event $1 is "upgrade" or + # "install" and verify $2 to ensure the package is being upgraded from a + # version (or installed over a version removed-but-not-purged) prior to the + # one in which the conffile was obsoleted. + + local conffile current_checksum + + # validate arguments + if [ $# -lt 3 ]; then + usage_error "replace_conffile_with_symlink_prepare() called with wrong" \ + " number of arguments; expected at least 3, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + oldconffile="$1" + shift + newconffile="$1" + shift + + remove_conffile_prepare "$_oldconffile" "$@" + # If $oldconffile still exists, then md5sums didn't match. + # Copy it to new one. + if [ -f "$oldconffile" ]; then + cp "$oldconffile" "$newconffile" + fi + +} + +replace_conffile_with_symlink_commit () { + # syntax: replace_conffile_with_symlink_commit oldfilename + # + # Complete the removal of a conffile "oldfilename" that has been + # replaced by a symlink. + # + # Call this function from a postinst script after having used + # replace_conffile_with_symlink_prepare() in the preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "replace_conffile_with_symlink_commit() called with wrong" \ + "number of arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + remove_conffile_commit "$conffile" +} + +replace_conffile_with_symlink_rollback () { + # syntax: replace_conffile_with_symlink_rollback oldfilename newfilename + # + # Roll back the replacing of a conffile "oldfilename" with symlink to + # "newfilename". + # + # Call this function from a postrm script in the event $1 is "abort-upgrade" + # or "abort-install" and verify $2 to ensure the package failed to upgrade + # from a version (or install over a version removed-but-not-purged) prior + # to the one in which the conffile was obsoleted. + # You should have used replace_conffile_with_symlink_prepare() in the + # preinst. + + local conffile + + # validate arguments + if [ $# -ne 2 ]; then + usage_error "replace_conffile_with_symlink_rollback() called with wrong" \ + "number of arguments; expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + oldconffile="$1" + newconffile="$2" + + remove_conffile_rollback "$_oldconffile" + if [ -f "$newconffile" ]; then + rm "$newconffile" + fi +} + +run () { + # syntax: run command [ argument ... ] + # + # Run specified command with optional arguments and report its exit status. + # Useful for commands whose exit status may be nonzero, but still acceptable, + # or commands whose failure is not fatal to us. + # + # NOTE: Do *not* use this function with db_get or db_metaget commands; in + # those cases the return value of the debconf command *must* be checked + # before the string returned by debconf is used for anything. + + local retval + + # validate arguments + if [ $# -lt 1 ]; then + usage_error "run() called with wrong number of arguments; expected at" \ + "least 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + "$@" || retval=$? + + if [ ${retval:-0} -ne 0 ]; then + observe "command \"$*\" exited with status $retval" + fi +} + +register_x_lib_dir_with_ld_so () { + # syntax: register_x_lib_dir_with_ld_so + # + # Configure the dynamic loader ld.so to search /usr/X11R6/lib for shared + # libraries. + # + # Call this function from the postinst script of a package that places a + # shared library in /usr/X11R6/lib, before invoking ldconfig. + + local dir ldsoconf + + dir="/usr/X11R6/lib" + ldsoconf="/etc/ld.so.conf" + + # is the line not already present? + if ! fgrep -qsx "$dir" "$ldsoconf"; then + observe "adding $dir directory to $ldsoconf" + echo "$dir" >> "$ldsoconf" + fi +} + +deregister_x_lib_dir_with_ld_so () { + # syntax: deregister_x_lib_dir_with_ld_so + # + # Configure dynamic loader ld.so to not search /usr/X11R6/lib for shared + # libraries, if and only if no shared libaries remain there. + # + # Call this function from the postrm script of a package that places a shared + # library in /usr/X11R6/lib, in the event "$1" is "remove", and before + # invoking ldconfig. + + local dir ldsoconf fgrep_status cmp_status + + dir="/usr/X11R6/lib" + ldsoconf="/etc/ld.so.conf" + + # is the line present? + if fgrep -qsx "$dir" "$ldsoconf"; then + # are there any shared objects in the directory? + if [ "$(echo "$dir"/lib*.so.*.*)" = "$dir/lib*.so.*.*" ]; then + # glob expansion produced nothing, so no shared libraries are present + observe "removing $dir directory from $ldsoconf" + # rewrite the file (very carefully) + set +e + fgrep -svx "$dir" "$ldsoconf" > "$ldsoconf.dpkg-tmp" + fgrep_status=$? + set -e + case $fgrep_status in + 0|1) ;; # we don't actually care if any lines matched or not + *) die "error reading \"$ldsoconf\"; fgrep exited with status" \ + "$fgrep_status" ;; + esac + set +e + cmp -s "$ldsoconf.dpkg-tmp" "$ldsoconf" + cmp_status=$? + set -e + case $cmp_status in + 0) rm "$ldsoconf.dpkg-tmp" ;; # files are identical + 1) mv "$ldsoconf.dpkg-tmp" "$ldsoconf" ;; # files differ + *) die "error comparing \"$ldsoconf.dpkg-tmp\" to \"$ldsoconf\";" \ + "cmp exited with status $cmp_status" ;; + esac + fi + fi +} + +make_symlink_sane () { + # syntax: make_symlink_sane symlink target + # + # Ensure that the symbolic link symlink exists, and points to target. + # + # If symlink does not exist, create it and point it at target. + # + # If symlink exists but is not a symbolic link, back it up. + # + # If symlink exists, is a symbolic link, but points to the wrong location, fix + # it. + # + # If symlink exists, is a symbolic link, and already points to target, do + # nothing. + # + # This function wouldn't be needed if ln had an -I, --idempotent option. + + # Validate arguments. + if [ $# -ne 2 ]; then + usage_error "make_symlink_sane() called with wrong number of arguments;" \ + "expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + # We could just use the positional parameters as-is, but that makes things + # harder to follow. + local symlink target + + symlink="$1" + target="$2" + + if [ -L "$symlink" ] && [ "$(readlink "$symlink")" = "$target" ]; then + observe "link from $symlink to $target already exists" + else + observe "creating symbolic link from $symlink to $target" + mkdir -p "${target%/*}" "${symlink%/*}" + ln -s -b -S ".dpkg-old" "$target" "$symlink" + fi +} + +migrate_dir_to_symlink () { + # syntax: migrate_dir_to_symlink old_location new_location + # + # Per Debian Policy section 6.5.4, "A directory will never be replaced by a + # symbolic link to a directory or vice versa; instead, the existing state + # (symlink or not) will be left alone and dpkg will follow the symlink if + # there is one." + # + # We have to do it ourselves. + # + # This function moves the contents of old_location, a directory, into + # new_location, a directory, then makes old_location a symbolic link to + # new_location. + # + # old_location need not exist, but if it does, it must be a directory (or a + # symlink to a directory). If it is not, it is backed up. If new_location + # exists already and is not a directory, it is backed up. + # + # This function should be called from a package's preinst so that other + # packages unpacked after this one --- but before this package's postinst runs + # --- are unpacked into new_location even if their payloads contain + # old_location filespecs. + + # Validate arguments. + if [ $# -ne 2 ]; then + usage_error "migrate_dir_to_symlink() called with wrong number of" + "arguments; expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + # We could just use the positional parameters as-is, but that makes things + # harder to follow. + local new old + + old="$1" + new="$2" + + # Is old location a symlink? + if [ -L "$old" ]; then + # Does it already point to new location? + if [ "$(readlink "$old")" = "$new" ]; then + # Nothing to do; migration has already been done. + observe "migration of $old to $new already done" + return 0 + else + # Back it up. + warn "backing up symbolic link $old as $old.dpkg-old" + mv -b "$old" "$old.dpkg-old" + fi + fi + + # Does old location exist, but is not a directory? + if [ -e "$old" ] && ! [ -d "$old" ]; then + # Back it up. + warn "backing up non-directory $old as $old.dpkg-old" + mv -b "$old" "$old.dpkg-old" + fi + + observe "migrating $old to $new" + + # Is new location a symlink? + if [ -L "$new" ]; then + # Does it point the wrong way, i.e., back to where we're migrating from? + if [ "$(readlink "$new")" = "$old" ]; then + # Get rid of it. + observe "removing symbolic link $new which points to $old" + rm "$new" + else + # Back it up. + warn "backing up symbolic link $new as $new.dpkg-old" + mv -b "$new" "$new.dpkg-old" + fi + fi + + # Does new location exist, but is not a directory? + if [ -e "$new" ] && ! [ -d "$new" ]; then + warn "backing up non-directory $new as $new.dpkg-old" + mv -b "$new" "$new.dpkg-old" + fi + + # Create new directory if it does not yet exist. + if ! [ -e "$new" ]; then + observe "creating $new" + mkdir -p "$new" + fi + + # Copy files in old location to new location. Back up any filenames that + # already exist in the new location with the extension ".dpkg-old". + observe "copying files from $old to $new" + if ! (cd "$old" && cp -a -b -S ".dpkg-old" . "$new"); then + die "error(s) encountered while copying files from $old to $new" + fi + + # Remove files at old location. + observe "removing $old" + rm -r "$old" + + # Create symlink from old location to new location. + make_symlink_sane "$old" "$new" +} + +# vim:set ai et sw=2 ts=2 tw=80: + +# GOBSTOPPER: The X Strike Force shell library ends here. --- xserver-xorg-video-ati-6.9.0+git20081003.f9826a56.orig/debian/xsfbs/xsfbs.mk +++ xserver-xorg-video-ati-6.9.0+git20081003.f9826a56/debian/xsfbs/xsfbs.mk @@ -0,0 +1,293 @@ +#!/usr/bin/make -f + +# Debian X Strike Force Build System (XSFBS): Make portion + +# Copyright 1996 Stephen Early +# Copyright 1997 Mark Eichin +# Copyright 1998-2005, 2007 Branden Robinson +# Copyright 2005 David Nusinow +# +# Licensed under the GNU General Public License, version 2. See the file +# /usr/share/common-licenses/GPL or . + +# Originally by Stephen Early +# Modified by Mark W. Eichin +# Modified by Adam Heath +# Modified by Branden Robinson +# Modified by Fabio Massimo Di Nitto +# Modified by David Nusinow +# Acknowledgements to Manoj Srivastava. + +# Pass $(DH_OPTIONS) into the environment for debhelper's benefit. +export DH_OPTIONS + +# force quilt to not use ~/.quiltrc and to use debian/patches +QUILT = QUILT_PATCHES=debian/patches quilt --quiltrc /dev/null + +# Set up parameters for the upstream build environment. + +# Determine (source) package name from Debian changelog. +SOURCE_NAME:=$(shell dpkg-parsechangelog -ldebian/changelog \ + | grep '^Source:' | awk '{print $$2}') + +# Determine package version from Debian changelog. +SOURCE_VERSION:=$(shell dpkg-parsechangelog -ldebian/changelog \ + | grep '^Version:' | awk '{print $$2}') + +# Determine upstream version number. +UPSTREAM_VERSION:=$(shell echo $(SOURCE_VERSION) | sed 's/-.*//') + +# Determine the source version without the epoch for make-orig-tar-gz +NO_EPOCH_VER:=$(shell echo $(UPSTREAM_VERSION) | sed 's/^.://') + +# Figure out who's building this package. +BUILDER:=$(shell echo $${DEBEMAIL:-$${EMAIL:-$$(echo $$LOGNAME@$$(cat /etc/mailname 2>/dev/null))}}) + +# Find out if this is an official build; an official build has nothing but +# digits, dots, and/or the codename of a release in the Debian part of the +# version number. Anything else indicates an unofficial build. +OFFICIAL_BUILD:=$(shell VERSION=$(SOURCE_VERSION); if ! expr "$$(echo $${VERSION\#\#*-} | sed 's/\(woody\|sarge\|etch\|lenny\)//g')" : ".*[^0-9.].*" >/dev/null 2>&1; then echo yes; fi) + +# Set up parameters for the Debian build environment. + +# Determine our architecture. +BUILD_ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH) +# Work around some old-time dpkg braindamage. +BUILD_ARCH:=$(subst i486,i386,$(BUILD_ARCH)) +# The DEB_HOST_ARCH variable may be set per the Debian cross-compilation policy. +ifdef DEB_HOST_ARCH + ARCH:=$(DEB_HOST_ARCH) +else + # dpkg-cross sets the ARCH environment variable; if set, use it. + ifdef ARCH + ARCH:=$(ARCH) + else + ARCH:=$(BUILD_ARCH) + endif +endif + +# $(STAMP_DIR) houses stamp files for complex targets. +STAMP_DIR:=stampdir + +# $(DEBTREEDIR) is where all install rules are told (via $(DESTDIR)) to place +# their files. +DEBTREEDIR:=$(CURDIR)/debian/tmp + +# All "important" targets have four lines: +# 1) A target name that is invoked by a package-building tool or the user. +# This consists of a dependency on a "$(STAMP_DIR)/"-prefixed counterpart. +# 2) A line delcaring 1) as a phony target (".PHONY:"). +# 3) A "$(STAMP_DIR)/"-prefixed target which does the actual work, and may +# depend on other targets. +# 4) A line declaring 3) as a member of the $(stampdir_targets) variable; the +# "$(STAMP_DIR)/" prefix is omitted. +# +# This indirection is needed so that the "stamp" files that signify when a rule +# is done can be located in a separate "stampdir". Recall that make has no way +# to know when a goal has been met for a phony target (like "build" or +# "install"). +# +# At the end of each "$(STAMP_DIR)/" target, be sure to run the command ">$@" +# so that the target will not be run again. Removing the file will make Make +# run the target over. + +# All phony targets should be declared as dependencies of .PHONY, even if they +# do not have "($STAMP_DIR)/"-prefixed counterparts. + +# Define a harmless default rule to keep things from going nuts by accident. +.PHONY: default +default: + +# Set up the $(STAMP_DIR) directory. +.PHONY: stampdir +stampdir_targets+=stampdir +stampdir: $(STAMP_DIR)/stampdir +$(STAMP_DIR)/stampdir: + mkdir $(STAMP_DIR) + >$@ + +# Set up the package build directory as quilt expects to find it. +.PHONY: prepare +stampdir_targets+=prepare +prepare: $(STAMP_DIR)/prepare +$(STAMP_DIR)/prepare: $(STAMP_DIR)/log $(STAMP_DIR)/genscripts + >$@ + +.PHONY: log +stampdir_targets+=log +log: $(STAMP_DIR)/log +$(STAMP_DIR)/log: $(STAMP_DIR)/stampdir + mkdir -p $(STAMP_DIR)/log + +# Apply all patches to the upstream source. +.PHONY: patch +stampdir_targets+=patch +patch: $(STAMP_DIR)/patch +$(STAMP_DIR)/patch: $(STAMP_DIR)/prepare + if ! [ `which quilt` ]; then \ + echo "Couldn't find quilt. Please install it or add it to the build-depends for this package."; \ + exit 1; \ + fi; \ + if $(QUILT) next >/dev/null 2>&1; then \ + echo -n "Applying patches..."; \ + if $(QUILT) push -a -v >$(STAMP_DIR)/log/patch 2>&1; then \ + cat $(STAMP_DIR)/log/patch; \ + echo "successful."; \ + else \ + cat $(STAMP_DIR)/log/patch; \ + echo "failed! (check $(STAMP_DIR)/log/patch for details)"; \ + exit 1; \ + fi; \ + else \ + echo "No patches to apply"; \ + fi; \ + >$@ + +# Revert all patches to the upstream source. +.PHONY: unpatch +unpatch: $(STAMP_DIR)/log + rm -f $(STAMP_DIR)/patch + @echo -n "Unapplying patches..."; \ + if $(QUILT) applied >/dev/null 2>/dev/null; then \ + if $(QUILT) pop -a -v >$(STAMP_DIR)/log/unpatch 2>&1; then \ + cat $(STAMP_DIR)/log/unpatch; \ + echo "successful."; \ + else \ + cat $(STAMP_DIR)/log/unpatch; \ + echo "failed! (check $(STAMP_DIR)/log/unpatch for details)"; \ + exit 1; \ + fi; \ + else \ + echo "nothing to do."; \ + fi + +# Clean the generated maintainer scripts. +.PHONY: cleanscripts +cleanscripts: + rm -f $(STAMP_DIR)/genscripts + rm -f debian/*.config \ + debian/*.postinst \ + debian/*.postrm \ + debian/*.preinst \ + debian/*.prerm + +# Clean the package build tree. +.PHONY: xsfclean +xsfclean: cleanscripts unpatch + dh_testdir + rm -rf .pc + rm -rf $(STAMP_DIR) $(SOURCE_DIR) + rm -rf imports + dh_clean debian/shlibs.local \ + debian/po/pothead + +# Generate the debconf templates POT file header. +debian/po/pothead: debian/po/pothead.in + sed -e 's/SOURCE_VERSION/$(SOURCE_VERSION)/' \ + -e 's/DATE/$(shell date "+%F %X%z"/)' <$< >$@ + +# Update POT and PO files. +.PHONY: updatepo +updatepo: debian/po/pothead + debian/scripts/debconf-updatepo --pot-header=pothead --verbose + +# Remove files from the upstream source tree that we don't need, or which have +# licensing problems. It must be run before creating the .orig.tar.gz. +# +# Note: This rule is for Debian package maintainers' convenience, and is not +# needed for conventional build scenarios. +.PHONY: prune-upstream-tree +prune-upstream-tree: + # Ensure we're in the correct directory. + dh_testdir + grep -rvh '^#' debian/prune/ | xargs --no-run-if-empty rm -rf + +# Verify that there are no offsets or fuzz in the patches we apply. +# +# Note: This rule is for Debian package maintainers' convenience, and is not +# needed for conventional build scenarios. +.PHONY: patch-audit +patch-audit: prepare unpatch + @echo -n "Auditing patches..."; \ + >$(STAMP_DIR)/log/patch; \ + FUZZY=; \ + while [ -n "$$($(QUILT) next)" ]; do \ + RESULT=$$($(QUILT) push -v | tee -a $(STAMP_DIR)/log/patch | grep ^Hunk | sed 's/^Hunk.*\(succeeded\|FAILED\).*/\1/');\ + case "$$RESULT" in \ + succeeded) \ + echo "fuzzy patch: $$($(QUILT) top)" \ + | tee -a $(STAMP_DIR)/log/$$($(QUILT) top); \ + FUZZY=yes; \ + ;; \ + FAILED) \ + echo "broken patch: $$($(QUILT) next)" \ + | tee -a $(STAMP_DIR)/log/$$($(QUILT) next); \ + exit 1; \ + ;; \ + esac; \ + done; \ + if [ -n "$$FUZZY" ]; then \ + echo "there were fuzzy patches; please fix."; \ + exit 1; \ + else \ + echo "done."; \ + fi + +# Generate the maintainer scripts. +.PHONY: genscripts +stampdir_targets+=genscripts +genscripts: $(STAMP_DIR)/genscripts +$(STAMP_DIR)/genscripts: $(STAMP_DIR)/stampdir + for FILE in debian/*.config.in \ + debian/*.postinst.in \ + debian/*.postrm.in \ + debian/*.preinst.in \ + debian/*.prerm.in; do \ + if [ -e "$$FILE" ]; then \ + MAINTSCRIPT=$$(echo $$FILE | sed 's/.in$$//'); \ + sed -n '1,/^#INCLUDE_SHELL_LIB#$$/p' <$$FILE \ + | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >$$MAINTSCRIPT.tmp; \ + cat debian/xsfbs/xsfbs.sh >>$$MAINTSCRIPT.tmp; \ + sed -n '/^#INCLUDE_SHELL_LIB#$$/,$$p' <$$FILE \ + | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >>$$MAINTSCRIPT.tmp; \ + sed -e 's/@SOURCE_VERSION@/$(SOURCE_VERSION)/' \ + -e 's/@OFFICIAL_BUILD@/$(OFFICIAL_BUILD)/' \ + -e 's/@DEFAULT_DCRESOLUTIONS@/$(DEFAULT_DCRESOLUTIONS)/' \ + <$$MAINTSCRIPT.tmp >$$MAINTSCRIPT; \ + rm $$MAINTSCRIPT.tmp; \ + fi; \ + done + # Validate syntax of generated shell scripts. + #sh debian/scripts/validate-posix-sh debian/*.config \ + # debian/*.postinst \ + # debian/*.postrm \ + # debian/*.preinst \ + # debian/*.prerm + >$@ + +# Generate the shlibs.local file. +debian/shlibs.local: + cat debian/*.shlibs >$@ + +SERVERMINVERS = $(shell cat /usr/share/xserver-xorg/serverminver 2>/dev/null) +VIDEOABI = $(shell cat /usr/share/xserver-xorg/videoabiver 2>/dev/null) +INPUTABI = $(shell cat /usr/share/xserver-xorg/inputabiver 2>/dev/null) +SERVER_DEPENDS = xserver-xorg-core (>= $(SERVERMINVERS)) +VIDDRIVER_PROVIDES = xserver-xorg-video-$(VIDEOABI) +INPDRIVER_PROVIDES = xserver-xorg-input-$(INPUTABI) +ifeq ($(PACKAGE),) +PACKAGE=$(shell awk '/^Package:/ { print $$2; exit }' < debian/control) +endif + +.PHONY: serverabi +serverabi: install +ifeq ($(SERVERMINVERS),) + @echo error: xserver-xorg-dev needs to be installed + @exit 1 +else + echo "xserver:Depends=$(SERVER_DEPENDS)" >> debian/$(PACKAGE).substvars + echo "xviddriver:Provides=$(VIDDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars + echo "xinpdriver:Provides=$(INPDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars +endif + +# vim:set noet ai sts=8 sw=8 tw=0: