summaryrefslogtreecommitdiffstats
path: root/abs/core-testing
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core-testing')
-rwxr-xr-xabs/core-testing/LinHES-config/PKGBUILD2
-rw-r--r--abs/core-testing/LinHES-config/templates/xorg/xorg.conf.ati2
-rw-r--r--abs/core-testing/LinHES-config/templates/xorg/xorg.conf.intel2
-rwxr-xr-xabs/core-testing/LinHES-config/templates/xorg/xorg.conf.nvidia2
-rwxr-xr-xabs/core-testing/LinHES-config/templates/xorg/xorg.conf.vesa2
-rw-r--r--abs/core-testing/LinHES-config/templates/xorg/xorg.conf.via2
-rwxr-xr-xabs/core-testing/LinHES-config/templates/xorg/xorg.conf.vmware2
-rwxr-xr-xabs/core-testing/LinHES-config/xconfig.sh9
-rw-r--r--abs/core-testing/aalib/PKGBUILD7
-rw-r--r--abs/core-testing/acpid/PKGBUILD53
-rwxr-xr-xabs/core-testing/acpid/handler.sh106
-rw-r--r--abs/core-testing/alsa-lib/PKGBUILD12
-rw-r--r--abs/core-testing/alsa-oss/PKGBUILD8
-rw-r--r--abs/core-testing/alsa-utils/PKGBUILD20
-rwxr-xr-xabs/core-testing/alsa-utils/alsa28
-rw-r--r--abs/core-testing/alsa-utils/alsa.conf.d11
-rw-r--r--abs/core-testing/aspell/PKGBUILD31
-rw-r--r--abs/core-testing/aspell/aspell.install23
-rw-r--r--abs/core-testing/ati-dri/PKGBUILD38
-rw-r--r--abs/core-testing/ati-dri/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/avahi/ChangeLog4
-rw-r--r--abs/core-testing/avahi/PKGBUILD25
-rw-r--r--abs/core-testing/avahi/gnome-nettool.pngbin0 -> 4509 bytes
-rw-r--r--abs/core-testing/dbus-core/PKGBUILD53
-rw-r--r--abs/core-testing/dbus-core/dbus57
-rw-r--r--abs/core-testing/dbus-core/dbus.install21
-rw-r--r--abs/core-testing/dbus-glib/PKGBUILD12
-rw-r--r--abs/core-testing/dbus-python/PKGBUILD8
-rw-r--r--abs/core-testing/dbus/30-dbus9
-rw-r--r--abs/core-testing/dbus/PKGBUILD44
-rw-r--r--abs/core-testing/dvb-firmware/PKGBUILD4
-rw-r--r--abs/core-testing/fam/PKGBUILD49
-rwxr-xr-xabs/core-testing/fam/fam44
-rw-r--r--abs/core-testing/fam/fam-2.7.0-dnotify.patch975
-rw-r--r--abs/core-testing/fam/fam-2.7.0-gcc43.patch46
-rw-r--r--abs/core-testing/fam/fam-2.7.0-largefiles.patch8
-rw-r--r--abs/core-testing/fam/fam-2.7.0-noc++.patch83
-rw-r--r--abs/core-testing/fam/include_fam_h.patch11
-rw-r--r--abs/core-testing/fftw/PKGBUILD48
-rw-r--r--abs/core-testing/fftw/fftw.install22
-rw-r--r--abs/core-testing/fluxbox/ChangeLog10
-rw-r--r--abs/core-testing/fluxbox/PKGBUILD43
-rw-r--r--abs/core-testing/fluxbox/keys6
-rw-r--r--abs/core-testing/ghostscript/PKGBUILD7
-rw-r--r--abs/core-testing/gnutls/PKGBUILD14
-rw-r--r--abs/core-testing/gnutls/gnutls.install18
-rw-r--r--abs/core-testing/gsfonts/PKGBUILD2
-rw-r--r--abs/core-testing/gtk2/PKGBUILD24
-rw-r--r--abs/core-testing/gtk2/gtk2-emit-size-change.patch26
-rw-r--r--abs/core-testing/hal-info/PKGBUILD16
-rw-r--r--abs/core-testing/hal/PKGBUILD22
-rw-r--r--abs/core-testing/hal/fix-udev-compatibility.patch31
-rw-r--r--abs/core-testing/hal/ntfs-mount-fix.patch18
-rw-r--r--abs/core-testing/heimdal/PKGBUILD69
-rw-r--r--abs/core-testing/heimdal/heimdal.install20
-rw-r--r--abs/core-testing/ilmbase/PKGBUILD22
-rw-r--r--abs/core-testing/imagemagick/ChangeLog47
-rw-r--r--abs/core-testing/imagemagick/PKGBUILD22
-rw-r--r--abs/core-testing/inputproto/PKGBUILD14
-rw-r--r--abs/core-testing/intel-dri/PKGBUILD59
-rw-r--r--abs/core-testing/intel-dri/intel-disable-ttm-warning.patch13
-rw-r--r--abs/core-testing/intel-dri/intel-revert-vbl.patch21
-rw-r--r--abs/core-testing/intel-dri/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/intltool/ChangeLog29
-rw-r--r--abs/core-testing/intltool/PKGBUILD22
-rw-r--r--abs/core-testing/jack-audio-connection-kit/PKGBUILD4
-rw-r--r--abs/core-testing/kdelibs3/PKGBUILD4
-rw-r--r--abs/core-testing/libcups/PKGBUILD11
-rw-r--r--abs/core-testing/libdaemon/PKGBUILD23
-rw-r--r--abs/core-testing/libdrm/PKGBUILD16
-rw-r--r--abs/core-testing/libexif/PKGBUILD12
-rw-r--r--abs/core-testing/libgcrypt/PKGBUILD17
-rw-r--r--abs/core-testing/libgcrypt/libgcrypt.install20
-rw-r--r--abs/core-testing/libgl/PKGBUILD63
-rw-r--r--abs/core-testing/libgl/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/libglade/PKGBUILD18
-rw-r--r--abs/core-testing/libglade/glade.install5
-rw-r--r--abs/core-testing/libgsf/PKGBUILD16
-rw-r--r--abs/core-testing/libidn/PKGBUILD28
-rw-r--r--abs/core-testing/libidn/libidn.install19
-rw-r--r--abs/core-testing/libpcap/PKGBUILD48
-rw-r--r--abs/core-testing/libpciaccess/PKGBUILD24
-rw-r--r--abs/core-testing/libpng/ChangeLog4
-rw-r--r--abs/core-testing/libpng/PKGBUILD17
-rw-r--r--abs/core-testing/librsvg/PKGBUILD17
-rw-r--r--abs/core-testing/librsvg/librsvg.install1
-rw-r--r--abs/core-testing/libtasn1/PKGBUILD21
-rw-r--r--abs/core-testing/libtasn1/libtasn1.install18
-rw-r--r--abs/core-testing/libtool/PKGBUILD14
-rw-r--r--abs/core-testing/libtool/libtool.install20
-rw-r--r--abs/core-testing/libx11/PKGBUILD31
-rw-r--r--abs/core-testing/libx11/xorg.sh4
-rw-r--r--abs/core-testing/libxaw/PKGBUILD19
-rw-r--r--abs/core-testing/libxml2/PKGBUILD21
-rw-r--r--abs/core-testing/libxml2/largefile64.patch12
-rw-r--r--abs/core-testing/lighttpd/PKGBUILD44
-rw-r--r--abs/core-testing/mcpp/PKGBUILD26
-rw-r--r--abs/core-testing/mesa/PKGBUILD73
-rw-r--r--abs/core-testing/mesa/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/mythtv/stable/mytharchive/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythbrowser/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythcontrols/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythflix/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythgallery/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythgame/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythmusic/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythnews/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythphone/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythsmolt/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/stable/mythtv/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythtv/menu-xml/library.xml.patch16
-rw-r--r--abs/core-testing/mythtv/stable/mythvideo/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythweather/PKGBUILD6
-rw-r--r--abs/core-testing/mythtv/stable/mythweb/PKGBUILD6
-rw-r--r--abs/core-testing/nvidia-71xx/PKGBUILD4
-rw-r--r--abs/core-testing/nvidia-71xx/nvidia-71xx.install4
-rw-r--r--abs/core-testing/nvidia-96xx-utils/PKGBUILD14
-rw-r--r--abs/core-testing/nvidia-96xx/PKGBUILD22
-rw-r--r--abs/core-testing/nvidia-96xx/nvidia-96xx.install4
-rw-r--r--abs/core-testing/nvidia-utils/PKGBUILD10
-rw-r--r--abs/core-testing/nvidia/PKGBUILD14
-rw-r--r--abs/core-testing/nvidia/nvidia.install4
-rw-r--r--abs/core-testing/openexr/PKGBUILD23
-rw-r--r--abs/core-testing/openexr/gcc43.patch25
-rw-r--r--abs/core-testing/openssh/PKGBUILD18
-rw-r--r--abs/core-testing/openssl/PKGBUILD26
-rw-r--r--abs/core-testing/pam/PKGBUILD17
-rw-r--r--abs/core-testing/pango/PKGBUILD18
-rw-r--r--abs/core-testing/pango/bgo563356.patch305
-rw-r--r--abs/core-testing/pil/PKGBUILD22
-rwxr-xr-xabs/core-testing/plextor-convertX-driver/PKGBUILD7
-rw-r--r--abs/core-testing/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch83
-rw-r--r--abs/core-testing/ppp/PKGBUILD8
-rw-r--r--abs/core-testing/pygobject/PKGBUILD16
-rw-r--r--abs/core-testing/pygtk/PKGBUILD21
-rw-r--r--abs/core-testing/python-numeric/PKGBUILD6
-rw-r--r--abs/core-testing/python/ChangeLog9
-rw-r--r--abs/core-testing/python/PKGBUILD57
-rw-r--r--abs/core-testing/python/modulator-launcher2
-rw-r--r--abs/core-testing/python/pynche-launcher2
-rw-r--r--abs/core-testing/python/python-2.6-gdbm.patch12
-rw-r--r--abs/core-testing/python/python-2.6-internal-expat.patch33
-rw-r--r--abs/core-testing/samba/PKGBUILD79
-rw-r--r--abs/core-testing/smbclient/PKGBUILD55
-rw-r--r--abs/core-testing/sqlite3/PKGBUILD20
-rw-r--r--abs/core-testing/tcl/ChangeLog12
-rw-r--r--abs/core-testing/tcl/PKGBUILD8
-rw-r--r--abs/core-testing/tdb/PKGBUILD17
-rw-r--r--abs/core-testing/tk/ChangeLog15
-rw-r--r--abs/core-testing/tk/PKGBUILD8
-rw-r--r--abs/core-testing/ttf-dejavu/ChangeLog10
-rw-r--r--abs/core-testing/ttf-dejavu/PKGBUILD6
-rw-r--r--abs/core-testing/udev/PKGBUILD8
-rw-r--r--abs/core-testing/udev/arch-udev-rules.patch46
-rw-r--r--abs/core-testing/unichrome-dri/PKGBUILD56
-rw-r--r--abs/core-testing/unichrome-dri/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/v4l-dvb/PKGBUILD4
-rw-r--r--abs/core-testing/v4l-dvb/v4l-dvb.install6
-rw-r--r--abs/core-testing/xf86-input-aiptek/PKGBUILD13
-rw-r--r--abs/core-testing/xf86-input-calcomp/PKGBUILD11
-rw-r--r--abs/core-testing/xf86-input-digitaledge/PKGBUILD13
-rw-r--r--abs/core-testing/xf86-input-dmc/PKGBUILD11
-rw-r--r--abs/core-testing/xf86-input-dynapro/PKGBUILD11
-rw-r--r--abs/core-testing/xf86-input-elographics/PKGBUILD16
-rw-r--r--abs/core-testing/xf86-input-evdev/PKGBUILD15
-rw-r--r--abs/core-testing/xf86-input-fpit/PKGBUILD13
-rw-r--r--abs/core-testing/xf86-input-hyperpen/PKGBUILD13
-rw-r--r--abs/core-testing/xf86-input-jamstudio/PKGBUILD13
-rw-r--r--abs/core-testing/xf86-input-joystick/PKGBUILD12
-rw-r--r--abs/core-testing/xf86-input-magellan/PKGBUILD11
-rw-r--r--abs/core-testing/xf86-input-magictouch/PKGBUILD9
-rw-r--r--abs/core-testing/xf86-input-microtouch/PKGBUILD11
-rw-r--r--abs/core-testing/xf86-input-mutouch/PKGBUILD17
-rw-r--r--abs/core-testing/xf86-input-palmax/PKGBUILD13
-rw-r--r--abs/core-testing/xf86-input-penmount/PKGBUILD11
-rw-r--r--abs/core-testing/xf86-input-summa/PKGBUILD13
-rw-r--r--abs/core-testing/xf86-input-synaptics/PKGBUILD31
-rw-r--r--abs/core-testing/xf86-input-tek4957/PKGBUILD13
-rw-r--r--abs/core-testing/xf86-input-ur98/PKGBUILD9
-rw-r--r--abs/core-testing/xf86-input-vmmouse/PKGBUILD19
-rw-r--r--abs/core-testing/xf86-input-void/PKGBUILD16
-rw-r--r--abs/core-testing/xf86-video-amd/PKGBUILD19
-rw-r--r--abs/core-testing/xf86-video-apm/PKGBUILD15
-rw-r--r--abs/core-testing/xf86-video-ark/PKGBUILD15
-rw-r--r--abs/core-testing/xf86-video-ati/PKGBUILD59
-rw-r--r--abs/core-testing/xf86-video-ati/git-20081021.patch17245
-rw-r--r--abs/core-testing/xf86-video-ati/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/xf86-video-chips/PKGBUILD13
-rw-r--r--abs/core-testing/xf86-video-cirrus/PKGBUILD7
-rw-r--r--abs/core-testing/xf86-video-dummy/PKGBUILD14
-rw-r--r--abs/core-testing/xf86-video-fbdev/PKGBUILD17
-rw-r--r--abs/core-testing/xf86-video-glint/PKGBUILD18
-rw-r--r--abs/core-testing/xf86-video-i128/PKGBUILD14
-rw-r--r--abs/core-testing/xf86-video-i740/PKGBUILD13
-rw-r--r--abs/core-testing/xf86-video-intel/20_thinkpad_g40_quirk.patch18
-rw-r--r--abs/core-testing/xf86-video-intel/21_quirk_lenovo.patch12
-rw-r--r--abs/core-testing/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch13
-rw-r--r--abs/core-testing/xf86-video-intel/25_quirk_nc6110.patch13
-rw-r--r--abs/core-testing/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch63
-rw-r--r--abs/core-testing/xf86-video-intel/27_disable_fbc_on_965.patch18
-rw-r--r--abs/core-testing/xf86-video-intel/PKGBUILD44
-rw-r--r--abs/core-testing/xf86-video-mach64/PKGBUILD48
-rw-r--r--abs/core-testing/xf86-video-mach64/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/xf86-video-mga/PKGBUILD57
-rw-r--r--abs/core-testing/xf86-video-mga/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/xf86-video-neomagic/PKGBUILD13
-rw-r--r--abs/core-testing/xf86-video-nv/PKGBUILD18
-rw-r--r--abs/core-testing/xf86-video-openchrome/LICENSE.txt26
-rw-r--r--abs/core-testing/xf86-video-openchrome/PKGBUILD29
-rw-r--r--abs/core-testing/xf86-video-r128/PKGBUILD48
-rw-r--r--abs/core-testing/xf86-video-r128/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/xf86-video-radeonhd/PKGBUILD25
-rw-r--r--abs/core-testing/xf86-video-rendition/PKGBUILD14
-rw-r--r--abs/core-testing/xf86-video-s3/PKGBUILD18
-rw-r--r--abs/core-testing/xf86-video-s3virge/PKGBUILD45
-rw-r--r--abs/core-testing/xf86-video-savage/PKGBUILD57
-rw-r--r--abs/core-testing/xf86-video-savage/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/xf86-video-siliconmotion/PKGBUILD14
-rw-r--r--abs/core-testing/xf86-video-sis/PKGBUILD64
-rw-r--r--abs/core-testing/xf86-video-sis/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/xf86-video-sisusb/PKGBUILD14
-rw-r--r--abs/core-testing/xf86-video-tdfx/PKGBUILD63
-rw-r--r--abs/core-testing/xf86-video-tdfx/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/xf86-video-trident/PKGBUILD66
-rw-r--r--abs/core-testing/xf86-video-trident/mesa-7.1-link-shared.patch102
-rw-r--r--abs/core-testing/xf86-video-tseng/PKGBUILD18
-rw-r--r--abs/core-testing/xf86-video-unichrome/PKGBUILD25
-rw-r--r--abs/core-testing/xf86-video-v4l/PKGBUILD14
-rw-r--r--abs/core-testing/xf86-video-vesa/PKGBUILD19
-rw-r--r--abs/core-testing/xf86-video-vga/PKGBUILD26
-rw-r--r--abs/core-testing/xf86-video-vga/pciaccess.patch371
-rw-r--r--abs/core-testing/xf86-video-vmware/PKGBUILD9
-rw-r--r--abs/core-testing/xf86-video-voodoo/PKGBUILD14
-rw-r--r--abs/core-testing/xkeyboard-config/PKGBUILD26
-rw-r--r--abs/core-testing/xkeyboard-config/fix-abnt2.patch20
-rw-r--r--abs/core-testing/xorg-apps/PKGBUILD67
-rw-r--r--abs/core-testing/xorg-server-utils/PKGBUILD36
-rw-r--r--abs/core-testing/xorg-server/001_fedora_extramodes.patch85
-rw-r--r--abs/core-testing/xorg-server/PKGBUILD102
-rw-r--r--abs/core-testing/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch16
-rw-r--r--abs/core-testing/xorg-server/xorg-server.install25
-rw-r--r--abs/core-testing/xorg-server/xserver-1.5-branch-4970d.patch246
-rw-r--r--abs/core-testing/xorg-server/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch69
-rw-r--r--abs/core-testing/xorg-server/xserver-1.5.3-AEI-on-by-default.patch108
-rw-r--r--abs/core-testing/xorg-util-macros/PKGBUILD14
-rw-r--r--abs/core-testing/xorg-utils/PKGBUILD21
-rw-r--r--abs/core-testing/xorg-xkb-utils/PKGBUILD14
-rw-r--r--abs/core-testing/xterm/PKGBUILD15
248 files changed, 23863 insertions, 1746 deletions
diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index 1058a17..ef555bc 100755
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=LinHES-config
pkgver=1.0
-pkgrel=148
+pkgrel=151
conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev )
pkgdesc="Install and configure your system"
depends=(bc libstatgrab mysql-python expect curl dnsutils parted sg3_utils nmbscan )
diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.ati b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.ati
index c6d9249..53c8e0b 100644
--- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.ati
+++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.ati
@@ -6,7 +6,7 @@ Section "ServerLayout"
EndSection
Section "Files"
- RgbPath "/usr/share/X11/rgb"
+# RgbPath "/usr/share/X11/rgb"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/75dpi"
diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.intel b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.intel
index a4d258a..f3684fb 100644
--- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.intel
+++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.intel
@@ -13,7 +13,7 @@ Section "ServerFlags"
EndSection
Section "Files"
- RgbPath "/usr/share/X11/rgb"
+# RgbPath "/usr/share/X11/rgb"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/misc:unscaled"
FontPath "/usr/share/fonts/misc"
diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.nvidia b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.nvidia
index dec0f42..2cc4cb6 100755
--- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.nvidia
+++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.nvidia
@@ -9,7 +9,7 @@ Section "ServerLayout"
EndSection
Section "Files"
- RgbPath "/usr/X11R6/lib/X11/rgb"
+# RgbPath "/usr/X11R6/lib/X11/rgb"
EndSection
Section "Module"
diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vesa b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vesa
index c569819..ce62457 100755
--- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vesa
+++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vesa
@@ -9,7 +9,7 @@ Section "ServerLayout"
EndSection
Section "Files"
- RgbPath "/usr/X11R6/lib/X11/rgb"
+# RgbPath "/usr/X11R6/lib/X11/rgb"
EndSection
Section "Module"
diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.via b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.via
index 6dd7821..8454767 100644
--- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.via
+++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.via
@@ -9,7 +9,7 @@ Section "ServerLayout"
EndSection
Section "Files"
- RgbPath "/usr/X11R6/lib/X11/rgb"
+# RgbPath "/usr/X11R6/lib/X11/rgb"
EndSection
Section "Module"
diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vmware b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vmware
index 843f2f4..a7a5113 100755
--- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vmware
+++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vmware
@@ -9,7 +9,7 @@ Section "ServerLayout"
EndSection
Section "Files"
- RgbPath "/usr/X11R6/lib/X11/rgb"
+# RgbPath "/usr/X11R6/lib/X11/rgb"
EndSection
Section "Module"
diff --git a/abs/core-testing/LinHES-config/xconfig.sh b/abs/core-testing/LinHES-config/xconfig.sh
index ef3e836..f718a1f 100755
--- a/abs/core-testing/LinHES-config/xconfig.sh
+++ b/abs/core-testing/LinHES-config/xconfig.sh
@@ -1,4 +1,5 @@
#!/bin/bash
+NVPKGS="ati-dri xf86-video-ati xf86-video-radeonhd intel-dri xf86-video-intel unichrome-dri xf86-video-unichrome xf86-video-mga xf86-video-savage xf86-video-trident"
BASE=""
. /etc/profile
NVIDIA_96XX="$TEMPLATES/xorg/96xx_supported.txt"
@@ -179,12 +180,12 @@ function setupX {
then
#install 96xx drivers
echo "installing nvidia 96xx drivers"
- pacman --noconfirm -R libgl-dri > /dev/null 2>&1
+ pacman --noconfirm -R $NVPKGS > /dev/null 2>&1
pacman --noconfirm -S nvidia-96xx nvidia-96xx-utils > /dev/null 2>&1
else
#install latest drivers
echo "installing current nvidia drivers"
- pacman --noconfirm -R libgl-dri > /dev/null 2>&1
+ pacman --noconfirm -R $NVPKGS > /dev/null 2>&1
pacman --noconfirm -S nvidia nvidia-utils > /dev/null 2>&1
fi
fi
@@ -198,7 +199,7 @@ function setupX {
if [ ! x$TESTMODE = "xtest" ]
then
pacman --noconfirm -R nvidia nvidia-utils > /dev/null 2>&1
- pacman --noconfirm -S libgl-dri > /dev/null 2>&1
+ pacman --noconfirm -S libgl > /dev/null 2>&1
fi
;;
@@ -207,7 +208,7 @@ function setupX {
if [ ! x$TESTMODE = "xtest" ]
then
pacman --noconfirm -R nvidia-utils > /dev/null 2>&1
- pacman --noconfirm -S libgl-dri > /dev/null 2>&1
+ pacman --noconfirm -S libgl > /dev/null 2>&1
fi
;;
diff --git a/abs/core-testing/aalib/PKGBUILD b/abs/core-testing/aalib/PKGBUILD
index ee23967..0ae5b05 100644
--- a/abs/core-testing/aalib/PKGBUILD
+++ b/abs/core-testing/aalib/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 2990 2008-06-18 01:46:24Z eric $
+# $Id: PKGBUILD 9082 2008-08-17 03:29:36Z allan $
# Maintainer: arjan <arjan@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
#
pkgname=aalib
pkgver=1.4rc5
-pkgrel=5
+pkgrel=6
pkgdesc="AAlib is a portable ASCII art GFX library"
arch=('i686' 'x86_64')
url="http://aa-project.sourceforge.net/aalib/"
@@ -18,7 +18,8 @@ md5sums=('9801095c42bba12edebd1902bcf0a990' '863a96a6689aa7ee073ca448bc2f133d')
build() {
cd $startdir/src/$pkgname-1.4.0
patch -Np0 -i ${startdir}/src/aclocal-fixes.patch || return 1
- ./configure --prefix=/usr --mandir=/usr/share/man
+ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
make || return 1
make DESTDIR=$startdir/pkg install
+ rm ${pkgdir}/usr/share/info/dir
}
diff --git a/abs/core-testing/acpid/PKGBUILD b/abs/core-testing/acpid/PKGBUILD
index f39bbc1..4fbbdf2 100644
--- a/abs/core-testing/acpid/PKGBUILD
+++ b/abs/core-testing/acpid/PKGBUILD
@@ -1,31 +1,38 @@
+# $Id: PKGBUILD 20369 2008-12-03 02:03:14Z thayer $
+# Contributor: Manolis Tzanidakis
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+# Maintainer: Thayer Williams <thayer@archlinux.org>
pkgname=acpid
-pkgver=1.0.6
-pkgrel=3
-arch=('i686')
-pkgdesc="Utilities for using ACPI power management"
+pkgver=1.0.8
+pkgrel=1
+pkgdesc="A daemon for delivering ACPI power management events"
url="http://acpid.sourceforge.net"
+license=('GPL2')
+arch=('i686' 'x86_64')
depends=(glibc)
-source=(http://easynews.dl.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz
- acpid-1.0.4-gcc4.patch
- acpid
- anything
- handler.sh
- Makefile )
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz
+ acpid
+ anything
+ handler.sh)
backup=('etc/acpi/handler.sh' 'etc/acpi/events/anything')
-#options='-D_GNU_SOURCE'
-MAKEFLAGS="-j2"
+md5sums=('1d9c52fe2c0b51f8463f357c2a3d3ddb'
+ '15903690f1bae4b3b0625b369de65521'
+ '2d37b98d6e74bab815604b8b48c6cfd4'
+ '0e8dd13793b1baa79a745f4034888367')
build() {
- cd $startdir/src/$pkgname-$pkgver
- # patch -Np1 -i ${startdir}/src/acpid-1.0.4-gcc4.patch || return 1
- cp ../Makefile .
- /usr/bin/make || return 1
- /bin/install -d -m0755 $startdir/pkg/usr/bin
- /usr/bin/make INSTPREFIX=$startdir/pkg \
- MAN8DIR=$startdir/pkg/usr/man/man8 install
- /bin/install -D -m0755 ../acpid $startdir/pkg/etc/rc.d/acpid
- /bin/install -d -m0755 $startdir/pkg/etc/acpi/events
- /bin/install -D -m0644 ../anything $startdir/pkg/etc/acpi/events/anything
- /bin/install -D -m0755 ../handler.sh $startdir/pkg/etc/acpi/handler.sh
+ cd $srcdir/$pkgname-$pkgver
+ /usr/bin/make || return 1
+ /bin/install -d -m0755 $pkgdir/usr/bin || return 1
+ /usr/bin/make INSTPREFIX=$pkgdir \
+ MAN8DIR=$pkgdir/usr/share/man/man8 install || return 1
+
+ # install our supplementary scripts
+ /bin/install -D -m0755 $srcdir/acpid $pkgdir/etc/rc.d/acpid || return 1
+ /bin/install -D -m0644 $srcdir/anything $pkgdir/etc/acpi/events/anything || return 1
+ /bin/install -D -m0755 $srcdir/handler.sh $pkgdir/etc/acpi/handler.sh || return 1
+
+ # set world readable bit on the acpid binary
+ /bin/chmod 755 $pkgdir/usr/sbin/acpid || return 1
}
diff --git a/abs/core-testing/acpid/handler.sh b/abs/core-testing/acpid/handler.sh
index b885f77..ad31d1a 100755
--- a/abs/core-testing/acpid/handler.sh
+++ b/abs/core-testing/acpid/handler.sh
@@ -11,59 +11,55 @@ setspeed="/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed"
set $*
case "$1" in
- button/power)
- #echo "PowerButton pressed!">/dev/tty5
- case "$2" in
- PWRF) logger "PowerButton pressed: $2"
- xsay "Please wait while the system powers off" &
- /sbin/halt-runit
- ;;
- *) logger "ACPI action undefined: $2" ;;
- esac
- ;;
- button/sleep)
- case "$2" in
- SLPB) echo -n mem >/sys/power/state ;;
- *) logger "ACPI action undefined: $2" ;;
- esac
- ;;
- ac_adapter)
- case "$2" in
- AC)
- case "$4" in
- 00000000)
- echo -n $minspeed >$setspeed
- #/etc/laptop-mode/laptop-mode start
- ;;
- 00000001)
- echo -n $maxspeed >$setspeed
- #/etc/laptop-mode/laptop-mode stop
- ;;
- esac
- ;;
- *) logger "ACPI action undefined: $2" ;;
- esac
- ;;
- battery)
- case "$2" in
- BAT0)
- case "$4" in
- 00000000) #echo "offline" >/dev/tty5
- ;;
- 00000001) #echo "online" >/dev/tty5
- ;;
- esac
- ;;
- CPU0)
- ;;
- *) logger "ACPI action undefined: $2" ;;
- esac
- ;;
-
- button/lid)
- #echo "LID switched!">/dev/tty5
- ;;
- *)
- logger "ACPI group/action undefined: $1 / $2"
- ;;
+ button/power)
+ #echo "PowerButton pressed!">/dev/tty5
+ case "$2" in
+ PWRF) logger "PowerButton pressed: $2" ;;
+ *) logger "ACPI action undefined: $2" ;;
+ esac
+ ;;
+ button/sleep)
+ case "$2" in
+ SLPB) echo -n mem >/sys/power/state ;;
+ *) logger "ACPI action undefined: $2" ;;
+ esac
+ ;;
+ ac_adapter)
+ case "$2" in
+ AC)
+ case "$4" in
+ 00000000)
+ echo -n $minspeed >$setspeed
+ #/etc/laptop-mode/laptop-mode start
+ ;;
+ 00000001)
+ echo -n $maxspeed >$setspeed
+ #/etc/laptop-mode/laptop-mode stop
+ ;;
+ esac
+ ;;
+ *) logger "ACPI action undefined: $2" ;;
+ esac
+ ;;
+ battery)
+ case "$2" in
+ BAT0)
+ case "$4" in
+ 00000000) #echo "offline" >/dev/tty5
+ ;;
+ 00000001) #echo "online" >/dev/tty5
+ ;;
+ esac
+ ;;
+ CPU0)
+ ;;
+ *) logger "ACPI action undefined: $2" ;;
+ esac
+ ;;
+ button/lid)
+ #echo "LID switched!">/dev/tty5
+ ;;
+ *)
+ logger "ACPI group/action undefined: $1 / $2"
+ ;;
esac
diff --git a/abs/core-testing/alsa-lib/PKGBUILD b/abs/core-testing/alsa-lib/PKGBUILD
index 785f6b2..b49354a 100644
--- a/abs/core-testing/alsa-lib/PKGBUILD
+++ b/abs/core-testing/alsa-lib/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 18680 2008-11-08 16:21:16Z tpowa $
# Maintainer: judd <jvinet@zeroflux.org>
pkgname=alsa-lib
-pkgver=1.0.16
+pkgver=1.0.18
pkgrel=1
pkgdesc="An alternative implementation of Linux sound support"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
url="http://www.alsa-project.org"
depends=('glibc')
optdepends=('python')
@@ -13,11 +13,11 @@ makedepends=('python')
license=('GPL')
options=(!libtool)
source=(ftp://ftp.alsa-project.org/pub/lib/$pkgname-$pkgver.tar.bz2)
-md5sums=('73b0986758bb762648a5fafc93e287c1')
build() {
- cd $startdir/src/$pkgname-$pkgver
+ cd $srcdir/$pkgname-$pkgver
./configure --prefix=/usr
make || return 1
- make DESTDIR=$startdir/pkg install
+ make DESTDIR=$pkgdir install
}
+md5sums=('de60df7541fafe8c6a3397e0f105ff0e')
diff --git a/abs/core-testing/alsa-oss/PKGBUILD b/abs/core-testing/alsa-oss/PKGBUILD
index d70a9e9..66f7030 100644
--- a/abs/core-testing/alsa-oss/PKGBUILD
+++ b/abs/core-testing/alsa-oss/PKGBUILD
@@ -1,14 +1,14 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 13736 2008-09-28 09:04:09Z tpowa $
# Maintainer: judd <jvinet@zeroflux.org>
pkgname=alsa-oss
-pkgver=1.0.15
+pkgver=1.0.17
pkgrel=1
pkgdesc="OSS compatibility library"
arch=(i686 x86_64)
license=('GPL')
url="http://www.alsa-project.org"
options=(!libtool)
-depends=('glibc' 'alsa-lib>=1.0.15')
+depends=('glibc' 'alsa-lib>=1.0.17a')
source=(ftp://ftp.alsa-project.org/pub/oss-lib/$pkgname-$pkgver.tar.bz2)
build() {
@@ -17,4 +17,4 @@ build() {
make || return 1
make DESTDIR=$startdir/pkg install
}
-md5sums=('49fb5fbae8bf955b248e46ff9c9a2aa1')
+md5sums=('1b1850c2fc91476a73d50f537cbd402f')
diff --git a/abs/core-testing/alsa-utils/PKGBUILD b/abs/core-testing/alsa-utils/PKGBUILD
index a14e0ad..caa636c 100644
--- a/abs/core-testing/alsa-utils/PKGBUILD
+++ b/abs/core-testing/alsa-utils/PKGBUILD
@@ -1,27 +1,29 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 18682 2008-11-08 16:46:01Z tpowa $
# Maintainer: judd <jvinet@zeroflux.org>
pkgname=alsa-utils
-pkgver=1.0.16
+pkgver=1.0.18
pkgrel=1
pkgdesc="An alternative implementation of Linux sound support"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
url="http://www.alsa-project.org"
-depends=('alsa-lib>=1.0.16' 'dialog' 'pciutils' 'ncurses')
+#can not use >=$pkgver due to use of letters in alsa-lib update versioning
+depends=("alsa-lib>1.0.17.999" 'dialog' 'pciutils' 'ncurses')
+makedepends=('xmlto' 'docbook-xsl')
license=('GPL')
source=(ftp://ftp.alsa-project.org/pub/utils/$pkgname-${pkgver}.tar.bz2 \
alsa alsaconf.patch alsa.conf.d)
backup=(etc/conf.d/alsa)
-md5sums=('b9f803f45e6988bb27a6bed521a949fc'
- 'cce0969b0203a2bb35540fdf4f7e96ae'
- '538f82650d08e901efea86c5395520df'
- '366d370f874a45e67b63ce4a8b048202')
build() {
cd $startdir/src/$pkgname-${pkgver}
patch -Np1 -i ../alsaconf.patch || return 1
- ./configure --prefix=/usr --with-curses=ncursesw
+ ./configure --prefix=/usr
make || return 1
make DESTDIR=$startdir/pkg install
install -D -m755 ../alsa $startdir/pkg/etc/rc.d/alsa
install -D -m644 ../alsa.conf.d $startdir/pkg/etc/conf.d/alsa
}
+md5sums=('0a6b26d27cc2adfd591d91d8c155fdb7'
+ '9dff78913b13b10e67c4195e90395ed2'
+ '538f82650d08e901efea86c5395520df'
+ '93089f0d8872078939f76dd2acaebc2b')
diff --git a/abs/core-testing/alsa-utils/alsa b/abs/core-testing/alsa-utils/alsa
index 2581a9a..e1d6f28 100755
--- a/abs/core-testing/alsa-utils/alsa
+++ b/abs/core-testing/alsa-utils/alsa
@@ -7,7 +7,7 @@
case "$1" in
start)
stat_busy "Restoring ALSA Levels"
- /usr/sbin/alsactl restore
+ /usr/sbin/alsactl $ALSA_ARGS restore
if [ $? -gt 0 ]; then
stat_fail
else
@@ -17,20 +17,28 @@ case "$1" in
POWERSAVE=${POWERSAVE:-0}
if [ -e /sys/module/snd_ac97_codec/parameters/power_save \
- -a $POWERSAVE -ne 0 ]; then
- echo $POWERSAVE > /sys/module/snd_ac97_codec/parameters/power_save
- echo 1 > /dev/dsp
+ -a $POWERSAVE -ne 0 ]; then
+ echo $POWERSAVE > /sys/module/snd_ac97_codec/parameters/power_save
+ echo 1 > /dev/dsp
fi
if [ -e /sys/module/snd_hda_intel/parameters/power_save \
- -a $POWERSAVE -ne 0 ]; then
- echo $POWERSAVE > /sys/module/snd_hda_intel/parameters/power_save
- echo 1 > /dev/dsp
+ -a $POWERSAVE -ne 0 ]; then
+ echo $POWERSAVE > /sys/module/snd_hda_intel/parameters/power_save
+ echo 1 > /dev/dsp
fi
;;
stop)
- stat_busy "Saving ALSA Levels"
- /usr/sbin/alsactl store
+ SAVE_VOLUME=${SAVE_VOLUME:-yes}
+ if [ "$SAVE_VOLUME" == "yes" ]; then
+ stat_busy "Saving ALSA Levels"
+ /usr/sbin/alsactl $ALSA_ARGS store
+ else
+ stat_busy "Stopping ALSA"
+ fi
+ if [ "$MUTE_VOLUME" == "yes" ]; then
+ /usr/bin/amixer -q set Master 0 mute
+ fi
if [ $? -gt 0 ]; then
stat_fail
else
@@ -44,5 +52,5 @@ case "$1" in
$0 start
;;
*)
- echo "usage: $0 {start|stop|restart}"
+ echo "usage: $0 {start|stop|restart}"
esac
diff --git a/abs/core-testing/alsa-utils/alsa.conf.d b/abs/core-testing/alsa-utils/alsa.conf.d
index 1fa3d38..2c4a92e 100644
--- a/abs/core-testing/alsa-utils/alsa.conf.d
+++ b/abs/core-testing/alsa-utils/alsa.conf.d
@@ -1,4 +1,15 @@
+# Arguments for alsactl
+# example: ALSA_ARGS="--file /var/run/alsa-state"
+ALSA_ARGS=""
+
# Enables powersaving mode for AC97 and hda_intel audio chips.
# Set to 1 to enable powersaving.
# Set to 0 to disable powersaving (default).
POWERSAVE=0
+
+# Whether to save volume levels when stopped ("yes" or "no").
+SAVE_VOLUME="yes"
+
+# Whether to mute the master volume when stopped ("yes" or "no").
+# Useful for bad audio cards which make a noise on system poweroff.
+MUTE_VOLUME="no"
diff --git a/abs/core-testing/aspell/PKGBUILD b/abs/core-testing/aspell/PKGBUILD
index 0b8a590..8d584b9 100644
--- a/abs/core-testing/aspell/PKGBUILD
+++ b/abs/core-testing/aspell/PKGBUILD
@@ -1,24 +1,31 @@
-# $Id: PKGBUILD 521 2008-04-20 13:00:37Z andyrtr $
-# Maintainer: dorphell <dorphell@archlinux.org>
+# $Id: PKGBUILD 19099 2008-11-14 21:50:10Z thayer $
# Contributor: Jochem Kossen <j.kossen@home.nl>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+
pkgname=aspell
pkgver=0.60.6
_pkgmajorver=0.60
-pkgrel=1
-pkgdesc="A Free and Open Source spell checker designed to eventually replace Ispell"
-arch=(i686 x86_64)
+pkgrel=4
+pkgdesc="A spell checker designed to eventually replace Ispell"
+url="http://aspell.net/"
+arch=('i686' 'x86_64')
license=('LGPL')
-depends=('gcc-libs' 'ncurses')
+depends=('gcc-libs' 'ncurses>=5.6-7')
+optdepends=('perl: to import old dictionaries')
options=(!libtool)
-source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
install=aspell.install
-url="http://aspell.net/"
+source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
md5sums=('bc80f0198773d5c05086522be67334eb')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install
- ln -s ${pkgname}-${_pkgmajorver} ${startdir}/pkg/usr/lib/${pkgname}
+ make DESTDIR=${pkgdir} install || return 1
+ ln -s ${pkgname}-${_pkgmajorver} ${pkgdir}/usr/lib/${pkgname} || return 1
+
+ # cleanup info files
+ rm ${pkgdir}/usr/share/info/dir || return 1
+ gzip ${pkgdir}/usr/share/info/* || return 1
}
diff --git a/abs/core-testing/aspell/aspell.install b/abs/core-testing/aspell/aspell.install
index b635a4a..2747f02 100644
--- a/abs/core-testing/aspell/aspell.install
+++ b/abs/core-testing/aspell/aspell.install
@@ -1,8 +1,23 @@
+infodir=/usr/share/info
+filelist=(aspell.info aspell-dev.info)
+
post_install() {
- echo "NOTE: aspell comes with no default dictionary"
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+ echo "==> aspell comes with no default dictionary"
+}
+
+post_upgrade() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
}
-op=$1
-shift
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
-[ "$(type -t "$op")" = "function" ] && $op "$@"
+# vim:set ts=2 sw=2 et:
diff --git a/abs/core-testing/ati-dri/PKGBUILD b/abs/core-testing/ati-dri/PKGBUILD
new file mode 100644
index 0000000..253f136
--- /dev/null
+++ b/abs/core-testing/ati-dri/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 17170 2008-10-26 11:01:19Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+pkgname=ati-dri
+pkgver=7.2
+pkgrel=1
+pkgdesc="DRI drivers for ATI/AMD videochips"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+depends=('libdrm>=2.3.1' 'libgl>=7.2' 'expat>=2.0.1')
+makedepends=('glproto>=1.4.9' 'pkgconfig' 'libxfixes' 'libxdamage' 'libxxf86vm' 'libxext')
+conflicts=('xf86-video-ati<6.9.0-6')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2
+ mesa-7.1-link-shared.patch)
+md5sums=('04d379292e023df0b0266825cb0dbde5'
+ 'f0baa948d9810f268413111ee439d24b')
+
+build() {
+ cd "${srcdir}/Mesa-${pkgver}"
+ patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=radeon,r200,r300 \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glu \
+ --disable-glut \
+ --disable-glw || return 1
+ make || return 1
+ cd src/mesa/drivers/dri || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so"
+ rm -rf "${pkgdir}/usr/include"
+ rm -rf "${pkgdir}/usr/lib/pkgconfig"
+}
diff --git a/abs/core-testing/ati-dri/mesa-7.1-link-shared.patch b/abs/core-testing/ati-dri/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/ati-dri/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/avahi/ChangeLog b/abs/core-testing/avahi/ChangeLog
index e4d3f7a..e298fb4 100644
--- a/abs/core-testing/avahi/ChangeLog
+++ b/abs/core-testing/avahi/ChangeLog
@@ -1,4 +1,8 @@
+2009-01-04 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated for i686: 0.6.24
+
2008-07-22 Douglas Soares de Andrade <douglas@archlinux.org>
* Updated for i686: 0.6.23
diff --git a/abs/core-testing/avahi/PKGBUILD b/abs/core-testing/avahi/PKGBUILD
index f98180b..e068e17 100644
--- a/abs/core-testing/avahi/PKGBUILD
+++ b/abs/core-testing/avahi/PKGBUILD
@@ -1,26 +1,24 @@
-# $Id: PKGBUILD 6066 2008-07-23 03:45:52Z douglas $
-# Maintainer: Travis Willard <travis@archlinux.org>
+# $Id: PKGBUILD 23159 2009-01-04 04:58:11Z douglas $
+# Maintainer: Douglas Soares de Andrade <douglas@archlinux.org>
pkgname=avahi
-pkgver=0.6.23
+pkgver=0.6.24
pkgrel=1
pkgdesc="A multicast/unicast DNS-SD framework"
arch=('i686' 'x86_64')
url="http://www.avahi.org/"
license=('LGPL')
-#depends=('dbus>=1.1.20-1' 'libcap' 'libdaemon>=0.11' 'gdbm' 'glib2' 'expat')
-depends=('libcap' 'libdaemon>=0.11' 'gdbm' 'glib2' 'expat' 'dbus-python')
+depends=('dbus>=1.1.20-1' 'libcap' 'libdaemon>=0.11' 'gdbm' 'glib2' 'expat')
optdepends=('qt3:Qt3 UI support' 'libglade:Avahi-discover-standalone'
'nss-mdns:NSS support for mDNS')
-makedepends=('qt3' 'libglade' 'intltool')
-
+makedepends=('mono' 'pygtk' 'gtk-sharp-2' 'dbus-python' 'qt3' 'libglade' 'intltool')
backup=(etc/avahi/avahi-daemon.conf)
install=avahi.install
conflicts=('howl' 'mdnsresponder')
provides=('howl' 'mdnsresponder')
replaces=('howl' 'mdnsresponder')
options=('!libtool')
-source=(http://www.avahi.org/download/avahi-${pkgver}.tar.gz)
+source=(http://www.avahi.org/download/avahi-${pkgver}.tar.gz gnome-nettool.png)
build() {
[ -z "${QTDIR}" ] && . /etc/profile.d/qt3.sh
@@ -39,7 +37,10 @@ build() {
--enable-compat-howl \
--with-distro=archlinux \
--with-avahi-priv-access-group=network \
- --disable-autoipd --disable-glib --disable-pygtk --disable-mono --disable-xmltoman
+ --enable-autoipd \
+ --with-autoipd-user=avahi \
+ --with-autoipd-group=avahi
+
make || return 1
make DESTDIR=${startdir}/pkg install
@@ -57,9 +58,7 @@ build() {
cd ${startdir}/pkg/usr/lib/pkgconfig
ln -s avahi-compat-howl.pc howl.pc
mkdir -p ${startdir}/pkg/usr/share/pixmaps
-# install -m 644 ${startdir}/src/gnome-nettool.png ${startdir}/pkg/usr/share/pixmaps/gnome-nettool.png
+ install -m 644 ${startdir}/src/gnome-nettool.png ${startdir}/pkg/usr/share/pixmaps/gnome-nettool.png
}
-
-md5sums=('aab1a304851d8145ea5f6a85c10af9e9'
+md5sums=('068c1d220b07037e64caf87d4a7a0504'
'42c2905307c7a5dc6ac4b75f4c3d65a3')
-
diff --git a/abs/core-testing/avahi/gnome-nettool.png b/abs/core-testing/avahi/gnome-nettool.png
new file mode 100644
index 0000000..227d067
--- /dev/null
+++ b/abs/core-testing/avahi/gnome-nettool.png
Binary files differ
diff --git a/abs/core-testing/dbus-core/PKGBUILD b/abs/core-testing/dbus-core/PKGBUILD
new file mode 100644
index 0000000..7a1bc6e
--- /dev/null
+++ b/abs/core-testing/dbus-core/PKGBUILD
@@ -0,0 +1,53 @@
+# $Id: PKGBUILD 19084 2008-11-14 21:36:59Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Link Dupont <link@subpop.net>
+#
+pkgname=dbus-core
+pkgver=1.2.4
+pkgrel=1
+pkgdesc="Freedesktop.org message bus system"
+url="http://www.freedesktop.org/Software/dbus"
+arch=(i686 x86_64)
+license=('GPL' 'custom')
+depends=('expat>=2.0')
+conflicts=('dbus<1.2.3-2')
+options=(!libtool)
+install=dbus.install
+source=(http://dbus.freedesktop.org/releases/dbus/dbus-${pkgver}.tar.gz
+ dbus)
+md5sums=('2e643910a09f44b000a0d76038637999'
+ 'f3fd196cc278bd7b45a4ca01fb8f7894')
+
+build() {
+ cd "${srcdir}/dbus-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib/dbus-1.0 --with-dbus-user=81 \
+ --with-system-pid-file=/var/run/dbus.pid \
+ --enable-inotify --disable-dnotify \
+ --disable-verbose-mode --disable-static \
+ --disable-tests --disable-asserts --without-x || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ rm -f ${pkgdir}/usr/bin/dbus-launch
+ rm -f ${pkgdir}/usr/share/man/man1/dbus-launch.1
+
+ chown 81:81 "${pkgdir}/var/run/dbus" || return 1
+
+ install -m755 -d "${pkgdir}/etc/rc.d" || return 1
+ install -m755 "${srcdir}/dbus" "${pkgdir}/etc/rc.d/" || return 1
+
+ #Fix configuration file
+ sed -i -e 's|<user>81</user>|<user>dbus</user>|' "${pkgdir}/etc/dbus-1/system.conf" || return 1
+
+ #install .keep files so pacman doesn't delete empty dirs
+ touch "${pkgdir}/usr/share/dbus-1/services/.keep" || return 1
+ touch "${pkgdir}/usr/share/dbus-1/system-services/.keep" || return 1
+ touch "${pkgdir}/etc/dbus-1/session.d/.keep" || return 1
+ touch "${pkgdir}/etc/dbus-1/system.d/.keep" || return 1
+
+ rmdir "${pkgdir}/usr/lib/dbus-1.0/dbus-1" || return 1
+
+ install -d -m755 "${pkgdir}/usr/share/licenses/dbus-core"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/dbus-core/" || return 1
+}
diff --git a/abs/core-testing/dbus-core/dbus b/abs/core-testing/dbus-core/dbus
new file mode 100644
index 0000000..cd26db8
--- /dev/null
+++ b/abs/core-testing/dbus-core/dbus
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting D-BUS system messagebus"
+ if [ ! -x /var/run/dbus ] ; then
+ install -m755 -g 81 -o 81 -d /var/run/dbus
+ fi
+ if [ -x /usr/bin/dbus-uuidgen ] ; then
+ /usr/bin/dbus-uuidgen --ensure
+ fi
+
+ /usr/bin/dbus-daemon --system
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon dbus
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping D-BUS system messagebus"
+ [ -f /var/run/dbus.pid ] && kill `cat /var/run/dbus.pid`
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm -f /var/run/dbus.pid
+ rm_daemon dbus
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ reload)
+ stat_busy "Reloading D-BUS configuration"
+ [ -f /var/run/dbus.pid ] && /usr/bin/dbus-send \
+ --system --type=method_call \
+ --dest=org.freedesktop.DBus \
+ / org.freedesktop.DBus.ReloadConfig
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart|reload}"
+ ;;
+esac
+exit 0
diff --git a/abs/core-testing/dbus-core/dbus.install b/abs/core-testing/dbus-core/dbus.install
new file mode 100644
index 0000000..85dd9a7
--- /dev/null
+++ b/abs/core-testing/dbus-core/dbus.install
@@ -0,0 +1,21 @@
+post_install() {
+ getent group dbus >/dev/null || usr/sbin/groupadd -g 81 dbus
+ getent passwd dbus >/dev/null || usr/sbin/useradd -c 'System message bus' -u 81 -g dbus -d '/' -s /bin/false dbus
+ usr/bin/passwd -l dbus &>/dev/null
+ dbus-uuidgen --ensure
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+
+ #Make sure new rc script can shutdown running dbus
+ [ -f var/run/dbus/pid ] && mv var/run/dbus/pid var/run/dbus.pid
+}
+
+# arg 1: the old package version
+pre_remove() {
+ usr/sbin/userdel dbus &>/dev/null
+ usr/sbin/groupdel dbus &>/dev/null
+}
diff --git a/abs/core-testing/dbus-glib/PKGBUILD b/abs/core-testing/dbus-glib/PKGBUILD
index 4eb8838..c4e5026 100644
--- a/abs/core-testing/dbus-glib/PKGBUILD
+++ b/abs/core-testing/dbus-glib/PKGBUILD
@@ -1,22 +1,22 @@
-# $Id: PKGBUILD 3474 2008-06-22 20:19:25Z jgc $
+# $Id: PKGBUILD 22368 2008-12-26 15:52:52Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=dbus-glib
-pkgver=0.76
+pkgver=0.78
pkgrel=1
pkgdesc="GLib bindings for DBUS"
arch=(i686 x86_64)
license=('GPL')
url="http://www.freedesktop.org/wiki/Software/DBusBindings"
-depends=('dbus>=1.2.1' 'glib2>=2.16.3')
+depends=('dbus>=1.2.4' 'glib2>=2.18.3')
makedepends=('pkgconfig')
options=('!libtool')
source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
-md5sums=('d3b716a7e798faa1c6a867675f00306a')
+md5sums=('d4aa04b9df35b4bd663be38e959941c8')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-static=no || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/dbus-python/PKGBUILD b/abs/core-testing/dbus-python/PKGBUILD
index e3e845f..ae77c04 100644
--- a/abs/core-testing/dbus-python/PKGBUILD
+++ b/abs/core-testing/dbus-python/PKGBUILD
@@ -1,18 +1,17 @@
-# $Id: PKGBUILD 9903 2008-08-20 20:08:55Z jgc $
+# $Id: PKGBUILD 17272 2008-10-27 16:25:58Z douglas $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=dbus-python
pkgver=0.83.0
-pkgrel=1
+pkgrel=2
pkgdesc="Python bindings for DBUS"
arch=(i686 x86_64)
license=('GPL' 'LGPL')
url="http://www.freedesktop.org/wiki/Software/DBusBindings"
-depends=('dbus-glib>=0.76' 'python>=2.5')
+depends=('dbus-glib>=0.76' 'python>=2.6')
makedepends=('pkgconfig')
options=('!libtool')
source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
-md5sums=('562c78876219bf458d79a041af18293d')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
@@ -20,3 +19,4 @@ build() {
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
+md5sums=('562c78876219bf458d79a041af18293d')
diff --git a/abs/core-testing/dbus/30-dbus b/abs/core-testing/dbus/30-dbus
new file mode 100644
index 0000000..603e92d
--- /dev/null
+++ b/abs/core-testing/dbus/30-dbus
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# launches a session dbus instance
+
+dbuslaunch="`which dbus-launch 2>/dev/null`"
+if [ -n "$dbuslaunch" ] && [ -x "$dbuslaunch" ] && [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
+ eval `$dbuslaunch --sh-syntax --exit-with-session`
+fi
+
diff --git a/abs/core-testing/dbus/PKGBUILD b/abs/core-testing/dbus/PKGBUILD
index dc747bc..3276f82 100644
--- a/abs/core-testing/dbus/PKGBUILD
+++ b/abs/core-testing/dbus/PKGBUILD
@@ -1,48 +1,38 @@
-# $Id: PKGBUILD 9899 2008-08-20 20:01:17Z jgc $
+# $Id: PKGBUILD 19087 2008-11-14 21:39:51Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Link Dupont <link@subpop.net>
#
pkgname=dbus
-pkgver=1.2.3
+pkgver=1.2.4
pkgrel=1
pkgdesc="Freedesktop.org message bus system"
url="http://www.freedesktop.org/Software/dbus"
arch=(i686 x86_64)
license=('GPL' 'custom')
-depends=('expat>=2.0' 'libx11' 'libsm')
-options=(!libtool)
-install=dbus.install
+depends=("dbus-core>=${pkgver}" 'libx11' 'libsm')
source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz
- dbus)
-md5sums=('f71641385768e99361bd298568207cee'
- 'f3fd196cc278bd7b45a4ca01fb8f7894')
+ 30-dbus)
+md5sums=('2e643910a09f44b000a0d76038637999'
+ 'd14e59575f04e55d21a04907b6fd9f3c')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd ${srcdir}/${pkgname}-${pkgver}
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
--libexecdir=/usr/lib/dbus-1.0 --with-dbus-user=81 \
--with-system-pid-file=/var/run/dbus.pid \
--disable-verbose-mode --disable-static \
+ --enable-inotify --disable-dnotify \
--disable-tests --disable-asserts || return 1
- make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
- chown 81:81 ${startdir}/pkg/var/run/dbus || return 1
+ cd tools || return 1
+ make dbus-launch || return 1
+ install -m755 -d ${pkgdir}/usr/bin
+ install -m755 -d ${pkgdir}/usr/share/man/man1
+ install -m755 dbus-launch ${pkgdir}/usr/bin/ || return 1
+ install -m644 dbus-launch.1 ${pkgdir}/usr/share/man/man1/ || return 1
- install -m755 -d ${startdir}/pkg/etc/rc.d || return 1
- install -m 755 ${startdir}/dbus ${startdir}/pkg/etc/rc.d/ || return 1
-
- #Fix configuration file
- sed -i -e 's|<user>81</user>|<user>dbus</user>|' ${startdir}/pkg/etc/dbus-1/system.conf || return 1
-
- #install .keep files so pacman doesn't delete empty dirs
- touch ${startdir}/pkg/usr/share/dbus-1/services/.keep || return 1
- touch ${startdir}/pkg/usr/share/dbus-1/system-services/.keep || return 1
- touch ${startdir}/pkg/etc/dbus-1/session.d/.keep || return 1
- touch ${startdir}/pkg/etc/dbus-1/system.d/.keep || return 1
-
- rmdir ${startdir}/pkg/usr/lib/dbus-1.0/dbus-1 || return 1
+ install -m755 -d ${pkgdir}/etc/X11/xinit/xinitrc.d
+ install -m755 ${srcdir}/30-dbus ${pkgdir}/etc/X11/xinit/xinitrc.d/ || return 1
install -d -m755 ${startdir}/pkg/usr/share/licenses/dbus
- install -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \
- ${startdir}/pkg/usr/share/licenses/dbus/ || return 1
+ install -m644 ../COPYING ${pkgdir}/usr/share/licenses/dbus/ || return 1
}
diff --git a/abs/core-testing/dvb-firmware/PKGBUILD b/abs/core-testing/dvb-firmware/PKGBUILD
index 6ad5707..0a4fd33 100644
--- a/abs/core-testing/dvb-firmware/PKGBUILD
+++ b/abs/core-testing/dvb-firmware/PKGBUILD
@@ -3,13 +3,13 @@
pkgname=dvb-firmware
pkgver=1
-pkgrel=1
+pkgrel=2
pkgdesc="Firmware for DVB cards"
arch=('i586' 'i686' 'x86_64')
license=('GPL2')
url="http://linuxtv.org/"
source=(ftp://ftp.knoppmyth.net/R6/sources/dvb-firmware.tar.bz2)
-md5sums=('d58a3f2b556cf32ac5ab68cd86fcf6ec')
+md5sums=('adc049deeeffc6ae8f57561396a73cb9')
build() {
cd $startdir/src/
diff --git a/abs/core-testing/fam/PKGBUILD b/abs/core-testing/fam/PKGBUILD
new file mode 100644
index 0000000..e7f5e41
--- /dev/null
+++ b/abs/core-testing/fam/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 15741 2008-10-18 01:59:29Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+pkgname=fam
+pkgver=2.7.0
+pkgrel=11
+pkgdesc="File Alteration Monitor - used by KDE, GNOME and others"
+arch=('i686' 'x86_64')
+license=('LGPL' 'GPL')
+depends=('portmap')
+url="http://oss.sgi.com/projects/fam/"
+backup=(etc/fam/fam.conf)
+options=('!makeflags') # Don't !libtool
+source=(ftp://oss.sgi.com/projects/fam/download/stable/${pkgname}-${pkgver}.tar.gz
+ fam-2.7.0-dnotify.patch
+ fam-2.7.0-largefiles.patch
+ fam-2.7.0-noc++.patch
+ fam-2.7.0-gcc43.patch
+ include_fam_h.patch
+ fam)
+md5sums=('1bf3ae6c0c58d3201afc97c6a4834e39'
+ '073d1763318344635ea316293390205c'
+ '47b41e0b0498793af004696a096d7da1'
+ '0274cd113d3dcb015653b5606c7714ac'
+ '13c14778038aa9601a27498448e855e0'
+ '2638b8ffacb9f03b6e438e08ea7b290a'
+ '45b648907ba1c7edec17fb544f1f4a13')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/fam-2.7.0-dnotify.patch || return 1
+ patch -Np1 -i ${srcdir}/fam-2.7.0-largefiles.patch || return 1
+ patch -Np0 -i ${srcdir}/include_fam_h.patch || return 1
+ patch -Np1 -i ${srcdir}/fam-2.7.0-noc++.patch || return 1
+ patch -Np1 -i ${srcdir}/fam-2.7.0-gcc43.patch || return 1
+
+ chmod 755 configure || return 1
+
+ autoheader || return 1
+ aclocal || return 1
+ automake -a -c || return 1
+ autoconf || return 1
+ libtoolize --copy --force || return 1
+
+ ./configure --prefix=/usr --sysconfdir=/etc/fam
+ make || return 1
+ make DESTDIR=${pkgdir} install
+ install -D -m755 ../fam ${pkgdir}/etc/rc.d/fam
+}
diff --git a/abs/core-testing/fam/fam b/abs/core-testing/fam/fam
new file mode 100755
index 0000000..3acceff
--- /dev/null
+++ b/abs/core-testing/fam/fam
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/famd`
+case "$1" in
+ start)
+ #Check for running portmap, start when not running
+ ck_daemon portmap && /etc/rc.d/portmap start
+ stat_busy "Starting File Alteration Monitor"
+ if [ ! -f /var/run/daemons/portmap ]; then
+ stat_fail
+ echo "ERROR: PORTMAP is not running"
+ exit 1
+ fi
+ if [ -z "$PID" ]; then
+ /usr/sbin/famd -T 0 -c /etc/fam/fam.conf
+ fi
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon fam
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping File Alteration Monitor"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon fam
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/abs/core-testing/fam/fam-2.7.0-dnotify.patch b/abs/core-testing/fam/fam-2.7.0-dnotify.patch
new file mode 100644
index 0000000..1d8910e
--- /dev/null
+++ b/abs/core-testing/fam/fam-2.7.0-dnotify.patch
@@ -0,0 +1,975 @@
+--- fam-2.7.0/src/DNotify.c++ 2004-01-30 00:00:00.000000000 +0100
++++ fam-2.7.0.dnotify/src/DNotify.c++ 2004-01-30 00:00:00.000000000 +0100
+@@ -0,0 +1,582 @@
++// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved.
++// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved.
++//
++// This program is free software; you can redistribute it and/or modify it
++// under the terms of version 2 of the GNU General Public License as
++// published by the Free Software Foundation.
++//
++// This program is distributed in the hope that it would be useful, but
++// WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any
++// license provided herein, whether implied or otherwise, is limited to
++// this program in accordance with the express provisions of the GNU
++// General Public License. Patent licenses, if any, provided herein do not
++// apply to combinations of this program with other product or programs, or
++// any other product whatsoever. This program is distributed without any
++// warranty that the program is delivered free of the rightful claim of any
++// third person by way of infringement or the like. See the GNU General
++// Public License for more details.
++//
++// You should have received a copy of the GNU General Public License along
++// with this program; if not, write the Free Software Foundation, Inc., 59
++// Temple Place - Suite 330, Boston MA 02111-1307, USA.
++
++#define _GNU_SOURCE
++#include <fcntl.h>
++
++#include <string.h>
++#include <signal.h>
++#include <stdio.h>
++#include <unistd.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <libgen.h>
++
++#include "DNotify.h"
++
++#include "Interest.h"
++#include "Log.h"
++#include "Scheduler.h"
++#include <memory>
++
++
++int DNotify::pipe_write_fd = -2;
++int DNotify::pipe_read_fd = -2;
++volatile sig_atomic_t DNotify::queue_overflowed = 0;
++volatile sig_atomic_t DNotify::queue_changed = 0;
++int DNotify::change_queue[QUEUESIZE];
++volatile int DNotify::queue_head = 0; // Only modified by read handler
++volatile int DNotify::queue_tail = 0; // Only modified by signal handler
++DNotify::EventHandler DNotify::ehandler;
++
++DNotify::DirWatch *DNotify::dir_hash[DIR_HASHSIZE];
++DNotify::FileWatch *DNotify::file_hash[FILE_HASHSIZE];
++
++struct DNotify::FileWatch
++{
++ DirWatch *dir_watch;
++ dev_t file_dev;
++ ino_t file_ino;
++ FileWatch *next; // The DirWatch.watches list
++ FileWatch *hash_link;
++};
++
++struct DNotify::DirWatch
++{
++ int fd;
++ dev_t dir_dev;
++ ino_t dir_ino;
++
++ DirWatch *hash_link;
++ FileWatch *watches;
++};
++
++struct DNotify::ChangeEventData
++{
++ dev_t file_dev;
++ ino_t file_ino;
++};
++
++DNotify::DNotify(EventHandler h)
++{
++ assert(ehandler == NULL);
++ ehandler = h;
++}
++
++DNotify::~DNotify()
++{
++ if (pipe_read_fd >= 0)
++ {
++ // Tell the scheduler.
++
++ (void) Scheduler::remove_read_handler(pipe_read_fd);
++
++ // Close the pipe.
++
++ if (close(pipe_read_fd) < 0)
++ Log::perror("can't pipe read end");
++ else
++ Log::debug("closed pipe read end");
++
++ if (close(pipe_write_fd) < 0)
++ Log::perror("can't pipe write end");
++ else
++ Log::debug("closed pipe write end");
++ pipe_read_fd = -1;
++ }
++ ehandler = NULL;
++}
++
++void
++DNotify::overflow_signal_handler(int sig, siginfo_t *si, void *data)
++{
++ char c = 'x';
++
++ {
++ char *str = "*************** overflow sigqueue ***********************\n";
++ write (STDERR_FILENO, str, strlen(str));
++ }
++
++ if (!queue_overflowed)
++ {
++ queue_overflowed = 1;
++ // Trigger the read handler
++ write(pipe_write_fd, &c, 1);
++ }
++}
++
++void
++DNotify::signal_handler(int sig, siginfo_t *si, void *data)
++{
++ int left;
++ char c = 'x';
++
++ if (queue_head <= queue_tail)
++ left = (QUEUESIZE + queue_head) - queue_tail;
++ else
++ left = queue_head - queue_tail;
++
++ // Must leave at least one item unused to see difference
++ // Betweeen empty and full
++ if (left <= 1)
++ {
++ queue_overflowed = 1;
++ {
++ char *str = "*************** overflow famqueue ****************\n";
++ write (STDERR_FILENO, str, strlen(str));
++ }
++ }
++ else
++ {
++ change_queue[queue_tail] = si->si_fd;
++ queue_tail = (queue_tail + 1) % QUEUESIZE;
++ }
++
++ if (!queue_changed)
++ {
++ queue_changed = 1;
++ // Trigger the read handler
++ write(pipe_write_fd, &c, 1);
++ }
++}
++
++bool
++DNotify::is_active()
++{
++ if (pipe_read_fd == -2)
++ {
++ int filedes[2];
++ int res;
++
++ res = pipe (filedes);
++ if (res >= 0)
++ { Log::debug("opened pipe");
++ pipe_read_fd = filedes[0];
++ pipe_write_fd = filedes[1];
++
++ // Setup signal handler:
++ struct sigaction act;
++
++ act.sa_sigaction = signal_handler;
++ sigemptyset(&act.sa_mask);
++ act.sa_flags = SA_SIGINFO;
++ sigaction(SIGRTMIN, &act, NULL);
++
++ // When the RT queue overflows we get a SIGIO
++ act.sa_sigaction = overflow_signal_handler;
++ sigemptyset(&act.sa_mask);
++ sigaction(SIGIO, &act, NULL);
++
++ (void) Scheduler::install_read_handler(pipe_read_fd, read_handler, NULL);
++ }
++ }
++ return pipe_read_fd >= 0;
++}
++
++DNotify::DirWatch *
++DNotify::lookup_dirwatch (int fd)
++{
++ DirWatch **p;
++ DirWatch *w;
++
++ p = dir_hashchain (fd);
++
++ while (*p)
++ {
++ w = *p;
++
++ if (w->fd == fd)
++ return w;
++
++ p = &w->hash_link;
++ }
++
++ return *p;
++}
++
++// This colud be made faster by using another hash table.
++// But it's not that bad, since it is only used by express/revoke
++DNotify::DirWatch *
++DNotify::lookup_dirwatch (dev_t dir_dev, ino_t dir_ino)
++{
++ DirWatch *p;
++ int i;
++
++ for (i=0;i<DIR_HASHSIZE;i++)
++ {
++ p = dir_hash[i];
++
++ while (p)
++ {
++ if (p->dir_dev == dir_dev && p->dir_ino == dir_ino)
++ return p;
++
++ p = p->hash_link;
++ }
++ }
++
++ return NULL;
++}
++
++DNotify::FileWatch *
++DNotify::lookup_filewatch (dev_t dev, ino_t ino)
++{
++ FileWatch **p;
++ FileWatch *w;
++
++ p = file_hashchain (dev, ino);
++
++ while (*p)
++ {
++ w = *p;
++
++ if (w->file_dev == dev && w->file_ino == ino)
++ return w;
++
++ p = &w->hash_link;
++ }
++
++ return *p;
++}
++
++// Make sure w is not already in the hash table before calling
++// this function.
++void
++DNotify::hash_dirwatch(DirWatch *w)
++{
++ DirWatch **p;
++ p = dir_hashchain (w->fd);
++ w->hash_link = *p;
++ *p = w;
++}
++
++// Make sure w is not already in the hash table before calling
++// this function.
++void
++DNotify::hash_filewatch(FileWatch *w)
++{
++ FileWatch **p;
++ p = file_hashchain (w->file_dev, w->file_ino);
++ w->hash_link = *p;
++ *p = w;
++}
++
++void
++DNotify::unhash_dirwatch(DirWatch *w)
++{
++ DirWatch **p;
++
++ p = dir_hashchain (w->fd);
++
++ while (*p)
++ {
++ if (*p == w)
++ {
++ *p = w->hash_link;
++ break;
++ }
++ p = &(*p)->hash_link;
++ }
++ w->hash_link = NULL;
++}
++
++void
++DNotify::unhash_filewatch(FileWatch *w)
++{
++ FileWatch **p;
++
++ p = file_hashchain (w->file_dev, w->file_ino);
++
++ while (*p)
++ {
++ if (*p == w)
++ {
++ *p = w->hash_link;
++ break;
++ }
++ p = &(*p)->hash_link;
++ }
++ w->hash_link = NULL;
++}
++
++DNotify::Status
++DNotify::watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino)
++{
++ struct stat stat;
++ dev_t dir_dev;
++ ino_t dir_ino;
++ DirWatch *dwatch;
++ FileWatch *fw;
++
++ if (lstat (notify_dir, &stat) == -1)
++ return BAD;
++
++ dwatch = lookup_dirwatch(stat.st_dev, stat.st_ino);
++ if (!dwatch)
++ {
++ Log::debug ("New DirWatch for %s (%x %x)\n",
++ notify_dir, (int)stat.st_dev, (int)stat.st_ino);
++ dwatch = new DirWatch;
++ dwatch->watches = NULL;
++ dwatch->hash_link = NULL;
++ dwatch->dir_dev = stat.st_dev;
++ dwatch->dir_ino = stat.st_ino;
++
++ dwatch->fd = open(notify_dir, O_RDONLY);
++ fcntl (dwatch->fd, F_SETSIG, SIGRTMIN);
++ if (fcntl (dwatch->fd, F_NOTIFY,
++ (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB)
++ | DN_MULTISHOT) == -1) {
++ return BAD;
++ }
++ hash_dirwatch (dwatch);
++ }
++
++ fw = lookup_filewatch (file_dev, file_ino);
++ if (fw && fw->dir_watch == dwatch)
++ return OK;
++
++ // No old FileWatch, need to add one:
++ Log::debug("New FileWatch for %x %x\n", (int)file_dev, (int)file_ino);
++ fw = new FileWatch;
++ fw->next = dwatch->watches;
++ dwatch->watches = fw;
++ fw->file_dev = file_dev;
++ fw->file_ino = file_ino;
++ fw->dir_watch = dwatch;
++ hash_filewatch(fw);
++ return OK;
++}
++
++char *
++dirname_dup (const char *name)
++{
++ char *copy = strdup(name);
++ char *res = dirname(copy);
++ res = strdup(res);
++ free (copy);
++ return res;
++}
++
++DNotify::Status
++DNotify::express(const char *name, struct stat *status)
++{
++ struct stat stat;
++ char *notify_dir;
++ int res;
++ Status s;
++ dev_t dev;
++ ino_t ino;
++
++ Log::debug("express() name: %s\n", name);
++
++ if (!is_active())
++ return BAD;
++
++ if (::lstat (name, &stat) == -1)
++ return BAD;
++
++ dev = stat.st_dev;
++ ino = stat.st_ino;
++
++ if ((stat.st_mode & S_IFMT) != S_IFDIR)
++ notify_dir = dirname_dup (name);
++ else
++ notify_dir = (char *)name;
++
++ s = watch_dir (notify_dir, dev, ino);
++ if (notify_dir != name)
++ free (notify_dir);
++ if (s)
++ return s;
++
++ // Check for a race condition; if someone removed or changed the
++ // file at the same time that we are expressing interest in it,
++ // revoke the interest so we don't get notifications about changes
++ // to a recycled inode that we don't otherwise care about.
++ //
++ struct stat st;
++ if (status == NULL) {
++ status = &st;
++ }
++ if (::lstat(name, status) == -1) {
++ Log::perror("stat on \"%s\" failed", name);
++ revoke(name, stat.st_dev, stat.st_ino);
++ return BAD;
++ }
++ if (status->st_dev != stat.st_dev
++ || status->st_ino != stat.st_ino) {
++ Log::error("File \"%s\" changed between express and stat",
++ name);
++ revoke(name, stat.st_dev, stat.st_ino);
++ return BAD;
++ }
++
++ Log::debug("told dnotify to monitor \"%s\" = dev %d/%d, ino %d", name,
++ major(status->st_dev), minor(status->st_dev),
++ status->st_ino);
++ return OK;
++}
++
++DNotify::Status
++DNotify::revoke(const char *name, dev_t dev, ino_t ino)
++{
++ FileWatch *fwatch;
++ DirWatch *dwatch;
++
++ Log::debug("revoke() name: %s, dev: %x, ino: %x\n", name, dev, ino);
++
++ if (!is_active())
++ return BAD;
++
++ // Lookup FileWatch by dev:ino, and its DirWatch.
++ fwatch = lookup_filewatch (dev, ino);
++ if (fwatch == NULL)
++ return BAD;
++
++ dwatch = fwatch->dir_watch;
++
++ // delete FileWatch, if last FileWatch: close fd, delete DirWatch
++ Log::debug ("Destroying FileWatch for (%x %x)\n",
++ (int)fwatch->file_dev, (int)fwatch->file_ino);
++ FileWatch **p;
++ for (p=&dwatch->watches; *p; p=&(*p)->next)
++ {
++ if (*p == fwatch)
++ {
++ *p = (*p)->next;
++ break;
++ }
++ }
++ unhash_filewatch(fwatch);
++ delete fwatch;
++ if (dwatch->watches == NULL)
++ {
++ Log::debug ("Destroying DirWatch for (%x %x)\n",
++ (int)dwatch->dir_dev, (int)dwatch->dir_ino);
++ close(dwatch->fd);
++ unhash_dirwatch(dwatch);
++ delete dwatch;
++ }
++
++ return OK;
++}
++
++
++void
++DNotify::all_watches_changed(void)
++{
++ int i;
++ FileWatch *fw;
++
++ for (i=0; i<FILE_HASHSIZE; i++)
++ {
++ fw = file_hash[i];
++ while (fw)
++ {
++ (*ehandler)(fw->file_dev, fw->file_ino, CHANGE);
++
++ fw = fw->hash_link;
++ }
++ }
++}
++
++
++void
++DNotify::read_handler(int fd, void *)
++{
++ static char readbuf[5000];
++ DirWatch *dw;
++ FileWatch *fw;
++ int snap_queue_tail;
++ int last_fd;
++
++ int rc = read(fd, readbuf, sizeof readbuf);
++ queue_changed = 0;
++ if (rc < 0)
++ Log::perror("pipe read");
++ else if (queue_overflowed)
++ {
++ // There is a *slight* race condition here. Between reading
++ // the queue_overflow flag and resetting it. But it doesn't
++ // matter, since I'm gonna handle the overflow after reseting
++ // anyway.
++ queue_overflowed = false;
++
++ // We're soon gonna check all watches anyway, so
++ // get rid of the current queue
++ queue_head = queue_tail;
++
++ all_watches_changed ();
++ }
++ else
++ {
++ // Don't read events that happen later than
++ // the initial read. (Otherwise skipping fd's
++ // might miss some changes).
++ snap_queue_tail = queue_tail;
++ last_fd = -1;
++ while (queue_head != snap_queue_tail)
++ {
++ fd = change_queue[queue_head];
++ queue_head = (queue_head + 1) % QUEUESIZE;
++
++ // Skip multiple changes to the same fd
++ if (fd != last_fd)
++ {
++ dw = lookup_dirwatch (fd);
++ if (dw)
++ {
++ int n_watches, i;
++ ChangeEventData *data;
++
++ Log::debug("dnotify said dev %d/%d, ino %ld changed",
++ major(dw->dir_dev), minor(dw->dir_dev), dw->dir_ino);
++
++ n_watches = 0;
++ for (fw=dw->watches; fw; fw=fw->next)
++ n_watches++;
++
++ data = new ChangeEventData[n_watches];
++
++ i = 0;
++ for (fw=dw->watches; fw; fw=fw->next)
++ {
++ data[i].file_dev = fw->file_dev;
++ data[i].file_ino = fw->file_ino;
++ i++;
++ }
++
++ for (i = 0; i < n_watches; i++)
++ {
++ (*ehandler)(data[i].file_dev, data[i].file_ino, CHANGE);
++ }
++
++ delete[] data;
++ }
++ }
++ last_fd = fd;
++ }
++ }
++}
++
+--- fam-2.7.0/src/DNotify.h 2004-01-30 00:00:00.000000000 +0100
++++ fam-2.7.0.dnotify/src/DNotify.h 2004-01-30 00:00:00.000000000 +0100
+@@ -0,0 +1,98 @@
++// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved.
++// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved.
++//
++// This program is free software; you can redistribute it and/or modify it
++// under the terms of version 2 of the GNU General Public License as
++// published by the Free Software Foundation.
++//
++// This program is distributed in the hope that it would be useful, but
++// WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any
++// license provided herein, whether implied or otherwise, is limited to
++// this program in accordance with the express provisions of the GNU
++// General Public License. Patent licenses, if any, provided herein do not
++// apply to combinations of this program with other product or programs, or
++// any other product whatsoever. This program is distributed without any
++// warranty that the program is delivered free of the rightful claim of any
++// third person by way of infringement or the like. See the GNU General
++// Public License for more details.
++//
++// You should have received a copy of the GNU General Public License along
++// with this program; if not, write the Free Software Foundation, Inc., 59
++// Temple Place - Suite 330, Boston MA 02111-1307, USA.
++
++#ifndef DNotify_included
++#define DNotify_included
++
++#include "config.h"
++#include "Monitor.h"
++#include <signal.h>
++
++// DNotify is an object encapsulating the dnotify linux fcntl.
++// It "emulates" the IMon interface.
++// There can only be one instantiation of the DNotify object.
++//
++// The user of this object uses express() and revoke() to
++// express/revoke interest in a file. There is also
++// a callback, the EventHandler. When an dnotify event comes in,
++// the EventHandler is called.
++//
++// The user of the DNotify object is the Interest class.
++
++class DNotify : public Monitor {
++public:
++ DNotify(EventHandler h);
++ ~DNotify();
++
++ static bool is_active();
++
++ virtual Status express(const char *name, struct stat *stat_return);
++ virtual Status revoke(const char *name, dev_t dev, ino_t ino);
++
++private:
++ struct FileWatch;
++ struct DirWatch;
++ struct ChangeEventData;
++
++ // Class Variables
++ enum { QUEUESIZE = 1024 };
++ static int pipe_write_fd;
++ static int pipe_read_fd;
++ static int change_queue[QUEUESIZE];
++ static volatile sig_atomic_t queue_overflowed;
++ static volatile sig_atomic_t queue_changed;
++ static volatile int queue_head; // Only modified by read handler
++ static volatile int queue_tail; // Only modified by signal handler
++ static EventHandler ehandler;
++ static void overflow_signal_handler(int sig, siginfo_t *si, void *data);
++ static void signal_handler(int sig, siginfo_t *si, void *data);
++ static void read_handler(int fd, void *closure);
++
++ enum { DIR_HASHSIZE = 367 };
++ static DirWatch *dir_hash[DIR_HASHSIZE];
++ enum { FILE_HASHSIZE = 823 };
++ static FileWatch *file_hash[FILE_HASHSIZE];
++
++ static DirWatch **dir_hashchain(int fd)
++ { return &dir_hash[(unsigned) (fd) % DIR_HASHSIZE]; }
++ static FileWatch **file_hashchain(dev_t d, ino_t i)
++ { return &file_hash[(unsigned) (d+i) % FILE_HASHSIZE]; }
++
++ static DirWatch *lookup_dirwatch (int fd);
++ static DirWatch *lookup_dirwatch (dev_t dir_dev, ino_t dir_ino);
++ static FileWatch *lookup_filewatch (dev_t file_dev, ino_t file_ino);
++ static void hash_dirwatch(DirWatch *w);
++ static void hash_filewatch(FileWatch *w);
++ static void unhash_dirwatch(DirWatch *w);
++ static void unhash_filewatch(FileWatch *w);
++ static Status watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino);
++
++ static void all_watches_changed(void);
++
++ DNotify(const DNotify&); // Do not copy
++ DNotify & operator = (const DNotify&); // or assign.
++};
++
++#endif /* !IMon_included */
++
++
+--- fam-2.7.0/src/Interest.c++ 2004-01-30 00:00:00.000000000 +0100
++++ fam-2.7.0.dnotify/src/Interest.c++ 2004-01-30 00:00:00.000000000 +0100
+@@ -42,12 +42,21 @@
+ #include "Event.h"
+ #include "FileSystem.h"
+ #include "IMon.h"
++#include "DNotify.h"
+ #include "Log.h"
+ #include "Pollster.h"
+ #include "timeval.h"
+
+ Interest *Interest::hashtable[];
+-IMon Interest::imon(imon_handler);
++
++#ifdef USE_DNOTIFY
++static DNotify dnotify(Interest::monitor_handler);
++Monitor * Interest::monitor = &dnotify;
++#else
++static IMon imon(Interest::monitor_handler);
++Monitor * Interest::monitor = &imon;
++#endif
++
+ bool Interest::xtab_verification = true;
+
+ Interest::Interest(const char *name, FileSystem *fs, in_addr host, ExportVerification ev)
+@@ -60,10 +69,10 @@
+ mypath_exported_to_host(ev == NO_VERIFY_EXPORTED)
+ {
+ memset(&old_stat, 0, sizeof(old_stat));
+- IMon::Status s = IMon::BAD;
+
+- s = imon.express(name, &old_stat);
+- if (s != IMon::OK)
++ Monitor::Status s = Monitor::BAD;
++ s = monitor->express(name, &old_stat);
++ if (s != Monitor::OK)
+ { int rc = lstat(name, &old_stat);
+ if (rc < 0)
+ { Log::info("can't lstat %s", name);
+@@ -100,7 +109,7 @@
+ }
+ #endif
+
+- if (exported_to_host()) fs->ll_monitor(this, s == IMon::OK);
++ if (exported_to_host()) fs->ll_monitor(this, s == Monitor::OK);
+ }
+
+ Interest::~Interest()
+@@ -128,7 +137,7 @@
+ pp = &p->hashlink; // move to next element
+ }
+ if (!found_same)
+- (void) imon.revoke(name(), dev, ino);
++ (void) monitor->revoke(name(), dev, ino);
+ }
+ }
+
+@@ -147,7 +156,7 @@
+
+ // Express interest.
+ IMon::Status s = IMon::BAD;
+- s = imon.express(name(), NULL);
++ s = monitor->express(name(), NULL);
+ if (s != IMon::OK) {
+ return true;
+ }
+@@ -248,23 +257,23 @@
+ }
+
+ void
+-Interest::imon_handler(dev_t device, ino_t inumber, int event)
++Interest::monitor_handler(dev_t device, ino_t inumber, int event)
+ {
+ assert(device || inumber);
+
+ for (Interest *p = *hashchain(device, inumber), *next = p; p; p = next)
+ { next = p->hashlink;
+ if (p->ino == inumber && p->dev == device)
+- { if (event == IMon::EXEC)
++ { if (event == Monitor::EXEC)
+ { p->cur_exec_state = EXECUTING;
+ (void) p->report_exec_state();
+ }
+- else if (event == IMon::EXIT)
++ else if (event == Monitor::EXIT)
+ { p->cur_exec_state = NOT_EXECUTING;
+ (void) p->report_exec_state();
+ }
+ else
+- { assert(event == IMon::CHANGE);
++ { assert(event == Monitor::CHANGE);
+ p->scan();
+ }
+ }
+--- fam-2.7.0/config.h.in 2003-01-20 01:40:15.000000000 +0100
++++ fam-2.7.0.dnotify/config.h.in 2004-01-30 13:50:33.000000000 +0100
+@@ -180,3 +180,6 @@
+
+ /* Define to `int' if <sys/types.h> doesn't define. */
+ #undef uid_t
++
++/* Define to 1 if you have F_NOTIFY fcntl */
++#undef USE_DNOTIFY
+--- fam-2.7.0/configure.ac 2003-11-26 20:47:59.000000000 +0100
++++ fam-2.7.0.dnotify/configure.ac 2004-01-30 13:50:33.000000000 +0100
+@@ -34,7 +34,26 @@
+ AC_HEADER_DIRENT
+ AC_CHECK_HEADERS([fcntl.h limits.h linux/imon.h netinet/in.h rpc/rpc.h rpcsvc/mount.h stddef.h stdlib.h string.h syslog.h sys/imon.h sys/param.h sys/select.h sys/statvfs.h sys/syssgi.h sys/time.h sys/types.h sys/un.h unistd.h])
+
+-if test "$have_sys_imon_h"; then
++# Test for the linux dnotify fcntl
++AC_MSG_CHECKING([for dnotify fcntl support])
++AC_TRY_COMPILE([
++#define _GNU_SOURCE
++#include <fcntl.h>
++#include <unistd.h>
++],
++[ int fd = 1;
++ fcntl (fd, F_NOTIFY, (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB)
++ |DN_MULTISHOT);
++], have_dnotify=yes, have_dnotify=no)
++
++use_dnotify=false
++AC_MSG_RESULT($have_dnotify)
++
++if test "$have_dnotify"; then
++ MONITOR_FUNCS=IMonNone
++ AC_DEFINE([USE_DNOTIFY], [], [Use dnotify])
++ use_dnotify=true
++elif test "$have_sys_imon_h"; then
+ MONITOR_FUNCS=IMonIRIX
+ elif test "$have_linux_imon_h"; then
+ MONITOR_FUNCS=IMonLinux
+@@ -42,6 +62,7 @@
+ MONITOR_FUNCS=IMonNone
+ fi
+ AC_SUBST(MONITOR_FUNCS)
++AM_CONDITIONAL(USE_DNOTIFY, $use_dnotify)
+
+ # Checks for typedefs, structures, and compiler characteristics.
+ AC_HEADER_STDBOOL
+--- fam-2.7.0/src/IMon.h 2004-01-30 00:00:00.000000000 +0200
++++ fam-2.7.0.dnotify/src/IMon.h 2004-01-30 00:00:00.000000000 +0200
+@@ -24,10 +24,7 @@
+ #define IMon_included
+
+ #include "config.h"
+-#include <sys/stat.h>
+-#include <sys/types.h>
+-
+-#include "Boolean.h"
++#include "Monitor.h"
+
+ struct stat;
+
+@@ -41,25 +38,18 @@
+ //
+ // The user of the IMon object is the Interest class.
+
+-class IMon {
++class IMon : public Monitor {
+
+ public:
+-
+- enum Status { OK = 0, BAD = -1 };
+- enum Event { EXEC, EXIT, CHANGE };
+-
+- typedef void (*EventHandler)(dev_t, ino_t, int event);
+-
+ IMon(EventHandler h);
+ ~IMon();
+
+ static bool is_active();
+
+- Status express(const char *name, struct stat *stat_return);
+- Status revoke(const char *name, dev_t dev, ino_t ino);
++ virtual Status express(const char *name, struct stat *stat_return);
++ virtual Status revoke(const char *name, dev_t dev, ino_t ino);
+
+ private:
+-
+ // Class Variables
+
+ static int imonfd;
+--- fam-2.7.0/src/Interest.h 2004-01-30 00:00:00.000000000 +0200
++++ fam-2.7.0.dnotify/src/Interest.h 2004-01-30 00:00:00.000000000 +0200
+@@ -32,7 +32,7 @@
+
+ class Event;
+ class FileSystem;
+-class IMon;
++class Monitor;
+ struct stat;
+
+ // Interest -- abstract base class for filesystem entities of interest.
+@@ -74,7 +74,7 @@
+
+ // Public Class Method
+
+- static void imon_handler(dev_t, ino_t, int event);
++ static void monitor_handler(dev_t, ino_t, int event);
+
+ static void enable_xtab_verification(bool enable);
+
+@@ -121,7 +121,7 @@
+
+ // Class Variables
+
+- static IMon imon;
++ static Monitor *monitor;
+ static Interest *hashtable[HASHSIZE];
+ static bool xtab_verification;
+
+--- fam-2.7.0/src/Makefile.am 2003-01-19 13:00:17.000000000 +0100
++++ fam-2.7.0.dnotify/src/Makefile.am 2004-01-30 13:50:38.000000000 +0100
+@@ -71,7 +71,11 @@
+ main.c++ \
+ timeval.c++ \
+ timeval.h \
+- @MONITOR_FUNCS@.c++
++ Monitor.h \
++ DNotify.h \
++ DNotify.c++ \
++ @MONITOR_FUNCS@.c++
+
+-EXTRA_famd_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++
++EXTRA_famd_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ DNotify.c++ \
++ DNotify.h Monitor.h
+
+--- fam-2.7.0/src/Monitor.h 2004-01-30 00:00:00.000000000 +0200
++++ fam-2.7.0.dnotify/src/Monitor.h 2004-01-30 00:00:00.000000000 +0200
+@@ -0,0 +1,57 @@
++// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved.
++// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved.
++//
++// This program is free software; you can redistribute it and/or modify it
++// under the terms of version 2 of the GNU General Public License as
++// published by the Free Software Foundation.
++//
++// This program is distributed in the hope that it would be useful, but
++// WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any
++// license provided herein, whether implied or otherwise, is limited to
++// this program in accordance with the express provisions of the GNU
++// General Public License. Patent licenses, if any, provided herein do not
++// apply to combinations of this program with other product or programs, or
++// any other product whatsoever. This program is distributed without any
++// warranty that the program is delivered free of the rightful claim of any
++// third person by way of infringement or the like. See the GNU General
++// Public License for more details.
++//
++// You should have received a copy of the GNU General Public License along
++// with this program; if not, write the Free Software Foundation, Inc., 59
++// Temple Place - Suite 330, Boston MA 02111-1307, USA.
++
++#ifndef Monitor_included
++#define Monitor_included
++
++#include "config.h"
++#include <sys/stat.h>
++#include <sys/types.h>
++
++struct stat;
++
++// Monitor is an abstract baseclass for differend file monitoring
++// systems. The original system used was IMon, and the Montor API
++// is heavily influenced by that.
++// There can only be one instantiation of the Monitor object.
++//
++// The user of this object uses express() and revoke() to
++// express/revoke interest in a file to imon. There is also
++// a callback, the EventHandler. When an event comes in,
++// the EventHandler is called.
++//
++// The main implementers of the Monitor class is IMon and DNotify
++
++class Monitor {
++public:
++
++ enum Status { OK = 0, BAD = -1 };
++ enum Event { EXEC, EXIT, CHANGE };
++
++ typedef void (*EventHandler)(dev_t, ino_t, int event);
++
++ virtual Status express(const char *name, struct stat *stat_return) = 0;
++ virtual Status revoke(const char *name, dev_t dev, ino_t ino) = 0;
++};
++
++#endif /* !Monitor_included */
diff --git a/abs/core-testing/fam/fam-2.7.0-gcc43.patch b/abs/core-testing/fam/fam-2.7.0-gcc43.patch
new file mode 100644
index 0000000..a5ba7f0
--- /dev/null
+++ b/abs/core-testing/fam/fam-2.7.0-gcc43.patch
@@ -0,0 +1,46 @@
+diff -Naur fam-2.7.0-old/include/BTree.h fam-2.7.0/include/BTree.h
+--- fam-2.7.0-old/include/BTree.h 2003-01-20 14:22:30.000000000 +1000
++++ fam-2.7.0/include/BTree.h 2008-10-18 10:43:11.000000000 +1000
+@@ -23,6 +23,8 @@
+ #ifndef BTree_included
+ #define BTree_included
+
++#include <cstdlib>
++
+ #include "Boolean.h"
+
+ // This is an in-core B-Tree implementation.
+diff -Naur fam-2.7.0-old/src/DNotify.c++ fam-2.7.0/src/DNotify.c++
+--- fam-2.7.0-old/src/DNotify.c++ 2008-10-18 10:33:13.000000000 +1000
++++ fam-2.7.0/src/DNotify.c++ 2008-10-18 10:41:22.000000000 +1000
+@@ -31,6 +31,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <libgen.h>
++#include <cstdlib>
+
+ #include "DNotify.h"
+
+diff -Naur fam-2.7.0-old/src/IMon.c++ fam-2.7.0/src/IMon.c++
+--- fam-2.7.0-old/src/IMon.c++ 2003-01-19 00:18:12.000000000 +1000
++++ fam-2.7.0/src/IMon.c++ 2008-10-18 10:40:21.000000000 +1000
+@@ -40,7 +40,7 @@
+ #include "Interest.h"
+ #include "Log.h"
+ #include "Scheduler.h"
+-#include "alloc.h"
++#include <memory>
+
+ int IMon::imonfd = -2;
+ IMon::EventHandler IMon::ehandler = NULL;
+diff -Naur fam-2.7.0-old/src/Interest.h fam-2.7.0/src/Interest.h
+--- fam-2.7.0-old/src/Interest.h 2008-10-18 10:33:13.000000000 +1000
++++ fam-2.7.0/src/Interest.h 2008-10-18 10:40:44.000000000 +1000
+@@ -23,6 +23,7 @@
+ #ifndef Interest_included
+ #define Interest_included
+
++#include <cstdlib>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <sys/time.h>
diff --git a/abs/core-testing/fam/fam-2.7.0-largefiles.patch b/abs/core-testing/fam/fam-2.7.0-largefiles.patch
new file mode 100644
index 0000000..60de9a4
--- /dev/null
+++ b/abs/core-testing/fam/fam-2.7.0-largefiles.patch
@@ -0,0 +1,8 @@
+--- fam-2.7.0/common.am 2003-01-19 06:09:08.000000000 -0600
++++ fam-2.7.0.largefile/common.am 2005-01-12 19:08:06.462113110 -0600
+@@ -1,2 +1,5 @@
+-INCLUDES = @FAM_INC@ -DFAM_CONF=\"@FAM_CONF@\"
++INCLUDES = @FAM_INC@ -DFAM_CONF=\"@FAM_CONF@\" \
++ -D_FILE_OFFSET_BITS=64 \
++ -D_LARGEFILE64_SOURCE
++
diff --git a/abs/core-testing/fam/fam-2.7.0-noc++.patch b/abs/core-testing/fam/fam-2.7.0-noc++.patch
new file mode 100644
index 0000000..9188af0
--- /dev/null
+++ b/abs/core-testing/fam/fam-2.7.0-noc++.patch
@@ -0,0 +1,83 @@
+diff -ruN fam-2.7.0/lib/Client.c++ fam-2.7.0.noc++/lib/Client.c++
+--- fam-2.7.0/lib/Client.c++ 2003-01-18 14:18:12.000000000 +0000
++++ fam-2.7.0.noc++/lib/Client.c++ 2006-03-02 22:47:50.000000000 +0000
+@@ -34,8 +34,6 @@
+ #include <syslog.h>
+ #include <errno.h>
+
+-#include <iostream.h>
+-
+ #include "fam.h"
+ #include "Client.h"
+
+@@ -440,3 +438,29 @@
+ memcpy(l, p, sizeof(u_int32_t));
+ *l = ntohl(*l);
+ }
++
++/* Some C++ stuff needed when we not link to libstdc++ */
++void *operator new (size_t sz)
++{
++ void *ret = malloc (sz);
++ if (ret == NULL)
++ {
++ fputs ("libfam memory allocation failed\n", stderr);
++ }
++ return ret;
++}
++
++void *operator new[] (size_t sz)
++{
++ return ::operator new(sz);
++}
++
++void operator delete (void *ptr)
++{
++ free (ptr);
++}
++
++void operator delete[] (void *ptr)
++{
++ free (ptr);
++}
+diff -ruN fam-2.7.0/lib/Makefile.am fam-2.7.0.noc++/lib/Makefile.am
+--- fam-2.7.0/lib/Makefile.am 2003-01-19 01:55:10.000000000 +0000
++++ fam-2.7.0.noc++/lib/Makefile.am 2006-03-02 22:43:01.000000000 +0000
+@@ -7,8 +7,11 @@
+ Client.h \
+ fam.c++
+
+-libfam_la_LDFLAGS = -export-symbols fam.sym
+-libfam_la_LIBADD = -lstdc++
++libfam_la_LDFLAGS = -Wl,--version-script=fam.sym.version
++libfam_la_LIBADD =
++AM_CXXFLAGS = -fno-exceptions -fno-rtti
++
++CXXLD=--tag=CC $(CXX)
+
+ EXTRA_DIST = fam.sym
+
+diff -ruN fam-2.7.0/lib/fam.sym.version fam-2.7.0.noc++/lib/fam.sym.version
+--- fam-2.7.0/lib/fam.sym.version 1970-01-01 00:00:00.000000000 +0000
++++ fam-2.7.0.noc++/lib/fam.sym.version 2006-03-02 22:49:31.000000000 +0000
+@@ -0,0 +1,20 @@
++{
++ global:
++ FAMCancelMonitor;
++ FAMClose;
++ FAMDebugLevel;
++ FamErrlist;
++ FAMErrno;
++ FAMMonitorCollection;
++ FAMMonitorDirectory;
++ FAMMonitorDirectory2;
++ FAMMonitorFile;
++ FAMMonitorFile2;
++ FAMNextEvent;
++ FAMOpen;
++ FAMOpen2;
++ FAMPending;
++ FAMResumeMonitor;
++ FAMSuspendMonitor;
++ local: *;
++};
diff --git a/abs/core-testing/fam/include_fam_h.patch b/abs/core-testing/fam/include_fam_h.patch
new file mode 100644
index 0000000..4248957
--- /dev/null
+++ b/abs/core-testing/fam/include_fam_h.patch
@@ -0,0 +1,11 @@
+--- include/fam.h.orig 2005-05-25 09:26:38.000000000 +0000
++++ include/fam.h 2005-05-25 09:27:04.000000000 +0000
+@@ -41,7 +41,7 @@
+ *****************************************************************************/
+
+ /* For NAME_MAX - maximum # of chars in a filename */
+-#include "limits.h"
++#include <limits.h>
+
+
+
diff --git a/abs/core-testing/fftw/PKGBUILD b/abs/core-testing/fftw/PKGBUILD
new file mode 100644
index 0000000..1556108
--- /dev/null
+++ b/abs/core-testing/fftw/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 20304 2008-12-02 10:48:00Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=fftw
+pkgver=3.2
+pkgrel=1
+pkgdesc="A library for computing the discrete Fourier transform (DFT)"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.fftw.org/"
+depends=('glibc')
+options=(!libtool)
+source=(http://www.fftw.org/${pkgname}-${pkgver}.tar.gz)
+install=fftw.install
+
+# notes:
+# http://www.fftw.org/fftw2_doc/fftw_6.html#SEC69
+# http://www.fftw.org/faq/section2.html#singleprec
+# http://www.fftw.org/fftw3_doc/Precision.html#Precision
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # build & install double precision
+ ./configure F77=gfortran --prefix=/usr \
+ --enable-shared || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ make clean
+
+ # build & install long double precission
+ ./configure F77=gfortran --prefix=/usr \
+ --enable-long-double --enable-shared || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ make clean
+
+ # build + install single precision
+ ./configure F77=gfortran --prefix=/usr \
+ --enable-float --enable-shared || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+
+ # handle info files
+ rm -f $pkgdir/usr/share/info/dir
+ gzip $pkgdir/usr/share/info/*
+}
diff --git a/abs/core-testing/fftw/fftw.install b/abs/core-testing/fftw/fftw.install
new file mode 100644
index 0000000..a3748aa
--- /dev/null
+++ b/abs/core-testing/fftw/fftw.install
@@ -0,0 +1,22 @@
+info_dir=/usr/share/info
+info_files=(fftw3.info)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+
+
+
diff --git a/abs/core-testing/fluxbox/ChangeLog b/abs/core-testing/fluxbox/ChangeLog
new file mode 100644
index 0000000..f2f2e81
--- /dev/null
+++ b/abs/core-testing/fluxbox/ChangeLog
@@ -0,0 +1,10 @@
+2008-09-19 Eric Belanger <eric@archlinux.org>
+
+ * fluxbox 1.1.1-1
+ * Upstream update
+
+2008-09-05 Eric Belanger <eric@archlinux.org>
+
+ * fluxbox 1.1.0.1-1
+ * Upstream update
+ * Added ChangeLog
diff --git a/abs/core-testing/fluxbox/PKGBUILD b/abs/core-testing/fluxbox/PKGBUILD
index 6735ad0..6e1c9c0 100644
--- a/abs/core-testing/fluxbox/PKGBUILD
+++ b/abs/core-testing/fluxbox/PKGBUILD
@@ -1,9 +1,10 @@
-#add custom keys
-
+# $Id: PKGBUILD 12779 2008-09-20 06:42:07Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
pkgname=fluxbox
-pkgver=1.0.0
-pkgrel=5
+pkgver=1.1.1
+pkgrel=2
pkgdesc="A lightweight and highly-configurable window manager"
arch=('i686' 'x86_64')
url="http://www.fluxbox.org"
@@ -11,30 +12,22 @@ license=('MIT')
depends=('libxft' 'libxpm' 'libxinerama' 'libxrandr' 'gcc-libs' 'bash' 'imlib2')
makedepends=('pkgconfig')
options=('!makeflags')
-source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2 \
- $pkgname.desktop fluxbox-1.0.0-gcc43.patch keys)
-
-md5sums=('990e276ead0d04421dce4080f485caca' 'eeae9c88a2526ac0bd8afcd9ce97f9ed'\
- '9ddb3fcd5f080574a44f394282132b3c')
-sha1sums=('7985e35fbb170fda24b9e04610690cd04c7a8748'
- 'f3f83b8ce84d79c2f8670ef687e0dd89ab0552b8'
- '51de3957bacfc4848529ba7df80bddca59b1a20b')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2 \
+ fluxbox.desktop keys)
+md5sums=('fa9fa8fe9a44f86522de5754f8b285ca' 'eeae9c88a2526ac0bd8afcd9ce97f9ed' 'f5e10bf230728190830717ed9d17770c')
+sha1sums=('6d49deb6c4c7d73f7567e1cf7d2575c7edc4825f' 'f3f83b8ce84d79c2f8670ef687e0dd89ab0552b8')
build() {
- cd $startdir/src/$pkgname-${pkgver}
- patch -p1 < ../fluxbox-1.0.0-gcc43.patch || return 1
+ cd ${srcdir}/${pkgname}-${pkgver}
./configure --prefix=/usr \
- --enable-kde --enable-gnome \
- --enable-xft --enable-xinerama \
- --enable-imlib2 --enable-nls
+ --enable-kde --enable-gnome \
+ --enable-xft --enable-xinerama \
+ --enable-imlib2 --enable-nls || return 1
make || return 1
- make DESTDIR=$startdir/pkg install
+ make DESTDIR=${pkgdir} install || return 1
# this is a fix to allow fluxbox to shutdown, but this can be changed by the user :-(
- sed -i 's|^.*slit\.autoHide.*$|session.screen0.slit.autoHide: True|' \
- $startdir/pkg/usr/share/fluxbox/init
- install -D -m644 ../$pkgname.desktop \
- $startdir/pkg/etc/X11/sessions/$pkgname.desktop
- install -D -m644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/COPYING
- install -D -m655 $startdir/src/keys $startdir/pkg/usr/share/fluxbox/keys
-
+ sed -i 's|^.*slit\.autoHide.*$|session.screen0.slit.autoHide: True|' ${pkgdir}/usr/share/fluxbox/init || return 1
+ install -D -m644 ../fluxbox.desktop ${pkgdir}/etc/X11/sessions/fluxbox.desktop || return 1
+ install -D -m644 ../keys ${pkgdir}/usr/share/fluxbox/keys || return 1
+ install -D -m644 COPYING ${pkgdir}/usr/share/licenses/$pkgname/COPYING || return 1
}
diff --git a/abs/core-testing/fluxbox/keys b/abs/core-testing/fluxbox/keys
index 06e5f21..b412cbd 100644
--- a/abs/core-testing/fluxbox/keys
+++ b/abs/core-testing/fluxbox/keys
@@ -20,9 +20,9 @@ Mod1 F12 :Workspace 12
Mod1 x :ExecCommand xterm -fn *18*
Mod1 s :ExecCommand mythtv-setup
Mod1 m :ExecCommand mythfrontend
-Mod1 1 :ExecCommand sudo /etc/rc.d/mythtv-backend start
-Mod1 2 :ExecCommand sudo /etc/rc.d/mythtv-backend stop
-Mod1 3 :ExecCommand sudo /etc/rc.d/mythtv-backend restart
+Mod1 1 :ExecCommand sudo sv start mythbackend
+Mod1 2 :ExecCommand sudo sv stop mythbackend
+Mod1 3 :ExecCommand sudo sv restart mythbackend
Mod1 h :ExecCommand MythVantage -h
Mod1 Control u :ExecCommand killall -9 unclutter
diff --git a/abs/core-testing/ghostscript/PKGBUILD b/abs/core-testing/ghostscript/PKGBUILD
index 2cf5416..8edc722 100644
--- a/abs/core-testing/ghostscript/PKGBUILD
+++ b/abs/core-testing/ghostscript/PKGBUILD
@@ -1,19 +1,18 @@
-# $Id: PKGBUILD 7626 2008-08-03 15:52:01Z jgc $
+# $Id: PKGBUILD 20527 2008-12-05 14:17:31Z allan $
# Maintainer: AndyRTR <andyrtr@archlinux.org>
pkgname=ghostscript
pkgver=8.63
-pkgrel=3
+pkgrel=4
pkgdesc="An interpreter for the PostScript language"
arch=(i686 x86_64)
license=('GPL' 'custom')
depends=('libxext' 'libxt' 'libcups>=1.3.8-2' 'fontconfig>=2.6.0' 'gtk2>=2.12.11' 'gnutls>=2.4.1')
makedepends=('automake' 'autoconf')
+optdepends=('texlive-core: dvipdf')
replaces=('ghostscript-lrpng')
provides=('ghostscript-lprng')
url="http://www.cs.wisc.edu/~ghost/"
-#url="http://www.cups.org/espgs/"
-install=ghostscript.install
source=(ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/gs863/ghostscript-${pkgver}.tar.bz2
ghostscript-fPIC.patch)
options=('!libtool' '!makeflags')
diff --git a/abs/core-testing/gnutls/PKGBUILD b/abs/core-testing/gnutls/PKGBUILD
index ec50f98..7e3981c 100644
--- a/abs/core-testing/gnutls/PKGBUILD
+++ b/abs/core-testing/gnutls/PKGBUILD
@@ -1,24 +1,26 @@
-# $Id: PKGBUILD 8715 2008-08-16 04:25:59Z eric $
+# $Id: PKGBUILD 22309 2008-12-25 19:07:27Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Notice:
# When building a new major version, build, install, build again.
#
pkgname=gnutls
-pkgver=2.4.1
+pkgver=2.6.3
pkgrel=1
pkgdesc="A library which provides a secure layer over a reliable transport layer"
arch=(i686 x86_64)
license=('GPL3' 'LGPL')
url="http://www.gnu.org/software/gnutls/"
+install=gnutls.install
options=('libtool')
-depends=('gcc-libs' 'libtasn1>=1.4' 'readline' 'zlib' 'libgcrypt>=1.4')
+depends=('gcc-libs>=4.3.2' 'libtasn1>=1.7' 'readline' 'zlib' 'libgcrypt>=1.4.3')
source=(ftp://ftp.gnutls.org/pub/gnutls/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('573db36cb3f8472b0293cfa1f52c607a')
+md5sums=('c6d2d1996b87b238ad6f73f92225d9a2')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr --with-zlib --disable-guile || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ rm -f "${pkgdir}/usr/share/info/dir"
}
diff --git a/abs/core-testing/gnutls/gnutls.install b/abs/core-testing/gnutls/gnutls.install
new file mode 100644
index 0000000..0cf66fa
--- /dev/null
+++ b/abs/core-testing/gnutls/gnutls.install
@@ -0,0 +1,18 @@
+infodir=/usr/share/info
+filelist=(gnutls.info gnutls.info-1 gnutls.info-2 gnutls.info-3)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/abs/core-testing/gsfonts/PKGBUILD b/abs/core-testing/gsfonts/PKGBUILD
index 5294731..01bb023 100644
--- a/abs/core-testing/gsfonts/PKGBUILD
+++ b/abs/core-testing/gsfonts/PKGBUILD
@@ -8,7 +8,7 @@ arch=(i686 x86_64)
depends=('xorg-font-utils' 'fontconfig')
install=xfonts.install
url="http://sourceforge.net/projects/ghostscript"
-source=(http://switch.dl.sourceforge.net/ghostscript/ghostscript-fonts-std-8.11.tar.gz)
+source=(http://superb-east.dl.sourceforge.net/sourceforge/gs-fonts/ghostscript-fonts-std-8.11.tar.gz)
md5sums=('6865682b095f8c4500c54b285ff05ef6')
build() {
diff --git a/abs/core-testing/gtk2/PKGBUILD b/abs/core-testing/gtk2/PKGBUILD
index d119d56..1966409 100644
--- a/abs/core-testing/gtk2/PKGBUILD
+++ b/abs/core-testing/gtk2/PKGBUILD
@@ -1,14 +1,14 @@
-# $Id: PKGBUILD 19648 2008-11-28 20:15:22Z jgc $
+# $Id: PKGBUILD 22045 2008-12-21 13:00:15Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=gtk2
-pkgver=2.14.5
+pkgver=2.14.6
pkgrel=1
pkgdesc="The GTK+ Toolkit (v2)"
arch=(i686 x86_64)
url="http://www.gtk.org/"
install=gtk2.install
-depends=('atk>=1.24.0' 'pango>=1.22.3' 'libxcursor' 'libxinerama' 'libxrandr>=1.2.1' 'libxi' 'libcups>=1.3.9' 'libxcomposite' 'libxdamage' 'heimdal>=1.2' 'gnutls>=2.4.1')
+depends=('atk>=1.24.0' 'pango>=1.22.4' 'libxcursor' 'libxinerama' 'libxrandr>=1.2.1' 'libxi' 'libcups>=1.3.9' 'libxcomposite' 'libxdamage' 'heimdal>=1.2.1' 'gnutls>=2.4.2')
makedepends=('pkgconfig')
replaces=('gtkprint-cups' 'gail')
conflicts=('gtkprint-cups' 'gail')
@@ -17,21 +17,25 @@ options=('!libtool' '!docs')
backup=(etc/gtk-2.0/gtkrc)
license=('LGPL')
source=(http://ftp.gnome.org/pub/gnome/sources/gtk+/2.14/gtk+-${pkgver}.tar.bz2
- gtkclipboard-check.patch)
-md5sums=('1b1b5d7ab5a25e84682cb27ee4808a40'
- '4025d3c15d6c6f73a032f403ffd4ff1c')
+ gtkclipboard-check.patch
+ gtk2-emit-size-change.patch)
+md5sums=('69c2d2842203d7b627bc6ec34cb4a4f8'
+ '4025d3c15d6c6f73a032f403ffd4ff1c'
+ '942981cbba5057d9f02f4393e552f101')
build() {
- cd ${startdir}/src/gtk+-${pkgver}
+ cd "${srcdir}/gtk+-${pkgver}"
# Workaround patch for flash
- patch -Np1 -i ${startdir}/src/gtkclipboard-check.patch || return 1
+ patch -Np1 -i "${srcdir}/gtkclipboard-check.patch" || return 1
+ # gdk does not let xfwm know about screen size changes
+ patch -Np1 -i "${srcdir}/gtk2-emit-size-change.patch" || return 1
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var --with-xinput=yes \
--without-libjasper \
--with-included-loaders=png || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
- echo 'gtk-fallback-icon-theme = "gnome"' > ${startdir}/pkg/etc/gtk-2.0/gtkrc || return 1
+ echo 'gtk-fallback-icon-theme = "gnome"' > "${pkgdir}/etc/gtk-2.0/gtkrc" || return 1
}
diff --git a/abs/core-testing/gtk2/gtk2-emit-size-change.patch b/abs/core-testing/gtk2/gtk2-emit-size-change.patch
new file mode 100644
index 0000000..34053a8
--- /dev/null
+++ b/abs/core-testing/gtk2/gtk2-emit-size-change.patch
@@ -0,0 +1,26 @@
+diff -Naur gtk+-2.14.5-old/gdk/x11/gdkscreen-x11.c gtk+-2.14.5/gdk/x11/gdkscreen-x11.c
+--- gtk+-2.14.5-old/gdk/x11/gdkscreen-x11.c 2008-11-24 16:36:03.000000000 +1000
++++ gtk+-2.14.5/gdk/x11/gdkscreen-x11.c 2008-12-03 00:39:38.000000000 +1000
+@@ -894,11 +894,6 @@
+ _gdk_x11_screen_size_changed (GdkScreen *screen,
+ XEvent *event)
+ {
+- gint width, height;
+-
+- width = gdk_screen_get_width (screen);
+- height = gdk_screen_get_height (screen);
+-
+ #ifdef HAVE_RANDR
+ if (!XRRUpdateConfiguration (event))
+ return;
+@@ -915,10 +910,6 @@
+ return;
+ #endif
+
+- if (width == gdk_screen_get_width (screen) &&
+- height == gdk_screen_get_height (screen))
+- return;
+-
+ _gdk_x11_screen_process_monitors_change (screen);
+ g_signal_emit_by_name (screen, "size_changed");
+ }
diff --git a/abs/core-testing/hal-info/PKGBUILD b/abs/core-testing/hal-info/PKGBUILD
index 7f697c8..a7f8dd0 100644
--- a/abs/core-testing/hal-info/PKGBUILD
+++ b/abs/core-testing/hal-info/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 2153 2008-05-27 14:12:39Z jgc $
+# $Id: PKGBUILD 22303 2008-12-25 18:44:16Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=hal-info
-_date=20080508
-pkgver=0.20080508
+_date=20081219
+pkgver=0.${_date}
pkgrel=1
pkgdesc="Hardware Abstraction Layer information files"
arch=(i686 x86_64)
license=('GPL' 'custom')
url="http://www.freedesktop.org/wiki/Software/hal"
source=(http://hal.freedesktop.org/releases/hal-info-${_date}.tar.gz)
-md5sums=('6fc99d15d38945c17a291ea93e664664')
+md5sums=('be7d6d47fd18250a99a3267e712d8af7')
build() {
- cd ${startdir}/src/${pkgname}-${_date}
+ cd "${srcdir}/${pkgname}-${_date}"
./configure --prefix=/usr --sysconfdir=/etc || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
- install -m755 -d ${startdir}/pkg/usr/share/licenses/${pkgname}
- install -m644 COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
}
diff --git a/abs/core-testing/hal/PKGBUILD b/abs/core-testing/hal/PKGBUILD
index f1a3b3f..4bad72d 100644
--- a/abs/core-testing/hal/PKGBUILD
+++ b/abs/core-testing/hal/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 8861 2008-08-16 22:34:13Z eric $
+# $Id: PKGBUILD 12450 2008-09-14 10:49:05Z pierre $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Link Dupont <link@subpop.net>
pkgname=hal
pkgver=0.5.11
-pkgrel=1
+pkgrel=4
pkgdesc="Hardware Abstraction Layer"
arch=(i686 x86_64)
license=('GPL' 'custom')
@@ -18,10 +18,17 @@ source=(http://hal.freedesktop.org/releases/${pkgname}-${pkgver}.tar.bz2
hal-policy.patch
cryptsetup_location.patch
hal-0.5.9-hide-diagnostic.patch
- ntfs3g-valid-options.patch)
-md5sums=('5e8935ab61bcb14afd2d4548084aace0' '277e96ac130d7bfce0b30f0b80db8782'\
- '18dcdaa79952e2057c2e4745fbc8ad52' 'c688a3c6574699365926f4fef7441545'\
- '4d4b6801a1cedca22b8bdd9db73b16fb' '4242a2c78885e396f639d0cd5e33218c')
+ ntfs3g-valid-options.patch
+ fix-udev-compatibility.patch
+ ntfs-mount-fix.patch)
+md5sums=('5e8935ab61bcb14afd2d4548084aace0'
+ '277e96ac130d7bfce0b30f0b80db8782'
+ '18dcdaa79952e2057c2e4745fbc8ad52'
+ 'c688a3c6574699365926f4fef7441545'
+ '4d4b6801a1cedca22b8bdd9db73b16fb'
+ '4242a2c78885e396f639d0cd5e33218c'
+ '1a33d73fa422df2f05b7e3483836f778'
+ '96cf8835c30dc581c4fcf72b6ad7675e')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
@@ -29,6 +36,9 @@ build() {
patch -Np1 -i ${startdir}/src/cryptsetup_location.patch || return 1
patch -Np1 -i ${startdir}/src/hal-0.5.9-hide-diagnostic.patch || return 1
patch -Np0 -i ${startdir}/src/ntfs3g-valid-options.patch || return 1
+ # Fix compatibility with udev 126 and later
+ patch -Np1 -i ${startdir}/src/fix-udev-compatibility.patch || return 1
+ patch -p0 -i ${srcdir}/ntfs-mount-fix.patch || return 1
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
--libexecdir=/usr/lib/hal --enable-static=no \
diff --git a/abs/core-testing/hal/fix-udev-compatibility.patch b/abs/core-testing/hal/fix-udev-compatibility.patch
new file mode 100644
index 0000000..2cfa3ad
--- /dev/null
+++ b/abs/core-testing/hal/fix-udev-compatibility.patch
@@ -0,0 +1,31 @@
+diff -Nur hal-0.5.11.orig/hald/linux/blockdev.c hal-0.5.11/hald/linux/blockdev.c
+--- hal-0.5.11.orig/hald/linux/blockdev.c 2008-05-08 01:23:41.000000000 +0200
++++ hal-0.5.11/hald/linux/blockdev.c 2008-09-12 19:38:36.000000000 +0200
+@@ -1750,11 +1750,11 @@
+ char *ret;
+ char *u_stdout;
+ int u_exit_status;
+- const char *argv[] = {"/usr/bin/udevinfo", "--root", "--query", "name", "--path", NULL, NULL};
++ const char *argv[] = {"/sbin/udevadm", "info", "--root", "--query", "name", "--path", NULL, NULL};
+ GError *g_error;
+
+ ret = NULL;
+- argv[5] = sysfs_path;
++ argv[6] = sysfs_path;
+
+ g_error = NULL;
+
+diff -Nur hal-0.5.11.orig/hald/linux/coldplug.c hal-0.5.11/hald/linux/coldplug.c
+--- hal-0.5.11.orig/hald/linux/coldplug.c 2008-05-08 01:23:32.000000000 +0200
++++ hal-0.5.11/hald/linux/coldplug.c 2008-09-12 19:37:47.000000000 +0200
+@@ -149,8 +149,8 @@
+ static gboolean
+ hal_util_init_sysfs_to_udev_map (void)
+ {
+- char *udevdb_export_argv[] = { "/usr/bin/udevinfo", "-e", NULL };
+- char *udevroot_argv[] = { "/usr/bin/udevinfo", "-r", NULL };
++ char *udevdb_export_argv[] = { "/sbin/udevadm", "info", "-e", NULL };
++ char *udevroot_argv[] = { "/sbin/udevadm", "info", "-r", NULL };
+ int udevinfo_exitcode;
+ UdevInfo *info = NULL;
+ char *p;
diff --git a/abs/core-testing/hal/ntfs-mount-fix.patch b/abs/core-testing/hal/ntfs-mount-fix.patch
new file mode 100644
index 0000000..13597f2
--- /dev/null
+++ b/abs/core-testing/hal/ntfs-mount-fix.patch
@@ -0,0 +1,18 @@
+--- tools/hal-storage-mount.c.orig 2008-04-21 01:48:27.000000000 +0200
++++ tools/hal-storage-mount.c 2008-04-21 01:47:44.000000000 +0200
+@@ -769,13 +769,13 @@
+
+ if (pol_is_fixed) {
+ if (pol_change_uid) {
+- action = NULL; /* "hal-storage-mount-fixed-extra-options"; TODO: rethink */
++ action = "hal-storage-mount-fixed-extra-options"; /*TODO: rethink */
+ } else {
+ action = "org.freedesktop.hal.storage.mount-fixed";
+ }
+ } else {
+ if (pol_change_uid) {
+- action = NULL; /* "hal-storage-mount-removable-extra-options"; TODO: rethink "extra-options" */
++ action = "hal-storage-mount-removable-extra-options"; /*TODO: rethink "extra-options" */
+ } else {
+ action = "org.freedesktop.hal.storage.mount-removable";
+ }
diff --git a/abs/core-testing/heimdal/PKGBUILD b/abs/core-testing/heimdal/PKGBUILD
index 4c79af6..06dd0cd 100644
--- a/abs/core-testing/heimdal/PKGBUILD
+++ b/abs/core-testing/heimdal/PKGBUILD
@@ -1,33 +1,33 @@
-# $Id: PKGBUILD 3738 2008-06-30 20:03:06Z andyrtr $
-# Maintainer: Jan de Groot <jgc@archlinux.org>
+# $Id: PKGBUILD 21345 2008-12-12 02:52:37Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
#
-### Attention: build it 2 times - it links against itself! ###
-# ^ better remove old pkg before ;)
+### Attention: remove old pkg before building - it links against itself! ###
+#
pkgname=heimdal
-pkgver=1.2
-pkgrel=1
-pkgdesc="Heimdal Kerberos V5 libraries"
-arch=(i686 x86_64)
-url="http://www.pdc.kth.se/heimdal/"
+pkgver=1.2.1
+pkgrel=2
+pkgdesc="Implementation of Kerberos V5 libraries"
+arch=('i686' 'x86_64')
+url="http://www.h5l.org/"
license=('custom')
depends=('db>=4.7' 'openssl' 'e2fsprogs')
-options=('!libtool' '!emptydirs')
backup=(etc/krb5.conf)
-source=(http://www.h5l.org/dist/src/heimdal-$pkgver.tar.gz \
+options=('!libtool' '!emptydirs')
+install=$pkgname.install
+source=(http://www.h5l.org/dist/src/${pkgname}-${pkgver}.tar.gz \
002_all_heimdal-no_libedit.patch \
003_all_heimdal-fPIC.patch \
004_all_heimdal-rxapps.patch \
- #006_all_heimdal-suid_fix.patch \
heimdal-kdc.rc \
kadmind.rc \
kpasswd.rc)
-md5sums=('8d6b690069acd2ae8ada1315174f52f9'
+md5sums=('6e5028077e2a6b101a4a72801ba71b9e'
'1199c4a4a38e9c2b2c0a99bd5781767a'
'3d0262aa218e1611500de735d3581e28'
'0fe81cb1e33b2a2e60edaf47dfdfe4de'
- #'30372b1581e4d49a76688e450fd42443'
'e59650992b9541a30dfce727a194f6e0'
'1f2f86a67bbfddb7af581d35fdca9627'
'f8f1eca95b9d3f2b4ebf2417b71b81cf')
@@ -39,24 +39,13 @@ build() {
patch -Np0 -i ${srcdir}/002_all_heimdal-no_libedit.patch || return 1
patch -Np0 -i ${srcdir}/003_all_heimdal-fPIC.patch || return 1
patch -Np0 -i ${srcdir}/004_all_heimdal-rxapps.patch || return 1
-# patch -Np0 -i ${srcdir}/006_all_heimdal-suid_fix.patch || return 1
-
-# libtoolize -f -c || return 1
-# aclocal -I cf || return 1
-# autoheader || return 1
-# automake -a || return 1
-# autoconf || return 1
-# libtoolize -f -c || return 1
-
-# autoreconf || return 1
-# libtoolize -f -c || return 1
sed -i -e 's|var/heimdal|var/lib/heimdal|g' configure.in configure \
doc/setup.texi doc/heimdal.info kadmin/kadmind.8 kdc/kdc.8 \
lib/hdb/hdb.h lib/krb5/krb5.conf.5 lib/krb5/krb5.conf.cat5
./configure --prefix=/usr --enable-shared=yes --without-x \
- --sysconfdir=/etc --mandir=/usr/man \
+ --sysconfdir=/etc --mandir=/usr/share/man \
--datadir=/var/lib/heimdal \
--localstatedir=/var/lib/heimdal \
--with-openssl=/usr \
@@ -69,35 +58,35 @@ build() {
make DESTDIR=${pkgdir} install || return 1
for i in telnetd ftpd rshd; do
- mv ${pkgdir}/usr/man/man8/${i}.8 ${pkgdir}/usr/man/man8/k${i}.8
+ mv ${pkgdir}/usr/share/man/man8/${i}.8 ${pkgdir}/usr/share/man/man8/k${i}.8
mv ${pkgdir}/usr/sbin/${i} ${pkgdir}/usr/sbin/k${i}
done
for i in rcp rsh telnet ftp su login; do
- if [ -f ${pkgdir}/usr/man/man1/${i}.1 ]; then
- mv ${pkgdir}/usr/man/man1/${i}.1 ${pkgdir}/usr/man/man1/k${i}.1
+ if [ -f ${pkgdir}/usr/share/man/man1/${i}.1 ]; then
+ mv ${pkgdir}/usr/share/man/man1/${i}.1 ${pkgdir}/usr/share/man/man1/k${i}.1
fi
mv ${pkgdir}/usr/bin/${i} ${pkgdir}/usr/bin/k${i}
done
- rm -rf ${pkgdir}/usr/man/cat{1,3,5,8}
+ rm -rf ${pkgdir}/usr/share/man/cat{1,3,5,8}
- #Arch could be a KDC too
+ # Arch could be a KDC too
mkdir -p ${pkgdir}/etc/rc.d
install -m644 ${srcdir}/heimdal-${pkgver}/krb5.conf ${pkgdir}/etc
for i in heimdal-kdc kadmind kpasswd; do
install -m755 ${srcdir}/${i}.rc ${pkgdir}/etc/rc.d/${i}
done
- #Remove some conflicts
- rm ${pkgdir}/usr/man/man5/ftpusers.5*
- rm ${pkgdir}/usr/man/man5/login.access.5*
- # and some more
- rm ${pkgdir}/usr/bin/mk_cmds
- rm ${pkgdir}/usr/include/ss/ss.h
- rm ${pkgdir}/usr/lib/libss.a
- rm ${pkgdir}/usr/lib/libss.so
+ # Remove conflicts
+ rm ${pkgdir}/usr/share/man/man5/ftpusers.5* # man-pages
+ rm ${pkgdir}/usr/share/info/dir
+
+ # Compress info pages
+ for page in heimdal hx509; do
+ gzip -9 ${pkgdir}/usr/share/info/${page}.info
+ done
- # install the license
+ # Install the license
install -D -m644 ${srcdir}/${pkgname}-${pkgver}/LICENSE \
${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
}
diff --git a/abs/core-testing/heimdal/heimdal.install b/abs/core-testing/heimdal/heimdal.install
new file mode 100644
index 0000000..499d216
--- /dev/null
+++ b/abs/core-testing/heimdal/heimdal.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(heimdal hx509)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.info.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.info.gz $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/core-testing/ilmbase/PKGBUILD b/abs/core-testing/ilmbase/PKGBUILD
new file mode 100644
index 0000000..b8930a5
--- /dev/null
+++ b/abs/core-testing/ilmbase/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=ilmbase
+pkgver=1.0.1
+pkgrel=1
+depends=('gcc-libs')
+pkgdesc="IlmThread is a thread abstraction library for use with OpenEXR"
+arch=(i686 x86_64)
+license=('custom')
+options=('!libtool')
+source=(http://savannah.nongnu.org/download/openexr/$pkgname-$pkgver.tar.gz)
+url="http://www.openexr.org"
+md5sums=('f76f094e69a6079b0beb93d97e2a217e')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+ install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
+}
diff --git a/abs/core-testing/imagemagick/ChangeLog b/abs/core-testing/imagemagick/ChangeLog
index 8b3a5fb..e46815d 100644
--- a/abs/core-testing/imagemagick/ChangeLog
+++ b/abs/core-testing/imagemagick/ChangeLog
@@ -1,3 +1,50 @@
+2008-12-29 Eric Belanger <eric@archlinux.org>
+
+ * imagemagick 6.4.8.2-1
+ * Upstream update
+
+2008-12-14 Eric Belanger <eric@archlinux.org>
+
+ * imagemagick 6.4.7.8-1
+ * Upstream update
+
+2008-12-05 Eric Belanger <eric@archlinux.org>
+
+ * imagemagick 6.4.7.0-1
+ * Upstream update
+ * Rebuild against heimdal 1.2.1
+
+2008-11-25 Eric Belanger <eric@archlinux.org>
+
+ * imagemagick 6.4.6.3-1
+ * Upstream update
+
+2008-11-14 Eric Belanger <eric@archlinux.org>
+
+ * imagemagick 6.4.5.6-1
+ * Upstream update
+
+2008-10-26 Eric Belanger <eric@archlinux.org>
+
+ * imagemagick 6.4.5.0-1
+ * Upstream update
+
+2008-10-18 Eric Belanger <eric@archlinux.org>
+
+ * imagemagick 6.4.4.9-1
+ * Upstream update
+
+2008-10-03 Eric Belanger <eric@archlinux.org>
+
+ * imagemagick 6.4.4.1-1
+ * Upstream update
+
+2008-09-06 Eric Belanger <eric@archlinux.org>
+
+ * imagemagick 6.4.3.6-1
+ * Upstream update
+ * Added JPEG2000 support (close FS#10544)
+
2008-08-19 Eric Belanger <eric@archlinux.org>
* imagemagick 6.4.2.10-1
diff --git a/abs/core-testing/imagemagick/PKGBUILD b/abs/core-testing/imagemagick/PKGBUILD
index 79555bf..ac04f26 100644
--- a/abs/core-testing/imagemagick/PKGBUILD
+++ b/abs/core-testing/imagemagick/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 9867 2008-08-20 05:56:48Z eric $
+# $Id: PKGBUILD 22960 2008-12-30 05:45:59Z eric $
# Maintainer: Eric Belanger <eric@archlinux.org>
# NOTE: ImageMagick builds against an existing installation
@@ -8,39 +8,39 @@
# install old package, build new package, install new package, rebuild
pkgname=imagemagick
-pkgver=6.4.2.10
+pkgver=6.4.8.2
pkgrel=1
pkgdesc="An image viewing/manipulation program"
arch=('i686' 'x86_64')
url="http://www.imagemagick.org/"
license=('custom')
-depends=('lcms' 'libwmf' 'librsvg' 'libxt' 'gcc-libs' 'ghostscript' 'openexr' 'libtool>=2.2' 'bzip2' 'libxml2')
+depends=('lcms' 'libwmf' 'librsvg' 'libxt' 'gcc-libs' 'ghostscript' 'openexr' 'libtool>=2.2' 'heimdal>=1.2.1' 'bzip2' 'libxml2' 'jasper')
#makedepends=('ghostscript' 'openexr')
options=('!makeflags' '!docs')
source=(ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-${pkgver%.*}-${pkgver##*.}.tar.bz2 \
libpng_mmx_patch_x86_64.patch add_delegate.patch)
-md5sums=('f60ae313a2cc2fcc980543165e7ebaf4' '069980fc2590c02aed86420996259302'\
+md5sums=('8454e93a0b88fd9319157b5301deff38' '069980fc2590c02aed86420996259302'\
'7f5851c4450b73d52df55c7e806cc316')
-sha1sums=('0c45712a07b0d337ac4130c3ad605566d013ea3f'
+sha1sums=('e5de65c998776c5b49a1b364d05ca3515310e23a'
'e42f3acbe85b6098af75c5cecc9a254baaa0482c'
'19b40dcbc5bf8efb8ce7190fed17e2921de32ea5')
build() {
- cd ${srcdir}/ImageMagick-${pkgver%.*}
+ cd ${srcdir}/ImageMagick-${pkgver%.*}-${pkgver##*.}
if [ "${CARCH}" = "x86_64" ]; then
patch -Np1 < ../libpng_mmx_patch_x86_64.patch || return 1
fi
patch -p0 < ../add_delegate.patch || return 1
+ sed -i "s/with_autotrace='no'/with_autotrace='yes'/" configure || return 1
- #LIBS=-lMagickWand ./configure --prefix=/usr --without-modules --disable-static --disable-openmp \
- ./configure --prefix=/usr --without-modules --disable-static --disable-openmp \
- --with-x --with-wmf --with-openexr \
+ LIBS=-lMagickWand ./configure --prefix=/usr --without-modules --disable-static --enable-openmp \
+ --with-x --with-wmf --with-openexr --with-xml \
--with-gslib --with-gs-font-dir=/usr/share/fonts/Type1 \
--with-perl --with-perl-options="INSTALLDIRS=vendor" \
- --without-gvc --without-djvu --without-jp2 \
- --without-fpx --without-dps || return 1
+ --without-gvc --without-djvu --with-jp2 \
+ --without-jbig --without-fpx --without-dps || return 1
make || return 1
make DESTDIR=${pkgdir} install || return 1
diff --git a/abs/core-testing/inputproto/PKGBUILD b/abs/core-testing/inputproto/PKGBUILD
index ddd445c..abbb0fc 100644
--- a/abs/core-testing/inputproto/PKGBUILD
+++ b/abs/core-testing/inputproto/PKGBUILD
@@ -1,22 +1,22 @@
-# $Id: PKGBUILD 670 2008-04-21 13:49:33Z alexander $
+# $Id: PKGBUILD 7996 2008-08-05 17:48:09Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=inputproto
-pkgver=1.4.3
+pkgver=1.4.4
pkgrel=1
pkgdesc="X11 Input extension wire protocol"
arch=(i686 x86_64)
license=('custom')
url="http://xorg.freedesktop.org/"
source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('3a532379f226c34b36a5c585999f75e4')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
- install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \
- ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
}
-md5sums=('a0f0d8cf6fbf0db8ba3937d0cc16138d')
diff --git a/abs/core-testing/intel-dri/PKGBUILD b/abs/core-testing/intel-dri/PKGBUILD
index 167f4e4..8da4e48 100644
--- a/abs/core-testing/intel-dri/PKGBUILD
+++ b/abs/core-testing/intel-dri/PKGBUILD
@@ -2,37 +2,42 @@
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=intel-dri
-pkgver=7.0.3
-pkgrel=1
+pkgver=7.2
+pkgrel=2
pkgdesc="Mesa DRI drivers for Intel chipsets"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('libdrm>=2.3.0' 'expat>=2.0')
-makedepends=('imake' 'mesa>=7.0.3' 'glproto>=1.4.9')
+depends=('libdrm>=2.3.1' 'expat>=2.0.1' 'libgl>=7.2')
+makedepends=('glproto>=1.4.9' 'pkgconfig' 'libxfixes' 'libxdamage' 'libxxf86vm' 'libxext')
options=('!libtool')
-source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2)
-md5sums=('e6e6379d7793af40a6bc3ce1bace572e')
+source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2
+ mesa-7.1-link-shared.patch
+ intel-revert-vbl.patch
+ intel-disable-ttm-warning.patch)
+md5sums=('04d379292e023df0b0266825cb0dbde5'
+ 'f0baa948d9810f268413111ee439d24b'
+ 'a111f4dc82e894f8801bc3fa129af7af'
+ 'a393d374b5d187ff2a5bb90b0f347c9a')
build() {
- cd ${startdir}/src/Mesa-${pkgver}/configs
-
- CONFIG="linux-dri-x86"
- [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64"
- echo "EXTRA_LIB_PATH =" >> ${CONFIG}
- echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG}
- echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG}
- echo "USING_EGL = 0" >> ${CONFIG}
- echo "PROGRAM_DIRS =" >> ${CONFIG}
- echo "MKDEP = makedepend" >> ${CONFIG}
- echo "DRI_DIRS = i810 i915 i915tex i965" >> ${CONFIG}
- echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG}
- echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG}
-
- ln -s ${CONFIG} current
- cd ${startdir}/src/Mesa-${pkgver}/src/mesa
- make linux-solo || return 1
- cd drivers/dri
- make DESTDIR=${startdir}/pkg install || return 1
+ cd ${srcdir}/Mesa-${pkgver}
+ patch -Np1 -i "${srcdir}/intel-revert-vbl.patch" || return 1
+ patch -Np1 -i "${srcdir}/intel-disable-ttm-warning.patch" || return 1
+ patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=i810,i915,i965 \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glu \
+ --disable-glut \
+ --disable-glw || return 1
+ make || return 1
+ cd src/mesa/drivers/dri || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ rm -rf ${pkgdir}/usr/lib/pkgconfig
+ rm -rf ${pkgdir}/usr/include
+ rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so
}
diff --git a/abs/core-testing/intel-dri/intel-disable-ttm-warning.patch b/abs/core-testing/intel-dri/intel-disable-ttm-warning.patch
new file mode 100644
index 0000000..f9d5223
--- /dev/null
+++ b/abs/core-testing/intel-dri/intel-disable-ttm-warning.patch
@@ -0,0 +1,13 @@
+diff -ruN Mesa-7.2.orig/src/mesa/drivers/dri/intel/intel_context.c Mesa-7.2/src/mesa/drivers/dri/intel/intel_context.c
+--- Mesa-7.2.orig/src/mesa/drivers/dri/intel/intel_context.c 2008-09-13 20:25:44.000000000 +0000
++++ Mesa-7.2/src/mesa/drivers/dri/intel/intel_context.c 2008-12-21 21:27:45.000000000 +0000
+@@ -490,9 +490,6 @@
+ if (intel->bufmgr == NULL) {
+ if (ttm_disable) {
+ fprintf(stderr, "TTM buffer manager disabled. Using classic.\n");
+- } else {
+- fprintf(stderr, "Failed to initialize TTM buffer manager. "
+- "Falling back to classic.\n");
+ }
+
+ if (intelScreen->tex.size == 0) {
diff --git a/abs/core-testing/intel-dri/intel-revert-vbl.patch b/abs/core-testing/intel-dri/intel-revert-vbl.patch
new file mode 100644
index 0000000..0394414
--- /dev/null
+++ b/abs/core-testing/intel-dri/intel-revert-vbl.patch
@@ -0,0 +1,21 @@
+commit 532d2051245a1d8afe7ca236f1d966d555bb121a
+Author: Dave Airlie <airlied@linux.ie>
+Date: Fri Sep 12 17:21:25 2008 +1000
+
+ Revert "intel: sync to vblank by default"
+
+ This reverts commit e9bf3e4cc9a7e4bcd4c45bd707541d26ecdf0409.
+
+diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
+index c193830..f02192d 100644
+--- a/src/mesa/drivers/dri/intel/intel_screen.c
++++ b/src/mesa/drivers/dri/intel/intel_screen.c
+@@ -55,7 +55,7 @@ PUBLIC const char __driConfigOptions[] =
+ DRI_CONF_BEGIN
+ DRI_CONF_SECTION_PERFORMANCE
+ DRI_CONF_FTHROTTLE_MODE(DRI_CONF_FTHROTTLE_IRQS)
+- DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_ALWAYS_SYNC)
++ DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_0)
+ /* Options correspond to DRI_CONF_BO_REUSE_DISABLED,
+ * DRI_CONF_BO_REUSE_ALL
+ */
diff --git a/abs/core-testing/intel-dri/mesa-7.1-link-shared.patch b/abs/core-testing/intel-dri/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/intel-dri/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/intltool/ChangeLog b/abs/core-testing/intltool/ChangeLog
new file mode 100644
index 0000000..f9a7192
--- /dev/null
+++ b/abs/core-testing/intltool/ChangeLog
@@ -0,0 +1,29 @@
+2008-11-28 Jan de Groot <jgc@archlinux.org>
+
+ * intltool 0.40.5-1
+ * Upstream update
+
+2008-09-25 Jan de Groot <jgc@archlinux.org>
+
+ * intltool 0.40.4-1
+ * Upstream update
+
+2008-07-28 Eric Belanger <eric@archlinux.org>
+
+ * intltool 0.40.3-1
+ * Upstream update
+
+2008-07-23 Eric Belanger <eric@archlinux.org>
+
+ * intltool 0.40.1-1
+ * Upstream update
+
+2008-06-08 Eric Belanger <eric@archlinux.org>
+
+ * intltool 0.40.0-1
+ * Upstream update
+
+2008-03-01 Eric Belanger <eric@archlinux.org>
+
+ * intltool 0.37.1-1
+ * Upstream update
diff --git a/abs/core-testing/intltool/PKGBUILD b/abs/core-testing/intltool/PKGBUILD
new file mode 100644
index 0000000..b780d3b
--- /dev/null
+++ b/abs/core-testing/intltool/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 19652 2008-11-28 20:22:55Z jgc $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=intltool
+pkgver=0.40.5
+pkgrel=1
+pkgdesc="The internationalization tool collection"
+arch=('i686' 'x86_64')
+url="http://freedesktop.org/wiki/Software/intltool"
+license=('GPL')
+depends=('perlxml')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('3e7ded6f50d88cf8b8bb505eaf591775')
+sha1sums=('72a67f18dbc12e1af11bfff80100993107b4df84')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/abs/core-testing/jack-audio-connection-kit/PKGBUILD b/abs/core-testing/jack-audio-connection-kit/PKGBUILD
index f9d73eb..b9f0ed8 100644
--- a/abs/core-testing/jack-audio-connection-kit/PKGBUILD
+++ b/abs/core-testing/jack-audio-connection-kit/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 9246 2008-08-17 05:38:58Z allan $
# Maintainer: tobias <tobias@archlinux.net>
# Contributor: Robert Emil Berge <robert@rebi.no>
pkgname=jack-audio-connection-kit
pkgver=0.109.2
-pkgrel=1
+pkgrel=2
pkgdesc="a low-latency audio server"
arch=(i686 x86_64)
license=(GPL2 LGPL2)
diff --git a/abs/core-testing/kdelibs3/PKGBUILD b/abs/core-testing/kdelibs3/PKGBUILD
index f4ed7a0..2effdcc 100644
--- a/abs/core-testing/kdelibs3/PKGBUILD
+++ b/abs/core-testing/kdelibs3/PKGBUILD
@@ -4,7 +4,7 @@
pkgname=kdelibs3
pkgver=3.5.10
-pkgrel=1
+pkgrel=2
pkgdesc="KDE3 Core Libraries"
arch=('i686' 'x86_64')
url="http://www.kde.org"
@@ -15,7 +15,7 @@ depends=('libxslt' 'pcre' 'libart-lgpl' 'alsa-lib' 'libcups'
makedepends=('pkgconfig' 'cups')
options=('libtool')
install='kdelibs3.install'
-source=("ftp://carroll.aset.psu.edu/pub/kde/stable/${pkgver}/src/kdelibs-${pkgver}.tar.bz2"
+source=("http://download.kde.org/stable/${pkgver}/src/kdelibs-${pkgver}.tar.bz2"
'kde3.profile')
md5sums=('43cd55ed15f63b5738d620ef9f9fd568'
'3c49828eb8985cfb25af8e1495f7800a')
diff --git a/abs/core-testing/libcups/PKGBUILD b/abs/core-testing/libcups/PKGBUILD
index 363a46a..fbdac67 100644
--- a/abs/core-testing/libcups/PKGBUILD
+++ b/abs/core-testing/libcups/PKGBUILD
@@ -1,15 +1,16 @@
-# $Id: PKGBUILD 7638 2008-08-03 15:54:53Z jgc $
+# $Id: PKGBUILD 20496 2008-12-05 11:29:11Z allan $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
pkgname=libcups
-pkgver=1.3.8
+pkgver=1.3.9
pkgrel=2
pkgdesc="The CUPS Printing System"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
license=('GPL')
url="http://www.cups.org/"
depends=('gnutls>=2.4.1' 'libtiff' 'libpng' 'heimdal>=1.2')
-source=(http://ftp.funet.fi/pub/mirrors/ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2)
-md5sums=('84e09577d673b212f605dd09caee456c')
+source=(ftp://ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2)
+md5sums=('cf63f451c356e6cabb08972d4d11c365')
build() {
cd ${srcdir}/cups-${pkgver}
diff --git a/abs/core-testing/libdaemon/PKGBUILD b/abs/core-testing/libdaemon/PKGBUILD
index 8750faf..6c123ab 100644
--- a/abs/core-testing/libdaemon/PKGBUILD
+++ b/abs/core-testing/libdaemon/PKGBUILD
@@ -1,23 +1,24 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
-# Maintainer: Mark Rosenstand <mark@archlinux.org>
+# $Id: PKGBUILD 19217 2008-11-17 21:02:07Z thayer $
# Contributor: Manolis Tzanidakis
+# Contributor: Mark Rosenstand <mark@archlinux.org>
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+
pkgname=libdaemon
-pkgver=0.12
+pkgver=0.13
pkgrel=1
-pkgdesc="A lightweight C library which eases the writing of UNIX daemons."
-arch=('i686' 'x86_64')
-license=('LGPL')
+pkgdesc="A lightweight C library which eases the writing of UNIX daemons"
url="http://0pointer.de/lennart/projects/libdaemon/"
+license=('LGPL')
+arch=('i686' 'x86_64')
depends=('glibc')
source=(http://0pointer.de/lennart/projects/libdaemon/$pkgname-$pkgver.tar.gz)
-md5sums=('76596823cc1a6d1cdf7779b782ff0ee6')
-sha1sums=('2b45ab37df853afd25f7985ed699b799e0464413')
options=('!libtool')
+md5sums=('ae9113fcd825d5a7f07e5ddccb3c3102')
build() {
- cd $startdir/src/$pkgname-$pkgver
- ./configure --prefix=/usr --disable-doxygen --disable-lynx
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --disable-lynx || return 1
make || return 1
- make DESTDIR=$startdir/pkg install
+ make DESTDIR=$pkgdir install || return 1
}
diff --git a/abs/core-testing/libdrm/PKGBUILD b/abs/core-testing/libdrm/PKGBUILD
index 19a4db2..816aa2a 100644
--- a/abs/core-testing/libdrm/PKGBUILD
+++ b/abs/core-testing/libdrm/PKGBUILD
@@ -1,20 +1,20 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 19237 2008-11-17 22:36:17Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=libdrm
-pkgver=2.3.0
-pkgrel=1
+pkgver=2.3.1
+pkgrel=2
pkgdesc="Userspace interface to kernel DRM services"
arch=(i686 x86_64)
depends=('glibc')
-options=('!libtool')
+options=('!libtool' 'force')
url="http://dri.freedesktop.org/"
source=(http://dri.freedesktop.org/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('01a1e1ee0268a2403db42fa630036ab2')
+md5sums=('620fe7dd02c3236c3e9881a3a238173d')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/libexif/PKGBUILD b/abs/core-testing/libexif/PKGBUILD
index 74989c8..7c47361 100644
--- a/abs/core-testing/libexif/PKGBUILD
+++ b/abs/core-testing/libexif/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 23029 2009-01-01 16:38:33Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Tobias Kieslich <tobias@justdreams.de>
pkgname=libexif
-pkgver=0.6.16
+pkgver=0.6.17
pkgrel=1
pkgdesc="A library to parse an EXIF file and read the data from those tags"
arch=(i686 x86_64)
@@ -12,11 +12,11 @@ url="http://sourceforge.net/projects/libexif"
depends=('glibc')
options=('!libtool')
source=(http://downloads.sf.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('deee153b1ded5a944ea05d041d959eca')
+md5sums=('f7cf4e623a48c9a3b13f7f95f0a41015')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/libgcrypt/PKGBUILD b/abs/core-testing/libgcrypt/PKGBUILD
index f4ebfea..bcf31c8 100644
--- a/abs/core-testing/libgcrypt/PKGBUILD
+++ b/abs/core-testing/libgcrypt/PKGBUILD
@@ -1,23 +1,24 @@
-# $Id: PKGBUILD 3545 2008-06-24 17:33:25Z andyrtr $
+# $Id: PKGBUILD 12853 2008-09-22 17:17:27Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
pkgname=libgcrypt
-pkgver=1.4.1
-pkgrel=10
+pkgver=1.4.3
+pkgrel=2
pkgdesc="a general purpose crypto library based on the code used"
arch=(i686 x86_64)
url="http://www.gnupg.org"
license=('LGPL')
groups=('base')
-depends=('libgpg-error>=1.6')
+depends=('libgpg-error>=1.6' 'texinfo')
options=(!libtool)
source=(#ftp://ftp.gnupg.org/gcrypt/${pkgname}/${pkgname}-${pkgver}.tar.bz2
ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt/libgcrypt/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('26703ecef4bbe113b8e6a87572b80b32')
+md5sums=('46e50e811ed51f1e0e8dd677dded967d')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr --disable-padlock-support
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --disable-padlock-support --disable-static
make || return 1
- make DESTDIR=${startdir}/pkg install
+ make DESTDIR=${pkgdir} install || return 1
+ rm -f ${pkgdir}/usr/share/info/dir
}
diff --git a/abs/core-testing/libgcrypt/libgcrypt.install b/abs/core-testing/libgcrypt/libgcrypt.install
new file mode 100644
index 0000000..86de0a5
--- /dev/null
+++ b/abs/core-testing/libgcrypt/libgcrypt.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(gcrypt.info)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/core-testing/libgl/PKGBUILD b/abs/core-testing/libgl/PKGBUILD
index 43e7c58..ce2faba 100644
--- a/abs/core-testing/libgl/PKGBUILD
+++ b/abs/core-testing/libgl/PKGBUILD
@@ -1,49 +1,40 @@
-# $Id: PKGBUILD 1895 2008-05-22 17:55:59Z jgc $
+# $Id: PKGBUILD 12994 2008-09-25 18:01:13Z jgc $
# Maintainer: Alexander Baldeck <kth5@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=libgl
-pkgver=7.0.3
-pkgrel=2
+pkgver=7.2
+pkgrel=1
pkgdesc="Mesa DRI OpenGL library and drivers"
arch=(i686 x86_64)
license=('LGPL')
url="http://www.mesa3d.org"
-depends=('libxxf86vm' 'libdrm>=2.3' 'libxdamage')
-makedepends=('imake' 'glproto>=1.4.9' 'fixesproto' 'damageproto' 'pkgconfig')
+depends=('libdrm>=2.3.1' 'libxxf86vm' 'libxdamage' 'expat>=2.0.1')
+makedepends=('dri2proto>=1.1' 'glproto>=1.4.9' 'pkgconfig')
provides=('libgl-dri')
replaces=('libgl-dri' 'libgl-mesa')
-source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2)
-md5sums=('e6e6379d7793af40a6bc3ce1bace572e')
+options=(!makeflags)
+source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2
+ mesa-7.1-link-shared.patch)
+md5sums=('04d379292e023df0b0266825cb0dbde5'
+ 'f0baa948d9810f268413111ee439d24b')
build() {
cd ${startdir}/src/Mesa-${pkgver}
-
- CONFIG="linux-dri-x86"
- if [ "${CARCH}" = "x86_64" ]; then
- CONFIG="linux-dri-x86-64"
- sed -i -e "s/lib64/lib/g" configs/${CONFIG}
- fi
-
- echo "EXTRA_LIB_PATH =" >> configs/${CONFIG}
- echo "OPT_FLAGS = ${CFLAGS}" >> configs/${CONFIG}
- echo "SRC_DIRS = glx/x11 mesa" >> configs/${CONFIG}
- rm -f include/GL/glut*h
- echo "USING_EGL = 0" >> configs/${CONFIG}
- echo "PROGRAM_DIRS =" >> configs/${CONFIG}
- echo "MKDEP = makedepend" >> configs/${CONFIG}
- echo "DRI_DIRS =" >> configs/${CONFIG}
- echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> configs/${CONFIG}
- echo "ARCH_FLAGS += -DGLX_USE_TLS" >> configs/${CONFIG}
- echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> configs/${CONFIG}
-
- make ${CONFIG} || return 1
- install -m755 -d ${startdir}/pkg/usr
- make INSTALL_DIR=${startdir}/pkg/usr install || return 1
-
- rm -rf ${startdir}/pkg/usr/include
-
- install -m755 -d ${startdir}/pkg/usr/lib/xorg/modules/extensions || return 1
- cd ${startdir}/pkg/usr/lib/xorg/modules/extensions || return 1
- ln -sf libGLcore.xorg libGLcore.so
- ln -sf libglx.xorg libglx.so
+ patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=swrast \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glu \
+ --disable-glut \
+ --disable-glw || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ rm -rf ${pkgdir}/usr/include
+ rm -rf ${pkgdir}/usr/lib/pkgconfig
+ install -m755 -d ${pkgdir}/usr/lib/xorg/modules/extensions
+ ln -sf libglx.xorg ${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so || return 1
}
diff --git a/abs/core-testing/libgl/mesa-7.1-link-shared.patch b/abs/core-testing/libgl/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/libgl/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/libglade/PKGBUILD b/abs/core-testing/libglade/PKGBUILD
index fc10160..c0bfa29 100644
--- a/abs/core-testing/libglade/PKGBUILD
+++ b/abs/core-testing/libglade/PKGBUILD
@@ -1,26 +1,26 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 13455 2008-09-27 11:03:58Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=libglade
-pkgver=2.6.2
+pkgver=2.6.3
pkgrel=1
pkgdesc="Allows you to load glade interface files in a program at runtime"
arch=(i686 x86_64)
license=('LGPL')
-depends=('gtk2' 'libxml2')
+depends=('gtk2>=2.14.1' 'libxml2>=2.6.32')
makedepends=('python' 'pkgconfig')
options=('!libtool')
install=glade.install
source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.6/${pkgname}-${pkgver}.tar.bz2
libglade-2.0.1-nowarning.patch)
url="http://www.gnome.org"
-md5sums=('da4f9d1c6cd1337f6ef5e2db768d8557' '4f879c0ce550004905aa0fb24f25c353')
+md5sums=('1c359860b1a0f369f0b6e3f96fd985c2' '4f879c0ce550004905aa0fb24f25c353')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- patch -Np1 -i ${startdir}/src/libglade-2.0.1-nowarning.patch || return 1
- ./configure --sysconfdir=/etc --prefix=/usr --localstatedir=/var
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/libglade-2.0.1-nowarning.patch || return 1
+ ./configure --sysconfdir=/etc --prefix=/usr --localstatedir=/var || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install
- install -m755 libglade-convert ${startdir}/pkg/usr/bin/libglade-convert
+ make DESTDIR=${pkgdir} install || return 1
+ install -m755 libglade-convert ${pkgdir}/usr/bin/libglade-convert || return 1
}
diff --git a/abs/core-testing/libglade/glade.install b/abs/core-testing/libglade/glade.install
index c98d2ed..a7f05c5 100644
--- a/abs/core-testing/libglade/glade.install
+++ b/abs/core-testing/libglade/glade.install
@@ -23,8 +23,3 @@ post_remove() {
xmlcatalog --noout --del \
/usr/share/xml/libglade/glade-2.0.dtd etc/xml/catalog
}
-
-op=$1
-shift
-
-$op $*
diff --git a/abs/core-testing/libgsf/PKGBUILD b/abs/core-testing/libgsf/PKGBUILD
index 84f5edb..67aa465 100644
--- a/abs/core-testing/libgsf/PKGBUILD
+++ b/abs/core-testing/libgsf/PKGBUILD
@@ -1,25 +1,27 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 22409 2008-12-26 18:58:32Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
pkgname=libgsf
-pkgver=1.14.8
+pkgver=1.14.10
pkgrel=1
pkgdesc="The GNOME Structured File Library is a utility library for reading and writing structured file formats."
arch=(i686 x86_64)
url="http://www.gnome.org/"
license=('GPL' 'LGPL')
-depends=('libxml2' 'glib2>=2.16.1' 'bzip2')
+depends=('libxml2>=2.7.2' 'glib2>=2.18.3' 'bzip2')
makedepends=('perlxml' 'pkgconfig' 'python')
options=('!libtool')
source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/1.14/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('09e4b6639be79fa888cabc751f73674f')
+md5sums=('f9b2f309089af683066ff0b319227e57')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- sed -i -e 's/gsf-gnome gsf-win32//' -e 's/thumbnailer//' Makefile.*
- ./configure --prefix=/usr --disable-gtk-doc --without-gnome --without-bonobo
+ sed -i -e 's/gsf-gnome//' -e 's/thumbnailer//' Makefile.*
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --without-gnome-vfs --without-bonobo \
+ --disable-static || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install
+ make DESTDIR=${startdir}/pkg install || return 1
rm -f ${startdir}/pkg/usr{,/share}/man/man1/gsf-office-thumbnailer.1
}
diff --git a/abs/core-testing/libidn/PKGBUILD b/abs/core-testing/libidn/PKGBUILD
index 6fb7d24..170388c 100644
--- a/abs/core-testing/libidn/PKGBUILD
+++ b/abs/core-testing/libidn/PKGBUILD
@@ -1,22 +1,30 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
-# Maintainer: Jan de Groot <jgc@archlinux.org>
-# Contributor: Eric Johnson <eric@archlinux.org>
+# $Id: PKGBUILD 19577 2008-11-27 10:01:45Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Jan de Groot <jgc.archlinux.org>
+# Contributor: Eric Johnson <eric.archlinux.org>
+
pkgname=libidn
-pkgver=1.0
+pkgver=1.11
pkgrel=1
pkgdesc="Implementation of the Stringprep, Punycode and IDNA specifications"
-arch=(i686 x86_64)
url="http://www.gnu.org/software/libidn/"
-license=('GPL' 'LGPL')
+arch=('i686' 'x86_64')
+license=('GPL3' 'LGPL2')
depends=('glibc')
makedepends=('pkgconfig')
options=('!libtool')
-source=(ftp://alpha.gnu.org/pub/gnu/libidn/${pkgname}-${pkgver}.tar.gz)
-md5sums=('8a6a15dc061c0e17a97cb6b77d850e86')
+source=(http://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+install=libidn.install
+md5sums=('8859b17928f84b899b19e72bfa1c6dbf')
+sha1sums=('08cffdcf9736f4ac61acc32e79a1d9672f640351')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd ${srcdir}/${pkgname}-${pkgver}
./configure --prefix=/usr
make || return 1
- make DESTDIR=${startdir}/pkg install
+ make DESTDIR=${pkgdir} install || return 1
+
+ # handle info files
+ rm $pkgdir/usr/share/info/{dir,libidn-components.png} # nobody is missing a png I assume
+ gzip $pkgdir/usr/share/info/*
}
diff --git a/abs/core-testing/libidn/libidn.install b/abs/core-testing/libidn/libidn.install
new file mode 100644
index 0000000..a0366eb
--- /dev/null
+++ b/abs/core-testing/libidn/libidn.install
@@ -0,0 +1,19 @@
+info_dir=/usr/share/info
+info_files=(libidn.info)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
diff --git a/abs/core-testing/libpcap/PKGBUILD b/abs/core-testing/libpcap/PKGBUILD
index 0a586db..e5c11e2 100644
--- a/abs/core-testing/libpcap/PKGBUILD
+++ b/abs/core-testing/libpcap/PKGBUILD
@@ -1,44 +1,34 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
-# Maintainer: dorphell <dorphell@archlinux.org>
+# $Id: PKGBUILD 20200 2008-12-01 17:56:56Z thomas $
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
pkgname=libpcap
-pkgver=0.9.8
-pkgrel=11
+pkgver=1.0.0
+pkgrel=1
pkgdesc="A system-independent interface for user-level packet capture"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
url="http://www.tcpdump.org/"
license=('BSD')
groups=('base')
depends=('glibc')
makedepends=('flex')
-source=(http://www.sfr-fresh.com/unix/misc/libpcap-${pkgver}.tar.gz
- libpcap-shared.patch)
-md5sums=('5208f24d0328ee7c20b52c43eaa9aa0e'
- 'b8a9c5e5cea0b89a8a7456c6c4d59db4')
-
-# This package has a strict SONAME that changes in EVERY MINOR
-# release. Whenever you feel like updating this package, DON'T,
-# it will break a number of essential system tools.
-# Again, for dummies: IF YOU UPDATE THIS PACKAGE DIRECTLY TO CORE,
-# I WILL PERSONALLY CHOP YOUR HEAD OFF!
+source=(http://www.tcpdump.org/release/libpcap-${pkgver}.tar.gz)
+md5sums=('9ad1358c5dec48456405eac197a46d3d')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- patch -Np1 -i ${startdir}/libpcap-shared.patch || return 1
- sed -i -e "s/@MAJOR@/`awk -F '.' '{ print $1 }' VERSION`/" \
- -e "s/@MINOR@/`awk -F '.' '{ print $2 }' VERSION`/" \
- -e "s/@SUBMINOR@/`awk -F '.' '{ print $3 }' VERSION`/" \
- -e "s/@VERSION@/`cat VERSION`/" Makefile.in
-
+ cd ${srcdir}/${pkgname}-${pkgver}
./configure --prefix=/usr --enable-ipv6
- DEFS="-g -D_U_=\"\" -fPIC -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
- make -j1 DEFS="${DEFS}" || return 1
- make DESTDIR=${startdir}/pkg install
-# # backwards compatibility, programs often look for net/bpf.h
- mkdir -p ${startdir}/pkg/usr/include/net
- cd ${startdir}/pkg/usr/include/net
+ make || return 1
+ make shared || return 1
+
+ install -d -m755 ${pkgdir}/usr/bin
+ make DESTDIR=${pkgdir} install install-shared || return 1
+ ln -s libpcap.so.1.0.0 ${pkgdir}/usr/lib/libpcap.so.1
+ ln -s libpcap.so.1.0.0 ${pkgdir}/usr/lib/libpcap.so
+ # backwards compatibility, programs often look for net/bpf.h
+ mkdir -p ${pkgdir}/usr/include/net
+ cd ${pkgdir}/usr/include/net
ln -s ../pcap-bpf.h bpf.h
#install the license
- install -D -m644 $startdir/src/$pkgname-$pkgver/LICENSE $startdir/pkg/usr/share/licenses/$pkgname/LICENSE
+ install -D -m644 ${srcdir}/$pkgname-$pkgver/LICENSE ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
}
diff --git a/abs/core-testing/libpciaccess/PKGBUILD b/abs/core-testing/libpciaccess/PKGBUILD
new file mode 100644
index 0000000..499f365
--- /dev/null
+++ b/abs/core-testing/libpciaccess/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+pkgname=libpciaccess
+pkgver=0.10.5
+pkgrel=1
+pkgdesc="X11 PCI access library"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(${url}/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('617bebf31e5685c83f935009aeae5f38')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/abs/core-testing/libpng/ChangeLog b/abs/core-testing/libpng/ChangeLog
index 9612756..98aa66d 100644
--- a/abs/core-testing/libpng/ChangeLog
+++ b/abs/core-testing/libpng/ChangeLog
@@ -1,4 +1,8 @@
+2008-10-06 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated for i686: 1.2.32
+
2008-08-23 Douglas Soares de Andrade <douglas@archlinux.org>
* Updated for i686: 1.2.31
diff --git a/abs/core-testing/libpng/PKGBUILD b/abs/core-testing/libpng/PKGBUILD
index a67b300..12515ed 100644
--- a/abs/core-testing/libpng/PKGBUILD
+++ b/abs/core-testing/libpng/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 10073 2008-08-23 15:51:29Z douglas $
+# $Id: PKGBUILD 22148 2008-12-22 12:33:23Z pierre $
# Maintainer: dorphell <dorphell@archlinux.org>
# Maintainer: Travis Willard <travis@archlinux.org>
# Maintainer: Douglas Soares de Andrade <douglas@archlinux.org>
pkgname=libpng
-pkgver=1.2.31
+pkgver=1.2.34
pkgrel=1
pkgdesc="A collection of routines used to create PNG format graphics files"
arch=('i686' 'x86_64')
@@ -12,19 +12,18 @@ url="http://www.libpng.org/pub/png/libpng.html"
license=('custom')
depends=('zlib')
options=('!libtool')
-source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2
- # http://littlesvr.ca/apng/diff/${pkgname}-${pkgver}-apng.patch
- ${pkgname}-${pkgver}-apng.patch )
+source=("http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2"
+ "http://hp.vector.co.jp/authors/VA013651/lib/libpng-${pkgver}-apng.patch.gz")
options=('!libtool')
-
-md5sums=('78d2f8c4e0d64f8948819563587302d3'
- 'fab42a4ad4de6fcb87dcca6a7a19aefb')
+md5sums=('37362876feb21344fd3af1228527db0f'
+ 'a7ee9fd9af34692b75eedd5b03b69ca9')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
# Add animated PNG (apng) support
- patch -Np0 -i $startdir/src/${pkgname}-${pkgver}-apng.patch || return 1
+ # see http://hp.vector.co.jp/authors/VA013651/freeSoftware/apng.html
+ patch -p1 -i $srcdir/libpng-${pkgver}-apng.patch || return 1
libtoolize --force --copy || return 1
aclocal || return 1
diff --git a/abs/core-testing/librsvg/PKGBUILD b/abs/core-testing/librsvg/PKGBUILD
index c4f4a11..6a702aa 100644
--- a/abs/core-testing/librsvg/PKGBUILD
+++ b/abs/core-testing/librsvg/PKGBUILD
@@ -1,28 +1,27 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 13073 2008-09-25 20:24:43Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=librsvg
-pkgver=2.22.2
+pkgver=2.22.3
pkgrel=1
pkgdesc="SAX-based renderer for SVG files into a GdkPixbuf"
arch=(i686 x86_64)
license=('LGPL')
-depends=('gtk2>=2.12.9' 'libcroco>=0.6.1' 'libgsf>=1.14.8')
+depends=('gtk2>=2.14.3' 'libcroco>=0.6.1' 'libgsf>=1.14.8')
makedepends=('perlxml' 'pkgconfig')
options=('!libtool')
url="http://librsvg.sourceforge.net/"
source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.22/${pkgname}-${pkgver}.tar.bz2)
install=librsvg.install
-md5sums=('aae602677ce201b1a0ed6a0c18c207f2')
+md5sums=('c4ec4fdb2b1842e221ca39127e85682d')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr --libexecdir=/usr/lib/${pkgname} \
--with-croco \
--disable-mozilla-plugin --with-svgz
make || return 1
- make DESTDIR=${startdir}/pkg install
- rm -rf ${startdir}/pkg/usr/share/gtk-doc
- rm -rf ${startdir}/pkg/usr/lib/mozilla
- rm ${startdir}/pkg/usr/lib/gtk-2.0/*/{engines,loaders}/*.a
+ make DESTDIR="${pkgdir}" install
+ rm -rf "${pkgdir}/usr/lib/mozilla"
+ rm ${pkgdir}/usr/lib/gtk-2.0/*/{engines,loaders}/*.a
}
diff --git a/abs/core-testing/librsvg/librsvg.install b/abs/core-testing/librsvg/librsvg.install
index 8a6dd5a..01eaab0 100644
--- a/abs/core-testing/librsvg/librsvg.install
+++ b/abs/core-testing/librsvg/librsvg.install
@@ -1,4 +1,3 @@
-# arg 1: the new package version
post_install() {
#We need to update the pixbuf loaders to let GTK support SVG images
usr/bin/gtk-query-immodules-2.0 > etc/gtk-2.0/gtk.immodules
diff --git a/abs/core-testing/libtasn1/PKGBUILD b/abs/core-testing/libtasn1/PKGBUILD
index 9d0f14a..150c1dd 100644
--- a/abs/core-testing/libtasn1/PKGBUILD
+++ b/abs/core-testing/libtasn1/PKGBUILD
@@ -1,21 +1,26 @@
-# $Id: PKGBUILD 3687 2008-06-29 10:44:27Z jgc $
-# Maintainer: judd <jvinet@zeroflux.org>
+# $Id: PKGBUILD 22306 2008-12-25 18:56:59Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
pkgname=libtasn1
-pkgver=1.4
+pkgver=1.7
pkgrel=1
pkgdesc="The ASN.1 library used in GNUTLS"
arch=(i686 x86_64)
-license=('GPL' 'LGPL')
+license=('GPL3' 'LGPL')
url="http://www.gnu.org/software/gnutls/"
-depends=('glibc')
+depends=('glibc' 'texinfo')
options=('!libtool')
+install=libtasn1.install
source=(ftp://ftp.gnutls.org/pub/gnutls/${pkgname}/${pkgname}-${pkgver}.tar.gz)
-md5sums=('a733ecdfed3517910e627d24e050979f')
+md5sums=('ebfd69b3514d8e8830057f0e9df6a5f9')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ rm -f "${pkgdir}/usr/share/info/dir"
+ gzip ${pkgdir}/usr/share/info/* || return 1
}
diff --git a/abs/core-testing/libtasn1/libtasn1.install b/abs/core-testing/libtasn1/libtasn1.install
new file mode 100644
index 0000000..2d1ecc0
--- /dev/null
+++ b/abs/core-testing/libtasn1/libtasn1.install
@@ -0,0 +1,18 @@
+info_dir=/usr/share/info
+info_files=(libtasn1.info)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
diff --git a/abs/core-testing/libtool/PKGBUILD b/abs/core-testing/libtool/PKGBUILD
index 965a282..f861926 100644
--- a/abs/core-testing/libtool/PKGBUILD
+++ b/abs/core-testing/libtool/PKGBUILD
@@ -1,21 +1,25 @@
-# $Id: PKGBUILD 1505 2008-05-12 10:28:03Z andyrtr $
+# $Id: PKGBUILD 12053 2008-09-08 14:37:58Z andyrtr $
# Maintainer: judd <jvinet@zeroflux.org>
pkgname=libtool
-pkgver=2.2.4
+pkgver=2.2.6a
pkgrel=1
pkgdesc="A generic library support script"
arch=('i686' 'x86_64')
license=('GPL')
url="http://www.gnu.org/software/libtool"
+install=libtool.install
groups=('base-devel')
-depends=('sh')
+depends=('sh' 'tar')
source=(ftp://ftp.gnu.org/pub/gnu/libtool/${pkgname}-${pkgver}.tar.gz)
-md5sums=('0b87e84c7aad3b5e979bbe35312fd4c1')
+md5sums=('8ca1ea241cd27ff9832e045fe9afe4fd')
options=('!libtool')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ #cd ${startdir}/src/${pkgname}-${pkgver}
+ cd ${startdir}/src/${pkgname}-2.2.6
./configure --prefix=/usr
make || return 1
make DESTDIR=${startdir}/pkg install
+
+ rm -f ${pkgdir}/usr/share/info/dir
}
diff --git a/abs/core-testing/libtool/libtool.install b/abs/core-testing/libtool/libtool.install
new file mode 100644
index 0000000..1794742
--- /dev/null
+++ b/abs/core-testing/libtool/libtool.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(libtool.info libtool.info-1 libtool.info-2)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/core-testing/libx11/PKGBUILD b/abs/core-testing/libx11/PKGBUILD
index e69ed0a..d697a21 100644
--- a/abs/core-testing/libx11/PKGBUILD
+++ b/abs/core-testing/libx11/PKGBUILD
@@ -1,28 +1,26 @@
-# $Id: PKGBUILD 1882 2008-05-22 17:44:17Z jgc $
+# $Id: PKGBUILD 20482 2008-12-05 09:43:28Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor Jan de Groot <jgc@archlinux.org>
pkgname=libx11
-pkgver=1.1.4
+pkgver=1.1.5
pkgrel=2
pkgdesc="X11 client-side library"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('libxau' 'libxdmcp' 'libxcb>=1.1' 'kbproto' 'inputproto' 'bigreqsproto')
-makedepends=('pkgconfig' 'xcmiscproto' 'xextproto' 'xf86bigfontproto' 'xtrans' \
- 'bigreqsproto' 'xorg-util-macros' 'autoconf' 'automake' 'libtool')
+depends=('libxcb>=1.1.90.1' 'kbproto>=1.0.3')
+makedepends=('xproto>=7.0.13' 'xextproto>=7.0.3' 'xf86bigfontproto>=1.1.2' 'xtrans>=1.2.1' 'kbproto>=1.0.3' 'inputproto>=1.4.4' 'xorg-util-macros')
options=('!libtool')
license=('custom:XFREE86')
source=(${url}/releases/individual/lib/libX11-${pkgver}.tar.bz2
012_ru_RU_UTF-8_XLC_LOCALE.diff
xorg.sh)
-md5sums=('1469a5a8aa8d288dce6f4c45d2f68dc3'
+md5sums=('d1512d65dadd4f48c779d4749e7753a8'
'c7e38a68b932ed557bc71979eed2a8a1'
- 'ea3f14c529072c8be061493763479800')
+ '942ff006e69e041f0307c1316e0dec5d')
build() {
- cd ${startdir}/src/libX11-${pkgver}
- patch -Np1 -i ${startdir}/src/012_ru_RU_UTF-8_XLC_LOCALE.diff || return 1
-
+ cd ${srcdir}/libX11-${pkgver}
+ patch -Np1 -i ${srcdir}/012_ru_RU_UTF-8_XLC_LOCALE.diff || return 1
libtoolize --force --copy || return 1
aclocal || return 1
@@ -32,13 +30,12 @@ build() {
./configure --prefix=/usr \
--with-xcb || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR=${pkgdir} install || return 1
- install -d -m755 ${startdir}/pkg/etc/profile.d
- install -m755 ${startdir}/src/xorg.sh \
- ${startdir}/pkg/etc/profile.d/ || return 1
+ install -m755 -d ${pkgdir}/etc/profile.d
+ install -m755 ${srcdir}/xorg.sh \
+ ${pkgdir}/etc/profile.d/ || return 1
- install -d -m755 ${startdir}/pkg/usr/share/licenses/${pkgname}
- install -m644 -D ${startdir}/src/libX11-${pkgver}/COPYING \
- ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1
+ install -d -m755 ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
}
diff --git a/abs/core-testing/libx11/xorg.sh b/abs/core-testing/libx11/xorg.sh
index d3ade91..9b37312 100644
--- a/abs/core-testing/libx11/xorg.sh
+++ b/abs/core-testing/libx11/xorg.sh
@@ -13,7 +13,3 @@ if [ -z $XDG_CONFIG_DIRS ]; then
else
export XDG_CONFIG_DIRS=/etc/xdg:$XDG_CONFIG_DIRS
fi
-
-# temporarily loosen restrictions in libxcb to get java
-# application involving X to work.
-export LIBXCB_ALLOW_SLOPPY_LOCK=true
diff --git a/abs/core-testing/libxaw/PKGBUILD b/abs/core-testing/libxaw/PKGBUILD
index 3b447d1..c1d71de 100644
--- a/abs/core-testing/libxaw/PKGBUILD
+++ b/abs/core-testing/libxaw/PKGBUILD
@@ -1,26 +1,25 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 18578 2008-11-07 22:16:28Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=libxaw
-pkgver=1.0.4
+pkgver=1.0.5
pkgrel=1
pkgdesc="X11 Athena Widget library"
arch=(i686 x86_64)
license=('custom:')
url="http://xorg.freedesktop.org/"
-depends=('libxmu' 'libxpm' 'libxp')
+depends=('libxmu' 'libxpm')
makedepends=('pkgconfig')
options=('!libtool')
source=(${url}/releases/individual/lib/libXaw-${pkgver}.tar.bz2)
+md5sums=('64e7782db4653cb57c7f7e660b2431c3')
build() {
- cd ${startdir}/src/libXaw-${pkgver}
- ./configure --prefix=/usr --sysconfdir=/etc
+ cd "${srcdir}/libXaw-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
- mkdir -p ${startdir}/pkg/usr/share/licenses/${pkgname}
- install -m644 ${startdir}/src/libXaw-${pkgver}/COPYING \
- ${startdir}/pkg/usr/share/licenses/${pkgname}/license.txt
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
}
-md5sums=('73671d8f1cf36fdd81395328cc3539c9')
diff --git a/abs/core-testing/libxml2/PKGBUILD b/abs/core-testing/libxml2/PKGBUILD
index be9b8bc..8b8cb34 100644
--- a/abs/core-testing/libxml2/PKGBUILD
+++ b/abs/core-testing/libxml2/PKGBUILD
@@ -1,25 +1,26 @@
-# $Id: PKGBUILD 1153 2008-05-01 14:49:04Z jgc $
+# $Id: PKGBUILD 22385 2008-12-26 16:51:09Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: John Proctor <jproctor@prium.net>
pkgname=libxml2
-pkgver=2.6.32
+pkgver=2.7.2
pkgrel=1
pkgdesc="XML parsing library, version 2"
arch=(i686 x86_64)
license=('custom')
-depends=('zlib' 'readline')
-makedepends=('python>=2.5')
+depends=('zlib>=1.2.3.3' 'readline>=5.2-8' 'ncurses>=5.6-7')
+makedepends=('python')
options=('!libtool')
-source=(ftp://ftp.xmlsoft.org/${pkgname}/${pkgname}-${pkgver}.tar.gz)
url="http://www.xmlsoft.org/"
-md5sums=('2621d322c16f0257e30f0ff2b13384de')
+source=(ftp://ftp.xmlsoft.org/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ largefile64.patch)
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i ${srcdir}/largefile64.patch || return 1
./configure --prefix=/usr --with-threads --with-history || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
- install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
- install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
}
diff --git a/abs/core-testing/libxml2/largefile64.patch b/abs/core-testing/libxml2/largefile64.patch
new file mode 100644
index 0000000..29be827
--- /dev/null
+++ b/abs/core-testing/libxml2/largefile64.patch
@@ -0,0 +1,12 @@
+--- libxml2-2.6.32.dfsg.orig/libxml.h
++++ libxml2-2.6.32.dfsg/libxml.h
+@@ -13,6 +13,9 @@
+ #ifndef _LARGEFILE_SOURCE
+ #define _LARGEFILE_SOURCE
+ #endif
++#ifndef _LARGEFILE64_SOURCE
++#define _LARGEFILE64_SOURCE
++#endif
+ #ifndef _FILE_OFFSET_BITS
+ #define _FILE_OFFSET_BITS 64
+ #endif
diff --git a/abs/core-testing/lighttpd/PKGBUILD b/abs/core-testing/lighttpd/PKGBUILD
index db98bc4..ee4d780 100644
--- a/abs/core-testing/lighttpd/PKGBUILD
+++ b/abs/core-testing/lighttpd/PKGBUILD
@@ -1,13 +1,15 @@
+# $Id: PKGBUILD 17048 2008-10-24 16:27:19Z pierre $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
pkgname=lighttpd
pkgver=1.4.20
-pkgrel=12
+pkgrel=2
pkgdesc='a secure, fast, compliant and very flexible web-server'
license=('custom')
arch=('i686' 'x86_64')
url="http://www.lighttpd.net/"
-#depends=('pcre' 'openssl' 'zlib' 'bzip2' 'attr' 'libldap')
-depends=('pcre' 'openssl' 'zlib' 'bzip2' 'attr' )
-makedepends=('fcgi' 'libmysqlclient' 'libxml2' 'e2fsprogs' 'sqlite3' 'gdbm' 'pkgconfig')
+depends=('pcre' 'openssl' 'zlib' 'bzip2' 'attr' 'libldap')
+makedepends=('fcgi' 'libmysqlclient' 'lua' 'libxml2' 'e2fsprogs' 'sqlite3' 'gdbm' 'pkgconfig')
optdepends=('libxml2: mod_webdav' \
'e2fsprogs: mod_webdav' \
'lua: mod_cml/mod_magnet' \
@@ -15,11 +17,10 @@ optdepends=('libxml2: mod_webdav' \
'sqlite3: mod_webdav' \
'gdbm: mod_trigger_b4_dl' \
)
-backup=('etc/lighttpd/lighttpd.conf' 'etc/logrotate.d/lighttpd' 'etc/lighttpd/auth-inc.conf')
+backup=('etc/lighttpd/lighttpd.conf' 'etc/logrotate.d/lighttpd')
options=('!libtool' 'emptydirs')
-install='lighttpd.install'
source=("http://www.lighttpd.net/download/lighttpd-${pkgver}.tar.bz2" \
- 'lighttpd.rc.d' 'lighttpd.logrotate.d' lighttpd.conf auth-inc.conf)
+ 'lighttpd.rc.d' 'lighttpd.logrotate.d')
md5sums=('ed6ee0bb714f393219a32768d86984d8'
'bd690eee0d9e51857448770a151023b0'
@@ -34,8 +35,8 @@ build() {
--localstatedir=/var \
--libdir=/usr/lib/lighttpd \
--includedir=/usr/include/lighttpd \
- --with-mysql --without-sqlite3 \
- --without-ldap \
+ --with-mysql \
+ --with-ldap \
--with-attr \
--with-openssl \
--with-kerberos5 \
@@ -44,7 +45,7 @@ build() {
--with-webdav-locks \
--with-gdbm \
--with-memcache \
- --without-lua || return 1
+ --with-lua || return 1
make || return 1
make DESTDIR=$pkgdir install || return 1
@@ -52,22 +53,17 @@ build() {
install -D -m644 ../lighttpd.logrotate.d $pkgdir/etc/logrotate.d/lighttpd
install -d -m755 -o http -g http $pkgdir/var/run/lighttpd/
install -d -m755 -o http -g http $pkgdir/var/log/lighttpd/
-
+ install -D -m644 doc/lighttpd.conf $pkgdir/etc/lighttpd/lighttpd.conf
# set sane defaults
- #sed -e 's|/srv/www/htdocs/|/srv/http/|' \
- # -e 's|/srv/www/|/srv/http/|' \
- # -e 's|#server.username = "wwwrun"|server.username = "http"|' \
- # -e 's|#server.groupname = "wwwrun"|server.groupname = "http"|' \
- # -e 's|#server.pid-file = "/var/run/lighttpd.pid"|server.pid-file = "/var/run/lighttpd/lighttpd.pid"|' \
- # -e 's|/usr/local/bin/php-cgi|/usr/bin/php-cgi|' \
- # -i ${pkgdir}/etc/lighttpd/lighttpd.conf || return 1
- install -D -m644 $startdir/src/lighttpd.conf $pkgdir/etc/lighttpd/lighttpd.conf
- install -D -m644 $startdir/src/auth-inc.conf $pkgdir/etc/lighttpd/auth-inc.conf
+ sed -e 's|/srv/www/htdocs/|/srv/http/|' \
+ -e 's|/srv/www/|/srv/http/|' \
+ -e 's|#server.username = "wwwrun"|server.username = "http"|' \
+ -e 's|#server.groupname = "wwwrun"|server.groupname = "http"|' \
+ -e 's|#server.pid-file = "/var/run/lighttpd.pid"|server.pid-file = "/var/run/lighttpd/lighttpd.pid"|' \
+ -e 's|/usr/local/bin/php-cgi|/usr/bin/php-cgi|' \
+ -i ${pkgdir}/etc/lighttpd/lighttpd.conf || return 1
+
install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
}
-
-#changelog
-#remove ldap
-#add custom lighttpd.conf
diff --git a/abs/core-testing/mcpp/PKGBUILD b/abs/core-testing/mcpp/PKGBUILD
index 9d0afce..57dae67 100644
--- a/abs/core-testing/mcpp/PKGBUILD
+++ b/abs/core-testing/mcpp/PKGBUILD
@@ -1,27 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 22398 2008-12-26 17:32:45Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=mcpp
-pkgver=2.6.4
-pkgrel=2
+pkgver=2.7.2
+pkgrel=1
pkgdesc="Matsui's CPP implementation precisely conformed to standards"
arch=(i686 x86_64)
-license=('custom:')
+license=('custom')
url="http://mcpp.sourceforge.net"
-source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz \
- mcpp-2.6.4-patch)
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz )
depends=(glibc)
+md5sums=('512de48c87ab023a69250edc7a0c7b05')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- patch -Np0 -i ${startdir}/src/mcpp-2.6.4-patch || return 1
- ./configure --prefix=/usr
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install
+ make DESTDIR="${pkgdir}" install || return 1
- mkdir -p ${startdir}/pkg/usr/share/licenses/${pkgname}
- install -m644 ${startdir}/src/${pkgname}-${pkgver}/LICENSE \
- ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ ln -sf ../doc/${pkgname}/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/"
}
-md5sums=('c0f5aa9b13e36ea0f2ab9358c5d65153'
- '80890eb2988d7e80964b814cf134f842')
diff --git a/abs/core-testing/mesa/PKGBUILD b/abs/core-testing/mesa/PKGBUILD
index 9d36715..72d100e 100644
--- a/abs/core-testing/mesa/PKGBUILD
+++ b/abs/core-testing/mesa/PKGBUILD
@@ -1,63 +1,46 @@
-# $Id: PKGBUILD 3486 2008-06-22 21:12:34Z jgc $
+# $Id: PKGBUILD 12996 2008-09-25 18:06:12Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=mesa
-pkgver=7.0.3
-pkgrel=3
+pkgver=7.2
+pkgrel=1
pkgdesc="Mesa OpenGL library"
arch=(i686 x86_64)
license=('LGPL')
url="http://mesa3d.sourceforge.net"
-depends=('libgl' 'glproto>=1.4.9' 'gcc-libs' 'libxt')
-makedepends=('imake' 'pkgconfig')
+depends=('libgl' 'libx11>=1.1.4-3' 'libxt' 'glproto>=1.4.9' 'gcc-libs>=4.3.1')
+makedepends=('pkgconfig' 'dri2proto>=1.1' 'libdrm>=2.3.1')
conflicts=('mesa-apps')
replaces=('mesa-apps')
-source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2
- http://downloads.sourceforge.net/sourceforge/mesa3d/MesaDemos-${pkgver}.tar.bz2
- ftp://ftp.archlinux.org/other/mesa/gl-manpages-1.0.1.tar.bz2
- mesa-6.5-apps-noglut.patch)
-md5sums=('e6e6379d7793af40a6bc3ce1bace572e'
- '47fd6863621d3c9c7dbb870ab7f0c303'
- '6ae05158e678f4594343f32c2ca50515'
- 'cc5a4ea4ea8de4425997fcda2a9d8648')
+source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2
+ http://downloads.sourceforge.net/mesa3d/MesaDemos-${pkgver}.tar.bz2
+ ftp://ftp.archlinux.org/other/mesa/gl-manpages-1.0.1.tar.bz2)
+md5sums=('04d379292e023df0b0266825cb0dbde5'
+ '22e03dc4038cd63f32c21eb60994892b'
+ '6ae05158e678f4594343f32c2ca50515')
build() {
- cd ${startdir}/src/Mesa-${pkgver}
- patch -Np0 -i ${startdir}/src/mesa-6.5-apps-noglut.patch || return 1
-
- unset CFLAGS
- unset CXXFLAGS
-
- CONFIG="linux-dri-x86"
- if [ "${CARCH}" = "x86_64" ]; then
- CONFIG="linux-dri-x86-64"
- sed -i -e "s/lib64/lib/g" configs/${CONFIG}
- fi
- echo "EXTRA_LIB_PATH =" >> configs/${CONFIG}
- echo "SRC_DIRS = glx/x11 glu glw" >> configs/${CONFIG}
- rm -f include/GL/glut*h
- echo "USING_EGL = 0" >> configs/${CONFIG}
- echo "PROGRAM_DIRS =" >> configs/${CONFIG}
- echo "MKDEP = makedepend" >> configs/${CONFIG}
- echo "DRI_DIRS =" >> configs/${CONFIG}
- echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> configs/${CONFIG}
- echo "ARCH_FLAGS += -DGLX_USE_TLS" >> configs/${CONFIG}
- echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> configs/${CONFIG}
+ cd ${srcdir}/Mesa-${pkgver}
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=swrast \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glut || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
- make ${CONFIG} || return 1
- install -m755 -d ${startdir}/pkg/usr
- make INSTALL_DIR=${startdir}/pkg/usr install || return 1
- install -m644 include/GL/*.h ${startdir}/pkg/usr/include/GL/ || return 1
+ install -m755 -d ${pkgdir}/usr/bin
+ install -m755 progs/xdemos/glx{gears,info} ${pkgdir}/usr/bin/ || return 1
- rm -f ${startdir}/pkg/usr/lib/libGL.so*
- cd progs/xdemos
- make CFLAGS+="-I${startdir}/pkg/usr/include" glxinfo glxgears || return 1
- install -m755 -d ${startdir}/pkg/usr/bin || return 1
- install -m755 glxinfo glxgears ${startdir}/pkg/usr/bin/ || return 1
+ rm -f ${pkgdir}/usr/lib/libGL.so*
+ rm -rf ${pkgdir}/usr/lib/xorg
- cd ${startdir}/src/gl-manpages-1.0.1
+ cd ${srcdir}/gl-manpages-1.0.1
./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR=${pkgdir} install || return 1
}
diff --git a/abs/core-testing/mesa/mesa-7.1-link-shared.patch b/abs/core-testing/mesa/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/mesa/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/mythtv/stable/mytharchive/PKGBUILD b/abs/core-testing/mythtv/stable/mytharchive/PKGBUILD
index fb3b755..7d24ae3 100644
--- a/abs/core-testing/mythtv/stable/mytharchive/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mytharchive/PKGBUILD
@@ -4,18 +4,18 @@
pkgname=mytharchive
pkgver=0.21
-pkgrel=1
+pkgrel=2
pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows."
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
license=('GPL')
depends=("mythtv>=${pkgver}" 'libxmu' 'mysql-python' 'pil' 'dvdauthor')
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
-md5sums=('af20a78ac66719feddf9a39f1a799ded')
+md5sums=('00ee70be781b9af5913f046525d79ab9')
groups=('mythtv-extras')
build() {
- cd $startdir/src/mythplugins-${pkgver}
+ cd $startdir/src/mythplugins
. /etc/profile.d/qt3.sh
# use QT3 qmake
diff --git a/abs/core-testing/mythtv/stable/mythbrowser/PKGBUILD b/abs/core-testing/mythtv/stable/mythbrowser/PKGBUILD
index 5a53093..34e64f2 100644
--- a/abs/core-testing/mythtv/stable/mythbrowser/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythbrowser/PKGBUILD
@@ -4,7 +4,7 @@
pkgname=mythbrowser
pkgver=0.21
-pkgrel=2
+pkgrel=3
pkgdesc="Mini web browser for MythTV"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
@@ -13,10 +13,10 @@ depends=("mythtv>=${pkgver}" 'wget' 'libxvmc' 'kdelibs3')
groups=('mythtv-extras')
options=('!makeflags')
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
-md5sums=('af20a78ac66719feddf9a39f1a799ded')
+md5sums=('00ee70be781b9af5913f046525d79ab9')
build() {
- cd $startdir/src/mythplugins-${pkgver}
+ cd $startdir/src/mythplugins
. /etc/profile.d/qt3.sh
. /etc/profile.d/kde3.sh
diff --git a/abs/core-testing/mythtv/stable/mythcontrols/PKGBUILD b/abs/core-testing/mythtv/stable/mythcontrols/PKGBUILD
index cf7f43c..2639834 100644
--- a/abs/core-testing/mythtv/stable/mythcontrols/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythcontrols/PKGBUILD
@@ -4,7 +4,7 @@
pkgname=mythcontrols
pkgver=0.21
-pkgrel=1
+pkgrel=2
pkgdesc="Experimental controls for MythTV"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
@@ -12,11 +12,11 @@ license=('GPL')
depends=("mythtv>=${pkgver}")
options=('!makeflags')
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
-md5sums=('af20a78ac66719feddf9a39f1a799ded')
+md5sums=('00ee70be781b9af5913f046525d79ab9')
groups=('mythtv-extras')
build() {
- cd $startdir/src/mythplugins-${pkgver}
+ cd $startdir/src/mythplugins
. /etc/profile.d/qt3.sh
# use QT3 qmake
diff --git a/abs/core-testing/mythtv/stable/mythflix/PKGBUILD b/abs/core-testing/mythtv/stable/mythflix/PKGBUILD
index f613963..e9033ac 100644
--- a/abs/core-testing/mythtv/stable/mythflix/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythflix/PKGBUILD
@@ -4,18 +4,18 @@
pkgname=mythflix
pkgver=0.21
-pkgrel=1
+pkgrel=2
pkgdesc="Netflix access plugin for MythTV"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
license=('GPL')
depends=("mythtv>=${pkgver}")
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
-md5sums=('af20a78ac66719feddf9a39f1a799ded')
+md5sums=('00ee70be781b9af5913f046525d79ab9')
groups=('mythtv-extras')
build() {
- cd $startdir/src/mythplugins-${pkgver}
+ cd $startdir/src/mythplugins
. /etc/profile.d/qt3.sh
# use QT3 qmake
diff --git a/abs/core-testing/mythtv/stable/mythgallery/PKGBUILD b/abs/core-testing/mythtv/stable/mythgallery/PKGBUILD
index 76a66c5..3218bb4 100644
--- a/abs/core-testing/mythtv/stable/mythgallery/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythgallery/PKGBUILD
@@ -4,18 +4,18 @@
pkgname=mythgallery
pkgver=0.21
-pkgrel=1
+pkgrel=2
pkgdesc="Image gallery plugin for MythTV"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
license=('GPL')
depends=("mythtv>=${pkgver}" 'libexif' 'libtiff')
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
-md5sums=('af20a78ac66719feddf9a39f1a799ded')
+md5sums=('00ee70be781b9af5913f046525d79ab9')
groups=('mythtv-extras')
build() {
- cd $startdir/src/mythplugins-${pkgver}
+ cd $startdir/src/mythplugins
. /etc/profile.d/qt3.sh
# use QT3 qmake
diff --git a/abs/core-testing/mythtv/stable/mythgame/PKGBUILD b/abs/core-testing/mythtv/stable/mythgame/PKGBUILD
index 33fb9a5..74a1e00 100644
--- a/abs/core-testing/mythtv/stable/mythgame/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythgame/PKGBUILD
@@ -4,18 +4,18 @@
pkgname=mythgame
pkgver=0.21
-pkgrel=1
+pkgrel=2
pkgdesc="Emulation plugin for MythTV"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
license=('GPL')
depends=("mythtv>=${pkgver}" 'zlib')
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
-md5sums=('af20a78ac66719feddf9a39f1a799ded')
+md5sums=('00ee70be781b9af5913f046525d79ab9')
groups=('mythtv-extras')
build() {
- cd $startdir/src/mythplugins-$pkgver
+ cd $startdir/src/mythplugins
export QMAKESPEC='linux-g++'
source /etc/profile.d/qt3.sh
diff --git a/abs/core-testing/mythtv/stable/mythmusic/PKGBUILD b/abs/core-testing/mythtv/stable/mythmusic/PKGBUILD
index fbbfbc4..73415c7 100644
--- a/abs/core-testing/mythtv/stable/mythmusic/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythmusic/PKGBUILD
@@ -4,7 +4,7 @@
pkgname=mythmusic
pkgver=0.21
-pkgrel=5
+pkgrel=7
pkgdesc="Music playing plugin for MythTV"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
@@ -13,11 +13,11 @@ depends=("mythtv>=${pkgver}" 'libid3tag' 'libmad' 'libvorbis' 'flac>=1.1.4' 'lib
'cdparanoia' 'fftw2' 'sdl' 'faad2>=2.6.1' 'lame' 'taglib' \
'libvisual-plugins' 'libvisual-projectm')
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
-md5sums=('af20a78ac66719feddf9a39f1a799ded')
+md5sums=('00ee70be781b9af5913f046525d79ab9')
groups=('mythtv-extras')
build() {
- cd $startdir/src/mythplugins-${pkgver}
+ cd $startdir/src/mythplugins
. /etc/profile.d/qt3.sh
# use QT3 qmake
diff --git a/abs/core-testing/mythtv/stable/mythnews/PKGBUILD b/abs/core-testing/mythtv/stable/mythnews/PKGBUILD
index 9133755..3288ce7 100644
--- a/abs/core-testing/mythtv/stable/mythnews/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythnews/PKGBUILD
@@ -4,18 +4,18 @@
pkgname=mythnews
pkgver=0.21
-pkgrel=1
+pkgrel=2
pkgdesc="News checking plugin for MythTV"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
license=('GPL')
depends=("mythtv>=${pkgver}")
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
-md5sums=('af20a78ac66719feddf9a39f1a799ded')
+md5sums=('00ee70be781b9af5913f046525d79ab9')
groups=('mythtv-extras')
build() {
- cd $startdir/src/mythplugins-${pkgver}
+ cd $startdir/src/mythplugins
. /etc/profile.d/qt3.sh
# use QT3 qmake
diff --git a/abs/core-testing/mythtv/stable/mythphone/PKGBUILD b/abs/core-testing/mythtv/stable/mythphone/PKGBUILD
index 24cd04f..b093caa 100644
--- a/abs/core-testing/mythtv/stable/mythphone/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythphone/PKGBUILD
@@ -4,18 +4,18 @@
pkgname=mythphone
pkgver=0.21
-pkgrel=1
+pkgrel=2
pkgdesc="Plugin that allows phone calls to be made to MythTv"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
license=('GPL')
depends=("mythtv>=${pkgver}")
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
-md5sums=('af20a78ac66719feddf9a39f1a799ded')
+md5sums=('00ee70be781b9af5913f046525d79ab9')
groups=('mythtv-extras')
build() {
- cd $startdir/src/mythplugins-${pkgver}
+ cd $startdir/src/mythplugins
. /etc/profile.d/qt3.sh
# use QT3 qmake
diff --git a/abs/core-testing/mythtv/stable/mythsmolt/PKGBUILD b/abs/core-testing/mythtv/stable/mythsmolt/PKGBUILD
index a56292c..854b2e3 100644
--- a/abs/core-testing/mythtv/stable/mythsmolt/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythsmolt/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=mythsmolt
pkgver=0.21
-pkgrel=3
+pkgrel=4
pkgdesc="mythsmolt, a hardware profileing tool"
arch=('i686' 'x86_64')
url="http://www.mythvantage.com"
diff --git a/abs/core-testing/mythtv/stable/mythtv/PKGBUILD b/abs/core-testing/mythtv/stable/mythtv/PKGBUILD
index 3cd45a8..8ba8102 100644
--- a/abs/core-testing/mythtv/stable/mythtv/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythtv/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=mythtv
pkgver=0.21
-pkgrel=17
+pkgrel=19
pkgdesc="A Homebrew PVR project"
arch=('i686' 'x86_64')
depends=('bash' 'mysql-clients>=5.0' 'qt3' 'lame' 'lirc-utils' 'ffmpeg' \
@@ -9,7 +9,7 @@ backup=(etc/mythtv/mythbackend.conf etc/mythtv/mysql.txt)
source=(ftp://ftp.knoppmyth.net/R6/sources/${pkgname}-${pkgver}-fixes.tar.bz2 \
mythbackend myththemedmenu.cpp.patch myththemedmenu.h.patch smolt_jump.patch )
-#md5sums=('08506f0c5120c072085b6995f529167a' '7ef6de58240e7aad389a0b13d91b1cf6'\
+#md5sums=('6e8180a0122d5fe335aa5e4b036ffc1d' '7ef6de58240e7aad389a0b13d91b1cf6'\
# 'a0ecb7f476cb71c0c1ac90d349fc7695')
license=('GPL2')
@@ -19,7 +19,7 @@ url="http://www.mythtv.org/"
install=mythtv.install
build() {
- cd $startdir/src/${pkgname}-${pkgver} || return 1
+ cd $startdir/src/${pkgname}-${pkgver} || return 1
#apply patches
patch -p0 < ../myththemedmenu.cpp.patch
diff --git a/abs/core-testing/mythtv/stable/mythtv/menu-xml/library.xml.patch b/abs/core-testing/mythtv/stable/mythtv/menu-xml/library.xml.patch
index 19955dc..ac42e90 100644
--- a/abs/core-testing/mythtv/stable/mythtv/menu-xml/library.xml.patch
+++ b/abs/core-testing/mythtv/stable/mythtv/menu-xml/library.xml.patch
@@ -1,21 +1,17 @@
---- library.xml.orig 2008-10-02 22:46:30.000000000 +0000
-+++ library.xml 2008-07-02 04:05:15.000000000 +0000
-@@ -117,13 +117,11 @@
- <depends>mythFM mythfm</depends>
+--- library.xml.orig 2009-01-09 03:55:53.000000000 +0000
++++ library.xml 2009-01-09 04:08:30.000000000 +0000
+@@ -118,11 +118,9 @@
</button>
-- <button>
+ <button>
- <type>STREAM</type>
-- <text>Play online streams</text>
+- <text>Play Online Streams</text>
- <text lang="HE">נגן מדיה מכוונת</text>
- <action>PLUGIN mythstream</action>
- <depends>mythstream</depends>
-- </button>
-+ <button>
+ <type>STREAM</type>
+ <text>Online Streams</text>
+ <action>MENU is.xml</action>
-+ </button>
+ </button>
<button>
- <type>IMAGES</type>
diff --git a/abs/core-testing/mythtv/stable/mythvideo/PKGBUILD b/abs/core-testing/mythtv/stable/mythvideo/PKGBUILD
index 21f2a22..a1bab3f 100644
--- a/abs/core-testing/mythtv/stable/mythvideo/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythvideo/PKGBUILD
@@ -4,7 +4,7 @@
pkgname=mythvideo
pkgver=0.21
-pkgrel=2
+pkgrel=3
pkgdesc="Video playback and browsing plugin for MythTV"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
@@ -12,12 +12,12 @@ license=('GPL')
depends=("mythtv>=${pkgver}" 'mplayer' 'perlxml' 'perl-libwww' 'perl-uri' 'perl-xml-simple' 'ffmpeg')
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2"\
mtd)
-md5sums=('af20a78ac66719feddf9a39f1a799ded' '476c12ba074794ad7f4ae092bdf949d6')
+md5sums=('00ee70be781b9af5913f046525d79ab9' '476c12ba074794ad7f4ae092bdf949d6')
replaces=('mythdvd')
groups=('mythtv-extras')
build() {
- cd $startdir/src/mythplugins-${pkgver}
+ cd $startdir/src/mythplugins
. /etc/profile.d/qt3.sh
# use QT3 qmake
diff --git a/abs/core-testing/mythtv/stable/mythweather/PKGBUILD b/abs/core-testing/mythtv/stable/mythweather/PKGBUILD
index ce2894a..42e9dc1 100644
--- a/abs/core-testing/mythtv/stable/mythweather/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythweather/PKGBUILD
@@ -4,18 +4,18 @@
pkgname=mythweather
pkgver=0.21
-pkgrel=1
+pkgrel=2
pkgdesc="Weather checking plugin for MythTV"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
license=('GPL')
depends=("mythtv>=${pkgver}" 'wget')
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
-md5sums=('af20a78ac66719feddf9a39f1a799ded')
+md5sums=('00ee70be781b9af5913f046525d79ab9')
groups=('mythtv-extras')
build() {
- cd $startdir/src/mythplugins-${pkgver}
+ cd $startdir/src/mythplugins
. /etc/profile.d/qt3.sh
# use QT3 qmake
diff --git a/abs/core-testing/mythtv/stable/mythweb/PKGBUILD b/abs/core-testing/mythtv/stable/mythweb/PKGBUILD
index 6474b01..d5ddefb 100644
--- a/abs/core-testing/mythtv/stable/mythweb/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythweb/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=mythweb
pkgver=0.21
-pkgrel=8
+pkgrel=9
pkgdesc="Web interface for MythTV's backend"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
@@ -8,7 +8,7 @@ license=('GPL')
depends=("mythtv>=${pkgver}" 'lighttpd' 'php')
install=mythweb.install
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
-md5sums=('af20a78ac66719feddf9a39f1a799ded')
+md5sums=('00ee70be781b9af5913f046525d79ab9')
groups=('mythtv-extras')
DOCROOT=/data/srv/httpd/htdocs/mythweb
@@ -21,7 +21,7 @@ build() {
# tar -zxvf $startdir/patch/icons.tar.gz
###
- cp -r $startdir/src/mythplugins-$pkgver/$pkgname/* $startdir/pkg/$DOCROOT
+ cp -r $startdir/src/mythplugins/$pkgname/* $startdir/pkg/$DOCROOT
# cp $startdir/src/mythplugins-$pkgver/$pkgname/data/.htaccess $startdir/pkg/$DOCROOT
rm $startdir/pkg/srv/$DOCROOT/README
chown -R http:users $startdir/pkg/$DOCROOT
diff --git a/abs/core-testing/nvidia-71xx/PKGBUILD b/abs/core-testing/nvidia-71xx/PKGBUILD
index e879abe..af98000 100644
--- a/abs/core-testing/nvidia-71xx/PKGBUILD
+++ b/abs/core-testing/nvidia-71xx/PKGBUILD
@@ -3,8 +3,8 @@
pkgname=nvidia-71xx
pkgver=71.86.06
-_kernver='2.6.26-ARCH'
-pkgrel=3
+_kernver='2.6.27-ARCH'
+pkgrel=4
pkgdesc="NVIDIA legacy drivers for kernel26, 71xx branch"
arch=(i686 x86_64)
[ "$CARCH" = "i686" ] && ARCH=x86
diff --git a/abs/core-testing/nvidia-71xx/nvidia-71xx.install b/abs/core-testing/nvidia-71xx/nvidia-71xx.install
index 18b7435..9956ea8 100644
--- a/abs/core-testing/nvidia-71xx/nvidia-71xx.install
+++ b/abs/core-testing/nvidia-71xx/nvidia-71xx.install
@@ -1,6 +1,6 @@
# arg 1: the new package version
post_install() {
- KERNEL_VERSION='2.6.26-ARCH'
+ KERNEL_VERSION='2.6.27-ARCH'
depmod -v $KERNEL_VERSION > /dev/null 2>&1
}
@@ -13,7 +13,7 @@ post_upgrade() {
# arg 1: the old package version
post_remove() {
- KERNEL_VERSION='2.6.26-ARCH'
+ KERNEL_VERSION='2.6.27-ARCH'
depmod -v $KERNEL_VERSION > /dev/null 2>&1
rmmod nvidia >/dev/null 2>&1
}
diff --git a/abs/core-testing/nvidia-96xx-utils/PKGBUILD b/abs/core-testing/nvidia-96xx-utils/PKGBUILD
index b745a3c..749dc08 100644
--- a/abs/core-testing/nvidia-96xx-utils/PKGBUILD
+++ b/abs/core-testing/nvidia-96xx-utils/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 5959 2008-07-21 20:38:14Z thomas $
+# $Id: PKGBUILD 18827 2008-11-09 14:01:28Z jgc $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: James Rayner <iphitus@gmail.com>
pkgname=nvidia-96xx-utils
-pkgver=96.43.07
+pkgver=96.43.09
pkgrel=1
pkgdesc="NVIDIA legacy drivers utilities and libraries, 96xx branch."
arch=(i686 x86_64)
@@ -16,9 +16,9 @@ conflicts=('libgl' 'libgl-dri' 'ati-fglrx-utils' 'nvidia-utils' \
'nvidia-71xx-utils' 'nvidia-legacy-utils')
provides=('libgl')
install=nvidia-96xx.install
-source=(http://us.download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run \
+source=(http://download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run \
supported-cards.txt)
-md5sums=('8fa2b7c5e4629850d4bd33033ec46166'
+md5sums=('758c739114b81ea2cb7da7c22ab80a7e'
'6363d7e494d33729609540088e33e73f')
[ "$CARCH" = "x86_64" ] && md5sums=('c03bd2469292d91dde8767af1418c4e1'
'6363d7e494d33729609540088e33e73f')
@@ -31,14 +31,14 @@ build()
sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run --extract-only
cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/usr/
- mkdir -p $startdir/pkg/usr/{lib,bin,share/applications,share/pixmaps,man/man1}
+ mkdir -p $startdir/pkg/usr/{lib,bin,share/applications,share/pixmaps,share/man/man1}
mkdir -p $startdir/pkg/usr/lib/xorg/modules/{extensions,drivers}
mkdir -p $startdir/pkg/usr/share/licenses/nvidia-96xx/
install lib/{libGLcore.so.${pkgver},libGL.so.${pkgver},libnvidia-cfg.so.${pkgver},tls/libnvidia-tls.so.${pkgver}} \
$startdir/pkg/usr/lib/ || return 1
- install -m644 share/man/man1/* $startdir/pkg/usr/man/man1/ || return 1
- rm $startdir/pkg/usr/man/man1/nvidia-installer.1.gz || return 1
+ install -m644 share/man/man1/* $startdir/pkg/usr/share/man/man1/ || return 1
+ rm $startdir/pkg/usr/share/man/man1/nvidia-installer.1.gz || return 1
install X11R6/lib/libXv* $startdir/pkg/usr/lib/ || return 1
install -m644 share/applications/nvidia-settings.desktop $startdir/pkg/usr/share/applications/ || return 1
# fix nvidia .desktop file
diff --git a/abs/core-testing/nvidia-96xx/PKGBUILD b/abs/core-testing/nvidia-96xx/PKGBUILD
index 3ccbbfe..0041d95 100644
--- a/abs/core-testing/nvidia-96xx/PKGBUILD
+++ b/abs/core-testing/nvidia-96xx/PKGBUILD
@@ -1,26 +1,23 @@
-# $Id: PKGBUILD 14780 2008-10-10 15:35:36Z thomas $
+# $Id: PKGBUILD 19057 2008-11-14 11:41:03Z pierre $
# Maintainer : Tobias Powalowski <tpowa@archlinux.org>
pkgname=nvidia-96xx
-pkgver=96.43.07
-_kernver='2.6.26-ARCH'
-pkgrel=6
+pkgver=96.43.09
+_kernver='2.6.27-ARCH'
+pkgrel=1
pkgdesc="NVIDIA legacy drivers for kernel26, 96xx branch"
arch=(i686 x86_64)
license=('custom:NVIDIA')
[ "$CARCH" = "i686" ] && ARCH=x86
[ "$CARCH" = "x86_64" ] && ARCH=x86_64
url="http://www.nvidia.com/"
-depends=('kernel26>=2.6.26' 'kernel26<2.6.28' 'nvidia-96xx-utils')
+depends=('kernel26>=2.6.27' 'kernel26<2.6.28' 'nvidia-96xx-utils')
conflicts=('nvidia' 'nvidia-71xx' 'nvidia-legacy')
install=nvidia-96xx.install
license=('custom')
-source=(http://us.download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run
- NVIDIA_173.14.12_2.6.27.patch)
-md5sums=('8fa2b7c5e4629850d4bd33033ec46166'
- 'cd4a68b5a88be6976b90cd0df6bfe89e')
-[ "$CARCH" = "x86_64" ] && md5sums=('c03bd2469292d91dde8767af1418c4e1'
- 'cd4a68b5a88be6976b90cd0df6bfe89e')
+source=(http://download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run)
+md5sums=('758c739114b81ea2cb7da7c22ab80a7e')
+[ "$CARCH" = "x86_64" ] && md5sums=('c03bd2469292d91dde8767af1418c4e1')
build()
{
@@ -29,9 +26,6 @@ build()
sh NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run --extract-only
cd NVIDIA-Linux-$ARCH-${pkgver}-pkg0
- # Any extra patches are applied in here...
- patch -Np1 -i ../NVIDIA_173.14.12_2.6.27.patch || return 1
-
cd usr/src/nv/
ln -s Makefile.kbuild Makefile
make SYSSRC=/lib/modules/$_kernver/build module || return 1
diff --git a/abs/core-testing/nvidia-96xx/nvidia-96xx.install b/abs/core-testing/nvidia-96xx/nvidia-96xx.install
index dbbec39..dfded65 100644
--- a/abs/core-testing/nvidia-96xx/nvidia-96xx.install
+++ b/abs/core-testing/nvidia-96xx/nvidia-96xx.install
@@ -1,6 +1,6 @@
# arg 1: the new package version
post_install() {
- KERNEL_VERSION='2.6.26-ARCH'
+ KERNEL_VERSION='2.6.27-ARCH'
depmod -v $KERNEL_VERSION > /dev/null 2>&1
}
@@ -13,7 +13,7 @@ post_upgrade() {
# arg 1: the old package version
post_remove() {
- KERNEL_VERSION='2.6.26-ARCH'
+ KERNEL_VERSION='2.6.27-ARCH'
depmod -v $KERNEL_VERSION > /dev/null 2>&1
}
diff --git a/abs/core-testing/nvidia-utils/PKGBUILD b/abs/core-testing/nvidia-utils/PKGBUILD
index d1058c4..384086a 100644
--- a/abs/core-testing/nvidia-utils/PKGBUILD
+++ b/abs/core-testing/nvidia-utils/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 7914 2008-08-05 08:01:00Z tpowa $
+# $Id: PKGBUILD 19054 2008-11-14 11:36:20Z pierre $
# Maintainer: Thomas Baechler <thomas@archlinux.org>
# Contributor: James Rayner <iphitus@gmail.com>
pkgname=nvidia-utils
-pkgver=173.14.12
-pkgrel=5
+pkgver=177.82
+pkgrel=1
pkgdesc="NVIDIA drivers utilities and libraries."
arch=('i686' 'x86_64')
[ "$CARCH" = "i686" ] && ARCH=x86
@@ -18,9 +18,9 @@ license=('custom')
install=nvidia.install
source=(http://us.download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run \
supported-cards.txt)
-md5sums=('76b8eba1b14fc273a1a4044705b0aa56'
+md5sums=('882f34a662f0175682fdc4a9bec909ba'
'bf8d68d66757096c3ab17653230bf2a8')
-[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d'
+[ "$CARCH" = "x86_64" ] && md5sums=('6a6d04411529c8d7616deee3d68c5346'
'bf8d68d66757096c3ab17653230bf2a8')
options=(docs !strip)
diff --git a/abs/core-testing/nvidia/PKGBUILD b/abs/core-testing/nvidia/PKGBUILD
index 0814d77..b1a5f33 100644
--- a/abs/core-testing/nvidia/PKGBUILD
+++ b/abs/core-testing/nvidia/PKGBUILD
@@ -1,22 +1,22 @@
-# $Id: PKGBUILD 8443 2008-08-11 05:11:22Z tpowa $
+# $Id: PKGBUILD 19051 2008-11-14 11:33:00Z pierre $
# Maintainer : Thomas Baechler <thomas@archlinux.org>
pkgname=nvidia
-pkgver=173.14.12
-_kernver='2.6.26-ARCH'
-pkgrel=4
+pkgver=177.82
+_kernver='2.6.27-ARCH'
+pkgrel=1
pkgdesc="NVIDIA drivers for kernel26."
arch=('i686' 'x86_64')
[ "$CARCH" = "i686" ] && ARCH=x86
[ "$CARCH" = "x86_64" ] && ARCH=x86_64
url="http://www.nvidia.com/"
-depends=('kernel26>=2.6.26.2-1' 'kernel26<2.6.27' 'nvidia-utils')
+depends=('kernel26>=2.6.27' 'kernel26<2.6.28' 'nvidia-utils')
conflicts=('nvidia-96xx' 'nvidia-71xx' 'nvidia-legacy')
license=('custom')
install=nvidia.install
source=(http://us.download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run)
-md5sums=('76b8eba1b14fc273a1a4044705b0aa56')
-[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d')
+md5sums=('882f34a662f0175682fdc4a9bec909ba')
+[ "$CARCH" = "x86_64" ] && md5sums=('6a6d04411529c8d7616deee3d68c5346')
build()
{
diff --git a/abs/core-testing/nvidia/nvidia.install b/abs/core-testing/nvidia/nvidia.install
index dbbec39..dfded65 100644
--- a/abs/core-testing/nvidia/nvidia.install
+++ b/abs/core-testing/nvidia/nvidia.install
@@ -1,6 +1,6 @@
# arg 1: the new package version
post_install() {
- KERNEL_VERSION='2.6.26-ARCH'
+ KERNEL_VERSION='2.6.27-ARCH'
depmod -v $KERNEL_VERSION > /dev/null 2>&1
}
@@ -13,7 +13,7 @@ post_upgrade() {
# arg 1: the old package version
post_remove() {
- KERNEL_VERSION='2.6.26-ARCH'
+ KERNEL_VERSION='2.6.27-ARCH'
depmod -v $KERNEL_VERSION > /dev/null 2>&1
}
diff --git a/abs/core-testing/openexr/PKGBUILD b/abs/core-testing/openexr/PKGBUILD
index 1c92fbb..c71f10b 100644
--- a/abs/core-testing/openexr/PKGBUILD
+++ b/abs/core-testing/openexr/PKGBUILD
@@ -1,24 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 17480 2008-10-30 16:52:29Z pierre $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
pkgname=openexr
-pkgver=1.4.0a
-pkgrel=2
-depends=('mesa' 'libxext' 'libxft' 'fltk')
-makedepends=('xproto')
+pkgver=1.6.1
+pkgrel=1
+depends=('zlib' 'ilmbase')
pkgdesc="openexr library for EXR images"
arch=(i686 x86_64)
-options=(!libtool)
-source=(http://savannah.nongnu.org/download/$pkgname/$pkgname-$pkgver.tar.gz gcc43.patch)
+options=('!libtool')
+license=('custom')
+source=("http://savannah.nongnu.org/download/$pkgname/$pkgname-$pkgver.tar.gz" 'gcc43.patch')
url="http://www.openexr.org"
+md5sums=('11951f164f9c872b183df75e66de145a' '7c83ee3d69ad688142e7de63cb68e70a')
build() {
- cd $startdir/src/$pkgname-1.4.0
- # gcc4 fix
- #patch -Np1 -i ../openexr-gcc4.patch
- patch -Np1 -i ../gcc43.patch
+ cd $startdir/src/$pkgname-$pkgver
+ patch -p1 -i $srcdir/gcc43.patch || return 1
./configure --prefix=/usr
make || return 1
make DESTDIR=$startdir/pkg install
+ install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
}
-md5sums=('d0a4b9a930c766fa51561b05fb204afe' 'd972a8ea4296762ea30a3dc7de2208ac')
diff --git a/abs/core-testing/openexr/gcc43.patch b/abs/core-testing/openexr/gcc43.patch
index 08ae699..3624872 100644
--- a/abs/core-testing/openexr/gcc43.patch
+++ b/abs/core-testing/openexr/gcc43.patch
@@ -1,21 +1,22 @@
---- a/exrenvmap/main.cpp
-+++ b/exrenvmap/main.cpp
-@@ -46,6 +46,8 @@
+diff -Nura openexr-1.6.1/exrenvmap/main.cpp openexr-1.6.1.new/exrenvmap/main.cpp
+--- openexr-1.6.1/exrenvmap/main.cpp 2007-04-25 03:07:51.000000000 +0200
++++ openexr-1.6.1.new/exrenvmap/main.cpp 2008-10-30 17:18:13.000000000 +0100
+@@ -45,6 +45,7 @@
+ #include <iostream>
#include <exception>
#include <stdlib.h>
++#include <string.h>
-+#include <cstring>
-+
using namespace Imf;
using namespace std;
-
---- a/exrmaketiled/main.cpp
-+++ b/exrmaketiled/main.cpp
-@@ -47,6 +47,8 @@
+diff -Nura openexr-1.6.1/exrmaketiled/main.cpp openexr-1.6.1.new/exrmaketiled/main.cpp
+--- openexr-1.6.1/exrmaketiled/main.cpp 2007-04-25 03:08:45.000000000 +0200
++++ openexr-1.6.1.new/exrmaketiled/main.cpp 2008-10-30 17:18:40.000000000 +0100
+@@ -46,6 +46,7 @@
+ #include <exception>
#include <string>
#include <stdlib.h>
++#include <string.h>
-+#include <cstring>
-+
using namespace Imf;
- using namespace std;
+ using namespace std;
diff --git a/abs/core-testing/openssh/PKGBUILD b/abs/core-testing/openssh/PKGBUILD
index 523544f..3313676 100644
--- a/abs/core-testing/openssh/PKGBUILD
+++ b/abs/core-testing/openssh/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 3735 2008-06-30 20:01:30Z andyrtr $
+# $Id: PKGBUILD 20515 2008-12-05 12:08:00Z allan $
# Maintainer: Aaron Griffin <aaron@archlinux.org>
# Contributor: judd <jvinet@zeroflux.org>
pkgname=openssh
-pkgver=5.0p1
+pkgver=5.1p1
pkgrel=2
#_gsskexver=20080404
pkgdesc='A Secure SHell server/client'
@@ -15,10 +15,8 @@ depends=('openssl>=0.9.8g' 'zlib' 'pam' 'tcp_wrappers' 'heimdal>=1.2-1')
source=(ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/$pkgname-$pkgver.tar.gz
sshd sshd.confd sshd.pam)
#http://www.sxw.org.uk/computing/patches/$pkgname-$pkgver-gsskex-$_gsskexver.patch
-md5sums=('1f1dfaa775f33dd3328169de9bdc292a'
- 'd9ee5e0a0d143689b3d6f11454a2a892'
- 'e2cea70ac13af7e63d40eb04415eacd5'
- '1c7c2ea8734ec7e3ca58d820634dc73a')
+md5sums=('03f2d0c1b5ec60d4ac9997a146d2faec' 'd9ee5e0a0d143689b3d6f11454a2a892'
+ 'e2cea70ac13af7e63d40eb04415eacd5' '1c7c2ea8734ec7e3ca58d820634dc73a')
build() {
cd $startdir/src/$pkgname-$pkgver
@@ -49,13 +47,17 @@ build() {
install -D -m755 contrib/ssh-copy-id $startdir/pkg/usr/bin/ssh-copy-id
install -D -m644 contrib/ssh-copy-id.1 $startdir/pkg/usr/man/man1/ssh-copy-id.1
- #adjust our config files
+ i# sshd_config
sed -i \
-e 's|^#ListenAddress 0.0.0.0|ListenAddress 0.0.0.0|g' \
-e 's|^#UsePAM no|UsePAM yes|g' \
-e 's|^#ChallengeResponseAuthentication yes|ChallengeResponseAuthentication no|g' \
$startdir/pkg/etc/ssh/sshd_config
- sed -i -e 's|^# Host \*|Host *|g' $startdir/pkg/etc/ssh/ssh_config
echo "HashKnownHosts yes" >> $startdir/pkg/etc/ssh/ssh_config
echo "StrictHostKeyChecking ask" >> $startdir/pkg/etc/ssh/ssh_config
+
+ #ssh_config
+ sed -i \
+ -e 's|^# Host \*|Host *|g' \
+ $startdir/pkg/etc/ssh/ssh_config
}
diff --git a/abs/core-testing/openssl/PKGBUILD b/abs/core-testing/openssl/PKGBUILD
index ec3fe68..c52c9aa 100644
--- a/abs/core-testing/openssl/PKGBUILD
+++ b/abs/core-testing/openssl/PKGBUILD
@@ -1,28 +1,30 @@
-# $Id: PKGBUILD 9446 2008-08-17 18:04:42Z pierre $
+# $Id: PKGBUILD 21679 2008-12-14 17:14:03Z pierre $
# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
pkgname=openssl
-pkgver=0.9.8h
-pkgrel=13
+pkgver=0.9.8i
+pkgrel=4
pkgdesc='The Open Source toolkit for Secure Sockets Layer and Transport Layer Security'
arch=('i686' 'x86_64')
url='http://www.openssl.org'
license=('custom:BSD')
-groups=('base')
-depends=('glibc')
+depends=('zlib' 'perl')
+optdepends=('ca-certificates')
options=('!makeflags')
source=("http://www.openssl.org/source/${pkgname}-${pkgver}.tar.gz" \
- 'http://www.linuxfromscratch.org/patches/blfs/svn/openssl-0.9.8g-fix_manpages-1.patch')
-md5sums=('7d3d41dafc76cf2fcb5559963b5783b3'
+ 'http://www.linuxfromscratch.org/patches/blfs/svn/openssl-0.9.8i-fix_manpages-1.patch')
+md5sums=('561e00f18821c74b2b86c8c7786f9d8b'
'04a6a88c2ee4badd4f8649792b73eaf3')
build() {
- cd $startdir/src/$pkgname-$pkgver
+ cd $srcdir/$pkgname-$pkgver
- patch -p1 -i ../openssl-0.9.8g-fix_manpages-1.patch || return 1
- ./config --prefix=/usr --openssldir=/etc/ssl shared
+ patch -p1 -i $srcdir/openssl-0.9.8i-fix_manpages-1.patch || return 1
+ ./config --prefix=/usr --openssldir=/etc/ssl shared zlib-dynamic -Wa,--noexecstack
make || return 1
- make INSTALL_PREFIX=$startdir/pkg MANDIR=/usr/share/man install
+ make test || return 1
+ make INSTALL_PREFIX=$pkgdir MANDIR=/usr/share/man install
- install -D -m644 LICENSE $startdir/pkg/usr/share/licenses/$pkgname/LICENSE
+ install -D -m644 LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
}
diff --git a/abs/core-testing/pam/PKGBUILD b/abs/core-testing/pam/PKGBUILD
index 4bdca6a..0750e52 100644
--- a/abs/core-testing/pam/PKGBUILD
+++ b/abs/core-testing/pam/PKGBUILD
@@ -1,22 +1,23 @@
-# $Id: PKGBUILD 3761 2008-06-30 20:27:30Z andyrtr $
+# $Id: PKGBUILD 17251 2008-10-27 08:14:27Z jgc $
# Maintainer: judd <jvinet@zeroflux.org>
pkgname=pam
-pkgver=1.0.1
-pkgrel=11
+pkgver=1.0.2
+pkgrel=2
pkgdesc="PAM (Pluggable Authentication Modules) library"
arch=(i686 x86_64)
license=('GPL2')
url="http://www.kernel.org/pub/linux/libs/pam/"
groups=('base')
depends=('glibc' 'db>=4.7' 'cracklib')
+makedepends=('flex')
backup=(etc/security/{access.conf,group.conf,limits.conf,namespace.conf,namespace.init,pam_env.conf,time.conf} etc/pam.d/other etc/default/passwd etc/environment)
source=(http://www.kernel.org/pub/linux/libs/pam/library/Linux-PAM-$pkgver.tar.bz2 \
- ftp://ftp.suse.com/pub/people/kukuk/pam/pam_unix2/pam_unix2-2.1.tar.bz2 \
+ ftp://ftp.suse.com/pub/people/kukuk/pam/pam_unix2/pam_unix2-2.6.tar.bz2 \
other)
options=('!libtool' '!emptydirs')
-md5sums=('1c75f81bd44c5da93014992820917847'
- '08d3bc1940897b5dfcbe2f51dd979ad0'
- '6e6c8719e5989d976a14610f340bd33a')
+md5sums=('fc5e35645b75befae28c88b711b28ffb'
+ 'e2788389a6c59224110a45fcff30e02b'
+ '6e6c8719e5989d976a14610f340bd33a')
build() {
cd $startdir/src/Linux-PAM-$pkgver
@@ -26,7 +27,7 @@ build() {
install -D -m644 ../other $startdir/pkg/etc/pam.d/other
# build pam_unix2 module
# source ftp://ftp.suse.com/pub/people/kukuk/pam/pam_unix2
- cd $startdir/src/pam_unix2-2.1
+ cd $startdir/src/pam_unix2-2.6
./configure
make || return 1
make DESTDIR=$startdir/pkg install
diff --git a/abs/core-testing/pango/PKGBUILD b/abs/core-testing/pango/PKGBUILD
index 5284f02..afa7a8f 100644
--- a/abs/core-testing/pango/PKGBUILD
+++ b/abs/core-testing/pango/PKGBUILD
@@ -1,24 +1,24 @@
-# $Id: PKGBUILD 4025 2008-07-02 18:01:45Z jgc $
+# $Id: PKGBUILD 22043 2008-12-21 12:14:05Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=pango
-pkgver=1.20.5
+pkgver=1.22.4
pkgrel=1
pkgdesc="A library for layout and rendering of text"
arch=(i686 x86_64)
license=('LGPL')
-depends=('glib2>=2.16.4' 'cairo>=1.6.4' 'libxft>=2.1.12' 'libthai>=0.1.9')
+depends=('glib2>=2.18.3' 'cairo>=1.8.6' 'libxft>=2.1.13' 'libthai>=0.1.9')
makedepends=('pkgconfig' 'libxt')
options=('!libtool' '!emptydirs')
install=pango.install
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.20/${pkgname}-${pkgver}.tar.bz2)
-url="http://www.gtk.org/"
-md5sums=('052b60a12f6b2eb4f251ab961f2b2b84')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.22/${pkgname}-${pkgver}.tar.bz2)
+url="http://www.pango.org/"
+md5sums=('7c3f3748052799746d73c6d3a0cc1205')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr --sysconfdir=/etc \
- --localstatedir=/var --without-qt || return 1
+ --localstatedir=/var || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/pango/bgo563356.patch b/abs/core-testing/pango/bgo563356.patch
new file mode 100644
index 0000000..226fd0c
--- /dev/null
+++ b/abs/core-testing/pango/bgo563356.patch
@@ -0,0 +1,305 @@
+diff -aur old/ChangeLog new/ChangeLog
+--- old/ChangeLog 2008-12-06 14:35:33.037390818 +0800
++++ new/ChangeLog 2008-12-06 14:35:11.475339336 +0800
+@@ -1,3 +1,39 @@
++2008-12-05 Behdad Esfahbod <behdad@gnome.org>
++
++ Bug 563356 – The input area of firefox and the blank width after text
++ in gnome-menu was stretched too wide, under pango-1.22.3
++
++ * docs/tmpl/fonts.sgml:
++ * pango/pango-impl-utils.h:
++ * pango/pangocairo-atsuifont.c
++ (pango_cairo_atsui_font_create_metrics_for_context):
++ * pango/pangocairo-win32font.c
++ (pango_cairo_win32_font_create_metrics_for_context):
++ * pango/pangofc-font.c (pango_fc_font_create_metrics_for_context):
++ For approximate_char_width calculation take each char's width into
++ account. That is, do a weighted average instead of uniform average.
++ g_unichar_iszerowidth() chars count as 0, g_unichar_iswide() chars
++ count 2, and the rest count as 1. Pretty much wcwidth() behavior.
++ See bug report for rationale.
++
++2008-11-28 Behdad Esfahbod <behdad@gnome.org>
++
++ Bug 562574 – Pangocariowin32 is leaking every cairo font it ever
++ creates
++
++ * pango/pangocairo-atsuifont.c (pango_cairo_atsui_font_finalize):
++ * pango/pangocairo-win32font.c (pango_cairo_win32_font_finalize):
++ Finalize shared pangocairo font resources. Oops!
++
++ * pango/pangocairo-font.c (_pango_cairo_font_private_finalize):
++ Protect against multiple calls to finalize. This is practiced by the
++ pangocairo-fcfont when a font is shutdown and then finalized.
++
++2008-11-26 Behdad Esfahbod <behdad@gnome.org>
++
++ * examples/cairotwisted.c (parametrize_path), (point_on_path):
++ Handle close_path correctly.
++
+ 2008-11-23 Behdad Esfahbod <behdad@gnome.org>
+
+ * === Released 1.22.3 ===
+diff -aur old/docs/tmpl/fonts.sgml new/docs/tmpl/fonts.sgml
+--- old/docs/tmpl/fonts.sgml 2008-12-06 14:35:11.450807479 +0800
++++ new/docs/tmpl/fonts.sgml 2008-12-06 14:34:53.771786070 +0800
+@@ -441,7 +441,10 @@
+ @descent: the distance from the baseline to the lowest point of the glyphs of
+ the font. This is positive in practically all fonts.
+ @approximate_char_width: approximate average width of the regular glyphs of
+- the font.
++ the font. Note that for this calculation, East Asian characters
++ (those passing g_unichar_iswide()) are counted as double-width.
++ This produces a more uniform value for this measure across languages
++ and results in more uniform and more expected UI sizes.
+ @approximate_digit_width: approximate average width of the glyphs for digits
+ of the font.
+ @underline_position: position of the underline. This is normally negative.
+diff -aur old/examples/cairotwisted.c new/examples/cairotwisted.c
+--- old/examples/cairotwisted.c 2008-12-06 14:35:32.900725834 +0800
++++ new/examples/cairotwisted.c 2008-12-06 14:35:11.264059243 +0800
+@@ -216,7 +216,7 @@
+ parametrize_path (cairo_path_t *path)
+ {
+ int i;
+- cairo_path_data_t *data, current_point;
++ cairo_path_data_t *data, last_move_to, current_point;
+ parametrization_t *parametrization;
+
+ parametrization = malloc (path->num_data * sizeof (parametrization[0]));
+@@ -226,8 +226,13 @@
+ parametrization[i] = 0.0;
+ switch (data->header.type) {
+ case CAIRO_PATH_MOVE_TO:
++ last_move_to = data[1];
+ current_point = data[1];
+ break;
++ case CAIRO_PATH_CLOSE_PATH:
++ /* Make it look like it's a line_to to last_move_to */
++ data = (&last_move_to) - 1;
++ /* fall through */
+ case CAIRO_PATH_LINE_TO:
+ parametrization[i] = two_points_distance (&current_point, &data[1]);
+ current_point = data[1];
+@@ -245,8 +250,6 @@
+
+ current_point = data[3];
+ break;
+- case CAIRO_PATH_CLOSE_PATH:
+- break;
+ default:
+ g_assert_not_reached ();
+ }
+@@ -320,7 +323,7 @@
+ {
+ int i;
+ double ratio, the_y = *y, the_x = *x, dx, dy;
+- cairo_path_data_t *data, current_point;
++ cairo_path_data_t *data, last_move_to, current_point;
+ cairo_path_t *path = param->path;
+ parametrization_t *parametrization = param->parametrization;
+
+@@ -333,6 +336,7 @@
+ switch (data->header.type) {
+ case CAIRO_PATH_MOVE_TO:
+ current_point = data[1];
++ last_move_to = data[1];
+ break;
+ case CAIRO_PATH_LINE_TO:
+ current_point = data[1];
+@@ -352,6 +356,10 @@
+
+ case CAIRO_PATH_MOVE_TO:
+ break;
++ case CAIRO_PATH_CLOSE_PATH:
++ /* Make it look like it's a line_to to last_move_to */
++ data = (&last_move_to) - 1;
++ /* fall through */
+ case CAIRO_PATH_LINE_TO:
+ {
+ ratio = the_x / parametrization[i];
+@@ -424,8 +432,6 @@
+ *y += dx * ratio;
+ }
+ break;
+- case CAIRO_PATH_CLOSE_PATH:
+- break;
+ default:
+ g_assert_not_reached ();
+ }
+diff -aur old/pango/pango-impl-utils.h new/pango/pango-impl-utils.h
+--- old/pango/pango-impl-utils.h 2008-12-06 14:35:22.291559359 +0800
++++ new/pango/pango-impl-utils.h 2008-12-06 14:35:03.550729660 +0800
+@@ -23,6 +23,7 @@
+ #ifndef __PANGO_IMPL_UTILS_H__
+ #define __PANGO_IMPL_UTILS_H__
+
++#include <glib.h>
+ #include <glib-object.h>
+ #include <pango/pango.h>
+
+@@ -92,6 +93,36 @@
+ PangoRectangle *ink_rect,
+ PangoRectangle *logical_rect);
+
++
++/* We define these functions static here because we don't want to add public API
++ * for them (if anything, it belongs to glib, but glib found it trivial enough
++ * not to add API for). At some point metrics calculations will be
++ * centralized and this mess can be minimized. Or so I hope.
++ */
++
++static inline G_GNUC_UNUSED int
++pango_unichar_width (gunichar c)
++{
++ return G_UNLIKELY (g_unichar_iszerowidth (c)) ? 0 :
++ G_UNLIKELY (g_unichar_iswide (c)) ? 2 : 1;
++}
++
++static G_GNUC_UNUSED glong
++pango_utf8_strwidth (const gchar *p)
++{
++ glong len = 0;
++ g_return_val_if_fail (p != NULL, 0);
++
++ while (*p)
++ {
++ len += pango_unichar_width (g_utf8_get_char (p));
++ p = g_utf8_next_char (p);
++ }
++
++ return len;
++}
++
++
+ G_END_DECLS
+
+ #endif /* __PANGO_IMPL_UTILS_H__ */
+diff -aur old/pango/pangocairo-atsuifont.c new/pango/pangocairo-atsuifont.c
+--- old/pango/pangocairo-atsuifont.c 2008-12-06 14:35:23.464057615 +0800
++++ new/pango/pangocairo-atsuifont.c 2008-12-06 14:35:04.914061436 +0800
+@@ -24,6 +24,7 @@
+
+ #import <Cocoa/Cocoa.h>
+
++#include "pango-impl-utils.h"
+ #include "pangoatsui-private.h"
+ #include "pangocairo.h"
+ #include "pangocairo-private.h"
+@@ -148,7 +149,7 @@
+ pango_layout_set_text (layout, sample_str, -1);
+ pango_layout_get_extents (layout, NULL, &extents);
+
+- metrics->approximate_char_width = extents.width / g_utf8_strlen (sample_str, -1);
++ metrics->approximate_char_width = extents.width / pango_utf8_strwidth (sample_str);
+
+ pango_layout_set_text (layout, "0123456789", -1);
+ metrics->approximate_digit_width = max_glyph_width (layout);
+@@ -174,6 +175,10 @@
+ static void
+ pango_cairo_atsui_font_finalize (GObject *object)
+ {
++ PangoCairoATSUIFont *cafont = (PangoCairoATSUIFont *) object;
++
++ _pango_cairo_font_private_finalize (&cafont->cf_priv);
++
+ G_OBJECT_CLASS (pango_cairo_atsui_font_parent_class)->finalize (object);
+ }
+
+@@ -191,7 +196,7 @@
+ }
+
+ static void
+-pango_cairo_atsui_font_init (PangoCairoATSUIFont *cafont)
++pango_cairo_atsui_font_init (PangoCairoATSUIFont *cafont G_GNUC_UNUSED)
+ {
+ }
+
+diff -aur old/pango/pangocairo-fcfont.c new/pango/pangocairo-fcfont.c
+--- old/pango/pangocairo-fcfont.c 2008-12-06 14:35:22.840724772 +0800
++++ new/pango/pangocairo-fcfont.c 2008-12-06 14:35:04.294060844 +0800
+@@ -88,7 +88,7 @@
+ static void
+ pango_cairo_fc_font_finalize (GObject *object)
+ {
+- PangoCairoFcFont *cffont = (PangoCairoFcFont *) (object);
++ PangoCairoFcFont *cffont = (PangoCairoFcFont *) object;
+
+ _pango_cairo_font_private_finalize (&cffont->cf_priv);
+
+@@ -162,7 +162,7 @@
+ }
+
+ static void
+-pango_cairo_fc_font_init (PangoCairoFcFont *cffont)
++pango_cairo_fc_font_init (PangoCairoFcFont *cffont G_GNUC_UNUSED)
+ {
+ }
+
+diff -aur old/pango/pangocairo-font.c new/pango/pangocairo-font.c
+--- old/pango/pangocairo-font.c 2008-12-06 14:35:23.387391067 +0800
++++ new/pango/pangocairo-font.c 2008-12-06 14:35:04.840728398 +0800
+@@ -560,14 +560,18 @@
+
+ if (cf_priv->scaled_font)
+ cairo_scaled_font_destroy (cf_priv->scaled_font);
++ cf_priv->scaled_font = NULL;
+
+ _pango_cairo_font_hex_box_info_destroy (cf_priv->hbi);
++ cf_priv->hbi = NULL;
+
+ if (cf_priv->glyph_extents_cache)
+ g_free (cf_priv->glyph_extents_cache);
++ cf_priv->glyph_extents_cache = NULL;
+
+ g_slist_foreach (cf_priv->metrics_by_lang, (GFunc)free_metrics_info, NULL);
+ g_slist_free (cf_priv->metrics_by_lang);
++ cf_priv->metrics_by_lang = NULL;
+ }
+
+ gboolean
+diff -aur old/pango/pangocairo-win32font.c new/pango/pangocairo-win32font.c
+--- old/pango/pangocairo-win32font.c 2008-12-06 14:35:22.500726273 +0800
++++ new/pango/pangocairo-win32font.c 2008-12-06 14:35:03.990726207 +0800
+@@ -150,7 +150,7 @@
+ pango_layout_set_text (layout, sample_str, -1);
+ pango_layout_get_extents (layout, NULL, &extents);
+
+- metrics->approximate_char_width = extents.width / g_utf8_strlen (sample_str, -1);
++ metrics->approximate_char_width = extents.width / pango_utf8_strwidth (sample_str);
+
+ pango_layout_set_text (layout, "0123456789", -1);
+ metrics->approximate_digit_width = max_glyph_width (layout);
+@@ -164,6 +164,10 @@
+ static void
+ pango_cairo_win32_font_finalize (GObject *object)
+ {
++ PangoCairoWin32Font *cwfont = (PangoCairoWin32Font *) object;
++
++ _pango_cairo_font_private_finalize (&cwfont->cf_priv);
++
+ G_OBJECT_CLASS (pango_cairo_win32_font_parent_class)->finalize (object);
+ }
+
+@@ -225,7 +229,7 @@
+ }
+
+ static void
+-pango_cairo_win32_font_init (PangoCairoWin32Font *cwfont)
++pango_cairo_win32_font_init (PangoCairoWin32Font *cwfont G_GNUC_UNUSED)
+ {
+ }
+
+diff -aur old/pango/pangofc-font.c new/pango/pangofc-font.c
+--- old/pango/pangofc-font.c 2008-12-06 14:35:23.117390557 +0800
++++ new/pango/pangofc-font.c 2008-12-06 14:35:04.564059609 +0800
+@@ -496,7 +496,7 @@
+ pango_layout_get_extents (layout, NULL, &extents);
+
+ metrics->approximate_char_width =
+- extents.width / g_utf8_strlen (sample_str, -1);
++ extents.width / pango_utf8_strwidth (sample_str);
+
+ pango_layout_set_text (layout, "0123456789", -1);
+ metrics->approximate_digit_width = max_glyph_width (layout);
diff --git a/abs/core-testing/pil/PKGBUILD b/abs/core-testing/pil/PKGBUILD
index 59e9b83..f7149de 100644
--- a/abs/core-testing/pil/PKGBUILD
+++ b/abs/core-testing/pil/PKGBUILD
@@ -1,10 +1,12 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
-# Maintainer: simo <simo@archlinux.org>
+# $Id: PKGBUILD 16703 2008-10-22 02:31:25Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: simo <simo@archlinux.org>
+
pkgname=pil
pkgver=1.1.6
-pkgrel=4
+pkgrel=5
pkgdesc="Python imaging library"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
url="http://www.pythonware.com/products/pil/index.htm"
license=('custom:"pil"')
depends=('python' 'libjpeg' 'freetype2')
@@ -13,14 +15,14 @@ source=(http://effbot.org/downloads/Imaging-$pkgver.tar.gz)
md5sums=('3a9b5c20ca52f0a9900512d2c7347622')
build() {
- cd $startdir/src/Imaging-$pkgver
+ cd $srcdir/Imaging-$pkgver
python setup.py build_ext
- python setup.py install --root=$startdir/pkg
- mkdir -p $startdir/pkg/usr/include/python2.5/
- cp libImaging/*.h $startdir/pkg/usr/include/python2.5/
+ python setup.py install --root=$pkgdir
+ mkdir -p $pkgdir/usr/include/python2.6/
+ cp libImaging/*.h $pkgdir/usr/include/python2.6/
# Install license
- install -m644 -D $startdir/src/Imaging-$pkgver/README \
- $startdir/pkg/usr/share/licenses/pil/README
+ install -m644 -D $srcdir/Imaging-$pkgver/README \
+ $pkgdir/usr/share/licenses/pil/README
}
diff --git a/abs/core-testing/plextor-convertX-driver/PKGBUILD b/abs/core-testing/plextor-convertX-driver/PKGBUILD
index 102d539..fb503fb 100755
--- a/abs/core-testing/plextor-convertX-driver/PKGBUILD
+++ b/abs/core-testing/plextor-convertX-driver/PKGBUILD
@@ -2,13 +2,13 @@
pkgname=plextor-convertX-driver
pkgver=0.9.8
-pkgrel=2
-_kernver=2.6.26-ARCH
+pkgrel=3
+_kernver=2.6.27-ARCH
pkgdesc="Drivers for Plextor tuners"
arch=(i686 x86_64)
url="http://nikosapi.org/software/WIS_Go7007"
install="convertX.install"
-source=("http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-2.tar.bz2" 'wis-go7007-2.6.26-nopage.diff')
+source=("http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-2.tar.bz2" 'wis-go7007-2.6.26-nopage.diff' 'wis-go7007-linux-0.9.8-2-2.6.27.patch')
depends=('udev>=070' 'fxload')
makedepends=('gcc')
@@ -17,6 +17,7 @@ build() {
# SET UP
cd $startdir/src/wis-go7007-linux-0.9.8-2 || return 1
patch -Np1 -i ../wis-go7007-2.6.26-nopage.diff || return 1
+ patch -Np1 -i ../wis-go7007-linux-0.9.8-2-2.6.27.patch || return 1
# build
make clean || return 1
make || return 1
diff --git a/abs/core-testing/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch b/abs/core-testing/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch
new file mode 100644
index 0000000..6275d8c
--- /dev/null
+++ b/abs/core-testing/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch
@@ -0,0 +1,83 @@
+diff -Naur wis-go7007-linux-0.9.8-2/kernel/go7007-driver.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-driver.c
+--- wis-go7007-linux-0.9.8-2/kernel/go7007-driver.c 2007-03-21 12:51:54.000000000 -0500
++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-driver.c 2008-12-30 21:04:32.545534308 -0600
+@@ -32,7 +32,7 @@
+ #include <linux/i2c.h>
+ #include <linux/firmware.h>
+ #include <asm/uaccess.h>
+-#include <asm/semaphore.h>
++#include <linux/semaphore.h>
+ #include <asm/system.h>
+ #include <linux/videodev.h>
+ #include <media/tuner.h>
+diff -Naur wis-go7007-linux-0.9.8-2/kernel/go7007-i2c.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-i2c.c
+--- wis-go7007-linux-0.9.8-2/kernel/go7007-i2c.c 2008-04-06 09:28:35.000000000 -0500
++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-i2c.c 2008-12-30 21:04:32.569550193 -0600
+@@ -29,7 +29,7 @@
+ #include <linux/device.h>
+ #include <linux/i2c.h>
+ #include <asm/uaccess.h>
+-#include <asm/semaphore.h>
++#include <linux/semaphore.h>
+ #include <asm/system.h>
+
+ #include "go7007-priv.h"
+diff -Naur wis-go7007-linux-0.9.8-2/kernel/go7007-v4l2.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-v4l2.c
+--- wis-go7007-linux-0.9.8-2/kernel/go7007-v4l2.c 2008-12-30 21:16:17.221534155 -0600
++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-v4l2.c 2008-12-30 21:10:24.252534209 -0600
+@@ -35,10 +35,12 @@
+ #include <media/audiochip.h>
+ #else
+ #include <media/v4l2-common.h>
++#include <media/v4l2-chip-ident.h>
++#include <media/v4l2-ioctl.h>
+ #endif
+ #include <linux/i2c.h>
+ #include <asm/uaccess.h>
+-#include <asm/semaphore.h>
++#include <linux/semaphore.h>
+ #include <asm/system.h>
+
+ #include "../include/go7007.h"
+@@ -1478,7 +1480,7 @@
+
+ static struct video_device go7007_template = {
+ .name = "go7007",
+- .type = VID_TYPE_CAPTURE,
++ .vfl_type = VID_TYPE_CAPTURE,
+ .fops = &go7007_fops,
+ .minor = -1,
+ .release = go7007_vfl_release,
+@@ -1492,7 +1494,7 @@
+ if (go->video_dev == NULL)
+ return -ENOMEM;
+ memcpy(go->video_dev, &go7007_template, sizeof(go7007_template));
+- go->video_dev->dev = go->dev;
++ go->video_dev->parent = go->dev;
+ rv = video_register_device(go->video_dev, VFL_TYPE_GRABBER, -1);
+ if (rv < 0)
+ {
+diff -Naur wis-go7007-linux-0.9.8-2/kernel/snd-go7007.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/snd-go7007.c
+--- wis-go7007-linux-0.9.8-2/kernel/snd-go7007.c 2007-09-06 22:45:25.000000000 -0500
++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/snd-go7007.c 2008-12-30 21:04:33.077579435 -0600
+@@ -34,7 +34,7 @@
+ #include <linux/mm.h>
+ #include <linux/i2c.h>
+ #include <asm/uaccess.h>
+-#include <asm/semaphore.h>
++#include <linux/semaphore.h>
+ #include <asm/system.h>
+ #include <sound/driver.h>
+ #include <sound/core.h>
+diff -Naur wis-go7007-linux-0.9.8-2/kernel/wis-sony-tuner.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/wis-sony-tuner.c
+--- wis-go7007-linux-0.9.8-2/kernel/wis-sony-tuner.c 2006-04-01 16:37:18.000000000 -0600
++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/wis-sony-tuner.c 2008-12-30 21:10:36.100534544 -0600
+@@ -23,6 +23,8 @@
+ #include <media/tuner.h>
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+ #include <media/v4l2-common.h>
++#include <media/v4l2-chip-ident.h>
++#include <media/v4l2-ioctl.h>
+ #endif
+
+ #include "wis-i2c.h"
diff --git a/abs/core-testing/ppp/PKGBUILD b/abs/core-testing/ppp/PKGBUILD
index 24f40a7..8240ad7 100644
--- a/abs/core-testing/ppp/PKGBUILD
+++ b/abs/core-testing/ppp/PKGBUILD
@@ -1,14 +1,14 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 20217 2008-12-01 18:12:37Z thomas $
# Maintainer: judd <jvinet@zeroflux.org>
pkgname=ppp
pkgver=2.4.4
-pkgrel=15
+pkgrel=7
pkgdesc="A daemon which implements the PPP protocol for dial-up networking"
arch=(i686 x86_64)
url="http://www.samba.org/ppp/"
license=('custom:GPL/BSD')
groups=('base')
-depends=('glibc' 'libpcap>=0.9.8')
+depends=('glibc' 'libpcap>=1.0.0')
backup=(etc/ppp/{chap-secrets,pap-secrets,options,ip-up,ip-down})
source=(ftp://ftp.samba.org/pub/ppp/ppp-$pkgver.tar.gz \
options pon poff ppp plog pon.1 ip-up ip-down)
@@ -42,6 +42,6 @@ build() {
install -D -m600 etc.ppp/pap-secrets $startdir/pkg/etc/ppp/pap-secrets
install -D -m600 etc.ppp/chap-secrets $startdir/pkg/etc/ppp/chap-secrets
install -D -m755 $startdir/src/ppp $startdir/pkg/etc/rc.d/ppp
- install -D -m644 $startdir/src/pon.1 $startdir/pkg/usr/man/man1/pon.1
+ install -D -m644 $startdir/src/pon.1 $startdir/pkg/usr/share/man/man1/pon.1
mkdir -p $startdir/pkg/etc/ppp/peers
}
diff --git a/abs/core-testing/pygobject/PKGBUILD b/abs/core-testing/pygobject/PKGBUILD
index 159de7a..e6e4548 100644
--- a/abs/core-testing/pygobject/PKGBUILD
+++ b/abs/core-testing/pygobject/PKGBUILD
@@ -1,21 +1,21 @@
-# $Id: PKGBUILD 2539 2008-06-06 13:24:21Z jgc $
+# $Id: PKGBUILD 16706 2008-10-22 02:32:50Z allan $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=pygobject
-pkgver=2.14.2
-pkgrel=1
+pkgver=2.15.4
+pkgrel=2
pkgdesc="Python bindings for GObject"
arch=(i686 x86_64)
license=('LGPL')
-depends=('python>=2.5.1-5' 'glib2>=2.16.3')
-source=(http://ftp.gnome.org/pub/gnome/sources/pygobject/2.14/${pkgname}-${pkgver}.tar.bz2)
+depends=('python>=2.5.2-5' 'glib2>=2.18.1')
+source=(http://ftp.gnome.org/pub/gnome/sources/pygobject/2.15/${pkgname}-${pkgver}.tar.bz2)
options=('!libtool')
url="http://www.pygtk.org/"
-md5sums=('0e9e9300e81847f4f7266f49d3bebbaf')
+md5sums=('df59affe5b8fd7148506c3473d479868')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/pygtk/PKGBUILD b/abs/core-testing/pygtk/PKGBUILD
index 71bec7d..434af1c 100644
--- a/abs/core-testing/pygtk/PKGBUILD
+++ b/abs/core-testing/pygtk/PKGBUILD
@@ -1,24 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 16726 2008-10-22 02:50:46Z allan $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
pkgname=pygtk
-pkgver=2.12.1
-pkgrel=1
+pkgver=2.13.0
+pkgrel=2
pkgdesc="Python bindings for the GTK widget set"
arch=(i686 x86_64)
license=('LGPL')
-depends=('libglade>=2.6.2' 'pycairo>=1.4.0' 'pygobject>=2.14.1' 'python-numeric>=24.2-2' 'gtk2>=2.12.0')
+depends=('libglade>=2.6.3' 'pycairo>=1.6.4' 'pygobject>=2.15.4' 'python-numeric>=24.2-2')
options=('!libtool')
url="http://www.pygtk.org/"
-source=(http://ftp.gnome.org/pub/gnome/sources/pygtk/2.12/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('a816346d750d61e3fa67a200e4292694')
+source=(http://ftp.gnome.org/pub/gnome/sources/pygtk/2.13/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('e1513921bfd3790b456899c483fceaea')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- sed -i -e 's/SUBDIRS = codegen . $(GTK_SUBDIR) examples tests docs/SUBDIRS = codegen . $(GTK_SUBDIR) examples tests/' Makefile.in
- ./configure --prefix=/usr
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install
- install -m644 gtk/gtk-extrafuncs.defs ${startdir}/pkg/usr/share/pygtk/2.0/defs/
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m644 gtk/gtk-extrafuncs.defs "${pkgdir}/usr/share/pygtk/2.0/defs/" || return 1
}
diff --git a/abs/core-testing/python-numeric/PKGBUILD b/abs/core-testing/python-numeric/PKGBUILD
index 9ec5dec..67a8ab5 100644
--- a/abs/core-testing/python-numeric/PKGBUILD
+++ b/abs/core-testing/python-numeric/PKGBUILD
@@ -1,14 +1,14 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 16713 2008-10-22 02:37:43Z allan $
# Maintainer: arjan <arjan@archlinux.org>
# Contributor orelien <aurelien.foret@wanadoo.fr>
pkgname=python-numeric
pkgver=24.2
-pkgrel=2
+pkgrel=3
pkgdesc="Numerical Python adds a fast array facility to the Python language."
arch=(i686 x86_64)
depends=('python>=2.5')
-source=(http://heanet.dl.sourceforge.net/sourceforge/numpy/Numeric-${pkgver}.tar.gz)
+source=(http://downloads.sourceforge.net/sourceforge/numpy/Numeric-${pkgver}.tar.gz)
replaces=('numeric')
url="http://numeric.scipy.org/"
md5sums=(2ae672656e06716a149acb048cca3093)
diff --git a/abs/core-testing/python/ChangeLog b/abs/core-testing/python/ChangeLog
new file mode 100644
index 0000000..2d5c46a
--- /dev/null
+++ b/abs/core-testing/python/ChangeLog
@@ -0,0 +1,9 @@
+2008-12-07 Allan McRae <allan@archlinux.org>
+ * python 2.6.1-1
+ * upstream update
+ * fix gdbm related build error
+ * fix modulator/pynche launchers
+
+2008-10-27 Allan McRae <allan@archlinux.org>
+ * python 2.6-2
+ * patched to use internal expat \ No newline at end of file
diff --git a/abs/core-testing/python/PKGBUILD b/abs/core-testing/python/PKGBUILD
index bc812de..16ebac5 100644
--- a/abs/core-testing/python/PKGBUILD
+++ b/abs/core-testing/python/PKGBUILD
@@ -1,57 +1,58 @@
-# $Id: PKGBUILD 4689 2008-07-08 21:50:56Z andyrtr $
+# $Id: PKGBUILD 20912 2008-12-07 08:52:24Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>
# Contributer: Jason Chu <jason@archlinux.org>
pkgname=python
-pkgver=2.5.2
-pkgrel=5
-_pybasever=2.5
+pkgver=2.6.1
+pkgrel=1
+_pybasever=2.6
pkgdesc="A high-level scripting language"
arch=('i686' 'x86_64')
license=('custom')
url="http://www.python.org"
-depends=('db4.5' 'bzip2' 'gdbm' 'openssl>=0.9.8d' 'zlib')
+depends=('db' 'bzip2' 'gdbm' 'openssl>=0.9.8d' 'zlib')
makedepends=('tk>=8.5.0' 'sqlite3')
-provides=('python-elementree' 'python-ctypes')
-replaces=('python-elementree' 'python-ctypes')
-install=python.install
+optdepends=('tk: for IDLE, pynche and modulator')
+provides=('python-elementtree' 'python-ctypes')
+replaces=('python-elementtree' 'python-ctypes')
source=(http://www.python.org/ftp/python/${pkgver}/Python-${pkgver}.tar.bz2
+ python-2.6-internal-expat.patch
+ python-2.6-gdbm.patch
modulator-launcher
- pynche-launcher
- Python-2.4.4-gdbm-1.patch
- python-2.5.CVE-2007-4965-int-overflow.patch
- python2.6-set_wakeup_fd4.patch
- Python-2.5.2-idlelib.patch)
-md5sums=('afb5451049eda91fbde10bd5a4b7fadc'
- 'faa0d4b947bfe67fc8684b5c464f46f2'
- '60a44af1d8af276274e20c564c0f3d8b'
- '2b61e06365e9fb5f3af22d946efa8be6'
- '491416c1b337fc61b6cdf5981d895a7d'
- 'ec56710959deb01b5fa35829cafec6a3'
- 'e6441e0b013ac64795221154e0495e10')
+ pynche-launcher)
+md5sums=('e81c2f0953aa60f8062c05a4673f2be0'
+ '993800dbcc0c4f199c1ceee998a06e71'
+ '13fab4bb2cacbc433e62d7191a17f71e'
+ 'b4a531570415280dc406c8d5c1fa8d83'
+ '9f731b9033db285132a3524fb36409e7')
+
build() {
- cd ${startdir}/src/Python-${pkgver}
- patch -Np1 -i ${srcdir}/Python-2.4.4-gdbm-1.patch || return 1
- # fix http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-4965
- patch -Np1 -i ${srcdir}/python-2.5.CVE-2007-4965-int-overflow.patch || return 1
-
- patch -Np2 -i ${srcdir}/python2.6-set_wakeup_fd4.patch || return 1
- patch -Np0 -i ${srcdir}/Python-2.5.2-idlelib.patch
+ cd ${srcdir}/Python-${pkgver}
+
+ patch -Np0 -i ${srcdir}/python-2.6-internal-expat.patch
+ patch -Np1 -i ${srcdir}/python-2.6-gdbm.patch
./configure --prefix=/usr --enable-shared --with-threads --enable-unicode
+
+ # temporary backwards compatibility stuff...
+ sed -i 's#SITEPATH=#SITEPATH=:/usr/lib/python2.5/site-packages#' Makefile
+
make || return 1
make DESTDIR=${pkgdir} install
rm ${pkgdir}/usr/bin/python
ln -sf python${_pybasever} ${pkgdir}/usr/bin/python
+ ln -sf python${_pybasever} ${pkgdir}/usr/bin/python2
# Install the tools
#modulator
+ sed -i "s#%%PYBASEVER%%#${_pybasever}#" ${srcdir}/modulator-launcher
install -m755 ${srcdir}/modulator-launcher ${pkgdir}/usr/bin/modulator
cp -r Tools/modulator ${pkgdir}/usr/lib/python${_pybasever}/site-packages/
#pynche
+ sed -i "s#%%PYBASEVER%%#${_pybasever}#" ${srcdir}/pynche-launcher
install -m755 ${srcdir}/pynche-launcher ${pkgdir}/usr/bin/pynche
rm -f Tools/pynche/*.pyw
cp -r Tools/pynche ${pkgdir}/usr/lib/python${_pybasever}/site-packages/
@@ -65,5 +66,5 @@ build() {
install Tools/scripts/*py ${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/
# license
- install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
}
diff --git a/abs/core-testing/python/modulator-launcher b/abs/core-testing/python/modulator-launcher
index 732f05c..ba46e93 100644
--- a/abs/core-testing/python/modulator-launcher
+++ b/abs/core-testing/python/modulator-launcher
@@ -1,2 +1,2 @@
#!/bin/bash
-exec /usr/lib/python2.5/site-packages/modulator/modulator.py
+exec /usr/lib/python%%PYBASEVER%%/site-packages/modulator/modulator.py
diff --git a/abs/core-testing/python/pynche-launcher b/abs/core-testing/python/pynche-launcher
index ab3a6d8..a4338a7 100644
--- a/abs/core-testing/python/pynche-launcher
+++ b/abs/core-testing/python/pynche-launcher
@@ -1,3 +1,3 @@
#!/bin/bash
-/usr/lib/python2.5/site-packages/pynche/pynche
+/usr/lib/python%%PYBASEVER%%/site-packages/pynche/pynche
diff --git a/abs/core-testing/python/python-2.6-gdbm.patch b/abs/core-testing/python/python-2.6-gdbm.patch
new file mode 100644
index 0000000..0f223f6
--- /dev/null
+++ b/abs/core-testing/python/python-2.6-gdbm.patch
@@ -0,0 +1,12 @@
+diff -Naur Python-2.6-old/setup.py Python-2.6/setup.py
+--- Python-2.6-old/setup.py 2008-09-30 10:15:45.000000000 +1000
++++ Python-2.6/setup.py 2008-12-07 16:04:01.000000000 +1000
+@@ -1013,7 +1013,7 @@
+ if self.compiler.find_library_file(lib_dirs, 'ndbm'):
+ ndbm_libs = ['ndbm']
+ else:
+- ndbm_libs = []
++ ndbm_libs = ['gdbm', 'gdbm_compat']
+ exts.append( Extension('dbm', ['dbmmodule.c'],
+ define_macros=[('HAVE_NDBM_H',None)],
+ libraries = ndbm_libs ) )
diff --git a/abs/core-testing/python/python-2.6-internal-expat.patch b/abs/core-testing/python/python-2.6-internal-expat.patch
new file mode 100644
index 0000000..86252ab
--- /dev/null
+++ b/abs/core-testing/python/python-2.6-internal-expat.patch
@@ -0,0 +1,33 @@
+--- setup.py 2008-04-22 12:12:24.613554757 +0300
++++ setup.py 2008-04-22 12:13:09.276544063 +0300
+@@ -1035,18 +1035,15 @@
+ #
+ # More information on Expat can be found at www.libexpat.org.
+ #
+- expatinc = os.path.join(os.getcwd(), srcdir, 'Modules', 'expat')
+- define_macros = [
+- ('HAVE_EXPAT_CONFIG_H', '1'),
+- ]
++ # Use system expat
++ expatinc = '/usr/include'
++ define_macros = []
+
+ exts.append(Extension('pyexpat',
+ define_macros = define_macros,
+ include_dirs = [expatinc],
++ libraries = ['expat'],
+ sources = ['pyexpat.c',
+- 'expat/xmlparse.c',
+- 'expat/xmlrole.c',
+- 'expat/xmltok.c',
+ ],
+ ))
+
+@@ -1058,6 +1055,7 @@
+ exts.append(Extension('_elementtree',
+ define_macros = define_macros,
+ include_dirs = [expatinc],
++ libraries = ['expat'],
+ sources = ['_elementtree.c'],
+ ))
+
diff --git a/abs/core-testing/samba/PKGBUILD b/abs/core-testing/samba/PKGBUILD
index 599025e..67151b9 100644
--- a/abs/core-testing/samba/PKGBUILD
+++ b/abs/core-testing/samba/PKGBUILD
@@ -1,78 +1,85 @@
-# $Id: PKGBUILD 14140 2008-10-04 09:43:47Z tpowa $
+# $Id: PKGBUILD 22200 2008-12-22 22:24:26Z tpowa $
# Maintainer: judd <jvinet@zeroflux.org>
pkgname=samba
-pkgver=3.2.4
+pkgver=3.2.6
# We use the 'A' to fake out pacman's version comparators. Samba chooses
# to append 'a','b',etc to their subsequent releases, which pamcan
# misconstrues as alpha, beta, etc. Bad samba!
-_realver=3.2.4
-pkgrel=4
+_realver=3.2.6
+pkgrel=2
pkgdesc="Tools to access a server's filespace and printers via SMB"
arch=(i686 x86_64)
url="http://www.samba.org"
license=('GPL3')
backup=(etc/logrotate.d/samba etc/pam.d/samba etc/samba/smb.conf etc/xinetd.d/swat etc/conf.d/samba)
-depends=('db>=4.7' 'popt' 'libcups' 'acl' 'libldap' 'smbclient=3.2.4' 'libcap' 'heimdal>=1.2-1' 'pam' 'gnutls>=2.4.1' 'tdb=3.2.4')
+depends=('db>=4.7' 'popt' 'libcups' 'acl' 'libldap' 'smbclient=3.2.6' 'libcap' 'heimdal>=1.2-1' 'pam' 'fam' 'gnutls>=2.4.1' 'tdb=3.2.6')
options=(!makeflags)
source=(http://us1.samba.org/samba/ftp/stable/${pkgname}-${_realver}.tar.gz \
no-clients.patch samba samba.logrotate swat.xinetd samba.pam samba.conf.d)
build() {
- cd ${startdir}/src/${pkgname}-${_realver}/source
- patch -Np2 -i ${startdir}/src/no-clients.patch || return 1
+ cd ${srcdir}/${pkgname}-${_realver}/source
+ patch -Np2 -i ${srcdir}/no-clients.patch || return 1
./configure --prefix=/usr --with-configdir=/etc/samba \
--with-lockdir=/var/cache/samba \
--with-piddir=/var/run/samba \
--with-fhs --with-pam --with-ads --with-acl-support \
--without-cifsmount --without-libsmbclient \
- --disable-fam
+ --with-syslog --with-pam_smbpass \
--localstatedir=/var --disable-dnssd --libdir=/usr/lib/samba
make || return 1
- mkdir -p $startdir/pkg/var/log/samba
- mkdir -p $startdir/pkg/etc/samba/private
- chmod 700 $startdir/pkg/etc/samba/private
+ mkdir -p ${pkgdir}/var/log/samba
+ mkdir -p ${pkgdir}/etc/samba/private
+ chmod 700 ${pkgdir}/etc/samba/private
make DESTDIR=$startdir/pkg install
- chmod 644 $startdir/pkg/usr/include/*.h
- rm -rf $startdir/pkg/usr/var
+ chmod 644 ${pkgdir}/usr/include/*.h
+ rm -rf ${pkgdir}/usr/var
(cd script; cp installbin.sh i; cat i | sed 's/\/sbin\///' > installbin.sh)
- install -D -m755 ../../samba $startdir/pkg/etc/rc.d/samba
- install -D -m644 ../../samba.conf.d $startdir/pkg/etc/conf.d/samba
- mkdir -p $startdir/pkg/etc/samba
+ install -D -m755 ../../samba ${pkgdir}/etc/rc.d/samba
+ install -D -m644 ../../samba.conf.d ${pkgdir}/etc/conf.d/samba
+ mkdir -p ${pkgdir}/etc/samba
cat ../examples/smb.conf.default | \
- sed 's|log file = .*$|log file = /var/log/samba/log.%m|g' >$startdir/pkg/etc/samba/smb.conf.default
- install -D -m644 ../../samba.logrotate $startdir/pkg/etc/logrotate.d/samba
- install -D -m644 ../../swat.xinetd $startdir/pkg/etc/xinetd.d/swat
- install -D -m644 ../../samba.pam $startdir/pkg/etc/pam.d/samba
+ sed 's|log file = .*$|log file = /var/log/samba/log.%m|g' >${pkgdir}/etc/samba/smb.conf.default
+ install -D -m644 ../../samba.logrotate ${pkgdir}/etc/logrotate.d/samba
+ install -D -m644 ../../swat.xinetd ${pkgdir}/etc/xinetd.d/swat
+ install -D -m644 ../../samba.pam ${pkgdir}/etc/pam.d/samba
# symlink libs
- for i in ${startdir}/pkg/usr/lib/samba/libsmbshare*; do
- ln -sf samba/$(basename $i) ${startdir}/pkg/usr/lib/$(basename $i)
+ for i in ${pkgdir}/usr/lib/samba/libsmbshare*; do
+ ln -sf samba/$(basename $i) ${pkgdir}/usr/lib/$(basename $i)
done
# spool directory
- install -d -m1777 $startdir/pkg/var/spool/samba
- sed -i 's|/usr/spool/samba|/var/spool/samba|g' $startdir/pkg/etc/samba/smb.conf.default
+ install -d -m1777 ${pkgdir}/var/spool/samba
+ sed -i 's|/usr/spool/samba|/var/spool/samba|g' ${pkgdir}/etc/samba/smb.conf.default
# fix logrotate
- sed -i -e 's|log.%m|%m.log|g' $startdir/pkg/etc/samba/smb.conf.default
+ sed -i -e 's|log.%m|%m.log|g' ${pkgdir}/etc/samba/smb.conf.default
# nsswitch libraries
- install -D -m755 nsswitch/libnss_wins.so $startdir/pkg/lib/libnss_wins.so
- ln -s libnss_wins.so $startdir/pkg/lib/libnss_wins.so.2
- install -D -m755 nsswitch/libnss_winbind.so $startdir/pkg/lib/libnss_winbind.so
- install -D -m755 bin/pam_winbind.so $startdir/pkg/lib/security/pam_winbind.so
+ install -D -m755 nsswitch/libnss_wins.so ${pkgdir}/lib/libnss_wins.so
+ ln -s libnss_wins.so ${pkgdir}/lib/libnss_wins.so.2
+ install -D -m755 nsswitch/libnss_winbind.so ${pkgdir}/lib/libnss_winbind.so
+ install -D -m755 bin/pam_winbind.so ${pkgdir}/lib/security/pam_winbind.so
# remove conflict files of smbclient and tdb
for man in libsmbclient smbspool \
umount.cifs mount.cifs net; do
- rm -f ${startdir}/pkg/usr/share/man/man8/${man}.8
+ rm -f ${pkgdir}/usr/share/man/man8/${man}.8
done
for i in libnetapi* libtdb* libtalloc* libwbclient*; do
- rm -f ${startdir}/pkg/usr/lib/samba/$i
+ rm -f ${pkgdir}/usr/lib/samba/$i
done
- rm -f ${startdir}/pkg/usr/bin/tdbbackup
- rm -f ${startdir}/pkg/usr/include/{tdb.h,talloc.h,netapi.h}
+ rm -f ${pkgdir}/usr/bin/tdbbackup
+ rm -f ${pkgdir}/usr/include/{tdb.h,talloc.h,netapi.h}
for man in rpcclient smbcacls smbclient smbcquotas \
smbtree smbtar nmblookup smbget; do
- rm -f ${startdir}/pkg/usr/share/man/man1/${man}.1
+ rm -f ${pkgdir}/usr/share/man/man1/${man}.1
done
- rm -f ${startdir}/pkg/usr/share/man/man7/libsmbclient.7
+ rm -f ${pkgdir}/usr/share/man/man7/libsmbclient.7
- rm -f ${startdir}/pkg/usr/include/libsmbclient.h
+ rm -f ${pkgdir}/usr/include/libsmbclient.h
}
+md5sums=('0cd27c7afbb8211616eea4010f32271c'
+ 'a676f0dde2c434aeb5125376b8797a64'
+ 'e93533fa2296c07c1f645dfdd373657f'
+ '5697da77590ec092cc8a883bae06093c'
+ 'a4bbfa39fee95bba2e7ad6b535fae7e6'
+ '96f82c38f3f540b53f3e5144900acf17'
+ 'f2f2e348acd1ccb566e95fa8a561b828')
diff --git a/abs/core-testing/smbclient/PKGBUILD b/abs/core-testing/smbclient/PKGBUILD
index 5e423ebe..c0034b3 100644
--- a/abs/core-testing/smbclient/PKGBUILD
+++ b/abs/core-testing/smbclient/PKGBUILD
@@ -1,56 +1,57 @@
-# $Id: PKGBUILD 14139 2008-10-04 09:13:09Z tpowa $
+# $Id: PKGBUILD 22197 2008-12-22 22:08:42Z tpowa $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=smbclient
-pkgver=3.2.4
+pkgver=3.2.6
# We use the 'A' to fake out pacman's version comparators. Samba chooses
-# to append 'a','b',etc to their subsequent releases, which pamcan
+# to append 'a','b',etc to their subsequent releases, which pacman
# misconstrues as alpha, beta, etc. Bad samba!
-_realver=3.2.4
-pkgrel=3
+_realver=3.2.6
+pkgrel=2
pkgdesc="Tools to access a server's filespace and printers via SMB"
arch=(i686 x86_64)
url="http://www.samba.org"
license=('GPL3')
-depends=('popt' 'libldap' 'libcap' 'heimdal>=1.2-1' 'db>=4.7' 'tdb=3.2.4')
+depends=('popt' 'libldap' 'libcap' 'heimdal>=1.2-1' 'db>=4.7' 'tdb=3.2.6')
source=(http://us1.samba.org/samba/ftp/samba-${_realver}.tar.gz)
options=(!makeflags)
build() {
- cd ${startdir}/src/samba-${_realver}/source
+ cd ${srcdir}/samba-${_realver}/source
./configure --prefix=/usr --with-cifsmount --with-fhs --with-pam \
--with-datadir=/usr/share --with-configdir=/etc/samba \
--with-lockdir=/var/run/samba --with-ads --with-acl-support \
- --localstatedir=/var --disable-dnssd --libdir=/usr/lib/samba
+ --localstatedir=/var --with-syslog --with-pam_smbpass --disable-dnssd \
+ --libdir=/usr/lib/samba
make proto bin/smbclient libsmbclient \
bin/rpcclient bin/smbspool bin/smbtree \
bin/smbcacls bin/smbcquotas bin/smbget \
bin/net bin/nmblookup bin/mount.cifs bin/umount.cifs || return 1
- mkdir -p ${startdir}/pkg/usr/bin ${startdir}/pkg/sbin ${startdir}/pkg/usr/lib/samba
- install -m755 bin/{smbclient,rpcclient,smbspool,smbtree,smbcacls,smbcquotas,smbget,net,nmblookup} ${startdir}/pkg/usr/bin/
- install -m755 bin/{mount.cifs,umount.cifs} ${startdir}/pkg/sbin/
- mv bin/*.so* ${startdir}/pkg/usr/lib/samba
- install -m755 script/smbtar ${startdir}/pkg/usr/bin/
- mkdir -p ${startdir}/pkg/usr/lib/cups/backend
- ln -sf /usr/bin/smbspool ${startdir}/pkg/usr/lib/cups/backend/smb
- for i in ${startdir}/pkg/usr/lib/samba/*; do
- ln -sf samba/$(basename $i) ${startdir}/pkg/usr/lib/$(basename $i)
+ mkdir -p ${pkgdir}/usr/bin ${pkgdir}/sbin ${pkgdir}/usr/lib/samba
+ install -m755 bin/{smbclient,rpcclient,smbspool,smbtree,smbcacls,smbcquotas,smbget,net,nmblookup} ${pkgdir}/usr/bin/
+ install -m755 bin/{mount.cifs,umount.cifs} ${pkgdir}/sbin/
+ mv bin/*.so* ${pkgdir}/usr/lib/samba
+ install -m755 script/smbtar ${pkgdir}/usr/bin/
+ mkdir -p ${pkgdir}/usr/lib/cups/backend
+ ln -sf /usr/bin/smbspool ${pkgdir}/usr/lib/cups/backend/smb
+ for i in ${pkgdir}/usr/lib/samba/*; do
+ ln -sf samba/$(basename $i) ${pkgdir}/usr/lib/$(basename $i)
done
- rm -rf $startdir/pkg/usr/lib/libtdb*
- mkdir -p ${startdir}/pkg/usr/include
- install -m644 include/libsmbclient.h ${startdir}/pkg/usr/include/
- install -m644 lib/talloc/talloc.h ${startdir}/pkg/usr/include/
- install -m644 lib/netapi/netapi.h ${startdir}/pkg/usr/include/
- mkdir -p ${startdir}/pkg/usr/share/man/man{1,7,8}
+ rm -rf ${pkgdir}/usr/lib/libtdb*
+ mkdir -p ${pkgdir}/usr/include
+ install -m644 include/libsmbclient.h ${pkgdir}/usr/include/
+ install -m644 lib/talloc/talloc.h ${pkgdir}/usr/include/
+ install -m644 lib/netapi/netapi.h ${pkgdir}/usr/include/
+ mkdir -p ${pkgdir}/usr/share/man/man{1,7,8}
for man in smbspool \
umount.cifs mount.cifs net; do
- install -m644 ../docs/manpages/${man}.8 ${startdir}/pkg/usr/share/man/man8/
+ install -m644 ../docs/manpages/${man}.8 ${pkgdir}/usr/share/man/man8/
done
for man in rpcclient smbcacls smbclient smbcquotas smbget \
smbtree smbtar nmblookup; do
- install -m644 ../docs/manpages/${man}.1 ${startdir}/pkg/usr/share/man/man1/
+ install -m644 ../docs/manpages/${man}.1 ${pkgdir}/usr/share/man/man1/
done
- install -m644 ../docs/manpages/libsmbclient.7 ${startdir}/pkg/usr/share/man/man7/
+ install -m644 ../docs/manpages/libsmbclient.7 ${pkgdir}/usr/share/man/man7/
}
-md5sums=('7870a6bb3a025c6081cd56688acd494a')
+md5sums=('0cd27c7afbb8211616eea4010f32271c')
diff --git a/abs/core-testing/sqlite3/PKGBUILD b/abs/core-testing/sqlite3/PKGBUILD
index eb1dbc6..b40c3ee 100644
--- a/abs/core-testing/sqlite3/PKGBUILD
+++ b/abs/core-testing/sqlite3/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 12988 2008-09-25 16:26:35Z andyrtr $
+# $Id: PKGBUILD 22976 2008-12-30 11:35:01Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=sqlite3
-pkgver=3.6.3
-pkgrel=1
+pkgver=3.6.7
+pkgrel=2
pkgdesc="A C library that implements an SQL database engine"
arch=('i686' 'x86_64')
license=('custom')
@@ -14,19 +14,21 @@ makedepends=('tcl')
conflicts=('sqlite')
replaces=('sqlite')
source=(http://www.sqlite.org/sqlite-$pkgver.tar.gz
- sqlite-3.5.8-pkgconfig-version.patch
license.txt)
options=(!libtool)
-md5sums=('671d2715f33158abc47a7a2ddd6066c5'
- '025965a176173eaf21877f6daed088d4'
+md5sums=('5223d1f459b608ed8c2c54f8847f8e1a'
'c1cdbc5544034d9012e421e75a5e4890')
build() {
cd ${srcdir}/sqlite-${pkgver}
- patch -Np1 -i ${srcdir}/sqlite-3.5.8-pkgconfig-version.patch || return 1
- ./configure --prefix=/usr --enable-threadsafe --disable-static || return 1
+ export LTLINK_EXTRAS="-ldl"
+ export CFLAGS="$CFLAGS -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_COLUMN_METADATA=1"
+ ./configure --prefix=/usr \
+ --enable-threadsafe \
+ --disable-static \
+ --enable-load-extension || return 1
make || return 1
- make DESTDIR=${pkgdir} install
+ make DESTDIR=${pkgdir} install || return 1
install -Dm0644 sqlite3.1 ${pkgdir}/usr/share/man/man1/sqlite3.1
# license
diff --git a/abs/core-testing/tcl/ChangeLog b/abs/core-testing/tcl/ChangeLog
index 313bd98..0aeabc7 100644
--- a/abs/core-testing/tcl/ChangeLog
+++ b/abs/core-testing/tcl/ChangeLog
@@ -1,10 +1,16 @@
-2008-08-16 Allan McRae <allan@archlinux.org>
+2008-12-24 Allan McRae <allan@archlinux.org>
+ * 8.5.6-1 :
+ new upstream release
+
+2008-10-16 Allan McRae <allan@archlinux.org>
+ * 8.5.5-1 :
+ new upstream release
+2008-08-16 Allan McRae <allan@archlinux.org>
* 8.5.4-1 :
new upstream release
FHS man directory
-2008-07-01 Allan McRae <allan@archlinux.org>
-
+2008-07-01 Allan McRae <allan@archlinux.org>
* 8.5.3-1 :
new upstream release.
diff --git a/abs/core-testing/tcl/PKGBUILD b/abs/core-testing/tcl/PKGBUILD
index ec911bb..bcf3ab2 100644
--- a/abs/core-testing/tcl/PKGBUILD
+++ b/abs/core-testing/tcl/PKGBUILD
@@ -1,17 +1,17 @@
-# $Id: PKGBUILD 8742 2008-08-16 05:01:49Z allan $
+# $Id: PKGBUILD 22246 2008-12-24 10:50:10Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>
# Committer: Judd Vinet <jvinet@zeroflux.org>
pkgname=tcl
-pkgver=8.5.4
+pkgver=8.5.6
pkgrel=1
pkgdesc="The Tcl scripting language"
arch=('i686' 'x86_64')
license=('custom')
-depends=(glibc)
+depends=('glibc')
source=(http://downloads.sourceforge.net/sourceforge/tcl/tcl${pkgver}-src.tar.gz)
url="http://tcl.sourceforge.net/"
-md5sums=('15032a6a43f3bfbe9223b95186849472')
+md5sums=('d0b0b3ff7600ff63135c710b575265cd')
build() {
cd ${srcdir}/tcl${pkgver}/unix
diff --git a/abs/core-testing/tdb/PKGBUILD b/abs/core-testing/tdb/PKGBUILD
index 1714862..88f37dc 100644
--- a/abs/core-testing/tdb/PKGBUILD
+++ b/abs/core-testing/tdb/PKGBUILD
@@ -1,29 +1,28 @@
-# $Id: PKGBUILD 14092 2008-10-03 15:43:08Z tpowa $
+# $Id: PKGBUILD 22194 2008-12-22 21:57:23Z tpowa $
# Maintainer: eric <eric@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=tdb
-pkgver=3.2.4
-pkgrel=1
+pkgver=3.2.6
+pkgrel=2
# We use the 'A' to fake out pacman's version comparators. Samba chooses
# to append 'a','b',etc to their subsequent releases, which pamcan
# misconstrues as alpha, beta, etc. Bad samba!
-_realver=3.2.4
+_realver=3.2.6
pkgdesc="A Trivial Database similar to GDBM but allows simultaneous commits"
arch=(i686 x86_64)
license=('GPL3')
-source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz)
url="www.samba.org"
source=(http://us1.samba.org/samba/ftp/samba-${_realver}.tar.gz)
options=(!makeflags)
build() {
- cd ${startdir}/src/samba-${_realver}/source/lib/tdb
+ cd ${srcdir}/samba-${_realver}/source/lib/tdb
./autogen.sh
./configure --prefix=/usr
make || return 1
make DESTDIR=$startdir/pkg install
- ln -sf /usr/lib/libtdb.so.1.1.1 $startdir/pkg/usr/lib/libtdb.so.1
- ln -sf /usr/lib/libtdb.so.1.1.1 $startdir/pkg/usr/lib/libtdb.so
+ ln -sf /usr/lib/libtdb.so.1.1.1 ${pkgdir}/usr/lib/libtdb.so.1
+ ln -sf /usr/lib/libtdb.so.1.1.1 ${pkgdir}/usr/lib/libtdb.so
}
-md5sums=('7870a6bb3a025c6081cd56688acd494a')
+md5sums=('0cd27c7afbb8211616eea4010f32271c')
diff --git a/abs/core-testing/tk/ChangeLog b/abs/core-testing/tk/ChangeLog
index 83abeb6..fc2998f 100644
--- a/abs/core-testing/tk/ChangeLog
+++ b/abs/core-testing/tk/ChangeLog
@@ -1,16 +1,21 @@
-2008-08-20 Allan McRae <allan@archlinux.org>
+2008-12-24 Allan McRae <allan@archlinux.org>
+ * 8.5.6-1 :
+ new upstream release
+
+2008-10-16 Allan McRae <allan@archlinux.org>
+ * 8.5.5-1 :
+ new upstream release
+2008-08-20 Allan McRae <allan@archlinux.org>
* 8.5.4-2 :
Remove xproto compatibility patch as no longer needed
-2008-08-16 Allan McRae <allan@archlinux.org>
-
+2008-08-16 Allan McRae <allan@archlinux.org>
* 8.5.4-1 :
new upstream release
FHS man pages
-2008-07-01 Allan McRae <allan@archlinux.org>
-
+2008-07-01 Allan McRae <allan@archlinux.org>
* 8.5.3-1 :
new upstream release
added patch for xproto-7.0.13 compatibility
diff --git a/abs/core-testing/tk/PKGBUILD b/abs/core-testing/tk/PKGBUILD
index 80299e6..3c75949 100644
--- a/abs/core-testing/tk/PKGBUILD
+++ b/abs/core-testing/tk/PKGBUILD
@@ -1,17 +1,17 @@
-# $Id: PKGBUILD 9873 2008-08-20 08:29:04Z allan $
+# $Id: PKGBUILD 22248 2008-12-24 10:55:13Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>
# Contributor: Judd Vinet <jvinet@zeroflux.org>
pkgname=tk
-pkgver=8.5.4
-pkgrel=2
+pkgver=8.5.6
+pkgrel=1
pkgdesc="A windowing toolkit for use with tcl"
arch=('i686' 'x86_64')
url="http://tcl.sourceforge.net/"
license=('custom')
depends=("tcl=${pkgver}" 'libxss' 'libxft')
source=(http://downloads.sourceforge.net/sourceforge/tcl/tk${pkgver}-src.tar.gz)
-md5sums=('a6aee7653566ec0b7c4b0f4c24a96f20')
+md5sums=('7da2e00adddc7eed6080df904579d94e')
build() {
cd ${srcdir}/tk${pkgver}/unix
diff --git a/abs/core-testing/ttf-dejavu/ChangeLog b/abs/core-testing/ttf-dejavu/ChangeLog
index 5c02e9f..b3cf284 100644
--- a/abs/core-testing/ttf-dejavu/ChangeLog
+++ b/abs/core-testing/ttf-dejavu/ChangeLog
@@ -1,3 +1,13 @@
+2008-12-22 Alexander Fehr <pizzapunk gmail com>
+
+ * ttf-dejavu-2.28-1:
+ New upstream release.
+
+2008-11-26 Alexander Fehr <pizzapunk gmail com>
+
+ * ttf-dejavu-2.27-1:
+ New upstream release.
+
2008-07-29 Alexander Fehr <pizzapunk gmail com>
* ttf-dejavu-2.26-1:
diff --git a/abs/core-testing/ttf-dejavu/PKGBUILD b/abs/core-testing/ttf-dejavu/PKGBUILD
index 5cbbecc..93356a5 100644
--- a/abs/core-testing/ttf-dejavu/PKGBUILD
+++ b/abs/core-testing/ttf-dejavu/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 7356 2008-07-31 01:07:11Z alexanderf $
+# $Id: PKGBUILD 22203 2008-12-22 23:29:26Z alexanderf $
# Maintainer: Alexander Fehr <pizzapunk gmail com>
# Contributor: Jan de Groot <jgc@archlinux.org>
# Contributor: Michal Krenek <mikos@sg1.cz>
pkgname=ttf-dejavu
-pkgver=2.26
+pkgver=2.28
pkgrel=1
pkgdesc="Font family based on the Bitstream Vera Fonts with a wider range of characters"
arch=('i686' 'x86_64')
@@ -13,7 +13,7 @@ license=('custom')
depends=('fontconfig' 'xorg-fonts-encodings')
install=ttf-dejavu.install
source=(http://downloads.sourceforge.net/dejavu/dejavu-fonts-ttf-$pkgver.tar.bz2)
-md5sums=('bff450e8c1b3c9a3f38294ac44d81adc')
+md5sums=('10002ae52fbad207641d1fd2bf9bf4b8')
build() {
cd "$srcdir/dejavu-fonts-ttf-$pkgver"
diff --git a/abs/core-testing/udev/PKGBUILD b/abs/core-testing/udev/PKGBUILD
index 53250cc..f24e308 100644
--- a/abs/core-testing/udev/PKGBUILD
+++ b/abs/core-testing/udev/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 14541 2008-10-08 07:37:32Z tpowa $
+# $Id: PKGBUILD 22190 2008-12-22 18:25:11Z tpowa $
# Maintainer: Aaron Griffin <aaron@archlinux.org>
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Maintainer: Thomas Bächler <thomas@archlinux.org>
pkgname=udev
-pkgver=130
+pkgver=135
pkgrel=1
pkgdesc="The userspace dev tools (udev)"
arch=(i686 x86_64)
@@ -25,13 +25,13 @@ options=(!makeflags)
source=(http://www.kernel.org/pub/linux/utils/kernel/hotplug/$pkgname-$pkgver.tar.bz2
81-arch.rules load-modules.sh resolve-modalias.c cdsymlinks.sh root-link.sh
arch-udev-rules.patch readme-udev-arch.txt)
-md5sums=('eaaac3c45b8c87d81a82fed254ecee25'
+md5sums=('661b9df34e1304dad10f595d95b472bb'
'3a955ca8e2122a48a223f9d8adf87b70'
'f4951f61438d69894b728212dac7318b'
'fca04a608009069beb786e26338a783b'
'8424b78e9dd772e75b4ef90814807815'
'2d6dc6842464f107bccc68cd505a6c31'
- 'beb8ebffc3652584363804e41445ba17'
+ 'ae216c26a6a5cae4a3ef9c0e1f7bfaa6'
'7fc6d33bb218e752302eef0a80ff0a89')
build() {
diff --git a/abs/core-testing/udev/arch-udev-rules.patch b/abs/core-testing/udev/arch-udev-rules.patch
index 22f9d1b..b672731 100644
--- a/abs/core-testing/udev/arch-udev-rules.patch
+++ b/abs/core-testing/udev/arch-udev-rules.patch
@@ -5,21 +5,19 @@ diff -Nur rules.d/60-persistent-storage.rules rules.d.arch/60-persistent-storage
SUBSYSTEM!="block", GOTO="persistent_storage_end"
# skip rules for inappropriate block devices
--KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-*|md*", GOTO="persistent_storage_end"
-+KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|md*", GOTO="persistent_storage_end"
+-KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-*|md*|btibm*", GOTO="persistent_storage_end"
++KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|md*|btibm*", GOTO="persistent_storage_end"
# never access non-cdrom removable ide devices, the drivers are causing event loops on open()
KERNEL=="hd*[!0-9]", ATTR{removable}=="1", DRIVERS=="ide-cs|ide-floppy", GOTO="persistent_storage_end"
diff -Nur rules.d/80-drivers.rules rules.d.arch/80-drivers.rules
--- rules.d/80-drivers.rules 2008-09-12 15:59:57.000000000 +0200
+++ rules.d.arch/80-drivers.rules 2008-09-12 16:01:56.000000000 +0200
-@@ -2,16 +2,17 @@
+@@ -2,14 +2,16 @@
ACTION!="add", GOTO="drivers_end"
-DRIVER!="?*", ENV{MODALIAS}=="?*", RUN{ignore_error}+="/sbin/modprobe $env{MODALIAS}"
--SUBSYSTEM=="pnp", DRIVER!="?*", ENV{MODALIAS}!="?*", \
-- RUN{ignore_error}+="/bin/sh -c '/sbin/modprobe -a $$(while read id; do echo pnp:d$$id; done < /sys$devpath/id)'"
-SUBSYSTEM=="tifm", RUN+="/sbin/modprobe --all tifm_sd tifm_ms"
-SUBSYSTEM=="memstick", RUN+="/sbin/modprobe --all ms_block mspro_block"
-SUBSYSTEM=="mmc", RUN+="/sbin/modprobe mmc_block"
@@ -28,7 +26,6 @@ diff -Nur rules.d/80-drivers.rules rules.d.arch/80-drivers.rules
-SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe sg"
-SUBSYSTEM=="module", KERNEL=="parport_pc", RUN+="/sbin/modprobe ppdev"
+DRIVER!="?*", ENV{MODALIAS}=="?*", RUN{ignore_error}+="/lib/udev/load-modules.sh $env{MODALIAS}"
-+SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", DRIVER!="?*", RUN{ignore_error}+="/bin/sh -c 'while read id; do /lib/udev/load-modules.sh pnp:d$$id; /lib/udev/load-modules.sh pnp:c$$id ; done < /sys$devpath/id'"
+SUBSYSTEM=="tifm", RUN+="/lib/udev/load-modules.sh tifm_sd"
+SUBSYSTEM=="tifm", RUN+="/lib/udev/load-modules.sh tifm_ms"
+SUBSYSTEM=="memstick", RUN+="/lib/udev/load-modules.sh ms_block"
@@ -72,42 +69,33 @@ diff -Nur rules.d/50-udev-default.rules rules.d.arch/50-udev-default.rules
# input
KERNEL=="mouse*|mice|event*", NAME="input/%k", MODE="0640"
-@@ -29,20 +35,25 @@
-
- # video4linux
+@@ -36,13 +36,18 @@
+ KERNEL=="vtx*|vbi*", GROUP="video"
+ KERNEL=="winradio*", GROUP="video"
KERNEL=="vbi0", SYMLINK+="vbi"
-+KERNEL=="vbi[0-9]*", NAME="v4l/vbi%n", SYMLINK+="%k", GROUP="video"
- KERNEL=="radio0", SYMLINK+="radio"
+-KERNEL=="radio0", SYMLINK+="radio"
++KERNEL=="vbi[0-9]*", NAME="v4l/vbi%n", SYMLINK+="%k"
++KERNEL=="radio0", SYMLINK+="video"
+KERNEL=="radio[0-9]*", NAME="v4l/radio%n", SYMLINK+="radio%n", GROUP="video"
KERNEL=="video0", SYMLINK+="video"
-+KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK+="%k", GROUP="video"
++KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK+="%k"
+KERNEL=="vtx0", SYMLINK+="vtx"
-+KERNEL=="vtx[0-9]*", NAME="v4l/vtx%n", SYMLINK+="%k", GROUP="video"
++KERNEL=="vtx[0-9]*", NAME="v4l/vtx%n", SYMLINK+="%k"
# graphics
--KERNEL=="agpgart", MODE="0600"
+-KERNEL=="agpgart", MODE="0600", GROUP="video"
-KERNEL=="card[0-9]*", NAME="dri/%k", MODE="0666"
-KERNEL=="fb0", SYMLINK+="fb"
+KERNEL=="agpgart", NAME="misc/%k", SYMLINK+="%k", GROUP="video", MODE="0600"
+KERNEL=="card[0-9]*", NAME="dri/%k", GROUP="video", MODE="0666"
+KERNEL=="fb[0-9]*", NAME="fb/%n", SYMLINK+="%k", GROUP="video"
-
- # DVB video
--SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c"
-+SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c", GROUP="video"
-
- # Firewire
--KERNEL=="dv1394*", SYMLINK+="dv1394/%n"
--KERNEL=="video1394*", NAME="video1394/%n"
-+KERNEL=="dv1394*", SYMLINK+="dv1394/%n", GROUP="video"
-+KERNEL=="video1394*", NAME="video1394/%n", GROUP="video"
-
- # firmware class requests
- SUBSYSTEM=="firmware", ACTION=="add", RUN+="firmware.sh"
+ KERNEL=="pmu", GROUP="video"
+ KERNEL=="nvidia*|nvidiactl*", GROUP="video"
+ SUBSYSTEM=="graphics", GROUP="video"
@@ -62,19 +73,19 @@
+ # block, tapes, block-releated
+ SUBSYSTEM=="block", GROUP="disk"
SUBSYSTEM=="block", KERNEL=="sr[0-9]*", SYMLINK+="scd%n"
- SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", ACTION=="add", ATTR{type}=="0|7|14", ATTR{timeout}="60"
- SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", ACTION=="add", ATTR{type}=="1", ATTR{timeout}="900"
-KERNEL=="hd*", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", OPTIONS+="all_partitions"
+KERNEL=="hd*", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", OPTIONS+="all_partitions", GROUP="floppy"
KERNEL=="fd[0-9]", GROUP="floppy"
diff --git a/abs/core-testing/unichrome-dri/PKGBUILD b/abs/core-testing/unichrome-dri/PKGBUILD
index c51bb2b..2870c39 100644
--- a/abs/core-testing/unichrome-dri/PKGBUILD
+++ b/abs/core-testing/unichrome-dri/PKGBUILD
@@ -1,40 +1,38 @@
-# $Id: PKGBUILD 1898 2008-05-22 18:05:23Z jgc $
+# $Id: PKGBUILD 13002 2008-09-25 18:36:29Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=unichrome-dri
-pkgver=7.0.3
-_mesaver=7.0.3
+pkgver=7.2
pkgrel=1
pkgdesc="DRI drivers for Unichrome-based videochipsets"
arch=(i686 x86_64)
-license=('GPL')
url="http://xorg.freedesktop.org/"
-depends=('libdrm>=2.3.0' 'expat>=2.0')
-makedepends=('imake' 'mesa>=7.0.3' 'glproto>=1.4.9')
+depends=('libdrm>=2.3.1' 'expat>=2.0.1' 'libgl>=7.1-2')
+makedepends=('dri2proto>=1.1' 'glproto>=1.4.9' 'pkgconfig' 'libxfixes' 'libxdamage' 'libxxf86vm' 'libxext')
options=('!libtool')
-source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2)
+source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2
+ mesa-7.1-link-shared.patch)
+md5sums=('04d379292e023df0b0266825cb0dbde5'
+ 'f0baa948d9810f268413111ee439d24b')
build() {
- cd ${startdir}/src/Mesa-${_mesaver}/configs
-
- CONFIG="linux-dri-x86"
- [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64"
- echo "EXTRA_LIB_PATH =" >> ${CONFIG}
- echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG}
- echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG}
- echo "USING_EGL = 0" >> ${CONFIG}
- echo "PROGRAM_DIRS =" >> ${CONFIG}
- echo "MKDEP = makedepend" >> ${CONFIG}
- echo "DRI_DIRS = unichrome" >> ${CONFIG}
- echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG}
- echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG}
-
- ln -s ${CONFIG} current
- cd ${startdir}/src/Mesa-${_mesaver}/src/mesa
- make linux-solo || return 1
- cd drivers/dri
- make DESTDIR=${startdir}/pkg install || return 1
+ cd ${srcdir}/Mesa-${pkgver}
+ patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch
+ export CFLAGS="${CFLAGS} -ffast-math"
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=unichrome \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glu \
+ --disable-glut \
+ --disable-glw || return 1
+ make || return 1
+ cd src/mesa/drivers/dri || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ rm -rf ${pkgdir}/usr/lib/pkgconfig
+ rm -rf ${pkgdir}/usr/include
+ rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so
}
-md5sums=('e6e6379d7793af40a6bc3ce1bace572e')
diff --git a/abs/core-testing/unichrome-dri/mesa-7.1-link-shared.patch b/abs/core-testing/unichrome-dri/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/unichrome-dri/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/v4l-dvb/PKGBUILD b/abs/core-testing/v4l-dvb/PKGBUILD
index 8db31a2..10ef694 100644
--- a/abs/core-testing/v4l-dvb/PKGBUILD
+++ b/abs/core-testing/v4l-dvb/PKGBUILD
@@ -2,9 +2,9 @@
# Maintainer: Cecil Watson<knoppmyth@gmail.com>
pkgname=v4l-dvb
-_kernver=2.6.26-ARCH
+_kernver=2.6.27-ARCH
pkgver=1
-pkgrel=1
+pkgrel=3
pkgdesc="V4L-DVB drivers from mercurial"
arch=('i686' 'x86_64')
license=('GPL2')
diff --git a/abs/core-testing/v4l-dvb/v4l-dvb.install b/abs/core-testing/v4l-dvb/v4l-dvb.install
index c87bb82..1c17557 100644
--- a/abs/core-testing/v4l-dvb/v4l-dvb.install
+++ b/abs/core-testing/v4l-dvb/v4l-dvb.install
@@ -1,20 +1,20 @@
# arg 1: the new package version
post_install() {
- KERNEL_VERSION='2.6.26-ARCH'
+ KERNEL_VERSION='2.6.27-ARCH'
depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1
}
# arg 1: the new package version
# arg 2: the old package version
post_upgrade() {
- KERNEL_VERSION='2.6.26-ARCH'
+ KERNEL_VERSION='2.6.27-ARCH'
depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1
}
# arg 1: the old package version
post_remove() {
- KERNEL_VERSION='2.6.26-ARCH'
+ KERNEL_VERSION='2.6.27-ARCH'
depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1
}
diff --git a/abs/core-testing/xf86-input-aiptek/PKGBUILD b/abs/core-testing/xf86-input-aiptek/PKGBUILD
index f3d5b39..509eba6 100644
--- a/abs/core-testing/xf86-input-aiptek/PKGBUILD
+++ b/abs/core-testing/xf86-input-aiptek/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 10857 2008-08-31 13:24:55Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-aiptek
-pkgver=1.0.1
-pkgrel=4
+pkgver=1.1.1
+pkgrel=1
pkgdesc="X.Org Aiptek USB Digital Tablet input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
options=('!libtool')
groups=('xorg-input-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('951b2b1a270f67d28e2e89fd2b9f15ae')
+md5sums=('2aa75313ea5652a8cf93581c65ee6493')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-input-calcomp/PKGBUILD b/abs/core-testing/xf86-input-calcomp/PKGBUILD
index b18d89c..2792455 100644
--- a/abs/core-testing/xf86-input-calcomp/PKGBUILD
+++ b/abs/core-testing/xf86-input-calcomp/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11000 2008-08-31 13:46:51Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-calcomp
-pkgver=1.1.1
+pkgver=1.1.2
pkgrel=1
pkgdesc="X.Org CalComp Drawing Board input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
options=('!libtool')
groups=('xorg-input-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ebc9a64dc72ae3015c16011bbd2d3557')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
-md5sums=('689099e2ade8a8c9f68f82fdf569b3ad')
diff --git a/abs/core-testing/xf86-input-digitaledge/PKGBUILD b/abs/core-testing/xf86-input-digitaledge/PKGBUILD
index 2017d0f..fcdfd1a 100644
--- a/abs/core-testing/xf86-input-digitaledge/PKGBUILD
+++ b/abs/core-testing/xf86-input-digitaledge/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11039 2008-08-31 13:50:33Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-digitaledge
-pkgver=1.1.0
-pkgrel=4
+pkgver=1.1.1
+pkgrel=1
pkgdesc="X.Org Digital Edge Tablet input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
groups=('xorg-input-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('53461c34cc0712aacab92b820b9fcb84')
+md5sums=('4c27e0f3c6447e76df39a837fd46a00f')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-input-dmc/PKGBUILD b/abs/core-testing/xf86-input-dmc/PKGBUILD
index 5839019..afc4e86 100644
--- a/abs/core-testing/xf86-input-dmc/PKGBUILD
+++ b/abs/core-testing/xf86-input-dmc/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11060 2008-08-31 13:52:40Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-dmc
-pkgver=1.1.1
+pkgver=1.1.2
pkgrel=1
pkgdesc="X.Org DMC FIT10 serial input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
options=('!libtool')
groups=('xorg-input-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('91021ea8f3593221c0d9ee9cc14deb48')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
-md5sums=('f21f008220bc7687ce1c34ab557ec32f')
diff --git a/abs/core-testing/xf86-input-dynapro/PKGBUILD b/abs/core-testing/xf86-input-dynapro/PKGBUILD
index 467e05d..4043a9f 100644
--- a/abs/core-testing/xf86-input-dynapro/PKGBUILD
+++ b/abs/core-testing/xf86-input-dynapro/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11063 2008-08-31 13:54:38Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-dynapro
-pkgver=1.1.1
+pkgver=1.1.2
pkgrel=1
pkgdesc="X.org DynaPro Touch Screen input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
options=('!libtool')
groups=('xorg-input-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ceb5efbd3d62e24ab3a5f9f180777f7c')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
-md5sums=('d47be12a230c44a05d56d6b79ebcfc38')
diff --git a/abs/core-testing/xf86-input-elographics/PKGBUILD b/abs/core-testing/xf86-input-elographics/PKGBUILD
index 374fcaa..1b48f31 100644
--- a/abs/core-testing/xf86-input-elographics/PKGBUILD
+++ b/abs/core-testing/xf86-input-elographics/PKGBUILD
@@ -1,26 +1,26 @@
-# $Id: PKGBUILD 3250 2008-06-21 18:18:33Z jgc $
+# $Id: PKGBUILD 17524 2008-10-30 22:03:55Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-elographics
-pkgver=1.2.2
+pkgver=1.2.3
pkgrel=1
pkgdesc="X.org Elographics TouchScreen input driver"
arch=(i686 x86_64)
license=('custom')
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4.2')
+makedepends=('pkgconfig' 'xorg-server>=1.5.2')
options=('!libtool')
groups=('xorg-input-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('50a9c32af12ca4733afe23042f012f9c')
+md5sums=('cc2923460c8eff9652b01889a063058d')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
- install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
- install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
}
diff --git a/abs/core-testing/xf86-input-evdev/PKGBUILD b/abs/core-testing/xf86-input-evdev/PKGBUILD
index 0745861..1a1f167 100644
--- a/abs/core-testing/xf86-input-evdev/PKGBUILD
+++ b/abs/core-testing/xf86-input-evdev/PKGBUILD
@@ -1,22 +1,25 @@
-# $Id: PKGBUILD 3693 2008-06-29 11:05:37Z jgc $
+# $Id: PKGBUILD 20574 2008-12-05 20:53:20Z jgc $
# Maintainer: Alexander Baldeck <Alexander@archlinux.org
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-evdev
-pkgver=2.0.1
+pkgver=2.1.0
pkgrel=1
pkgdesc="X.org evdev input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
+license=('custom')
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'inputproto>=1.4.3' 'randrproto>=1.2.1')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'inputproto>=1.4.4' 'randrproto>=1.2.1')
options=('!libtool')
groups=('xorg-input-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('061c4558316b1ec9ee71478bdf68b10c')
+md5sums=('a6070ead29b2d81b5b386a96df2661b8')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
}
diff --git a/abs/core-testing/xf86-input-fpit/PKGBUILD b/abs/core-testing/xf86-input-fpit/PKGBUILD
index c8931e9..280ca28 100644
--- a/abs/core-testing/xf86-input-fpit/PKGBUILD
+++ b/abs/core-testing/xf86-input-fpit/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11093 2008-08-31 13:58:34Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-fpit
-pkgver=1.1.0
-pkgrel=4
+pkgver=1.2.0
+pkgrel=1
pkgdesc="X.Org Fujitsu Stylistic Tablet PC input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
groups=('xorg-input-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('a31066a2076d18619ceaea67f6d89698')
+md5sums=('0f3e013d5ff58e0aba3d9e1d18830291')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-input-hyperpen/PKGBUILD b/abs/core-testing/xf86-input-hyperpen/PKGBUILD
index 8873552..b06636b 100644
--- a/abs/core-testing/xf86-input-hyperpen/PKGBUILD
+++ b/abs/core-testing/xf86-input-hyperpen/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11115 2008-08-31 14:01:17Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-hyperpen
-pkgver=1.1.0
-pkgrel=4
+pkgver=1.2.0
+pkgrel=1
pkgdesc="X.Org HyperPen Tablet input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
options=('!libtool')
groups=('xorg-input-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('1dfccb75069e61e0c6f990b47eb58c40')
+md5sums=('175c1e1ad668ebbbe212c1e975dd14f9')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-input-jamstudio/PKGBUILD b/abs/core-testing/xf86-input-jamstudio/PKGBUILD
index 28be4e1..35036e2 100644
--- a/abs/core-testing/xf86-input-jamstudio/PKGBUILD
+++ b/abs/core-testing/xf86-input-jamstudio/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11114 2008-08-31 14:00:38Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-jamstudio
-pkgver=1.1.0
-pkgrel=4
+pkgver=1.2.0
+pkgrel=1
pkgdesc="X.Org KB-Gear JamStudio pentablet input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
options=('!libtool')
groups=('xorg-input-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('a32e36a24545791a3408cdc5563b6523')
+md5sums=('8011f90d7dd801d26e8c3dd058633978')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-input-joystick/PKGBUILD b/abs/core-testing/xf86-input-joystick/PKGBUILD
index e2146e8..de6f6e3 100644
--- a/abs/core-testing/xf86-input-joystick/PKGBUILD
+++ b/abs/core-testing/xf86-input-joystick/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 23023 2009-01-01 16:35:00Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-joystick
-pkgver=1.3.1
+pkgver=1.4.0
pkgrel=1
pkgdesc="X.Org Joystick input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
groups=('xorg-input-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('600bca5bd96a0dee90e20b606aa1eb93')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
-md5sums=('ff25ea697cfa1570cc28f4b9cf9c761f')
diff --git a/abs/core-testing/xf86-input-magellan/PKGBUILD b/abs/core-testing/xf86-input-magellan/PKGBUILD
index 324c0be..9ed417a 100644
--- a/abs/core-testing/xf86-input-magellan/PKGBUILD
+++ b/abs/core-testing/xf86-input-magellan/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11137 2008-08-31 14:03:11Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-magellan
-pkgver=1.1.1
+pkgver=1.2.0
pkgrel=1
pkgdesc="X.Org Magellan Space mouse input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
groups=('xorg-input-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('9801ba10f15f8be2420dfb3f3b5d5d27')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
-md5sums=('8a966d3b74dc2a801ff09b895037090c')
diff --git a/abs/core-testing/xf86-input-magictouch/PKGBUILD b/abs/core-testing/xf86-input-magictouch/PKGBUILD
index fdd4a4a..70c417e 100644
--- a/abs/core-testing/xf86-input-magictouch/PKGBUILD
+++ b/abs/core-testing/xf86-input-magictouch/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 20562 2008-12-05 20:36:01Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-magictouch
@@ -15,9 +15,8 @@ source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
md5sums=('d23f2791cd634ef85b7cc5e9da8f8407')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/xf86-input-microtouch/PKGBUILD b/abs/core-testing/xf86-input-microtouch/PKGBUILD
index be6b234..5984af1 100644
--- a/abs/core-testing/xf86-input-microtouch/PKGBUILD
+++ b/abs/core-testing/xf86-input-microtouch/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11144 2008-08-31 14:03:49Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-microtouch
-pkgver=1.1.1
+pkgver=1.2.0
pkgrel=1
pkgdesc="X.org microtouch input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
groups=('xorg-input-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('1ad1aee7d8df84b9ea832d1e75963257')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
-md5sums=('9843fbea6cc0c4129e96ce9a6c893cf6')
diff --git a/abs/core-testing/xf86-input-mutouch/PKGBUILD b/abs/core-testing/xf86-input-mutouch/PKGBUILD
index 36da1e3..ce27c8e 100644
--- a/abs/core-testing/xf86-input-mutouch/PKGBUILD
+++ b/abs/core-testing/xf86-input-mutouch/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 15051 2008-10-12 12:28:57Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-mutouch
-pkgver=1.1.0
-pkgrel=4
+pkgver=1.2.1
+pkgrel=1
pkgdesc="X.org mutouch input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.5.2')
groups=('xorg-input-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('98ae915c67cabf0e6d40a425dbdbe10b')
+md5sums=('f28998cdfae2a4c41589299a4ee1f459')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/xf86-input-palmax/PKGBUILD b/abs/core-testing/xf86-input-palmax/PKGBUILD
index ff5c4b2..45c4da1 100644
--- a/abs/core-testing/xf86-input-palmax/PKGBUILD
+++ b/abs/core-testing/xf86-input-palmax/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11159 2008-08-31 14:05:43Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-palmax
-pkgver=1.1.0
-pkgrel=4
+pkgver=1.2.0
+pkgrel=1
pkgdesc="X.org palmax input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
groups=('xorg-input-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('0959dbf7972dfb95f56e4bd3f56447cf')
+md5sums=('9655d2235569c5a6ac321c6fb89a6f3b')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-input-penmount/PKGBUILD b/abs/core-testing/xf86-input-penmount/PKGBUILD
index 062401f..b036796 100644
--- a/abs/core-testing/xf86-input-penmount/PKGBUILD
+++ b/abs/core-testing/xf86-input-penmount/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11167 2008-08-31 14:06:53Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-penmount
-pkgver=1.2.1
+pkgver=1.3.0
pkgrel=1
pkgdesc="X.org penmount input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
groups=('xorg-input-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
-md5sums=('268af4dceda544d8c815b9b7e87d4536')
+md5sums=('24594c0222e631fedccc7c540c420b03')
diff --git a/abs/core-testing/xf86-input-summa/PKGBUILD b/abs/core-testing/xf86-input-summa/PKGBUILD
index 9b0c9ef..abbae8a 100644
--- a/abs/core-testing/xf86-input-summa/PKGBUILD
+++ b/abs/core-testing/xf86-input-summa/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11181 2008-08-31 14:11:07Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-summa
-pkgver=1.1.0
-pkgrel=4
+pkgver=1.2.0
+pkgrel=1
pkgdesc="X.org summa input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
options=('!libtool')
groups=('xorg-input-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('b37a432fd87bb9f46d011622d6fce6b3')
+md5sums=('7e17468c0d90dcbbb6202a8242efff4b')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-input-synaptics/PKGBUILD b/abs/core-testing/xf86-input-synaptics/PKGBUILD
new file mode 100644
index 0000000..f92e0fd
--- /dev/null
+++ b/abs/core-testing/xf86-input-synaptics/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 22376 2008-12-26 16:24:10Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Thomas Bächler <thomas@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+pkgname=xf86-input-synaptics
+pkgver=0.99.3
+pkgrel=1
+pkgdesc="synaptics driver for notebook touchpads"
+arch=(i686 x86_64)
+license=('custom')
+url="http://w1.894.telia.com/~u89404340/touchpad/"
+depends=('libx11')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+replaces=('synaptics')
+provides=('synaptics')
+conflicts=('synaptics')
+options=(!libtool)
+source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('735a798e0f68c65d98e3d6b092b56d29')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -d "${pkgdir}/usr/share/hal/fdi/policy/10osvendor"
+ install -m644 fdi/*.fdi "${pkgdir}/usr/share/hal/fdi/policy/10osvendor/" || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/abs/core-testing/xf86-input-tek4957/PKGBUILD b/abs/core-testing/xf86-input-tek4957/PKGBUILD
index 2ea7a0f..afa4498 100644
--- a/abs/core-testing/xf86-input-tek4957/PKGBUILD
+++ b/abs/core-testing/xf86-input-tek4957/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11210 2008-08-31 14:13:46Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-tek4957
-pkgver=1.1.0
-pkgrel=4
+pkgver=1.2.0
+pkgrel=1
pkgdesc="X.org tek4957 input driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
groups=('xorg-input-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('be8a4bd474ad6c85b93f66dd6fcfa6ee')
+md5sums=('8103db1ca5c55726e0b58148e4b1fc06')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-input-ur98/PKGBUILD b/abs/core-testing/xf86-input-ur98/PKGBUILD
index 8fcafc0..6c1ec76 100644
--- a/abs/core-testing/xf86-input-ur98/PKGBUILD
+++ b/abs/core-testing/xf86-input-ur98/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 20489 2008-12-05 10:09:15Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-ur98
@@ -15,9 +15,8 @@ source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
md5sums=('3cf8928411458baaa9e726e51772c550')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/xf86-input-vmmouse/PKGBUILD b/abs/core-testing/xf86-input-vmmouse/PKGBUILD
index 55eed97..6b0ef90 100644
--- a/abs/core-testing/xf86-input-vmmouse/PKGBUILD
+++ b/abs/core-testing/xf86-input-vmmouse/PKGBUILD
@@ -1,23 +1,26 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 22273 2008-12-25 16:56:34Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-vmmouse
-pkgver=12.4.3
+pkgver=12.6.3
pkgrel=1
pkgdesc="X.org VMWare Mouse input driver"
arch=(i686 x86_64)
+license=('custom')
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
groups=('xorg-input-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('f5933143d7789557983ecb527092d14e')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
}
-md5sums=('44730af795616ed4d4a0cd9a3a07935d')
diff --git a/abs/core-testing/xf86-input-void/PKGBUILD b/abs/core-testing/xf86-input-void/PKGBUILD
index d2d5b2b..ce4b0cf 100644
--- a/abs/core-testing/xf86-input-void/PKGBUILD
+++ b/abs/core-testing/xf86-input-void/PKGBUILD
@@ -1,23 +1,25 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11237 2008-08-31 14:17:19Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-input-void
-pkgver=1.1.0
-pkgrel=2
+pkgver=1.1.1
+pkgrel=1
pkgdesc="X.org void input driver"
arch=(i686 x86_64)
+license=('custom')
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
groups=('xorg-input-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('ea72a92d43b95f413347df96d6a73933')
+md5sums=('862c230f5f6e0c545f232b4c0fa9537a')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
}
diff --git a/abs/core-testing/xf86-video-amd/PKGBUILD b/abs/core-testing/xf86-video-amd/PKGBUILD
index 1bf6f62..fa31ce0 100644
--- a/abs/core-testing/xf86-video-amd/PKGBUILD
+++ b/abs/core-testing/xf86-video-amd/PKGBUILD
@@ -1,27 +1,28 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11397 2008-08-31 14:36:04Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
pkgname=xf86-video-amd
-pkgver=2.7.7.6
+pkgver=2.7.7.7
pkgrel=1
pkgdesc="X.org AMD/Geode LX & NX video driver"
# there is no 64bit geode yet!
arch=(i686)
+license=('custom')
url="http://xorg.freedesktop.org/"
-makedepends=('pkgconfig' 'xorg-server>=1.4')
+depends=('glibc')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
+conflicts=('xorg-server<1.4.99.906')
options=('!libtool')
-license=('custom:amd')
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('2f3e8c3019afda926e7ab95b074c35e1')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST} \
- --enable-visibility
+ --enable-visibility || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
- install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \
- ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
}
-md5sums=('e839cc4552032b7bd44beb72e575980f')
diff --git a/abs/core-testing/xf86-video-apm/PKGBUILD b/abs/core-testing/xf86-video-apm/PKGBUILD
index 7808dbc..4ed1cff 100644
--- a/abs/core-testing/xf86-video-apm/PKGBUILD
+++ b/abs/core-testing/xf86-video-apm/PKGBUILD
@@ -1,22 +1,23 @@
-# $Id: PKGBUILD 3262 2008-06-21 18:38:40Z jgc $
+# $Id: PKGBUILD 22289 2008-12-25 17:19:55Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-apm
-pkgver=1.2.0
+pkgver=1.2.1
pkgrel=1
pkgdesc="X.org Alliance ProMotion video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4.0.90')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('673c93df004bb857dc89ae9c78ccf907')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
-md5sums=('4f78650d79656dc803a720049d65682e')
diff --git a/abs/core-testing/xf86-video-ark/PKGBUILD b/abs/core-testing/xf86-video-ark/PKGBUILD
index cbe38bd..288686c 100644
--- a/abs/core-testing/xf86-video-ark/PKGBUILD
+++ b/abs/core-testing/xf86-video-ark/PKGBUILD
@@ -1,22 +1,23 @@
-# $Id: PKGBUILD 3260 2008-06-21 18:36:28Z jgc $
+# $Id: PKGBUILD 22271 2008-12-25 16:54:52Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-ark
-pkgver=0.7.0
+pkgver=0.7.1
pkgrel=1
pkgdesc="X.org ark video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4.0.90')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
options=('!libtool')
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('be91391f061863617018403cdbd2944f')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
-md5sums=('6826c556ebe9a1248cbc7f7edd44f956')
diff --git a/abs/core-testing/xf86-video-ati/PKGBUILD b/abs/core-testing/xf86-video-ati/PKGBUILD
index c95c021..79faa91 100644
--- a/abs/core-testing/xf86-video-ati/PKGBUILD
+++ b/abs/core-testing/xf86-video-ati/PKGBUILD
@@ -1,51 +1,32 @@
-# $Id: PKGBUILD 3261 2008-06-21 18:38:23Z jgc $
-# Maintainer: Alexander Baldeck <alexander@archlinux.org>
-# Contributor: Jan de Groot <jgc@archlinux.org>
+# $Id: PKGBUILD 22423 2008-12-26 19:32:02Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
pkgname=xf86-video-ati
-pkgver=6.8.0
-pkgrel=4
-_mesaver="7.0.3"
+pkgver=6.9.0
+pkgrel=6
pkgdesc="X.org ati video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('libdrm>=2.3.0')
-makedepends=('pkgconfig' 'xorg-server>=1.4' 'imake' 'mesa>=7.0.3'
- 'glproto>=1.4.9' 'xf86driproto' 'diffutils')
+depends=('libdrm>=2.3.1' 'libgl>=7.2' 'libpciaccess' 'ati-dri>=7.2')
+makedepends=('pkgconfig' 'xorg-server>=1.5.0' 'fontsproto'
+ 'glproto>=1.4.9' 'xf86driproto' 'diffutils' 'xorg-util-macros')
+conflicts=('xorg-server<1.5.0')
groups=('xorg-video-drivers')
options=('!libtool')
-license=('custom')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
- http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2)
+ git-20081021.patch)
+md5sums=('afa4873f58ae6fa31fedeb9ed31531db'
+ 'f2ce4e7fb4e266bbc61fb2d9c7c20a3b')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/git-20081021.patch" || return 1
+ libtoolize --force --copy || return 1
+ aclocal || return 1
+ autoconf || return 1
+ automake || return 1
./configure --prefix=/usr \
- --enable-dri
+ --enable-dri || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
-
- cd ${startdir}/src/Mesa-${_mesaver}/configs
-
- CONFIG="linux-dri-x86"
- [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64"
- echo "EXTRA_LIB_PATH =" >> ${CONFIG}
- # currently commented, see FS#7590 for details
- #echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG}
- echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG}
- echo "USING_EGL = 0" >> ${CONFIG}
- echo "PROGRAM_DIRS =" >> ${CONFIG}
- echo "MKDEP = makedepend" >> ${CONFIG}
- echo "DRI_DIRS = r128 radeon r200 r300" >> ${CONFIG}
- echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG}
- echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG}
-
- ln -s ${CONFIG} current
- cd ${startdir}/src/Mesa-${_mesaver}/src/mesa
- make linux-solo || return 1
- cd drivers/dri
- make DESTDIR=${startdir}/pkg install || return 1
+ make "DESTDIR=${pkgdir}" install || return 1
}
-md5sums=('3c97c7925ebf4162eeb3463e23adc0e3'
- 'e6e6379d7793af40a6bc3ce1bace572e')
diff --git a/abs/core-testing/xf86-video-ati/git-20081021.patch b/abs/core-testing/xf86-video-ati/git-20081021.patch
new file mode 100644
index 0000000..b3a1baf
--- /dev/null
+++ b/abs/core-testing/xf86-video-ati/git-20081021.patch
@@ -0,0 +1,17245 @@
+diff --git a/man/radeon.man b/man/radeon.man
+index 03622a0..68029ed 100644
+--- a/man/radeon.man
++++ b/man/radeon.man
+@@ -283,7 +283,8 @@ The default value is
+ .BI "Option \*qEnablePageFlip\*q \*q" boolean \*q
+ Enable page flipping for 3D acceleration. This will increase performance
+ but not work correctly in some rare cases, hence the default is
+-.B off.
++.B off.
++It is currently only supported on r4xx and older hardware.
+ .TP
+ .BI "Option \*qForceMinDotClock\*q \*q" frequency \*q
+ Override minimum dot clock. Some Radeon BIOSes report a minimum dot
+@@ -297,10 +298,9 @@ parameter may be specified as a float value with standard suffixes like
+ "k", "kHz", "M", "MHz".
+ .TP
+ .BI "Option \*qRenderAccel\*q \*q" boolean \*q
+-Enables or disables hardware Render acceleration. This driver does not
+-support component alpha (subpixel) rendering. It is only supported on
+-Radeon series up to and including 9200 (9500/9700 and newer
+-unsupported). The default is to
++Enables or disables hardware Render acceleration. It is supported on
++Radeon series up to and including r5xx for EXA and up to and
++including r2xx for XAA. The default is to
+ .B enable
+ Render acceleration.
+ .TP
+diff --git a/src/AtomBios/CD_Operations.c b/src/AtomBios/CD_Operations.c
+index 509aa0c..58c4ae9 100644
+--- a/src/AtomBios/CD_Operations.c
++++ b/src/AtomBios/CD_Operations.c
+@@ -44,7 +44,6 @@ Revision History:
+ #include "xorg-server.h"
+
+ #include "Decoder.h"
+-#include "atombios.h"
+
+ VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
+ VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
+@@ -231,7 +230,7 @@ UINT32 IndirectInputOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].func(pParserTempData);
+ pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize;
+ }
+- pParserTempData->IndirectIOTablePointer-=*(UINT16*)(pParserTempData->IndirectIOTablePointer+1);
++ pParserTempData->IndirectIOTablePointer-=UINT16LE_TO_CPU(*(UINT16*)(pParserTempData->IndirectIOTablePointer+1));
+ pParserTempData->IndirectIOTablePointer++;
+ return pParserTempData->IndirectData;
+ } else pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize;
+@@ -243,7 +242,7 @@ UINT32 IndirectInputOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+
+ VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
+- pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.WordXX.PA_Destination;
++ pParserTempData->Index=(UINT32)UINT16LE_TO_CPU(pParserTempData->pCmd->Parameters.WordXX.PA_Destination);
+ pParserTempData->Index+=pParserTempData->CurrentRegBlock;
+ switch(pParserTempData->Multipurpose.CurrentPort){
+ case ATI_RegsPort:
+@@ -269,16 +268,16 @@ VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
+ *(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination)=
+- pParserTempData->DestData32;
++ CPU_TO_UINT32LE(pParserTempData->DestData32);
+ }
+
+ VOID PutDataWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
+ if (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination < WS_QUOTIENT_C)
+- *(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) = pParserTempData->DestData32;
++ *(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) = pParserTempData->DestData32;
+ else
+- switch (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination)
+- {
++ switch (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination)
++ {
+ case WS_REMINDER_C:
+ pParserTempData->MultiplicationOrDivision.Division.Reminder32=pParserTempData->DestData32;
+ break;
+@@ -339,7 +338,7 @@ VOID SkipParameters16(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+
+ UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
+- pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP;
++ pParserTempData->Index=UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP);
+ pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
+ pParserTempData->Index+=pParserTempData->CurrentRegBlock;
+ switch(pParserTempData->Multipurpose.CurrentPort)
+@@ -361,9 +360,11 @@ UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+
+ UINT32 GetParametersPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
++ UINT32 data;
+ pParserTempData->Index=*pParserTempData->pWorkingTableData->IP;
+ pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
+- return *(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->Index);
++ data = UINT32LE_TO_CPU(*(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->Index));
++ return data;
+ }
+
+ UINT32 GetParametersWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+@@ -419,9 +420,12 @@ UINT32 GetParametersMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+
+ UINT32 GetParametersIndirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
+- pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP;
++ UINT32 ret;
++
++ pParserTempData->Index=UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP);
+ pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
+- return *(UINT32*)(RELATIVE_TO_BIOS_IMAGE(pParserTempData->Index)+pParserTempData->CurrentDataBlock);
++ ret = UINT32LE_TO_CPU(*(UINT32*)(RELATIVE_TO_BIOS_IMAGE(pParserTempData->Index)+pParserTempData->CurrentDataBlock));
++ return ret;
+ }
+
+ UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+@@ -435,7 +439,7 @@ UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
+ pParserTempData->CD_Mask.SrcAlignment=alignmentLowerWord;
+- pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP;
++ pParserTempData->Index=UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP);
+ pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
+ return pParserTempData->Index;
+ }
+@@ -443,7 +447,7 @@ UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ UINT32 GetParametersDirect32(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
+ pParserTempData->CD_Mask.SrcAlignment=alignmentDword;
+- pParserTempData->Index=*(UINT32*)pParserTempData->pWorkingTableData->IP;
++ pParserTempData->Index=UINT32LE_TO_CPU(*(UINT32*)pParserTempData->pWorkingTableData->IP);
+ pParserTempData->pWorkingTableData->IP+=sizeof(UINT32);
+ return pParserTempData->Index;
+ }
+@@ -474,7 +478,7 @@ VOID ProcessMove(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
+ if (pParserTempData->CD_Mask.SrcAlignment!=alignmentDword)
+ {
+- pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
++ pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
+ } else
+ {
+ SkipDestination[pParserTempData->ParametersType.Destination](pParserTempData);
+@@ -664,7 +668,8 @@ VOID ProcessSwitch(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
+ pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
+ pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
+ pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
+- while ( *(UINT16*)pParserTempData->pWorkingTableData->IP != (((UINT16)NOP_OPCODE << 8)+NOP_OPCODE))
++
++ while ( UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP) != (((UINT16)NOP_OPCODE << 8)+NOP_OPCODE))
+ {
+ if (*pParserTempData->pWorkingTableData->IP == 'c')
+ {
+@@ -673,7 +678,7 @@ VOID ProcessSwitch(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
+ pParserTempData->Index=GetParametersDirect16(pParserTempData);
+ if (pParserTempData->SourceData32 == pParserTempData->DestData32)
+ {
+- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(pParserTempData->Index);
++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(pParserTempData->Index);
+ return;
+ }
+ }
+@@ -695,7 +700,7 @@ VOID cmdSetDataBlock(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ } else
+ {
+ pMasterDataTable = GetDataMasterTablePointer(pParserTempData->pDeviceData);
+- pParserTempData->CurrentDataBlock= (TABLE_UNIT_TYPE)((PTABLE_UNIT_TYPE)pMasterDataTable)[value];
++ pParserTempData->CurrentDataBlock= UINT16LE_TO_CPU((TABLE_UNIT_TYPE)((PTABLE_UNIT_TYPE)pMasterDataTable)[value]);
+ }
+ }
+ pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
+@@ -704,13 +709,13 @@ VOID cmdSetDataBlock(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ VOID cmdSet_ATI_Port(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
+ pParserTempData->Multipurpose.CurrentPort=ATI_RegsPort;
+- pParserTempData->CurrentPortID = (UINT8)((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination;
++ pParserTempData->CurrentPortID = (UINT8)UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination);
+ pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
+ }
+
+ VOID cmdSet_Reg_Block(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
+- pParserTempData->CurrentRegBlock = ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination;
++ pParserTempData->CurrentRegBlock = UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination);
+ pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
+ }
+
+@@ -754,19 +759,23 @@ VOID ProcessDebug(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+
+ VOID ProcessDS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ {
+- pParserTempData->pWorkingTableData->IP+=((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination+sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
++ pParserTempData->pWorkingTableData->IP+=UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination)+sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
+ }
+
+
+-VOID cmdCall_Table(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
++VOID cmdCall_Table(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
++{
+ UINT16* MasterTableOffset;
+ pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
+ MasterTableOffset = GetCommandMasterTablePointer(pParserTempData->pDeviceData);
+ if(((PTABLE_UNIT_TYPE)MasterTableOffset)[((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value]!=0 ) // if the offset is not ZERO
+ {
++ ATOM_TABLE_ATTRIBUTE lTableAttr;
++
+ pParserTempData->CommandSpecific.IndexInMasterTable=GetTrueIndexInMasterTable(pParserTempData,((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value);
+- pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable =
+- (((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER *)pParserTempData->pWorkingTableData->pTableHead)->TableAttribute.PS_SizeInBytes>>2);
++
++ lTableAttr = GetCommandTableAttribute(pParserTempData->pWorkingTableData->pTableHead);
++ pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable = (lTableAttr.PS_SizeInBytes >>2);
+ pParserTempData->pDeviceData->pParameterSpace+=
+ pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable;
+ pParserTempData->Status=CD_CALL_TABLE;
+@@ -792,7 +801,7 @@ VOID ProcessJump(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ (pParserTempData->ParametersType.Destination == pParserTempData->CompareFlags ))
+ {
+
+- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16);
++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16));
+ } else
+ {
+ pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
+@@ -805,7 +814,7 @@ VOID ProcessJumpE(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ (pParserTempData->CompareFlags == pParserTempData->ParametersType.Destination))
+ {
+
+- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16);
++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16));
+ } else
+ {
+ pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
+@@ -817,7 +826,7 @@ VOID ProcessJumpNE(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
+ if (pParserTempData->CompareFlags != Equal)
+ {
+
+- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16);
++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16));
+ } else
+ {
+ pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
+diff --git a/src/AtomBios/Decoder.c b/src/AtomBios/Decoder.c
+index e8b3b6e..73aac94 100644
+--- a/src/AtomBios/Decoder.c
++++ b/src/AtomBios/Decoder.c
+@@ -40,12 +40,9 @@ Revision History:
+ #endif
+
+ #include <X11/Xos.h>
+-
++#include "xorg-server.h"
+
+ #include "Decoder.h"
+-#include "atombios.h"
+-#include "CD_binding.h"
+-#include "CD_Common_Types.h"
+
+ #ifndef DISABLE_EASF
+ #include "easf.h"
+@@ -77,13 +74,13 @@ UINT16* GetCommandMasterTablePointer(DEVICE_DATA STACK_BASED* pDeviceData)
+ /*
+ make MasterTableOffset point to EASF_ASIC_SETUP_TABLE structure, including usSize.
+ */
+- MasterTableOffset = (UINT16 *) (pDeviceData->pBIOS_Image+((EASF_ASIC_DESCRIPTOR*)pDeviceData->pBIOS_Image)->usAsicSetupTable_Offset);
++ MasterTableOffset = (UINT16 *) (pDeviceData->pBIOS_Image+(UINT16LE_TO_CPU(((EASF_ASIC_DESCRIPTOR*)pDeviceData->pBIOS_Image)->usAsicSetupTable_Offset));
+ } else
+ #endif
+ {
+ #ifndef UEFI_BUILD
+- MasterTableOffset = (UINT16 *)(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER) + pDeviceData->pBIOS_Image);
+- MasterTableOffset = (UINT16 *)((ULONG)((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterCommandTableOffset + pDeviceData->pBIOS_Image );
++ MasterTableOffset = (UINT16 *)(UINT16LE_TO_CPU(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER)) + pDeviceData->pBIOS_Image);
++ MasterTableOffset = (UINT16 *)((ULONG)UINT16LE_TO_CPU(((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterCommandTableOffset) + pDeviceData->pBIOS_Image );
+ MasterTableOffset =(UINT16 *) &(((ATOM_MASTER_COMMAND_TABLE *)MasterTableOffset)->ListOfCommandTables);
+ #else
+ MasterTableOffset = (UINT16 *)(&(GetCommandMasterTable( )->ListOfCommandTables));
+@@ -97,8 +94,8 @@ UINT16* GetDataMasterTablePointer(DEVICE_DATA STACK_BASED* pDeviceData)
+ UINT16 *MasterTableOffset;
+
+ #ifndef UEFI_BUILD
+- MasterTableOffset = (UINT16 *)(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER) + pDeviceData->pBIOS_Image);
+- MasterTableOffset = (UINT16 *)((ULONG)((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterDataTableOffset + pDeviceData->pBIOS_Image );
++ MasterTableOffset = (UINT16 *)(UINT16LE_TO_CPU(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER)) + pDeviceData->pBIOS_Image);
++ MasterTableOffset = (UINT16 *)((ULONG)(UINT16LE_TO_CPU(((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterDataTableOffset)) + pDeviceData->pBIOS_Image );
+ MasterTableOffset =(UINT16 *) &(((ATOM_MASTER_DATA_TABLE *)MasterTableOffset)->ListOfDataTables);
+ #else
+ MasterTableOffset = (UINT16 *)(&(GetDataMasterTable( )->ListOfDataTables));
+@@ -129,11 +126,29 @@ UINT8 GetTrueIndexInMasterTable(PARSER_TEMP_DATA STACK_BASED * pParserTempData,
+ }
+ }
+
++ATOM_TABLE_ATTRIBUTE GetCommandTableAttribute(UINT8 *pTableHeader)
++{
++ ATOM_TABLE_ATTRIBUTE_ACCESS lTableAccess;
++
++ /* It's unclear whether this union trick breaks C aliasing rules,
++ * however, it's explicitely permitted by gcc, and we have other
++ * case where the code relies on a union being accessed by either
++ * of the "ways" and stay consistent so if a compiler breaks this
++ * assumption, it will probably need us to compile without strict
++ * aliasing enforcement
++ */
++ lTableAccess.sbfAccess = ((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER *)pTableHeader)->TableAttribute;
++ lTableAccess.susAccess = UINT16LE_TO_CPU(lTableAccess.susAccess);
++
++ return lTableAccess.sbfAccess;
++}
++
+ CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTable)
+ {
+ PARSER_TEMP_DATA ParserTempData;
+ WORKING_TABLE_DATA STACK_BASED* prevWorkingTableData;
+
++ memset(&ParserTempData, 0, sizeof(PARSER_TEMP_DATA));
+ ParserTempData.pDeviceData=(DEVICE_DATA*)pDeviceData;
+ #ifndef DISABLE_EASF
+ if (pDeviceData->format == TABLE_FORMAT_EASF)
+@@ -143,7 +158,7 @@ CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTa
+ #endif
+ {
+ ParserTempData.pCmd=(GENERIC_ATTRIBUTE_COMMAND*)GetDataMasterTablePointer(pDeviceData);
+- ParserTempData.IndirectIOTablePointer=(UINT8*)((ULONG)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[INDIRECT_IO_TABLE]) + pDeviceData->pBIOS_Image);
++ ParserTempData.IndirectIOTablePointer=(UINT8*)((ULONG)(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[INDIRECT_IO_TABLE])) + pDeviceData->pBIOS_Image);
+ ParserTempData.IndirectIOTablePointer+=sizeof(ATOM_COMMON_TABLE_HEADER);
+ }
+
+@@ -160,65 +175,66 @@ CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTa
+ ParserTempData.Status=CD_CALL_TABLE;
+
+ do{
+-
++
+ if (ParserTempData.Status==CD_CALL_TABLE)
+- {
++ {
+ IndexInMasterTable=ParserTempData.CommandSpecific.IndexInMasterTable;
+ if(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]!=0) // if the offset is not ZERO
+- {
++ {
++ ATOM_TABLE_ATTRIBUTE lTableAttr;
++ lTableAttr = GetCommandTableAttribute(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable])+pDeviceData->pBIOS_Image);
+ #ifndef UEFI_BUILD
+ ParserTempData.pWorkingTableData =(WORKING_TABLE_DATA STACK_BASED*) AllocateWorkSpace(pDeviceData,
+- ((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]+pDeviceData->pBIOS_Image))->TableAttribute.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA));
++ lTableAttr.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA));
+ #else
+- ParserTempData.pWorkingTableData =(WORKING_TABLE_DATA STACK_BASED*) AllocateWorkSpace(pDeviceData,
+- ((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]))->TableAttribute.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA));
++ ParserTempData.pWorkingTableData =(WORKING_TABLE_DATA STACK_BASED*) AllocateWorkSpace(pDeviceData,
++ lTableAttr.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA));
+ #endif
+- if (ParserTempData.pWorkingTableData!=NULL)
+- {
+- ParserTempData.pWorkingTableData->pWorkSpace=(WORKSPACE_POINTER STACK_BASED*)((UINT8*)ParserTempData.pWorkingTableData+sizeof(WORKING_TABLE_DATA));
++ if (ParserTempData.pWorkingTableData!=NULL)
++ {
++ ParserTempData.pWorkingTableData->pWorkSpace=(WORKSPACE_POINTER STACK_BASED*)((UINT8*)ParserTempData.pWorkingTableData+sizeof(WORKING_TABLE_DATA));
+ #ifndef UEFI_BUILD
+- ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]+pDeviceData->pBIOS_Image);
++ ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable])+pDeviceData->pBIOS_Image);
+ #else
+- ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]);
++ ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]));
+ #endif
+- ParserTempData.pWorkingTableData->IP=((UINT8*)ParserTempData.pWorkingTableData->pTableHead)+sizeof(ATOM_COMMON_ROM_COMMAND_TABLE_HEADER);
+- ParserTempData.pWorkingTableData->prevWorkingTableData=prevWorkingTableData;
+- prevWorkingTableData=ParserTempData.pWorkingTableData;
+- ParserTempData.Status = CD_SUCCESS;
+- } else ParserTempData.Status = CD_UNEXPECTED_BEHAVIOR;
+- } else ParserTempData.Status = CD_EXEC_TABLE_NOT_FOUND;
++ ParserTempData.pWorkingTableData->IP=((UINT8*)ParserTempData.pWorkingTableData->pTableHead)+sizeof(ATOM_COMMON_ROM_COMMAND_TABLE_HEADER);
++ ParserTempData.pWorkingTableData->prevWorkingTableData=prevWorkingTableData;
++ prevWorkingTableData=ParserTempData.pWorkingTableData;
++ ParserTempData.Status = CD_SUCCESS;
++ } else ParserTempData.Status = CD_UNEXPECTED_BEHAVIOR;
++ } else ParserTempData.Status = CD_EXEC_TABLE_NOT_FOUND;
+ }
+ if (!CD_ERROR(ParserTempData.Status))
+ {
+- ParserTempData.Status = CD_SUCCESS;
++ ParserTempData.Status = CD_SUCCESS;
+ while (!CD_ERROR_OR_COMPLETED(ParserTempData.Status))
+- {
+-
++ {
+ if (IS_COMMAND_VALID(((COMMAND_HEADER*)ParserTempData.pWorkingTableData->IP)->Opcode))
+- {
++ {
+ ParserTempData.pCmd = (GENERIC_ATTRIBUTE_COMMAND*)ParserTempData.pWorkingTableData->IP;
+-
++
+ if (IS_END_OF_TABLE(((COMMAND_HEADER*)ParserTempData.pWorkingTableData->IP)->Opcode))
+ {
+ ParserTempData.Status=CD_COMPLETED;
+- prevWorkingTableData=ParserTempData.pWorkingTableData->prevWorkingTableData;
+-
++ prevWorkingTableData=ParserTempData.pWorkingTableData->prevWorkingTableData;
++
+ FreeWorkSpace(pDeviceData, ParserTempData.pWorkingTableData);
+- ParserTempData.pWorkingTableData=prevWorkingTableData;
+- if (prevWorkingTableData!=NULL)
+- {
+- ParserTempData.pDeviceData->pParameterSpace-=
+- (((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)ParserTempData.pWorkingTableData->
+- pTableHead)->TableAttribute.PS_SizeInBytes>>2);
+- }
+- // if there is a parent table where to return, then restore PS_pointer to the original state
++ ParserTempData.pWorkingTableData=prevWorkingTableData;
++ if (prevWorkingTableData!=NULL)
++ {
++ ATOM_TABLE_ATTRIBUTE lTableAttr;
++ lTableAttr = GetCommandTableAttribute(ParserTempData.pWorkingTableData->pTableHead);
++ ParserTempData.pDeviceData->pParameterSpace-=(lTableAttr.PS_SizeInBytes>>2);
++ }
++ // if there is a parent table where to return, then restore PS_pointer to the original state
+ }
+ else
+ {
+- IndexInMasterTable=ProcessCommandProperties((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData);
++ IndexInMasterTable=ProcessCommandProperties((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData);
+ (*CallTable[IndexInMasterTable].function)((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData);
+ #if (PARSER_TYPE!=DRIVER_TYPE_PARSER)
+- BIOS_STACK_MODIFIER();
++ BIOS_STACK_MODIFIER();
+ #endif
+ }
+ }
+@@ -227,13 +243,13 @@ CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTa
+ ParserTempData.Status=CD_INVALID_OPCODE;
+ break;
+ }
+-
++
+ } // while
+ } // if
+ else
+ break;
+ } while (prevWorkingTableData!=NULL);
+- if (ParserTempData.Status == CD_COMPLETED) return CD_SUCCESS;
++ if (ParserTempData.Status == CD_COMPLETED) return CD_SUCCESS;
+ return ParserTempData.Status;
+ } else return CD_SUCCESS;
+ }
+diff --git a/src/AtomBios/hwserv_drv.c b/src/AtomBios/hwserv_drv.c
+index a5f5a5b..9f2b6b9 100644
+--- a/src/AtomBios/hwserv_drv.c
++++ b/src/AtomBios/hwserv_drv.c
+@@ -34,8 +34,14 @@ Revision History:
+
+ NEG:27.09.2002 Initiated.
+ --*/
+-#include "CD_binding.h"
+-#include "CD_hw_services.h"
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#include <X11/Xos.h>
++#include "xorg-server.h"
++
++#include "Decoder.h"
+
+ //trace settings
+ #if DEBUG_OUTPUT_DEVICE & 1
+@@ -249,12 +255,12 @@ VOID WriteReg32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
+
+ VOID ReadIndReg32 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
+ {
+- pWorkingTableData->IndirectData = CailReadATIRegister(pWorkingTableData->pDeviceData->CAIL,*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1));
++ pWorkingTableData->IndirectData = CailReadATIRegister(pWorkingTableData->pDeviceData->CAIL,UINT16LE_TO_CPU(*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1)));
+ }
+
+ VOID WriteIndReg32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
+ {
+- CailWriteATIRegister(pWorkingTableData->pDeviceData->CAIL,*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1),pWorkingTableData->IndirectData );
++ CailWriteATIRegister(pWorkingTableData->pDeviceData->CAIL,UINT16LE_TO_CPU(*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1)),pWorkingTableData->IndirectData);
+ }
+
+ #endif
+diff --git a/src/AtomBios/includes/CD_Common_Types.h b/src/AtomBios/includes/CD_Common_Types.h
+index c60b652..071b8fd 100644
+--- a/src/AtomBios/includes/CD_Common_Types.h
++++ b/src/AtomBios/includes/CD_Common_Types.h
+@@ -155,6 +155,18 @@ typedef unsigned long ULONG_PTR;
+ #ifndef FGL_LINUX
+ #pragma warning ( default : 4142 )
+ #endif
++
++#ifndef ATOM_BIG_ENDIAN
++#ifdef X_BYTE_ORDER
++#if X_BYTE_ORDER == X_BIG_ENDIAN
++#define ATOM_BIG_ENDIAN 1
++#endif
++#endif
++#endif
++#ifndef ATOM_BIG_ENDIAN
++#define ATOM_BIG_ENDIAN 0
++#endif
++
+ #endif // _COMMON_TYPES_H_
+
+ // EOF
+diff --git a/src/AtomBios/includes/CD_Definitions.h b/src/AtomBios/includes/CD_Definitions.h
+index 98fd495..c00e93e 100644
+--- a/src/AtomBios/includes/CD_Definitions.h
++++ b/src/AtomBios/includes/CD_Definitions.h
+@@ -39,11 +39,12 @@ NEG:27.08.2002 Initiated.
+ #ifndef _CD_DEFINITIONS_H
+ #define _CD_DEFINITIONS_H_
+ #ifdef DRIVER_PARSER
+-VOID *AllocateMemory(VOID *, UINT16);
++VOID *AllocateMemory(DEVICE_DATA *, UINT16);
+ VOID ReleaseMemory(DEVICE_DATA * , WORKING_TABLE_DATA* );
+ #endif
+ CD_STATUS ParseTable(DEVICE_DATA* pDeviceData, UINT8 IndexInMasterTable);
+ //CD_STATUS CD_MainLoop(PARSER_TEMP_DATA_POINTER pParserTempData);
+ CD_STATUS Main_Loop(DEVICE_DATA* pDeviceData,UINT16 *MasterTableOffset,UINT8 IndexInMasterTable);
+ UINT16* GetCommandMasterTablePointer(DEVICE_DATA* pDeviceData);
++ATOM_TABLE_ATTRIBUTE GetCommandTableAttribute(UINT8 *pTableHeader);
+ #endif //CD_DEFINITIONS
+diff --git a/src/AtomBios/includes/CD_Structs.h b/src/AtomBios/includes/CD_Structs.h
+index c43f81d..01fb80e 100644
+--- a/src/AtomBios/includes/CD_Structs.h
++++ b/src/AtomBios/includes/CD_Structs.h
+@@ -35,10 +35,18 @@ Revision History:
+ NEG:26.08.2002 Initiated.
+ --*/
+
+-#include "CD_binding.h"
+ #ifndef _CD_STRUCTS_H_
+ #define _CD_STRUCTS_H_
+
++#include "CD_binding.h"
++
++/* Endaianness should be specified before inclusion,
++ * default to little endian
++ */
++#ifndef ATOM_BIG_ENDIAN
++#error Endian not specified
++#endif
++
+ #ifdef UEFI_BUILD
+ typedef UINT16** PTABLE_UNIT_TYPE;
+ typedef UINTN TABLE_UNIT_TYPE;
+@@ -304,9 +312,15 @@ typedef union _PARAMETER_ACCESS {
+ }PARAMETER_ACCESS;
+
+ typedef struct _COMMAND_ATTRIBUTE {
++#if ATOM_BIG_ENDIAN
++ UINT8 DestinationAlignment:2;
++ UINT8 SourceAlignment:3;
++ UINT8 Source:3;
++#else
+ UINT8 Source:3;
+ UINT8 SourceAlignment:3;
+ UINT8 DestinationAlignment:2;
++#endif
+ }COMMAND_ATTRIBUTE;
+
+ typedef struct _SOURCE_DESTINATION_ALIGNMENT{
+@@ -363,11 +377,19 @@ typedef union _COMMAND_SPECIFIC_UNION{
+
+
+ typedef struct _CD_GENERIC_BYTE{
++#if ATOM_BIG_ENDIAN
++ UINT16 PS_SizeInDwordsUsedByCallingTable:5;
++ UINT16 CurrentPort:2;
++ UINT16 CommandAccessType:3;
++ UINT16 CurrentParameterSize:3;
++ UINT16 CommandType:3;
++#else
+ UINT16 CommandType:3;
+ UINT16 CurrentParameterSize:3;
+ UINT16 CommandAccessType:3;
+ UINT16 CurrentPort:2;
+ UINT16 PS_SizeInDwordsUsedByCallingTable:5;
++#endif
+ }CD_GENERIC_BYTE;
+
+ typedef UINT8 COMMAND_TYPE_OPCODE_ONLY;
+diff --git a/src/AtomBios/includes/Decoder.h b/src/AtomBios/includes/Decoder.h
+index 24c25fc..1e143f0 100644
+--- a/src/AtomBios/includes/Decoder.h
++++ b/src/AtomBios/includes/Decoder.h
+@@ -47,12 +47,32 @@ NEG:27.08.2002 Initiated.
+ #define PARSER_VERSION_MAJOR 0x00000000
+ #define PARSER_VERSION_MINOR 0x0000000E
+ #define PARSER_VERSION (PARSER_VERSION_MAJOR | PARSER_VERSION_MINOR)
+-#include "CD_binding.h"
++
+ #include "CD_Common_Types.h"
++
++#include "atombios.h"
++
++/* these depends on some struct defined in atombios.h */
++#include "CD_binding.h"
+ #include "CD_hw_services.h"
+ #include "CD_Structs.h"
+-#include "CD_Definitions.h"
+ #include "CD_Opcodes.h"
++#include "CD_Definitions.h"
++
++#if ATOM_BIG_ENDIAN
++extern UINT16 ATOM_BSWAP16(UINT16 x);
++extern UINT32 ATOM_BSWAP32(UINT32 x);
++
++#define CPU_TO_UINT16LE(x) ATOM_BSWAP16(x)
++#define CPU_TO_UINT32LE(x) ATOM_BSWAP32(x)
++#define UINT16LE_TO_CPU(x) ATOM_BSWAP16(x)
++#define UINT32LE_TO_CPU(x) ATOM_BSWAP32(x)
++#else
++#define CPU_TO_UINT16LE(x) (x)
++#define CPU_TO_UINT32LE(x) (x)
++#define UINT16LE_TO_CPU(x) (x)
++#define UINT32LE_TO_CPU(x) (x)
++#endif
+
+ #define SOURCE_ONLY_CMD_TYPE 0//0xFE
+ #define SOURCE_DESTINATION_CMD_TYPE 1//0xFD
+diff --git a/src/AtomBios/includes/ObjectID.h b/src/AtomBios/includes/ObjectID.h
+index 4b106cf..f1f18a4 100644
+--- a/src/AtomBios/includes/ObjectID.h
++++ b/src/AtomBios/includes/ObjectID.h
+@@ -78,6 +78,10 @@
+ #define ENCODER_OBJECT_ID_DP_DP501 0x1D
+ #define ENCODER_OBJECT_ID_INTERNAL_UNIPHY 0x1E
+ #define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA 0x1F
++#define ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 0x20
++#define ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 0x21
++
++#define ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO 0xFF
+
+ /****************************************************/
+ /* Connector Object ID Definition */
+@@ -118,6 +122,8 @@
+ #define GRAPH_OBJECT_ENUM_ID2 0x02
+ #define GRAPH_OBJECT_ENUM_ID3 0x03
+ #define GRAPH_OBJECT_ENUM_ID4 0x04
++#define GRAPH_OBJECT_ENUM_ID5 0x05
++#define GRAPH_OBJECT_ENUM_ID6 0x06
+
+ /****************************************************/
+ /* Graphics Object ID Bit definition */
+@@ -173,7 +179,7 @@
+ #define ENCODER_SI178_ENUM_ID1 0x2117
+ #define ENCODER_MVPU_FPGA_ENUM_ID1 0x2118
+ #define ENCODER_INTERNAL_DDI_ENUM_ID1 0x2119
+-#define ENCODER_VT1625_ENUM_ID1 0x211A
++#define ENCODER_VT1625_ENUM_ID1 0x211A
+ #define ENCODER_HDMI_SI1932_ENUM_ID1 0x211B
+ #define ENCODER_ENCODER_DP_AN9801_ENUM_ID1 0x211C
+ #define ENCODER_DP_DP501_ENUM_ID1 0x211D
+@@ -323,6 +329,26 @@
+ GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
+ ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA << OBJECT_ID_SHIFT)
+
++#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
++ GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
++
++#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
++ GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
++
++#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
++ GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
++
++#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
++ GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
++
++#define ENCODER_GENERAL_EXTERNAL_DVO_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
++ GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
++ ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO << OBJECT_ID_SHIFT)
++
+ /****************************************************/
+ /* Connector Object ID definition - Shared with BIOS */
+ /****************************************************/
+@@ -453,6 +479,14 @@
+ GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
+ CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
+
++#define CONNECTOR_DISPLAYPORT_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
++ GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
++ CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
++
++#define CONNECTOR_DISPLAYPORT_ENUM_ID4 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
++ GRAPH_OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\
++ CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
++
+ /****************************************************/
+ /* Router Object ID definition - Shared with BIOS */
+ /****************************************************/
+diff --git a/src/AtomBios/includes/atombios.h b/src/AtomBios/includes/atombios.h
+index 17483a6..9932b09 100644
+--- a/src/AtomBios/includes/atombios.h
++++ b/src/AtomBios/includes/atombios.h
+@@ -34,6 +34,12 @@
+
+ #define ATOM_HEADER_VERSION (ATOM_VERSION_MAJOR | ATOM_VERSION_MINOR)
+
++/* Endianness should be specified before inclusion,
++ * default to little endian
++ */
++#ifndef ATOM_BIG_ENDIAN
++#error Endian not specified
++#endif
+
+ #ifdef _H2INC
+ #ifndef ULONG
+@@ -260,7 +266,7 @@ typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{
+ USHORT SetCRTC_UsingDTDTiming; //Atomic Table, directly used by various SW components,latest version 1.1
+ USHORT ExternalEncoderControl; //Atomic Table, directly used by various SW components,latest version 2.1
+ USHORT LVTMAOutputControl; //Atomic Table, directly used by various SW components,latest version 1.1
+- USHORT VRAM_BlockDetectionByStrap;
++ USHORT VRAM_BlockDetectionByStrap; //Atomic Table, used only by Bios
+ USHORT MemoryCleanUp; //Atomic Table, only used by Bios
+ USHORT ProcessI2cChannelTransaction; //Function Table,only used by Bios
+ USHORT WriteOneByteToHWAssistedI2C; //Function Table,indirectly used by various SW components
+@@ -270,9 +276,9 @@ typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{
+ USHORT MC_Synchronization; //Atomic Table, indirectly used by various SW components,called from SetMemoryClock
+ USHORT ComputeMemoryEnginePLL; //Atomic Table, indirectly used by various SW components,called from SetMemory/EngineClock
+ USHORT MemoryRefreshConversion; //Atomic Table, indirectly used by various SW components,called from SetMemory or SetEngineClock
+- USHORT VRAM_GetCurrentInfoBlock;
++ USHORT VRAM_GetCurrentInfoBlock; //Atomic Table, used only by Bios
+ USHORT DynamicMemorySettings; //Atomic Table, indirectly used by various SW components,called from SetMemoryClock
+- USHORT MemoryTraining;
++ USHORT MemoryTraining; //Atomic Table, used only by Bios
+ USHORT EnableSpreadSpectrumOnPPLL; //Atomic Table, directly used by various SW components,latest version 1.2
+ USHORT TMDSAOutputControl; //Atomic Table, directly used by various SW components,latest version 1.1
+ USHORT SetVoltage; //Function Table,directly and/or indirectly used by various SW components,latest version 1.1
+@@ -290,11 +296,12 @@ typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{
+ USHORT DPEncoderService; //Function Table,only used by Bios
+ }ATOM_MASTER_LIST_OF_COMMAND_TABLES;
+
++// For backward compatible
+ #define ReadEDIDFromHWAssistedI2C ProcessI2cChannelTransaction
+-
+ #define UNIPHYTransmitterControl DIG1TransmitterControl
+ #define LVTMATransmitterControl DIG2TransmitterControl
+-#define SetCRTC_DPM_State GetConditionalGoldenSetting
++#define SetCRTC_DPM_State GetConditionalGoldenSetting
++#define SetUniphyInstance ASIC_StaticPwrMgtStatusChange
+
+ typedef struct _ATOM_MASTER_COMMAND_TABLE
+ {
+@@ -302,9 +309,12 @@ typedef struct _ATOM_MASTER_COMMAND_TABLE
+ ATOM_MASTER_LIST_OF_COMMAND_TABLES ListOfCommandTables;
+ }ATOM_MASTER_COMMAND_TABLE;
+
++/****************************************************************************/
++// Structures used in every command table
++/****************************************************************************/
+ typedef struct _ATOM_TABLE_ATTRIBUTE
+ {
+-#if X_BYTE_ORDER == X_BIG_ENDIAN
++#if ATOM_BIG_ENDIAN
+ USHORT UpdatedByUtility:1; //[15]=Table updated by utility flag
+ USHORT PS_SizeInBytes:7; //[14:8]=Size of parameter space in Bytes (multiple of a dword),
+ USHORT WS_SizeInBytes:8; //[7:0]=Size of workspace in Bytes (in multiple of a dword),
+@@ -315,23 +325,26 @@ typedef struct _ATOM_TABLE_ATTRIBUTE
+ #endif
+ }ATOM_TABLE_ATTRIBUTE;
+
+-// Common header for all command tables.
+-//Every table pointed by _ATOM_MASTER_COMMAND_TABLE has this common header.
+-//And the pointer actually points to this header.
++typedef union _ATOM_TABLE_ATTRIBUTE_ACCESS
++{
++ ATOM_TABLE_ATTRIBUTE sbfAccess;
++ USHORT susAccess;
++}ATOM_TABLE_ATTRIBUTE_ACCESS;
+
++/****************************************************************************/
++// Common header for all command tables.
++// Every table pointed by _ATOM_MASTER_COMMAND_TABLE has this common header.
++// And the pointer actually points to this header.
++/****************************************************************************/
+ typedef struct _ATOM_COMMON_ROM_COMMAND_TABLE_HEADER
+ {
+ ATOM_COMMON_TABLE_HEADER CommonHeader;
+ ATOM_TABLE_ATTRIBUTE TableAttribute;
+ }ATOM_COMMON_ROM_COMMAND_TABLE_HEADER;
+
+-
+-typedef struct _ASIC_INIT_PARAMETERS
+-{
+- ULONG ulDefaultEngineClock; //In 10Khz unit
+- ULONG ulDefaultMemoryClock; //In 10Khz unit
+-}ASIC_INIT_PARAMETERS;
+-
++/****************************************************************************/
++// Structures used by ComputeMemoryEnginePLLTable
++/****************************************************************************/
+ #define COMPUTE_MEMORY_PLL_PARAM 1
+ #define COMPUTE_ENGINE_PLL_PARAM 2
+
+@@ -368,6 +381,57 @@ typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V2
+ #define b3FIRST_TIME_CHANGE_CLOCK 0x08 //Applicable to both memory and engine clock change,when set, it means this is 1st time to change clock after ASIC bootup
+ #define b3SKIP_SW_PROGRAM_PLL 0x10 //Applicable to both memory and engine clock change, when set, it means the table will not program SPLL/MPLL
+
++typedef struct _ATOM_COMPUTE_CLOCK_FREQ
++{
++#if ATOM_BIG_ENDIAN
++ ULONG ulComputeClockFlag:8; // =1: COMPUTE_MEMORY_PLL_PARAM, =2: COMPUTE_ENGINE_PLL_PARAM
++ ULONG ulClockFreq:24; // in unit of 10kHz
++#else
++ ULONG ulClockFreq:24; // in unit of 10kHz
++ ULONG ulComputeClockFlag:8; // =1: COMPUTE_MEMORY_PLL_PARAM, =2: COMPUTE_ENGINE_PLL_PARAM
++#endif
++}ATOM_COMPUTE_CLOCK_FREQ;
++
++typedef struct _ATOM_S_MPLL_FB_DIVIDER
++{
++ USHORT usFbDivFrac;
++ USHORT usFbDiv;
++}ATOM_S_MPLL_FB_DIVIDER;
++
++typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V3
++{
++ union
++ {
++ ATOM_COMPUTE_CLOCK_FREQ ulClock; //Input Parameter
++ ATOM_S_MPLL_FB_DIVIDER ulFbDiv; //Output Parameter
++ };
++ UCHAR ucRefDiv; //Output Parameter
++ UCHAR ucPostDiv; //Output Parameter
++ UCHAR ucCntlFlag; //Output Parameter
++ UCHAR ucReserved;
++}COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V3;
++
++// ucCntlFlag
++#define ATOM_PLL_CNTL_FLAG_PLL_POST_DIV_EN 1
++#define ATOM_PLL_CNTL_FLAG_MPLL_VCO_MODE 2
++#define ATOM_PLL_CNTL_FLAG_FRACTION_DISABLE 4
++
++typedef struct _DYNAMICE_MEMORY_SETTINGS_PARAMETER
++{
++ ATOM_COMPUTE_CLOCK_FREQ ulClock;
++ ULONG ulReserved[2];
++}DYNAMICE_MEMORY_SETTINGS_PARAMETER;
++
++typedef struct _DYNAMICE_ENGINE_SETTINGS_PARAMETER
++{
++ ATOM_COMPUTE_CLOCK_FREQ ulClock;
++ ULONG ulMemoryClock;
++ ULONG ulReserved;
++}DYNAMICE_ENGINE_SETTINGS_PARAMETER;
++
++/****************************************************************************/
++// Structures used by SetEngineClockTable
++/****************************************************************************/
+ typedef struct _SET_ENGINE_CLOCK_PARAMETERS
+ {
+ ULONG ulTargetEngineClock; //In 10Khz unit
+@@ -379,7 +443,9 @@ typedef struct _SET_ENGINE_CLOCK_PS_ALLOCATION
+ COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION sReserved;
+ }SET_ENGINE_CLOCK_PS_ALLOCATION;
+
+-
++/****************************************************************************/
++// Structures used by SetMemoryClockTable
++/****************************************************************************/
+ typedef struct _SET_MEMORY_CLOCK_PARAMETERS
+ {
+ ULONG ulTargetMemoryClock; //In 10Khz unit
+@@ -391,13 +457,24 @@ typedef struct _SET_MEMORY_CLOCK_PS_ALLOCATION
+ COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION sReserved;
+ }SET_MEMORY_CLOCK_PS_ALLOCATION;
+
++/****************************************************************************/
++// Structures used by ASIC_Init.ctb
++/****************************************************************************/
++typedef struct _ASIC_INIT_PARAMETERS
++{
++ ULONG ulDefaultEngineClock; //In 10Khz unit
++ ULONG ulDefaultMemoryClock; //In 10Khz unit
++}ASIC_INIT_PARAMETERS;
++
+ typedef struct _ASIC_INIT_PS_ALLOCATION
+ {
+ ASIC_INIT_PARAMETERS sASICInitClocks;
+ SET_ENGINE_CLOCK_PS_ALLOCATION sReserved; //Caller doesn't need to init this structure
+ }ASIC_INIT_PS_ALLOCATION;
+
+-
++/****************************************************************************/
++// Structure used by DynamicClockGatingTable.ctb
++/****************************************************************************/
+ typedef struct _DYNAMIC_CLOCK_GATING_PARAMETERS
+ {
+ UCHAR ucEnable; // ATOM_ENABLE or ATOM_DISABLE
+@@ -405,7 +482,9 @@ typedef struct _DYNAMIC_CLOCK_GATING_PARAMETERS
+ }DYNAMIC_CLOCK_GATING_PARAMETERS;
+ #define DYNAMIC_CLOCK_GATING_PS_ALLOCATION DYNAMIC_CLOCK_GATING_PARAMETERS
+
+-
++/****************************************************************************/
++// Structure used by EnableASIC_StaticPwrMgtTable.ctb
++/****************************************************************************/
+ typedef struct _ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS
+ {
+ UCHAR ucEnable; // ATOM_ENABLE or ATOM_DISABLE
+@@ -413,7 +492,9 @@ typedef struct _ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS
+ }ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS;
+ #define ENABLE_ASIC_STATIC_PWR_MGT_PS_ALLOCATION ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS
+
+-
++/****************************************************************************/
++// Structures used by DAC_LoadDetectionTable.ctb
++/****************************************************************************/
+ typedef struct _DAC_LOAD_DETECTION_PARAMETERS
+ {
+ USHORT usDeviceID; //{ATOM_DEVICE_CRTx_SUPPORT,ATOM_DEVICE_TVx_SUPPORT,ATOM_DEVICE_CVx_SUPPORT}
+@@ -424,14 +505,15 @@ typedef struct _DAC_LOAD_DETECTION_PARAMETERS
+ // DAC_LOAD_DETECTION_PARAMETERS.ucMisc
+ #define DAC_LOAD_MISC_YPrPb 0x01
+
+-
+ typedef struct _DAC_LOAD_DETECTION_PS_ALLOCATION
+ {
+ DAC_LOAD_DETECTION_PARAMETERS sDacload;
+ ULONG Reserved[2];// Don't set this one, allocation for EXT DAC
+ }DAC_LOAD_DETECTION_PS_ALLOCATION;
+
+-
++/****************************************************************************/
++// Structures used by DAC1EncoderControlTable.ctb and DAC2EncoderControlTable.ctb
++/****************************************************************************/
+ typedef struct _DAC_ENCODER_CONTROL_PARAMETERS
+ {
+ USHORT usPixelClock; // in 10KHz; for bios convenient
+@@ -443,14 +525,11 @@ typedef struct _DAC_ENCODER_CONTROL_PARAMETERS
+
+ #define DAC_ENCODER_CONTROL_PS_ALLOCATION DAC_ENCODER_CONTROL_PARAMETERS
+
+-typedef struct _TV_ENCODER_CONTROL_PARAMETERS
+-{
+- USHORT usPixelClock; // in 10KHz; for bios convenient
+- UCHAR ucTvStandard; // See definition "ATOM_TV_NTSC ..."
+- UCHAR ucAction; // 0: turn off encoder
+- // 1: setup and turn on encoder
+-}TV_ENCODER_CONTROL_PARAMETERS;
+-
++/****************************************************************************/
++// Structures used by DIG1EncoderControlTable
++// DIG2EncoderControlTable
++// ExternalEncoderControlTable
++/****************************************************************************/
+ typedef struct _DIG_ENCODER_CONTROL_PARAMETERS
+ {
+ USHORT usPixelClock; // in 10KHz; for bios convenient
+@@ -475,7 +554,6 @@ typedef struct _DIG_ENCODER_CONTROL_PARAMETERS
+ }DIG_ENCODER_CONTROL_PARAMETERS;
+ #define DIG_ENCODER_CONTROL_PS_ALLOCATION DIG_ENCODER_CONTROL_PARAMETERS
+ #define EXTERNAL_ENCODER_CONTROL_PARAMETER DIG_ENCODER_CONTROL_PARAMETERS
+-#define EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION DIG_ENCODER_CONTROL_PS_ALLOCATION
+
+ //ucConfig
+ #define ATOM_ENCODER_CONFIG_DPLINKRATE_MASK 0x01
+@@ -506,6 +584,56 @@ typedef struct _DIG_ENCODER_CONTROL_PARAMETERS
+ #define ATOM_ENCODER_MODE_CV 14
+ #define ATOM_ENCODER_MODE_CRT 15
+
++typedef struct _ATOM_DIG_ENCODER_CONFIG_V2
++{
++#if ATOM_BIG_ENDIAN
++ UCHAR ucReserved1:2;
++ UCHAR ucTransmitterSel:2; // =0: UniphyAB, =1: UniphyCD =2: UniphyEF
++ UCHAR ucLinkSel:1; // =0: linkA/C/E =1: linkB/D/F
++ UCHAR ucReserved:1;
++ UCHAR ucDPLinkRate:1; // =0: 1.62Ghz, =1: 2.7Ghz
++#else
++ UCHAR ucDPLinkRate:1; // =0: 1.62Ghz, =1: 2.7Ghz
++ UCHAR ucReserved:1;
++ UCHAR ucLinkSel:1; // =0: linkA/C/E =1: linkB/D/F
++ UCHAR ucTransmitterSel:2; // =0: UniphyAB, =1: UniphyCD =2: UniphyEF
++ UCHAR ucReserved1:2;
++#endif
++}ATOM_DIG_ENCODER_CONFIG_V2;
++
++
++typedef struct _DIG_ENCODER_CONTROL_PARAMETERS_V2
++{
++ USHORT usPixelClock; // in 10KHz; for bios convenient
++ ATOM_DIG_ENCODER_CONFIG_V2 acConfig;
++ UCHAR ucAction;
++ UCHAR ucEncoderMode;
++ // =0: DP encoder
++ // =1: LVDS encoder
++ // =2: DVI encoder
++ // =3: HDMI encoder
++ // =4: SDVO encoder
++ UCHAR ucLaneNum; // how many lanes to enable
++ UCHAR ucReserved[2];
++}DIG_ENCODER_CONTROL_PARAMETERS_V2;
++
++//ucConfig
++#define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_MASK 0x01
++#define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_1_62GHZ 0x00
++#define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_2_70GHZ 0x01
++#define ATOM_ENCODER_CONFIG_V2_LINK_SEL_MASK 0x04
++#define ATOM_ENCODER_CONFIG_V2_LINKA 0x00
++#define ATOM_ENCODER_CONFIG_V2_LINKB 0x04
++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER_SEL_MASK 0x18
++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER1 0x00
++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER2 0x08
++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER3 0x10
++
++/****************************************************************************/
++// Structures used by UNIPHYTransmitterControlTable
++// LVTMATransmitterControlTable
++// DVOOutputControlTable
++/****************************************************************************/
+ typedef struct _ATOM_DP_VS_MODE
+ {
+ UCHAR ucLaneSel;
+@@ -583,7 +711,82 @@ typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS
+ #define ATOM_TRANSMITTER_ACTION_SETUP 10
+ #define ATOM_TRANSMITTER_ACTION_SETUP_VSEMPH 11
+
+-/****************************Device Output Control Command Table Definitions**********************/
++
++// Following are used for DigTransmitterControlTable ver1.2
++typedef struct _ATOM_DIG_TRANSMITTER_CONFIG_V2
++{
++#if ATOM_BIG_ENDIAN
++ UCHAR ucTransmitterSel:2; //bit7:6: =0 Dig Transmitter 1 ( Uniphy AB )
++ // =1 Dig Transmitter 2 ( Uniphy CD )
++ // =2 Dig Transmitter 3 ( Uniphy EF )
++ UCHAR ucReserved:1;
++ UCHAR fDPConnector:1; //bit4=0: DP connector =1: None DP connector
++ UCHAR ucEncoderSel:1; //bit3=0: Data/Clk path source from DIGA( DIG inst0 ). =1: Data/clk path source from DIGB ( DIG inst1 )
++ UCHAR ucLinkSel:1; //bit2=0: Uniphy LINKA or C or E when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is A or C or E
++ // =1: Uniphy LINKB or D or F when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is B or D or F
++
++ UCHAR fCoherentMode:1; //bit1=1: Coherent Mode ( for DVI/HDMI mode )
++ UCHAR fDualLinkConnector:1; //bit0=1: Dual Link DVI connector
++#else
++ UCHAR fDualLinkConnector:1; //bit0=1: Dual Link DVI connector
++ UCHAR fCoherentMode:1; //bit1=1: Coherent Mode ( for DVI/HDMI mode )
++ UCHAR ucLinkSel:1; //bit2=0: Uniphy LINKA or C or E when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is A or C or E
++ // =1: Uniphy LINKB or D or F when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is B or D or F
++ UCHAR ucEncoderSel:1; //bit3=0: Data/Clk path source from DIGA( DIG inst0 ). =1: Data/clk path source from DIGB ( DIG inst1 )
++ UCHAR fDPConnector:1; //bit4=0: DP connector =1: None DP connector
++ UCHAR ucReserved:1;
++ UCHAR ucTransmitterSel:2; //bit7:6: =0 Dig Transmitter 1 ( Uniphy AB )
++ // =1 Dig Transmitter 2 ( Uniphy CD )
++ // =2 Dig Transmitter 3 ( Uniphy EF )
++#endif
++}ATOM_DIG_TRANSMITTER_CONFIG_V2;
++
++//ucConfig
++//Bit0
++#define ATOM_TRANSMITTER_CONFIG_V2_DUAL_LINK_CONNECTOR 0x01
++
++//Bit1
++#define ATOM_TRANSMITTER_CONFIG_V2_COHERENT 0x02
++
++//Bit2
++#define ATOM_TRANSMITTER_CONFIG_V2_LINK_SEL_MASK 0x04
++#define ATOM_TRANSMITTER_CONFIG_V2_LINKA 0x00
++#define ATOM_TRANSMITTER_CONFIG_V2_LINKB 0x04
++
++// Bit3
++#define ATOM_TRANSMITTER_CONFIG_V2_ENCODER_SEL_MASK 0x08
++#define ATOM_TRANSMITTER_CONFIG_V2_DIG1_ENCODER 0x00 // only used when ucAction == ATOM_TRANSMITTER_ACTION_ENABLE or ATOM_TRANSMITTER_ACTION_SETUP
++#define ATOM_TRANSMITTER_CONFIG_V2_DIG2_ENCODER 0x08 // only used when ucAction == ATOM_TRANSMITTER_ACTION_ENABLE or ATOM_TRANSMITTER_ACTION_SETUP
++
++// Bit4
++#define ATOM_TRASMITTER_CONFIG_V2_DP_CONNECTOR 0x10
++
++// Bit7:6
++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER_SEL_MASK 0xC0
++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER1 0x00 //AB
++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER2 0x40 //CD
++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER3 0x80 //EF
++
++typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS_V2
++{
++ union
++ {
++ USHORT usPixelClock; // in 10KHz; for bios convenient
++ USHORT usInitInfo; // when init uniphy,lower 8bit is used for connector type defined in objectid.h
++ ATOM_DP_VS_MODE asMode; // DP Voltage swing mode
++ };
++ ATOM_DIG_TRANSMITTER_CONFIG_V2 acConfig;
++ UCHAR ucAction; // define as ATOM_TRANSMITER_ACTION_XXX
++ UCHAR ucReserved[4];
++}DIG_TRANSMITTER_CONTROL_PARAMETERS_V2;
++
++
++/****************************************************************************/
++// Structures used by DAC1OuputControlTable
++// DAC2OuputControlTable
++// LVTMAOutputControlTable (Before DEC30)
++// TMDSAOutputControlTable (Before DEC30)
++/****************************************************************************/
+ typedef struct _DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
+ {
+ UCHAR ucAction; // Possible input:ATOM_ENABLE||ATOMDISABLE
+@@ -622,7 +825,9 @@ typedef struct _DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
+ #define DVO_OUTPUT_CONTROL_PS_ALLOCATION DIG_TRANSMITTER_CONTROL_PS_ALLOCATION
+ #define DVO_OUTPUT_CONTROL_PARAMETERS_V3 DIG_TRANSMITTER_CONTROL_PARAMETERS
+
+-/**************************************************************************/
++/****************************************************************************/
++// Structures used by BlankCRTCTable
++/****************************************************************************/
+ typedef struct _BLANK_CRTC_PARAMETERS
+ {
+ UCHAR ucCRTC; // ATOM_CRTC1 or ATOM_CRTC2
+@@ -633,7 +838,11 @@ typedef struct _BLANK_CRTC_PARAMETERS
+ }BLANK_CRTC_PARAMETERS;
+ #define BLANK_CRTC_PS_ALLOCATION BLANK_CRTC_PARAMETERS
+
+-
++/****************************************************************************/
++// Structures used by EnableCRTCTable
++// EnableCRTCMemReqTable
++// UpdateCRTC_DoubleBufferRegistersTable
++/****************************************************************************/
+ typedef struct _ENABLE_CRTC_PARAMETERS
+ {
+ UCHAR ucCRTC; // ATOM_CRTC1 or ATOM_CRTC2
+@@ -642,7 +851,9 @@ typedef struct _ENABLE_CRTC_PARAMETERS
+ }ENABLE_CRTC_PARAMETERS;
+ #define ENABLE_CRTC_PS_ALLOCATION ENABLE_CRTC_PARAMETERS
+
+-
++/****************************************************************************/
++// Structures used by SetCRTC_OverScanTable
++/****************************************************************************/
+ typedef struct _SET_CRTC_OVERSCAN_PARAMETERS
+ {
+ USHORT usOverscanRight; // right
+@@ -654,7 +865,9 @@ typedef struct _SET_CRTC_OVERSCAN_PARAMETERS
+ }SET_CRTC_OVERSCAN_PARAMETERS;
+ #define SET_CRTC_OVERSCAN_PS_ALLOCATION SET_CRTC_OVERSCAN_PARAMETERS
+
+-
++/****************************************************************************/
++// Structures used by SetCRTC_ReplicationTable
++/****************************************************************************/
+ typedef struct _SET_CRTC_REPLICATION_PARAMETERS
+ {
+ UCHAR ucH_Replication; // horizontal replication
+@@ -664,7 +877,9 @@ typedef struct _SET_CRTC_REPLICATION_PARAMETERS
+ }SET_CRTC_REPLICATION_PARAMETERS;
+ #define SET_CRTC_REPLICATION_PS_ALLOCATION SET_CRTC_REPLICATION_PARAMETERS
+
+-
++/****************************************************************************/
++// Structures used by SelectCRTC_SourceTable
++/****************************************************************************/
+ typedef struct _SELECT_CRTC_SOURCE_PARAMETERS
+ {
+ UCHAR ucCRTC; // ATOM_CRTC1 or ATOM_CRTC2
+@@ -701,6 +916,10 @@ typedef struct _SELECT_CRTC_SOURCE_PARAMETERS_V2
+ //#define ATOM_ENCODER_MODE_CV 14
+ //#define ATOM_ENCODER_MODE_CRT 15
+
++/****************************************************************************/
++// Structures used by SetPixelClockTable
++// GetPixelClockTable
++/****************************************************************************/
+ //Major revision=1., Minor revision=1
+ typedef struct _PIXEL_CLOCK_PARAMETERS
+ {
+@@ -716,7 +935,6 @@ typedef struct _PIXEL_CLOCK_PARAMETERS
+ UCHAR ucPadding;
+ }PIXEL_CLOCK_PARAMETERS;
+
+-
+ //Major revision=1., Minor revision=2, add ucMiscIfno
+ //ucMiscInfo:
+ #define MISC_FORCE_REPROG_PIXEL_CLOCK 0x1
+@@ -787,6 +1005,9 @@ typedef struct _PIXEL_CLOCK_PARAMETERS_V3
+ #define PIXEL_CLOCK_PARAMETERS_LAST PIXEL_CLOCK_PARAMETERS_V2
+ #define GET_PIXEL_CLOCK_PS_ALLOCATION PIXEL_CLOCK_PARAMETERS_LAST
+
++/****************************************************************************/
++// Structures used by AdjustDisplayPllTable
++/****************************************************************************/
+ typedef struct _ADJUST_DISPLAY_PLL_PARAMETERS
+ {
+ USHORT usPixelClock;
+@@ -804,6 +1025,9 @@ typedef struct _ADJUST_DISPLAY_PLL_PARAMETERS
+
+ #define ADJUST_DISPLAY_PLL_PS_ALLOCATION ADJUST_DISPLAY_PLL_PARAMETERS
+
++/****************************************************************************/
++// Structures used by EnableYUVTable
++/****************************************************************************/
+ typedef struct _ENABLE_YUV_PARAMETERS
+ {
+ UCHAR ucEnable; // ATOM_ENABLE:Enable YUV or ATOM_DISABLE:Disable YUV (RGB)
+@@ -812,20 +1036,27 @@ typedef struct _ENABLE_YUV_PARAMETERS
+ }ENABLE_YUV_PARAMETERS;
+ #define ENABLE_YUV_PS_ALLOCATION ENABLE_YUV_PARAMETERS
+
++/****************************************************************************/
++// Structures used by GetMemoryClockTable
++/****************************************************************************/
+ typedef struct _GET_MEMORY_CLOCK_PARAMETERS
+ {
+ ULONG ulReturnMemoryClock; // current memory speed in 10KHz unit
+ } GET_MEMORY_CLOCK_PARAMETERS;
+ #define GET_MEMORY_CLOCK_PS_ALLOCATION GET_MEMORY_CLOCK_PARAMETERS
+
+-
++/****************************************************************************/
++// Structures used by GetEngineClockTable
++/****************************************************************************/
+ typedef struct _GET_ENGINE_CLOCK_PARAMETERS
+ {
+ ULONG ulReturnEngineClock; // current engine speed in 10KHz unit
+ } GET_ENGINE_CLOCK_PARAMETERS;
+ #define GET_ENGINE_CLOCK_PS_ALLOCATION GET_ENGINE_CLOCK_PARAMETERS
+
+-
++/****************************************************************************/
++// Following Structures and constant may be obsolete
++/****************************************************************************/
+ //Maxium 8 bytes,the data read in will be placed in the parameter space.
+ //Read operaion successeful when the paramter space is non-zero, otherwise read operation failed
+ typedef struct _READ_EDID_FROM_HW_I2C_DATA_PARAMETERS
+@@ -875,6 +1106,9 @@ typedef struct _SET_UP_HW_I2C_DATA_PARAMETERS
+ /**************************************************************************/
+ #define SPEED_FAN_CONTROL_PS_ALLOCATION WRITE_ONE_BYTE_HW_I2C_DATA_PARAMETERS
+
++/****************************************************************************/
++// Structures used by PowerConnectorDetectionTable
++/****************************************************************************/
+ typedef struct _POWER_CONNECTOR_DETECTION_PARAMETERS
+ {
+ UCHAR ucPowerConnectorStatus; //Used for return value 0: detected, 1:not detected
+@@ -891,6 +1125,10 @@ typedef struct POWER_CONNECTOR_DETECTION_PS_ALLOCATION
+ }POWER_CONNECTOR_DETECTION_PS_ALLOCATION;
+
+ /****************************LVDS SS Command Table Definitions**********************/
++
++/****************************************************************************/
++// Structures used by EnableSpreadSpectrumOnPPLLTable
++/****************************************************************************/
+ typedef struct _ENABLE_LVDS_SS_PARAMETERS
+ {
+ USHORT usSpreadSpectrumPercentage;
+@@ -936,6 +1174,9 @@ typedef struct _SET_PIXEL_CLOCK_PS_ALLOCATION
+
+ #define ENABLE_VGA_RENDER_PS_ALLOCATION SET_PIXEL_CLOCK_PS_ALLOCATION
+
++/****************************************************************************/
++// Structures used by ###
++/****************************************************************************/
+ typedef struct _MEMORY_TRAINING_PARAMETERS
+ {
+ ULONG ulTargetMemoryClock; //In 10Khz unit
+@@ -943,8 +1184,14 @@ typedef struct _MEMORY_TRAINING_PARAMETERS
+ #define MEMORY_TRAINING_PS_ALLOCATION MEMORY_TRAINING_PARAMETERS
+
+
+-
+ /****************************LVDS and other encoder command table definitions **********************/
++
++
++/****************************************************************************/
++// Structures used by LVDSEncoderControlTable (Before DCE30)
++// LVTMAEncoderControlTable (Before DCE30)
++// TMDSAEncoderControlTable (Before DCE30)
++/****************************************************************************/
+ typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS
+ {
+ USHORT usPixelClock; // in 10KHz; for bios convenient
+@@ -964,19 +1211,6 @@ typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS
+ #define TMDS2_ENCODER_CONTROL_PARAMETERS TMDS1_ENCODER_CONTROL_PARAMETERS
+ #define TMDS2_ENCODER_CONTROL_PS_ALLOCATION TMDS2_ENCODER_CONTROL_PARAMETERS
+
+-typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS
+-{
+- UCHAR ucEnable; // Enable or Disable External TMDS encoder
+- UCHAR ucMisc; // Bit0=0:Enable Single link;=1:Enable Dual link;Bit1 {=0:666RGB, =1:888RGB}
+- UCHAR ucPadding[2];
+-}ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS;
+-
+-typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION
+-{
+- ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS sXTmdsEncoder;
+- WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; //Caller doesn't need to init this portion
+-}ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION;
+-
+
+ //ucTableFormatRevision=1,ucTableContentRevision=2
+ typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS_V2
+@@ -1016,6 +1250,32 @@ typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS_V2
+
+ #define TMDS2_ENCODER_CONTROL_PARAMETERS_V2 TMDS1_ENCODER_CONTROL_PARAMETERS_V2
+ #define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_V2 TMDS2_ENCODER_CONTROL_PARAMETERS_V2
++
++#define LVDS_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V2
++#define LVDS_ENCODER_CONTROL_PS_ALLOCATION_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3
++
++#define TMDS1_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3
++#define TMDS1_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS1_ENCODER_CONTROL_PARAMETERS_V3
++
++#define TMDS2_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3
++#define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS2_ENCODER_CONTROL_PARAMETERS_V3
++
++/****************************************************************************/
++// Structures used by ###
++/****************************************************************************/
++typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS
++{
++ UCHAR ucEnable; // Enable or Disable External TMDS encoder
++ UCHAR ucMisc; // Bit0=0:Enable Single link;=1:Enable Dual link;Bit1 {=0:666RGB, =1:888RGB}
++ UCHAR ucPadding[2];
++}ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS;
++
++typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION
++{
++ ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS sXTmdsEncoder;
++ WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; //Caller doesn't need to init this portion
++}ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION;
++
+ #define ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS_V2 LVDS_ENCODER_CONTROL_PARAMETERS_V2
+
+ typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION_V2
+@@ -1024,7 +1284,15 @@ typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION_V2
+ WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; //Caller doesn't need to init this portion
+ }ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION_V2;
+
++typedef struct _EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION
++{
++ DIG_ENCODER_CONTROL_PARAMETERS sDigEncoder;
++ WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
++}EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION;
+
++/****************************************************************************/
++// Structures used by DVOEncoderControlTable
++/****************************************************************************/
+ //ucTableFormatRevision=1,ucTableContentRevision=3
+
+ //ucDVOConfig:
+@@ -1050,15 +1318,6 @@ typedef struct _DVO_ENCODER_CONTROL_PARAMETERS_V3
+ // bit1=0: non-coherent mode
+ // =1: coherent mode
+
+-#define LVDS_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V2
+-#define LVDS_ENCODER_CONTROL_PS_ALLOCATION_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3
+-
+-#define TMDS1_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3
+-#define TMDS1_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS1_ENCODER_CONTROL_PARAMETERS_V3
+-
+-#define TMDS2_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3
+-#define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS2_ENCODER_CONTROL_PARAMETERS_V3
+-
+ //==========================================================================================
+ //Only change is here next time when changing encoder parameter definitions again!
+ #define LVDS_ENCODER_CONTROL_PARAMETERS_LAST LVDS_ENCODER_CONTROL_PARAMETERS_V3
+@@ -1102,20 +1361,23 @@ typedef struct _DVO_ENCODER_CONTROL_PARAMETERS_V3
+ #define PANEL_ENCODER_75FRC_E 0x00
+ #define PANEL_ENCODER_75FRC_F 0x80
+
+-/**************************************************************************/
+-
++/****************************************************************************/
++// Structures used by SetVoltageTable
++/****************************************************************************/
+ #define SET_VOLTAGE_TYPE_ASIC_VDDC 1
+ #define SET_VOLTAGE_TYPE_ASIC_MVDDC 2
+ #define SET_VOLTAGE_TYPE_ASIC_MVDDQ 3
+ #define SET_VOLTAGE_TYPE_ASIC_VDDCI 4
++#define SET_VOLTAGE_INIT_MODE 5
++#define SET_VOLTAGE_GET_MAX_VOLTAGE 6 //Gets the Max. voltage for the soldered Asic
+
+ #define SET_ASIC_VOLTAGE_MODE_ALL_SOURCE 0x1
+ #define SET_ASIC_VOLTAGE_MODE_SOURCE_A 0x2
+ #define SET_ASIC_VOLTAGE_MODE_SOURCE_B 0x4
+
+-#define SET_ASIC_VOLTAGE_MODE_SET_VOLTAGE 0x0
+-#define SET_ASIC_VOLTAGE_MODE_GET_GPIOVAL 0x1
+-#define SET_ASIC_VOLTAGE_MODE_GET_GPIOMASK 0x2
++#define SET_ASIC_VOLTAGE_MODE_SET_VOLTAGE 0x0
++#define SET_ASIC_VOLTAGE_MODE_GET_GPIOVAL 0x1
++#define SET_ASIC_VOLTAGE_MODE_GET_GPIOMASK 0x2
+
+ typedef struct _SET_VOLTAGE_PARAMETERS
+ {
+@@ -1125,7 +1387,6 @@ typedef struct _SET_VOLTAGE_PARAMETERS
+ UCHAR ucReserved;
+ }SET_VOLTAGE_PARAMETERS;
+
+-
+ typedef struct _SET_VOLTAGE_PARAMETERS_V2
+ {
+ UCHAR ucVoltageType; // To tell which voltage to set up, VDDC/MVDDC/MVDDQ
+@@ -1133,13 +1394,23 @@ typedef struct _SET_VOLTAGE_PARAMETERS_V2
+ USHORT usVoltageLevel; // real voltage level
+ }SET_VOLTAGE_PARAMETERS_V2;
+
+-
+ typedef struct _SET_VOLTAGE_PS_ALLOCATION
+ {
+ SET_VOLTAGE_PARAMETERS sASICSetVoltage;
+ WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
+ }SET_VOLTAGE_PS_ALLOCATION;
+
++/****************************************************************************/
++// Structures used by TVEncoderControlTable
++/****************************************************************************/
++typedef struct _TV_ENCODER_CONTROL_PARAMETERS
++{
++ USHORT usPixelClock; // in 10KHz; for bios convenient
++ UCHAR ucTvStandard; // See definition "ATOM_TV_NTSC ..."
++ UCHAR ucAction; // 0: turn off encoder
++ // 1: setup and turn on encoder
++}TV_ENCODER_CONTROL_PARAMETERS;
++
+ typedef struct _TV_ENCODER_CONTROL_PS_ALLOCATION
+ {
+ TV_ENCODER_CONTROL_PARAMETERS sTVEncoder;
+@@ -1153,6 +1424,9 @@ typedef struct _TV_ENCODER_CONTROL_PS_ALLOCATION
+ #define USHORT void*
+ #endif
+
++/****************************************************************************/
++// Structure used in Data.mtb
++/****************************************************************************/
+ typedef struct _ATOM_MASTER_LIST_OF_DATA_TABLES
+ {
+ USHORT UtilityPipeLine; // Offest for the utility to get parser info,Don't change this position!
+@@ -1195,14 +1469,15 @@ typedef struct _ATOM_MASTER_LIST_OF_DATA_TABLES
+ #define USHORT UTEMP
+ #endif
+
+-
+ typedef struct _ATOM_MASTER_DATA_TABLE
+ {
+ ATOM_COMMON_TABLE_HEADER sHeader;
+ ATOM_MASTER_LIST_OF_DATA_TABLES ListOfDataTables;
+ }ATOM_MASTER_DATA_TABLE;
+
+-
++/****************************************************************************/
++// Structure used in MultimediaCapabilityInfoTable
++/****************************************************************************/
+ typedef struct _ATOM_MULTIMEDIA_CAPABILITY_INFO
+ {
+ ATOM_COMMON_TABLE_HEADER sHeader;
+@@ -1213,7 +1488,9 @@ typedef struct _ATOM_MULTIMEDIA_CAPABILITY_INFO
+ UCHAR ucHostPortInfo; // Provides host port configuration information
+ }ATOM_MULTIMEDIA_CAPABILITY_INFO;
+
+-
++/****************************************************************************/
++// Structure used in MultimediaConfigInfoTable
++/****************************************************************************/
+ typedef struct _ATOM_MULTIMEDIA_CONFIG_INFO
+ {
+ ATOM_COMMON_TABLE_HEADER sHeader;
+@@ -1232,7 +1509,9 @@ typedef struct _ATOM_MULTIMEDIA_CONFIG_INFO
+ UCHAR ucVideoInput4Info;// Video Input 4 Type (1:0) F/B setting (2) physical connector ID (5:3) reserved (7:6)
+ }ATOM_MULTIMEDIA_CONFIG_INFO;
+
+-/****************************Firmware Info Table Definitions**********************/
++/****************************************************************************/
++// Structures used in FirmwareInfoTable
++/****************************************************************************/
+
+ // usBIOSCapability Defintion:
+ // Bit 0 = 0: Bios image is not Posted, =1:Bios image is Posted;
+@@ -1258,7 +1537,7 @@ typedef struct _ATOM_MULTIMEDIA_CONFIG_INFO
+ //Please don't add or expand this bitfield structure below, this one will retire soon.!
+ typedef struct _ATOM_FIRMWARE_CAPABILITY
+ {
+-#if X_BYTE_ORDER == X_BIG_ENDIAN
++#if ATOM_BIG_ENDIAN
+ USHORT Reserved:3;
+ USHORT HyperMemory_Size:4;
+ USHORT HyperMemory_Support:1;
+@@ -1447,6 +1726,9 @@ typedef struct _ATOM_FIRMWARE_INFO_V1_4
+
+ #define ATOM_FIRMWARE_INFO_LAST ATOM_FIRMWARE_INFO_V1_4
+
++/****************************************************************************/
++// Structures used in IntegratedSystemInfoTable
++/****************************************************************************/
+ #define IGP_CAP_FLAG_DYNAMIC_CLOCK_EN 0x2
+ #define IGP_CAP_FLAG_AC_CARD 0x4
+ #define IGP_CAP_FLAG_SDVO_CARD 0x8
+@@ -1528,11 +1810,11 @@ typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V2
+ {
+ ATOM_COMMON_TABLE_HEADER sHeader;
+ ULONG ulBootUpEngineClock; //in 10kHz unit
+- ULONG ulReserved1[2]; //must be 0x0 for the reserved
++ ULONG ulReserved1[2]; //must be 0x0 for the reserved
+ ULONG ulBootUpUMAClock; //in 10kHz unit
+ ULONG ulBootUpSidePortClock; //in 10kHz unit
+ ULONG ulMinSidePortClock; //in 10kHz unit
+- ULONG ulReserved2[6]; //must be 0x0 for the reserved
++ ULONG ulReserved2[6]; //must be 0x0 for the reserved
+ ULONG ulSystemConfig; //see explanation below
+ ULONG ulBootUpReqDisplayVector;
+ ULONG ulOtherDisplayMisc;
+@@ -1555,7 +1837,13 @@ typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V2
+ USHORT usUMADataReturnTime;
+ USHORT usLinkStatusZeroTime;
+ USHORT usReserved;
+- ULONG ulReserved3[101]; //must be 0x0
++ ULONG ulHighVoltageHTLinkFreq; // in 10Khz
++ ULONG ulLowVoltageHTLinkFreq; // in 10Khz
++ USHORT usMaxUpStreamHTLinkWidth;
++ USHORT usMaxDownStreamHTLinkWidth;
++ USHORT usMinUpStreamHTLinkWidth;
++ USHORT usMinDownStreamHTLinkWidth;
++ ULONG ulReserved3[97]; //must be 0x0
+ }ATOM_INTEGRATED_SYSTEM_INFO_V2;
+
+ /*
+@@ -1564,8 +1852,20 @@ ulBootUpUMAClock: Boot-up UMA Clock in 10Khz; it must be 0x0 when UMA is no
+ ulBootUpSidePortClock: Boot-up SidePort Clock in 10Khz; it must be 0x0 when SidePort Memory is not present,this could be equal to or less than maximum supported Sideport memory clock
+
+ ulSystemConfig:
+-Bit[0]: =1 PowerExpress mode =0 Non-PowerExpress mode;
+-Bit[1]=1: system is running at overdrived engine clock =0:system is not running at overdrived engine clock
++Bit[0]=1: PowerExpress mode =0 Non-PowerExpress mode;
++Bit[1]=1: system boots up at AMD overdrived state or user customized mode. In this case, driver will just stick to this boot-up mode. No other PowerPlay state
++ =0: system boots up at driver control state. Power state depends on PowerPlay table.
++Bit[2]=1: PWM method is used on NB voltage control. =0: GPIO method is used.
++Bit[3]=1: Only one power state(Performance) will be supported.
++ =0: Multiple power states supported from PowerPlay table.
++Bit[4]=1: CLMC is supported and enabled on current system.
++ =0: CLMC is not supported or enabled on current system. SBIOS need to support HT link/freq change through ATIF interface.
++Bit[5]=1: Enable CDLW for all driver control power states. Max HT width is from SBIOS, while Min HT width is determined by display requirement.
++ =0: CDLW is disabled. If CLMC is enabled case, Min HT width will be set equal to Max HT width. If CLMC disabled case, Max HT width will be applied.
++Bit[6]=1: High Voltage requested for all power states. In this case, voltage will be forced at 1.1v and powerplay table voltage drop/throttling request will be ignored.
++ =0: Voltage settings is determined by powerplay table.
++Bit[7]=1: Enable CLMC as hybrid Mode. CDLD and CILR will be disabled in this case and we're using legacy C1E. This is workaround for CPU(Griffin) performance issue.
++ =0: Enable CLMC as regular mode, CDLD and CILR will be enabled.
+
+ ulBootUpReqDisplayVector: This dword is a bit vector indicates what display devices are requested during boot-up. Refer to ATOM_DEVICE_xxx_SUPPORT for the bit vector definitions.
+
+@@ -1594,16 +1894,21 @@ ucDockingPinBit: which bit in this register to read the pin status;
+ ucDockingPinPolarity:Polarity of the pin when docked;
+
+ ulCPUCapInfo: [7:0]=1:Griffin;[7:0]=2:Greyhound;[7:0]=3:K8, other bits reserved for now and must be 0x0
+-
++
+ usNumberOfCyclesInPeriod:Indicate how many cycles when PWM duty is 100%.
+-usMaxNBVoltage:Voltage regulator dependent PWM value.Set this one to 0xFF if VC without PWM. Set this to 0x0 if no VC at all.
+-usMinNBVoltage:Voltage regulator dependent PWM value.Set this one to 0x00 if VC without PWM or no VC at all.
++usMaxNBVoltage:Max. voltage control value in either PWM or GPIO mode.
++usMinNBVoltage:Min. voltage control value in either PWM or GPIO mode.
++ GPIO mode: both usMaxNBVoltage & usMinNBVoltage have a valid value ulSystemConfig.SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE=0
++ PWM mode: both usMaxNBVoltage & usMinNBVoltage have a valid value ulSystemConfig.SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE=1
++ GPU SW don't control mode: usMaxNBVoltage & usMinNBVoltage=0 and no care about ulSystemConfig.SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE
+ usBootUpNBVoltage:Boot-up voltage regulator dependent PWM value.
+
++ulHTLinkFreq: Bootup HT link Frequency in 10Khz.
++usMinHTLinkWidth: Bootup minimum HT link width. If CDLW disabled, this is equal to usMaxHTLinkWidth.
++ If CDLW enabled, both upstream and downstream width should be the same during bootup.
++usMaxHTLinkWidth: Bootup maximum HT link width. If CDLW disabled, this is equal to usMinHTLinkWidth.
++ If CDLW enabled, both upstream and downstream width should be the same during bootup.
+
+-ulHTLinkFreq: Current HT link Frequency in 10Khz.
+-usMinHTLinkWidth:
+-usMaxHTLinkWidth:
+ usUMASyncStartDelay: Memory access latency, required for watermark calculation
+ usUMADataReturnTime: Memory access latency, required for watermark calculation
+ usLinkStatusZeroTime:Memory access latency required for watermark calculation, set this to 0x0 for K8 CPU, set a proper value in 0.01 the unit of us
+@@ -1612,10 +1917,27 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by:
+ if T0Ttime [5:4]=01b, then usLinkStatusZeroTime=T0Ttime [3:0]*0.5us (0.0 to 7.5us)
+ if T0Ttime [5:4]=10b, then usLinkStatusZeroTime=T0Ttime [3:0]*2.0us (0.0 to 30us)
+ if T0Ttime [5:4]=11b, and T0Ttime [3:0]=0x0 to 0xa, then usLinkStatusZeroTime=T0Ttime [3:0]*20us (0.0 to 200us)
++
++ulHighVoltageHTLinkFreq: HT link frequency for power state with low voltage. If boot up runs in HT1, this must be 0.
++ This must be less than or equal to ulHTLinkFreq(bootup frequency).
++ulLowVoltageHTLinkFreq: HT link frequency for power state with low voltage or voltage scaling 1.0v~1.1v. If boot up runs in HT1, this must be 0.
++ This must be less than or equal to ulHighVoltageHTLinkFreq.
++
++usMaxUpStreamHTLinkWidth: Asymmetric link width support in the future, to replace usMaxHTLinkWidth. Not used for now.
++usMaxDownStreamHTLinkWidth: same as above.
++usMinUpStreamHTLinkWidth: Asymmetric link width support in the future, to replace usMinHTLinkWidth. Not used for now.
++usMinDownStreamHTLinkWidth: same as above.
+ */
+
++
+ #define SYSTEM_CONFIG_POWEREXPRESS_ENABLE 0x00000001
+ #define SYSTEM_CONFIG_RUN_AT_OVERDRIVE_ENGINE 0x00000002
++#define SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE 0x00000004
++#define SYSTEM_CONFIG_PERFORMANCE_POWERSTATE_ONLY 0x00000008
++#define SYSTEM_CONFIG_CLMC_ENABLED 0x00000010
++#define SYSTEM_CONFIG_CDLW_ENABLED 0x00000020
++#define SYSTEM_CONFIG_HIGH_VOLTAGE_REQUESTED 0x00000040
++#define SYSTEM_CONFIG_CLMC_HYBRID_MODE_ENABLED 0x00000080
+
+ #define IGP_DDI_SLOT_LANE_CONFIG_MASK 0x000000FF
+
+@@ -1671,14 +1993,16 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by:
+ #define ATOM_DEVICE_DFP2_INDEX 0x00000007
+ #define ATOM_DEVICE_CV_INDEX 0x00000008
+ #define ATOM_DEVICE_DFP3_INDEX 0x00000009
+-#define ATOM_DEVICE_RESERVEDA_INDEX 0x0000000A
+-#define ATOM_DEVICE_RESERVEDB_INDEX 0x0000000B
++#define ATOM_DEVICE_DFP4_INDEX 0x0000000A
++#define ATOM_DEVICE_DFP5_INDEX 0x0000000B
+ #define ATOM_DEVICE_RESERVEDC_INDEX 0x0000000C
+ #define ATOM_DEVICE_RESERVEDD_INDEX 0x0000000D
+ #define ATOM_DEVICE_RESERVEDE_INDEX 0x0000000E
+ #define ATOM_DEVICE_RESERVEDF_INDEX 0x0000000F
+-#define ATOM_MAX_SUPPORTED_DEVICE_INFO (ATOM_DEVICE_CV_INDEX+2)
++#define ATOM_MAX_SUPPORTED_DEVICE_INFO (ATOM_DEVICE_DFP3_INDEX+1)
+ #define ATOM_MAX_SUPPORTED_DEVICE_INFO_2 ATOM_MAX_SUPPORTED_DEVICE_INFO
++#define ATOM_MAX_SUPPORTED_DEVICE_INFO_3 (ATOM_DEVICE_DFP5_INDEX + 1 )
++
+ #define ATOM_MAX_SUPPORTED_DEVICE (ATOM_DEVICE_RESERVEDF_INDEX+1)
+
+ #define ATOM_DEVICE_CRT1_SUPPORT (0x1L << ATOM_DEVICE_CRT1_INDEX )
+@@ -1691,9 +2015,11 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by:
+ #define ATOM_DEVICE_DFP2_SUPPORT (0x1L << ATOM_DEVICE_DFP2_INDEX)
+ #define ATOM_DEVICE_CV_SUPPORT (0x1L << ATOM_DEVICE_CV_INDEX )
+ #define ATOM_DEVICE_DFP3_SUPPORT (0x1L << ATOM_DEVICE_DFP3_INDEX )
++#define ATOM_DEVICE_DFP4_SUPPORT (0x1L << ATOM_DEVICE_DFP4_INDEX )
++#define ATOM_DEVICE_DFP5_SUPPORT (0x1L << ATOM_DEVICE_DFP5_INDEX )
+
+ #define ATOM_DEVICE_CRT_SUPPORT ATOM_DEVICE_CRT1_SUPPORT | ATOM_DEVICE_CRT2_SUPPORT
+-#define ATOM_DEVICE_DFP_SUPPORT ATOM_DEVICE_DFP1_SUPPORT | ATOM_DEVICE_DFP2_SUPPORT | ATOM_DEVICE_DFP3_SUPPORT
++#define ATOM_DEVICE_DFP_SUPPORT ATOM_DEVICE_DFP1_SUPPORT | ATOM_DEVICE_DFP2_SUPPORT | ATOM_DEVICE_DFP3_SUPPORT | ATOM_DEVICE_DFP4_SUPPORT | ATOM_DEVICE_DFP5_SUPPORT
+ #define ATOM_DEVICE_TV_SUPPORT ATOM_DEVICE_TV1_SUPPORT | ATOM_DEVICE_TV2_SUPPORT
+ #define ATOM_DEVICE_LCD_SUPPORT ATOM_DEVICE_LCD1_SUPPORT | ATOM_DEVICE_LCD2_SUPPORT
+
+@@ -1764,10 +2090,9 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by:
+ // = 3-7 Reserved for future I2C engines
+ // [3-0] - I2C_LINE_MUX = A Mux number when it's HW assisted I2C or GPIO ID when it's SW I2C
+
+-
+ typedef struct _ATOM_I2C_ID_CONFIG
+ {
+-#if X_BYTE_ORDER == X_BIG_ENDIAN
++#if ATOM_BIG_ENDIAN
+ UCHAR bfHW_Capable:1;
+ UCHAR bfHW_EngineID:3;
+ UCHAR bfI2C_LineMux:4;
+@@ -1785,6 +2110,9 @@ typedef union _ATOM_I2C_ID_CONFIG_ACCESS
+ }ATOM_I2C_ID_CONFIG_ACCESS;
+
+
++/****************************************************************************/
++// Structure used in GPIO_I2C_InfoTable
++/****************************************************************************/
+ typedef struct _ATOM_GPIO_I2C_ASSIGMENT
+ {
+ USHORT usClkMaskRegisterIndex;
+@@ -1814,13 +2142,16 @@ typedef struct _ATOM_GPIO_I2C_INFO
+ ATOM_GPIO_I2C_ASSIGMENT asGPIO_Info[ATOM_MAX_SUPPORTED_DEVICE];
+ }ATOM_GPIO_I2C_INFO;
+
++/****************************************************************************/
++// Common Structure used in other structures
++/****************************************************************************/
+
+ #ifndef _H2INC
+
+ //Please don't add or expand this bitfield structure below, this one will retire soon.!
+ typedef struct _ATOM_MODE_MISC_INFO
+ {
+-#if X_BYTE_ORDER == X_BIG_ENDIAN
++#if ATOM_BIG_ENDIAN
+ USHORT Reserved:6;
+ USHORT RGB888:1;
+ USHORT DoubleClock:1;
+@@ -1896,7 +2227,9 @@ typedef union _ATOM_MODE_MISC_INFO_ACCESS
+ // VESA_HSYNC_WIDTH = VESA_HSYNC_TIME = EDID_HSPW
+ // VESA_BORDER = EDID_BORDER
+
+-
++/****************************************************************************/
++// Structure used in SetCRTC_UsingDTDTimingTable
++/****************************************************************************/
+ typedef struct _SET_CRTC_USING_DTD_TIMING_PARAMETERS
+ {
+ USHORT usH_Size;
+@@ -1914,6 +2247,9 @@ typedef struct _SET_CRTC_USING_DTD_TIMING_PARAMETERS
+ UCHAR ucPadding[3];
+ }SET_CRTC_USING_DTD_TIMING_PARAMETERS;
+
++/****************************************************************************/
++// Structure used in SetCRTC_TimingTable
++/****************************************************************************/
+ typedef struct _SET_CRTC_TIMING_PARAMETERS
+ {
+ USHORT usH_Total; // horizontal total
+@@ -1934,7 +2270,11 @@ typedef struct _SET_CRTC_TIMING_PARAMETERS
+ }SET_CRTC_TIMING_PARAMETERS;
+ #define SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION SET_CRTC_TIMING_PARAMETERS
+
+-
++/****************************************************************************/
++// Structure used in StandardVESA_TimingTable
++// AnalogTV_InfoTable
++// ComponentVideoInfoTable
++/****************************************************************************/
+ typedef struct _ATOM_MODE_TIMING
+ {
+ USHORT usCRTC_H_Total;
+@@ -1956,7 +2296,6 @@ typedef struct _ATOM_MODE_TIMING
+ UCHAR ucRefreshRate;
+ }ATOM_MODE_TIMING;
+
+-
+ typedef struct _ATOM_DTD_FORMAT
+ {
+ USHORT usPixClk;
+@@ -1977,12 +2316,19 @@ typedef struct _ATOM_DTD_FORMAT
+ UCHAR ucRefreshRate;
+ }ATOM_DTD_FORMAT;
+
++/****************************************************************************/
++// Structure used in LVDS_InfoTable
++// * Need a document to describe this table
++/****************************************************************************/
+ #define SUPPORTED_LCD_REFRESHRATE_30Hz 0x0004
+ #define SUPPORTED_LCD_REFRESHRATE_40Hz 0x0008
+ #define SUPPORTED_LCD_REFRESHRATE_50Hz 0x0010
+ #define SUPPORTED_LCD_REFRESHRATE_60Hz 0x0020
+
+-/****************************LVDS Info Table Definitions **********************/
++//Once DAL sees this CAP is set, it will read EDID from LCD on its own instead of using sLCDTiming in ATOM_LVDS_INFO_V12.
++//Other entries in ATOM_LVDS_INFO_V12 are still valid/useful to DAL
++#define LCDPANEL_CAP_READ_EDID 0x1
++
+ //ucTableFormatRevision=1
+ //ucTableContentRevision=1
+ typedef struct _ATOM_LVDS_INFO
+@@ -2111,9 +2457,9 @@ typedef struct _ATOM_SPREAD_SPECTRUM_INFO
+ ATOM_SPREAD_SPECTRUM_ASSIGNMENT asSS_Info[ATOM_MAX_SS_ENTRY];
+ }ATOM_SPREAD_SPECTRUM_INFO;
+
+-
+-
+-
++/****************************************************************************/
++// Structure used in AnalogTV_InfoTable (Top level)
++/****************************************************************************/
+ //ucTVBootUpDefaultStd definiton:
+
+ //ATOM_TV_NTSC 1
+@@ -2125,7 +2471,6 @@ typedef struct _ATOM_SPREAD_SPECTRUM_INFO
+ //ATOM_TV_PAL60 7
+ //ATOM_TV_SECAM 8
+
+-
+ //ucTVSuppportedStd definition:
+ #define NTSC_SUPPORT 0x1
+ #define NTSCJ_SUPPORT 0x2
+@@ -2215,7 +2560,15 @@ typedef struct _ATOM_ANALOG_TV_INFO
+ #define ATOM_DFP3_DTD_MODE_TBL_ADDR (ATOM_DFP3_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
+ #define ATOM_DFP3_STD_MODE_TBL_ADDR (ATOM_DFP3_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
+
+-#define ATOM_DP_TRAINING_TBL_ADDR (ATOM_DFP3_STD_MODE_TBL_ADDR+ATOM_STD_MODE_SUPPORT_TBL_SIZE)
++#define ATOM_DFP4_EDID_ADDR (ATOM_DFP3_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
++#define ATOM_DFP4_DTD_MODE_TBL_ADDR (ATOM_DFP4_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
++#define ATOM_DFP4_STD_MODE_TBL_ADDR (ATOM_DFP4_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
++
++#define ATOM_DFP5_EDID_ADDR (ATOM_DFP4_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
++#define ATOM_DFP5_DTD_MODE_TBL_ADDR (ATOM_DFP5_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
++#define ATOM_DFP5_STD_MODE_TBL_ADDR (ATOM_DFP5_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
++
++#define ATOM_DP_TRAINING_TBL_ADDR (ATOM_DFP5_STD_MODE_TBL_ADDR+ATOM_STD_MODE_SUPPORT_TBL_SIZE)
+
+ #define ATOM_STACK_STORAGE_START (ATOM_DP_TRAINING_TBL_ADDR+256)
+ #define ATOM_STACK_STORAGE_END ATOM_STACK_STORAGE_START+512
+@@ -2228,6 +2581,15 @@ typedef struct _ATOM_ANALOG_TV_INFO
+ #define ATOM_VRAM_BLOCK_NEEDS_NO_RESERVATION 0x1
+ #define ATOM_VRAM_BLOCK_NEEDS_RESERVATION 0x0
+
++/***********************************************************************************/
++// Structure used in VRAM_UsageByFirmwareTable
++// Note1: This table is filled by SetBiosReservationStartInFB in CoreCommSubs.asm
++// at running time.
++// note2: From RV770, the memory is more than 32bit addressable, so we will change
++// ucTableFormatRevision=1,ucTableContentRevision=4, the strcuture remains
++// exactly same as 1.1 and 1.2 (1.3 is never in use), but ulStartAddrUsedByFirmware
++// (in offset to start of memory address) is KB aligned instead of byte aligend.
++/***********************************************************************************/
+ #define ATOM_MAX_FIRMWARE_VRAM_USAGE_INFO 1
+
+ typedef struct _ATOM_FIRMWARE_VRAM_RESERVE_INFO
+@@ -2243,8 +2605,9 @@ typedef struct _ATOM_VRAM_USAGE_BY_FIRMWARE
+ ATOM_FIRMWARE_VRAM_RESERVE_INFO asFirmwareVramReserveInfo[ATOM_MAX_FIRMWARE_VRAM_USAGE_INFO];
+ }ATOM_VRAM_USAGE_BY_FIRMWARE;
+
+-/**************************************************************************/
+-//GPIO Pin lut table definition
++/****************************************************************************/
++// Structure used in GPIO_Pin_LUTTable
++/****************************************************************************/
+ typedef struct _ATOM_GPIO_PIN_ASSIGNMENT
+ {
+ USHORT usGpioPin_AIndex;
+@@ -2258,9 +2621,9 @@ typedef struct _ATOM_GPIO_PIN_LUT
+ ATOM_GPIO_PIN_ASSIGNMENT asGPIO_Pin[1];
+ }ATOM_GPIO_PIN_LUT;
+
+-/**************************************************************************/
+-
+-
++/****************************************************************************/
++// Structure used in ComponentVideoInfoTable
++/****************************************************************************/
+ #define GPIO_PIN_ACTIVE_HIGH 0x1
+
+ #define MAX_SUPPORTED_CV_STANDARDS 5
+@@ -2350,8 +2713,9 @@ typedef struct _ATOM_COMPONENT_VIDEO_INFO_V21
+
+ #define ATOM_COMPONENT_VIDEO_INFO_LAST ATOM_COMPONENT_VIDEO_INFO_V21
+
+-/**************************************************************************/
+-//Object table starts here
++/****************************************************************************/
++// Structure used in object_InfoTable
++/****************************************************************************/
+ typedef struct _ATOM_OBJECT_HEADER
+ {
+ ATOM_COMMON_TABLE_HEADER sHeader;
+@@ -2596,9 +2960,9 @@ typedef struct _ATOM_ROUTER_DATA_CLOCK_PATH_SELECT_RECORD
+ #define ATOM_ROUTER_MUX_PIN_STATE_MASK 0x0f
+ #define ATOM_ROUTER_MUX_PIN_SINGLE_STATE_COMPLEMENT 0x01
+
+-/**************************************************************************/
+-//ASIC voltage data table starts here
+-
++/****************************************************************************/
++// ASIC voltage data table
++/****************************************************************************/
+ typedef struct _ATOM_VOLTAGE_INFO_HEADER
+ {
+ USHORT usVDDCBaseLevel; //In number of 50mv unit
+@@ -2824,13 +3188,16 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S0_CV_DIN 0x00002000L
+ #define ATOM_S0_CV_MASK (ATOM_S0_CV+ATOM_S0_CV_DIN)
+
+-
+ #define ATOM_S0_DFP1 0x00010000L
+ #define ATOM_S0_DFP2 0x00020000L
+ #define ATOM_S0_LCD1 0x00040000L
+ #define ATOM_S0_LCD2 0x00080000L
+ #define ATOM_S0_TV2 0x00100000L
+ #define ATOM_S0_DFP3 0x00200000L
++#define ATOM_S0_DFP4 0x00400000L
++#define ATOM_S0_DFP5 0x00800000L
++
++#define ATOM_S0_DFP_MASK ATOM_S0_DFP1 | ATOM_S0_DFP2 | ATOM_S0_DFP3 | ATOM_S0_DFP4 | ATOM_S0_DFP5
+
+ #define ATOM_S0_FAD_REGISTER_BUG 0x02000000L // If set, indicates we are running a PCIE asic with
+ // the FAD/HDP reg access bug. Bit is read by DAL
+@@ -2888,7 +3255,6 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S1_ROM_LOCATION_MASK 0x0000FFFFL
+ #define ATOM_S1_PCI_BUS_DEV_MASK 0xFFFF0000L
+
+-
+ // BIOS_2_SCRATCH Definition
+ #define ATOM_S2_TV1_STANDARD_MASK 0x0000000FL
+ #define ATOM_S2_CURRENT_BL_LEVEL_MASK 0x0000FF00L
+@@ -2904,12 +3270,14 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S2_DFP2_DPMS_STATE 0x00800000L
+ #define ATOM_S2_CV_DPMS_STATE 0x01000000L
+ #define ATOM_S2_DFP3_DPMS_STATE 0x02000000L
++#define ATOM_S2_DFP4_DPMS_STATE 0x04000000L
++#define ATOM_S2_DFP5_DPMS_STATE 0x08000000L
+
+-#define ATOM_S2_DEVICE_DPMS_STATE (ATOM_S2_CRT1_DPMS_STATE+ATOM_S2_LCD1_DPMS_STATE+ATOM_S2_TV1_DPMS_STATE+\
+- ATOM_S2_DFP1I_DPMS_STATE+ATOM_S2_CRT2_DPMS_STATE+ATOM_S2_LCD2_DPMS_STATE+\
+- ATOM_S2_TV2_DPMS_STATE+ATOM_S2_DFP1X_DPMS_STATE+ATOM_S2_CV_DPMS_STATE+\
+- ATOM_S2_DFP3_DPMS_STATE)
++#define ATOM_S2_DFP_DPM_STATE ATOM_S2_DFP1_DPMS_STATE | ATOM_S2_DFP2_DPMS_STATE | ATOM_S2_DFP3_DPMS_STATE | ATOM_S2_DFP4_DPMS_STATE | ATOM_S2_DFP5_DPMS_STATE
+
++#define ATOM_S2_DEVICE_DPMS_STATE (ATOM_S2_CRT1_DPMS_STATE+ATOM_S2_LCD1_DPMS_STATE+ATOM_S2_TV1_DPMS_STATE+\
++ ATOM_S2_DFP_DPMS_STATE+ATOM_S2_CRT2_DPMS_STATE+ATOM_S2_LCD2_DPMS_STATE+\
++ ATOM_S2_TV2_DPMS_STATE+ATOM_S2_CV_DPMS_STATE
+
+ #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASK 0x0C000000L
+ #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASK_SHIFT 26
+@@ -2938,6 +3306,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S2_DFP2_DPMS_STATEb2 0x80
+ #define ATOM_S2_CV_DPMS_STATEb3 0x01
+ #define ATOM_S2_DFP3_DPMS_STATEb3 0x02
++#define ATOM_S2_DFP4_DPMS_STATEb3 0x04
++#define ATOM_S2_DFP5_DPMS_STATEb3 0x08
+
+ #define ATOM_S2_DEVICE_DPMS_MASKw1 0x3FF
+ #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASKb3 0x0C
+@@ -2957,6 +3327,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S3_DFP2_ACTIVE 0x00000080L
+ #define ATOM_S3_CV_ACTIVE 0x00000100L
+ #define ATOM_S3_DFP3_ACTIVE 0x00000200L
++#define ATOM_S3_DFP4_ACTIVE 0x00000400L
++#define ATOM_S3_DFP5_ACTIVE 0x00000800L
+
+ #define ATOM_S3_DEVICE_ACTIVE_MASK 0x000003FFL
+
+@@ -2973,8 +3345,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S3_DFP2_CRTC_ACTIVE 0x00800000L
+ #define ATOM_S3_CV_CRTC_ACTIVE 0x01000000L
+ #define ATOM_S3_DFP3_CRTC_ACTIVE 0x02000000L
++#define ATOM_S3_DFP4_CRTC_ACTIVE 0x04000000L
++#define ATOM_S3_DFP5_CRTC_ACTIVE 0x08000000L
+
+-#define ATOM_S3_DEVICE_CRTC_ACTIVE_MASK 0x03FF0000L
++#define ATOM_S3_DEVICE_CRTC_ACTIVE_MASK 0x0FFF0000L
+ #define ATOM_S3_ASIC_GUI_ENGINE_HUNG 0x20000000L
+ #define ATOM_S3_ALLOW_FAST_PWR_SWITCH 0x40000000L
+ #define ATOM_S3_RQST_GPU_USE_MIN_PWR 0x80000000L
+@@ -2990,8 +3364,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S3_DFP2_ACTIVEb0 0x80
+ #define ATOM_S3_CV_ACTIVEb1 0x01
+ #define ATOM_S3_DFP3_ACTIVEb1 0x02
++#define ATOM_S3_DFP4_ACTIVEb1 0x04
++#define ATOM_S3_DFP5_ACTIVEb1 0x08
+
+-#define ATOM_S3_ACTIVE_CRTC1w0 0x3FF
++#define ATOM_S3_ACTIVE_CRTC1w0 0xFFF
+
+ #define ATOM_S3_CRT1_CRTC_ACTIVEb2 0x01
+ #define ATOM_S3_LCD1_CRTC_ACTIVEb2 0x02
+@@ -3003,8 +3379,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S3_DFP2_CRTC_ACTIVEb2 0x80
+ #define ATOM_S3_CV_CRTC_ACTIVEb3 0x01
+ #define ATOM_S3_DFP3_CRTC_ACTIVEb3 0x02
++#define ATOM_S3_DFP4_CRTC_ACTIVEb3 0x04
++#define ATOM_S3_DFP5_CRTC_ACTIVEb3 0x08
+
+-#define ATOM_S3_ACTIVE_CRTC2w1 0x3FF
++#define ATOM_S3_ACTIVE_CRTC2w1 0xFFF
+
+ #define ATOM_S3_ASIC_GUI_ENGINE_HUNGb3 0x20
+ #define ATOM_S3_ALLOW_FAST_PWR_SWITCHb3 0x40
+@@ -3015,13 +3393,11 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S4_LCD1_REFRESH_MASK 0x0000FF00L
+ #define ATOM_S4_LCD1_REFRESH_SHIFT 8
+
+-
+ //Byte aligned defintion for BIOS usage
+ #define ATOM_S4_LCD1_PANEL_ID_MASKb0 0x0FF
+ #define ATOM_S4_LCD1_REFRESH_MASKb1 ATOM_S4_LCD1_PANEL_ID_MASKb0
+ #define ATOM_S4_VRAM_INFO_MASKb2 ATOM_S4_LCD1_PANEL_ID_MASKb0
+
+-
+ // BIOS_5_SCRATCH Definition, BIOS_5_SCRATCH is used by Firmware only !!!!
+ #define ATOM_S5_DOS_REQ_CRT1b0 0x01
+ #define ATOM_S5_DOS_REQ_LCD1b0 0x02
+@@ -3033,6 +3409,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S5_DOS_REQ_DFP2b0 0x80
+ #define ATOM_S5_DOS_REQ_CVb1 0x01
+ #define ATOM_S5_DOS_REQ_DFP3b1 0x02
++#define ATOM_S5_DOS_REQ_DFP4b1 0x04
++#define ATOM_S5_DOS_REQ_DFP5b1 0x08
+
+ #define ATOM_S5_DOS_REQ_DEVICEw0 0x03FF
+
+@@ -3046,6 +3424,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S5_DOS_REQ_DFP2 0x0080
+ #define ATOM_S5_DOS_REQ_CV 0x0100
+ #define ATOM_S5_DOS_REQ_DFP3 0x0200
++#define ATOM_S5_DOS_REQ_DFP4 0x0400
++#define ATOM_S5_DOS_REQ_DFP5 0x0800
+
+ #define ATOM_S5_DOS_FORCE_CRT1b2 ATOM_S5_DOS_REQ_CRT1b0
+ #define ATOM_S5_DOS_FORCE_TV1b2 ATOM_S5_DOS_REQ_TV1b0
+@@ -3073,7 +3453,6 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S6_DISPLAY_STATE_CHANGE 0x00004000L //This bit is recycled when ATOM_BIOS_INFO_BIOS_SCRATCH6_SCL2_REDEFINE is set,previously it's SCL2_H_expansion
+ #define ATOM_S6_I2C_STATE_CHANGE 0x00008000L //This bit is recycled,when ATOM_BIOS_INFO_BIOS_SCRATCH6_SCL2_REDEFINE is set,previously it's SCL2_V_expansion
+
+-
+ #define ATOM_S6_ACC_REQ_CRT1 0x00010000L
+ #define ATOM_S6_ACC_REQ_LCD1 0x00020000L
+ #define ATOM_S6_ACC_REQ_TV1 0x00040000L
+@@ -3084,8 +3463,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S6_ACC_REQ_DFP2 0x00800000L
+ #define ATOM_S6_ACC_REQ_CV 0x01000000L
+ #define ATOM_S6_ACC_REQ_DFP3 0x02000000L
++#define ATOM_S6_ACC_REQ_DFP4 0x04000000L
++#define ATOM_S6_ACC_REQ_DFP5 0x08000000L
+
+-#define ATOM_S6_ACC_REQ_MASK 0x03FF0000L
++#define ATOM_S6_ACC_REQ_MASK 0x0FFF0000L
+ #define ATOM_S6_SYSTEM_POWER_MODE_CHANGE 0x10000000L
+ #define ATOM_S6_ACC_BLOCK_DISPLAY_SWITCH 0x20000000L
+ #define ATOM_S6_VRI_BRIGHTNESS_CHANGE 0x40000000L
+@@ -3117,6 +3498,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{
+ #define ATOM_S6_ACC_REQ_DFP2b2 0x80
+ #define ATOM_S6_ACC_REQ_CVb3 0x01
+ #define ATOM_S6_ACC_REQ_DFP3b3 0x02
++#define ATOM_S6_ACC_REQ_DFP4b3 0x04
++#define ATOM_S6_ACC_REQ_DFP5b3 0x08
+
+ #define ATOM_S6_ACC_REQ_DEVICEw1 ATOM_S5_DOS_REQ_DEVICEw0
+ #define ATOM_S6_SYSTEM_POWER_MODE_CHANGEb3 0x10
+@@ -3391,7 +3774,7 @@ typedef struct _ATOM_TV_MODE_SCALER_PTR
+ typedef struct _ATOM_STANDARD_VESA_TIMING
+ {
+ ATOM_COMMON_TABLE_HEADER sHeader;
+- ATOM_MODE_TIMING aModeTimings[16]; // 16 is not the real array number, just for initial allocation
++ ATOM_DTD_FORMAT aModeTimings[16]; // 16 is not the real array number, just for initial allocation
+ }ATOM_STANDARD_VESA_TIMING;
+
+
+@@ -3426,7 +3809,7 @@ typedef struct _ATOM_MEMORY_VENDOR_BLOCK{
+
+
+ typedef struct _ATOM_MEMORY_SETTING_ID_CONFIG{
+-#if X_BYTE_ORDER == X_BIG_ENDIAN
++#if ATOM_BIG_ENDIAN
+ ULONG ucMemBlkId:8;
+ ULONG ulMemClockRange:24;
+ #else
+@@ -3470,6 +3853,11 @@ typedef struct _ATOM_INIT_REG_BLOCK{
+ #define VALUE_SAME_AS_ABOVE 0
+ #define VALUE_MASK_DWORD 0x84
+
++#define INDEX_ACCESS_RANGE_BEGIN (VALUE_DWORD + 1)
++#define INDEX_ACCESS_RANGE_END (INDEX_ACCESS_RANGE_BEGIN + 1)
++#define VALUE_INDEX_ACCESS_SINGLE (INDEX_ACCESS_RANGE_END + 1)
++
++
+ typedef struct _ATOM_MC_INIT_PARAM_TABLE
+ {
+ ATOM_COMMON_TABLE_HEADER sHeader;
+@@ -3508,6 +3896,28 @@ typedef struct _ATOM_MC_INIT_PARAM_TABLE
+ #define QIMONDA INFINEON
+ #define PROMOS MOSEL
+
++/////////////Support for GDDR5 MC uCode to reside in upper 64K of ROM/////////////
++
++#define UCODE_ROM_START_ADDRESS 0x1c000
++#define UCODE_SIGNATURE 0x4375434d // 'MCuC' - MC uCode
++
++//uCode block header for reference
++
++typedef struct _MCuCodeHeader
++{
++ ULONG ulSignature;
++ UCHAR ucRevision;
++ UCHAR ucChecksum;
++ UCHAR ucReserved1;
++ UCHAR ucReserved2;
++ USHORT usParametersLength;
++ USHORT usUCodeLength;
++ USHORT usReserved1;
++ USHORT usReserved2;
++} MCuCodeHeader;
++
++//////////////////////////////////////////////////////////////////////////////////
++
+ #define ATOM_MAX_NUMBER_OF_VRAM_MODULE 16
+
+ #define ATOM_VRAM_MODULE_MEMORY_VENDOR_ID_MASK 0xF
+@@ -3564,6 +3974,42 @@ typedef struct _ATOM_VRAM_MODULE_V2
+ typedef struct _ATOM_MEMORY_TIMING_FORMAT
+ {
+ ULONG ulClkRange; // memory clock in 10kHz unit, when target memory clock is below this clock, use this memory timing
++ union{
++ USHORT usMRS; // mode register
++ USHORT usDDR3_MR0;
++ };
++ union{
++ USHORT usEMRS; // extended mode register
++ USHORT usDDR3_MR1;
++ };
++ UCHAR ucCL; // CAS latency
++ UCHAR ucWL; // WRITE Latency
++ UCHAR uctRAS; // tRAS
++ UCHAR uctRC; // tRC
++ UCHAR uctRFC; // tRFC
++ UCHAR uctRCDR; // tRCDR
++ UCHAR uctRCDW; // tRCDW
++ UCHAR uctRP; // tRP
++ UCHAR uctRRD; // tRRD
++ UCHAR uctWR; // tWR
++ UCHAR uctWTR; // tWTR
++ UCHAR uctPDIX; // tPDIX
++ UCHAR uctFAW; // tFAW
++ UCHAR uctAOND; // tAOND
++ union
++ {
++ struct {
++ UCHAR ucflag; // flag to control memory timing calculation. bit0= control EMRS2 Infineon
++ UCHAR ucReserved;
++ };
++ USHORT usDDR3_MR2;
++ };
++}ATOM_MEMORY_TIMING_FORMAT;
++
++
++typedef struct _ATOM_MEMORY_TIMING_FORMAT_V1
++{
++ ULONG ulClkRange; // memory clock in 10kHz unit, when target memory clock is below this clock, use this memory timing
+ USHORT usMRS; // mode register
+ USHORT usEMRS; // extended mode register
+ UCHAR ucCL; // CAS latency
+@@ -3581,16 +4027,31 @@ typedef struct _ATOM_MEMORY_TIMING_FORMAT
+ UCHAR uctFAW; // tFAW
+ UCHAR uctAOND; // tAOND
+ UCHAR ucflag; // flag to control memory timing calculation. bit0= control EMRS2 Infineon
+- UCHAR ucReserved; //
+-}ATOM_MEMORY_TIMING_FORMAT;
++////////////////////////////////////GDDR parameters///////////////////////////////////
++ UCHAR uctCCDL; //
++ UCHAR uctCRCRL; //
++ UCHAR uctCRCWL; //
++ UCHAR uctCKE; //
++ UCHAR uctCKRSE; //
++ UCHAR uctCKRSX; //
++ UCHAR uctFAW32; //
++ UCHAR ucReserved1; //
++ UCHAR ucReserved2; //
++ UCHAR ucTerminator;
++}ATOM_MEMORY_TIMING_FORMAT_V1;
+
+-#define MEM_TIMING_FLAG_APP_MODE 0x01 // =0 mid clock range =1 high clock range
+
+ typedef struct _ATOM_MEMORY_FORMAT
+ {
+ ULONG ulDllDisClock; // memory DLL will be disable when target memory clock is below this clock
+- USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type
+- USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type
++ union{
++ USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type
++ USHORT usDDR3_Reserved; // Not used for DDR3 memory
++ };
++ union{
++ USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type
++ USHORT usDDR3_MR3; // Used for DDR3 memory
++ };
+ UCHAR ucMemoryType; // [7:4]=0x1:DDR1;=0x2:DDR2;=0x3:DDR3;=0x4:DDR4;[3:0] - must not be used for now;
+ UCHAR ucMemoryVenderID; // Predefined,never change across designs or memory type/vender. If not predefined, vendor detection table gets executed
+ UCHAR ucRow; // Number of Row,in power of 2;
+@@ -3629,6 +4090,79 @@ typedef struct _ATOM_VRAM_MODULE_V3
+
+ #define ATOM_VRAM_MODULE ATOM_VRAM_MODULE_V3
+
++typedef struct _ATOM_VRAM_MODULE_V4
++{
++ ULONG ulChannelMapCfg; // board dependent parameter: Channel combination
++ USHORT usModuleSize; // size of ATOM_VRAM_MODULE_V4, make it easy for VBIOS to look for next entry of VRAM_MODULE
++ USHORT usPrivateReserved; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!!
++ // MC_ARB_RAMCFG (includes NOOFBANK,NOOFRANKS,NOOFROWS,NOOFCOLS)
++ USHORT usReserved;
++ UCHAR ucExtMemoryID; // An external indicator (by hardcode, callback or pin) to tell what is the current memory module
++ UCHAR ucMemoryType; // [7:4]=0x1:DDR1;=0x2:DDR2;=0x3:DDR3;=0x4:DDR4; 0x5:DDR5 [3:0] - Must be 0x0 for now;
++ UCHAR ucChannelNum; // Number of channels present in this module config
++ UCHAR ucChannelWidth; // 0 - 32 bits; 1 - 64 bits
++ UCHAR ucDensity; // _8Mx32, _16Mx32, _16Mx16, _32Mx16
++ UCHAR ucFlag; // To enable/disable functionalities based on memory type
++ UCHAR ucMisc; // bit0: 0 - single rank; 1 - dual rank; bit2: 0 - burstlength 4, 1 - burstlength 8
++ UCHAR ucVREFI; // board dependent parameter
++ UCHAR ucNPL_RT; // board dependent parameter:NPL round trip delay, used for calculate memory timing parameters
++ UCHAR ucPreamble; // [7:4] Write Preamble, [3:0] Read Preamble
++ UCHAR ucMemorySize; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!!
++ // Total memory size in unit of 16MB for CONFIG_MEMSIZE - bit[23:0] zeros
++ UCHAR ucReserved[3];
++
++//compare with V3, we flat the struct by merging ATOM_MEMORY_FORMAT (as is) into V4 as the same level
++ union{
++ USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type
++ USHORT usDDR3_Reserved;
++ };
++ union{
++ USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type
++ USHORT usDDR3_MR3; // Used for DDR3 memory
++ };
++ UCHAR ucMemoryVenderID; // Predefined, If not predefined, vendor detection table gets executed
++ UCHAR ucRefreshRateFactor; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms)
++ UCHAR ucReserved2[2];
++ ATOM_MEMORY_TIMING_FORMAT asMemTiming[5];//Memory Timing block sort from lower clock to higher clock
++}ATOM_VRAM_MODULE_V4;
++
++#define VRAM_MODULE_V4_MISC_RANK_MASK 0x3
++#define VRAM_MODULE_V4_MISC_DUAL_RANK 0x1
++#define VRAM_MODULE_V4_MISC_BL_MASK 0x4
++#define VRAM_MODULE_V4_MISC_BL8 0x4
++#define VRAM_MODULE_V4_MISC_DUAL_CS 0x10
++
++typedef struct _ATOM_VRAM_MODULE_V5
++{
++ ULONG ulChannelMapCfg; // board dependent parameter: Channel combination
++ USHORT usModuleSize; // size of ATOM_VRAM_MODULE_V4, make it easy for VBIOS to look for next entry of VRAM_MODULE
++ USHORT usPrivateReserved; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!!
++ // MC_ARB_RAMCFG (includes NOOFBANK,NOOFRANKS,NOOFROWS,NOOFCOLS)
++ USHORT usReserved;
++ UCHAR ucExtMemoryID; // An external indicator (by hardcode, callback or pin) to tell what is the current memory module
++ UCHAR ucMemoryType; // [7:4]=0x1:DDR1;=0x2:DDR2;=0x3:DDR3;=0x4:DDR4; 0x5:DDR5 [3:0] - Must be 0x0 for now;
++ UCHAR ucChannelNum; // Number of channels present in this module config
++ UCHAR ucChannelWidth; // 0 - 32 bits; 1 - 64 bits
++ UCHAR ucDensity; // _8Mx32, _16Mx32, _16Mx16, _32Mx16
++ UCHAR ucFlag; // To enable/disable functionalities based on memory type
++ UCHAR ucMisc; // bit0: 0 - single rank; 1 - dual rank; bit2: 0 - burstlength 4, 1 - burstlength 8
++ UCHAR ucVREFI; // board dependent parameter
++ UCHAR ucNPL_RT; // board dependent parameter:NPL round trip delay, used for calculate memory timing parameters
++ UCHAR ucPreamble; // [7:4] Write Preamble, [3:0] Read Preamble
++ UCHAR ucMemorySize; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!!
++ // Total memory size in unit of 16MB for CONFIG_MEMSIZE - bit[23:0] zeros
++ UCHAR ucReserved[3];
++
++//compare with V3, we flat the struct by merging ATOM_MEMORY_FORMAT (as is) into V4 as the same level
++ USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type
++ USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type
++ UCHAR ucMemoryVenderID; // Predefined, If not predefined, vendor detection table gets executed
++ UCHAR ucRefreshRateFactor; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms)
++ UCHAR ucFIFODepth; // FIFO depth supposes to be detected during vendor detection, but if we dont do vendor detection we have to hardcode FIFO Depth
++ UCHAR ucCDR_Bandwidth; // [0:3]=Read CDR bandwidth, [4:7] - Write CDR Bandwidth
++ ATOM_MEMORY_TIMING_FORMAT_V1 asMemTiming[5];//Memory Timing block sort from lower clock to higher clock
++}ATOM_VRAM_MODULE_V5;
++
+ typedef struct _ATOM_VRAM_INFO_V2
+ {
+ ATOM_COMMON_TABLE_HEADER sHeader;
+@@ -3651,6 +4185,21 @@ typedef struct _ATOM_VRAM_INFO_V3
+
+ #define ATOM_VRAM_INFO_LAST ATOM_VRAM_INFO_V3
+
++typedef struct _ATOM_VRAM_INFO_V4
++{
++ ATOM_COMMON_TABLE_HEADER sHeader;
++ USHORT usMemAdjustTblOffset; // offset of ATOM_INIT_REG_BLOCK structure for memory vendor specific MC adjust setting
++ USHORT usMemClkPatchTblOffset; // offset of ATOM_INIT_REG_BLOCK structure for memory clock specific MC setting
++ USHORT usRerseved;
++ UCHAR ucMemDQ7_0ByteRemap; // DQ line byte remap, =0: Memory Data line BYTE0, =1: BYTE1, =2: BYTE2, =3: BYTE3
++ ULONG ulMemDQ7_0BitRemap; // each DQ line ( 7~0) use 3bits, like: DQ0=Bit[2:0], DQ1:[5:3], ... DQ7:[23:21]
++ UCHAR ucReservde[4];
++ UCHAR ucNumOfVRAMModule;
++ ATOM_VRAM_MODULE_V4 aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE]; // just for allocation, real number of blocks is in ucNumOfVRAMModule;
++ ATOM_INIT_REG_BLOCK asMemPatch; // for allocation
++ // ATOM_INIT_REG_BLOCK aMemAdjust;
++}ATOM_VRAM_INFO_V4;
++
+ typedef struct _ATOM_VRAM_GPIO_DETECTION_INFO
+ {
+ ATOM_COMMON_TABLE_HEADER sHeader;
+@@ -3954,6 +4503,7 @@ typedef struct _DP_ENCODER_SERVICE_PARAMETERS
+ #define ATOM_DP_ACTION_TRAINING_PATTERN_SEL 0x04
+ #define ATOM_DP_ACTION_SET_VSWING_PREEMP 0x05
+ #define ATOM_DP_ACTION_GET_VSWING_PREEMP 0x06
++#define ATOM_DP_ACTION_BLANKING 0x07
+
+ // ucConfig
+ #define ATOM_DP_CONFIG_ENCODER_SEL_MASK 0x03
+@@ -4072,7 +4622,7 @@ typedef struct _COMPASSIONATE_DATA
+
+ typedef struct _ATOM_CONNECTOR_INFO
+ {
+-#if X_BYTE_ORDER == X_BIG_ENDIAN
++#if ATOM_BIG_ENDIAN
+ UCHAR bfConnectorType:4;
+ UCHAR bfAssociatedDAC:4;
+ #else
+@@ -4469,17 +5019,6 @@ typedef struct _ATOM_POWERPLAY_INFO_V3
+ #define ENABLE_LVDS_SS_PARAMETERS_V3 ENABLE_SPREAD_SPECTRUM_ON_PPLL
+
+ /*********************************************************************************/
+-#define ATOM_S3_SCALER2_ACTIVE_H 0x00004000L
+-#define ATOM_S3_SCALER2_ACTIVE_V 0x00008000L
+-#define ATOM_S6_REQ_SCALER2_H 0x00004000L
+-#define ATOM_S6_REQ_SCALER2_V 0x00008000L
+-
+-#define ATOM_S3_SCALER1_ACTIVE_H ATOM_S3_LCD_FULLEXPANSION_ACTIVE
+-#define ATOM_S3_SCALER1_ACTIVE_V ATOM_S3_LCD_EXPANSION_ASPEC_RATIO_ACTIVE
+-
+-#define ATOM_S6_REQ_SCALER1_H ATOM_S6_REQ_LCD_EXPANSION_FULL
+-#define ATOM_S6_REQ_SCALER1_V ATOM_S6_REQ_LCD_EXPANSION_ASPEC_RATIO
+-//==========================================================================================
+
+ #pragma pack() // BIOS data must use byte aligment
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 5333495..d65a3e4 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -26,8 +26,11 @@
+ # _ladir passes a dummy rpath to libtool so the thing will actually link
+ # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
+
++radeon_drv_la_LIBADD =
++
+ if DRI
+ RADEON_DRI_SRCS = radeon_dri.c
++radeon_drv_la_LIBADD += $(DRI_LIBS)
+ endif
+
+ RADEON_ATOMBIOS_SOURCES = \
+@@ -70,6 +73,11 @@ AM_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@ @XMODES_CFLAGS@ -DDISABLE_EASF -DENABLE_A
+
+ INCLUDES = -I$(srcdir)/AtomBios/includes
+
++if XSERVER_LIBPCIACCESS
++ati_drv_la_LIBADD = $(PCIACCESS_LIBS)
++radeon_drv_la_LIBADD += $(PCIACCESS_LIBS)
++endif
++
+ ati_drv_la_LTLIBRARIES = ati_drv.la
+ ati_drv_la_LDFLAGS = -module -avoid-version
+ ati_drv_ladir = @moduledir@/drivers
+@@ -80,7 +88,7 @@ radeon_drv_la_LTLIBRARIES = radeon_drv.la
+ radeon_drv_la_LDFLAGS = -module -avoid-version
+ radeon_drv_ladir = @moduledir@/drivers
+ radeon_drv_la_SOURCES = \
+- radeon_accel.c radeon_cursor.c radeon_dga.c \
++ radeon_accel.c radeon_cursor.c radeon_dga.c radeon_legacy_memory.c \
+ radeon_driver.c radeon_video.c radeon_bios.c radeon_mm_i2c.c \
+ radeon_vip.c radeon_misc.c radeon_probe.c \
+ legacy_crtc.c legacy_output.c \
+@@ -120,7 +128,6 @@ EXTRA_DIST = \
+ radeon_render.c \
+ radeon_accelfuncs.c \
+ radeon_textured_videofuncs.c \
+- \
+ ati.h \
+ ativersion.h \
+ generic_bus.h \
+diff --git a/src/ati_pciids_gen.h b/src/ati_pciids_gen.h
+index a740df8..633c5d3 100644
+--- a/src/ati_pciids_gen.h
++++ b/src/ati_pciids_gen.h
+@@ -1,4 +1,5 @@
+ #define PCI_CHIP_RV380_3150 0x3150
++#define PCI_CHIP_RV380_3151 0x3151
+ #define PCI_CHIP_RV380_3152 0x3152
+ #define PCI_CHIP_RV380_3154 0x3154
+ #define PCI_CHIP_RV380_3E50 0x3E50
+@@ -330,6 +331,9 @@
+ #define PCI_CHIP_R600_940A 0x940A
+ #define PCI_CHIP_R600_940B 0x940B
+ #define PCI_CHIP_R600_940F 0x940F
++#define PCI_CHIP_RV770_9440 0x9440
++#define PCI_CHIP_RV770_9441 0x9441
++#define PCI_CHIP_RV770_9442 0x9442
+ #define PCI_CHIP_RV610_94C0 0x94C0
+ #define PCI_CHIP_RV610_94C1 0x94C1
+ #define PCI_CHIP_RV610_94C3 0x94C3
+@@ -347,6 +351,7 @@
+ #define PCI_CHIP_RV670_9507 0x9507
+ #define PCI_CHIP_RV670_950F 0x950F
+ #define PCI_CHIP_RV670_9511 0x9511
++#define PCI_CHIP_RV670_9515 0x9515
+ #define PCI_CHIP_RV630_9580 0x9580
+ #define PCI_CHIP_RV630_9581 0x9581
+ #define PCI_CHIP_RV630_9583 0x9583
+diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c
+index 363addf..4e2395f 100644
+--- a/src/atombios_crtc.c
++++ b/src/atombios_crtc.c
+@@ -43,11 +43,33 @@
+
+ #ifdef XF86DRI
+ #define _XF86DRI_SERVER_
+-#include "radeon_dri.h"
+-#include "radeon_sarea.h"
++#include "radeon_drm.h"
+ #include "sarea.h"
+ #endif
+
++AtomBiosResult
++atombios_lock_crtc(atomBiosHandlePtr atomBIOS, int crtc, int lock)
++{
++ ENABLE_CRTC_PS_ALLOCATION crtc_data;
++ AtomBiosArgRec data;
++ unsigned char *space;
++
++ crtc_data.ucCRTC = crtc;
++ crtc_data.ucEnable = lock;
++
++ data.exec.index = GetIndexIntoMasterTable(COMMAND, UpdateCRTC_DoubleBufferRegisters);
++ data.exec.dataSpace = (void *)&space;
++ data.exec.pspace = &crtc_data;
++
++ if (RHDAtomBiosFunc(atomBIOS->scrnIndex, atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) {
++ ErrorF("%s CRTC %d success\n", lock? "Lock":"Unlock", crtc);
++ return ATOM_SUCCESS ;
++ }
++
++ ErrorF("Lock CRTC failed\n");
++ return ATOM_NOT_IMPLEMENTED;
++}
++
+ static AtomBiosResult
+ atombios_enable_crtc(atomBiosHandlePtr atomBIOS, int crtc, int state)
+ {
+@@ -105,7 +127,7 @@ atombios_blank_crtc(atomBiosHandlePtr atomBIOS, int crtc, int state)
+ crtc_data.ucCRTC = crtc;
+ crtc_data.ucBlanking = state;
+
+- data.exec.index = offsetof(ATOM_MASTER_LIST_OF_COMMAND_TABLES, BlankCRTC) / sizeof(unsigned short);
++ data.exec.index = GetIndexIntoMasterTable(COMMAND, BlankCRTC);
+ data.exec.dataSpace = (void *)&space;
+ data.exec.pspace = &crtc_data;
+
+@@ -146,10 +168,27 @@ atombios_set_crtc_timing(atomBiosHandlePtr atomBIOS, SET_CRTC_TIMING_PARAMETERS_
+ {
+ AtomBiosArgRec data;
+ unsigned char *space;
++ SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION conv_param;
++
++ conv_param.usH_Total = cpu_to_le16(crtc_param->usH_Total);
++ conv_param.usH_Disp = cpu_to_le16(crtc_param->usH_Disp);
++ conv_param.usH_SyncStart = cpu_to_le16(crtc_param->usH_SyncStart);
++ conv_param.usH_SyncWidth = cpu_to_le16(crtc_param->usH_SyncWidth);
++ conv_param.usV_Total = cpu_to_le16(crtc_param->usV_Total);
++ conv_param.usV_Disp = cpu_to_le16(crtc_param->usV_Disp);
++ conv_param.usV_SyncStart = cpu_to_le16(crtc_param->usV_SyncStart);
++ conv_param.usV_SyncWidth = cpu_to_le16(crtc_param->usV_SyncWidth);
++ conv_param.susModeMiscInfo.usAccess = cpu_to_le16(crtc_param->susModeMiscInfo.usAccess);
++ conv_param.ucCRTC = crtc_param->ucCRTC;
++ conv_param.ucOverscanRight = crtc_param->ucOverscanRight;
++ conv_param.ucOverscanLeft = crtc_param->ucOverscanLeft;
++ conv_param.ucOverscanBottom = crtc_param->ucOverscanBottom;
++ conv_param.ucOverscanTop = crtc_param->ucOverscanTop;
++ conv_param.ucReserved = crtc_param->ucReserved;
+
+ data.exec.index = GetIndexIntoMasterTable(COMMAND, SetCRTC_Timing);
+ data.exec.dataSpace = (void *)&space;
+- data.exec.pspace = crtc_param;
++ data.exec.pspace = &conv_param;
+
+ if (RHDAtomBiosFunc(atomBIOS->scrnIndex, atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) {
+ ErrorF("Set CRTC Timing success\n");
+@@ -185,7 +224,11 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode, int pll_flags)
+ if (IS_AVIVO_VARIANT) {
+ uint32_t temp;
+
+- pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV;
++ 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;
++
+
+ RADEONComputePLL(&info->pll, mode->Clock, &temp, &fb_div, &ref_div, &post_div, pll_flags);
+ sclock = temp;
+@@ -235,9 +278,9 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode, int pll_flags)
+ case 1:
+ case 2:
+ spc2_ptr = (PIXEL_CLOCK_PARAMETERS_V2*)&spc_param.sPCLKInput;
+- spc2_ptr->usPixelClock = sclock;
+- spc2_ptr->usRefDiv = ref_div;
+- spc2_ptr->usFbDiv = fb_div;
++ spc2_ptr->usPixelClock = cpu_to_le16(sclock);
++ spc2_ptr->usRefDiv = cpu_to_le16(ref_div);
++ spc2_ptr->usFbDiv = cpu_to_le16(fb_div);
+ spc2_ptr->ucPostDiv = post_div;
+ spc2_ptr->ucPpll = radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1;
+ spc2_ptr->ucCRTC = radeon_crtc->crtc_id;
+@@ -246,9 +289,9 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode, int pll_flags)
+ break;
+ case 3:
+ spc3_ptr = (PIXEL_CLOCK_PARAMETERS_V3*)&spc_param.sPCLKInput;
+- spc3_ptr->usPixelClock = sclock;
+- spc3_ptr->usRefDiv = ref_div;
+- spc3_ptr->usFbDiv = fb_div;
++ spc3_ptr->usPixelClock = cpu_to_le16(sclock);
++ spc3_ptr->usRefDiv = cpu_to_le16(ref_div);
++ spc3_ptr->usFbDiv = cpu_to_le16(fb_div);
+ spc3_ptr->ucPostDiv = post_div;
+ spc3_ptr->ucPpll = radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1;
+ spc3_ptr->ucMiscInfo = (radeon_crtc->crtc_id << 2);
+@@ -442,9 +485,6 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc,
+ fb_location = fb_location + (char *)crtc->rotatedData - (char *)info->FB;
+ }
+
+- /* lock the grph regs */
+- OUTREG(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, AVIVO_D1GRPH_UPDATE_LOCK);
+-
+ OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, fb_location);
+ OUTREG(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, fb_location);
+ OUTREG(AVIVO_D1GRPH_CONTROL + radeon_crtc->crtc_offset, fb_format);
+@@ -459,26 +499,27 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc,
+ crtc->scrn->displayWidth);
+ OUTREG(AVIVO_D1GRPH_ENABLE + radeon_crtc->crtc_offset, 1);
+
+- /* unlock the grph regs */
+- OUTREG(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, 0);
+-
+- /* lock the mode regs */
+- OUTREG(AVIVO_D1SCL_UPDATE + radeon_crtc->crtc_offset, AVIVO_D1SCL_UPDATE_LOCK);
+-
+ OUTREG(AVIVO_D1MODE_DESKTOP_HEIGHT + radeon_crtc->crtc_offset,
+ mode->VDisplay);
+ OUTREG(AVIVO_D1MODE_VIEWPORT_START + radeon_crtc->crtc_offset, (x << 16) | y);
+ OUTREG(AVIVO_D1MODE_VIEWPORT_SIZE + radeon_crtc->crtc_offset,
+ (mode->HDisplay << 16) | mode->VDisplay);
+- /* unlock the mode regs */
+- OUTREG(AVIVO_D1SCL_UPDATE + radeon_crtc->crtc_offset, 0);
+
++ if (adjusted_mode->Flags & V_INTERLACE)
++ OUTREG(AVIVO_D1MODE_DATA_FORMAT + radeon_crtc->crtc_offset,
++ AVIVO_D1MODE_INTERLEAVE_EN);
++ else
++ OUTREG(AVIVO_D1MODE_DATA_FORMAT + radeon_crtc->crtc_offset,
++ 0);
+ }
+
+ atombios_crtc_set_pll(crtc, adjusted_mode, pll_flags);
+
+ atombios_set_crtc_timing(info->atomBIOS, &crtc_timing);
+
++ if (info->DispPriority)
++ RADEONInitDispBandwidth(pScrn);
++
+ if (tilingChanged) {
+ /* need to redraw front buffer, I guess this can be considered a hack ? */
+ /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */
+@@ -492,3 +533,126 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc,
+
+ }
+
++/* Calculate display buffer watermark to prevent buffer underflow */
++void
++RADEONInitDispBandwidthAVIVO(ScrnInfoPtr pScrn,
++ DisplayModePtr mode1, int pixel_bytes1,
++ DisplayModePtr mode2, int pixel_bytes2)
++{
++ RADEONInfoPtr info = RADEONPTR(pScrn);
++ RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
++ unsigned char *RADEONMMIO = info->MMIO;
++
++ uint32_t dc_lb_memory_split;
++ float mem_bw, peak_disp_bw;
++ float min_mem_eff = 0.8; /* XXX: taken from legacy method */
++ float pix_clk, pix_clk2; /* in MHz */
++
++ /*
++ * Set display0/1 priority up in the memory controller for
++ * modes if the user specifies HIGH for displaypriority
++ * option.
++ */
++ if (info->DispPriority == 2) {
++ uint32_t mc_init_misc_lat_timer = 0;
++ if (info->ChipFamily == CHIP_FAMILY_RV515)
++ mc_init_misc_lat_timer = INMC(pScrn, RV515_MC_INIT_MISC_LAT_TIMER);
++ else if (info->ChipFamily == CHIP_FAMILY_RS690)
++ mc_init_misc_lat_timer = INMC(pScrn, RS690_MC_INIT_MISC_LAT_TIMER);
++
++ mc_init_misc_lat_timer &= ~(R300_MC_DISP1R_INIT_LAT_MASK << R300_MC_DISP1R_INIT_LAT_SHIFT);
++ mc_init_misc_lat_timer &= ~(R300_MC_DISP0R_INIT_LAT_MASK << R300_MC_DISP0R_INIT_LAT_SHIFT);
++
++ if (pRADEONEnt->pCrtc[1]->enabled)
++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP1R_INIT_LAT_SHIFT); /* display 1 */
++ if (pRADEONEnt->pCrtc[0]->enabled)
++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP0R_INIT_LAT_SHIFT); /* display 0 */
++
++ if (info->ChipFamily == CHIP_FAMILY_RV515)
++ OUTMC(pScrn, RV515_MC_INIT_MISC_LAT_TIMER, mc_init_misc_lat_timer);
++ else if (info->ChipFamily == CHIP_FAMILY_RS690)
++ OUTMC(pScrn, RS690_MC_INIT_MISC_LAT_TIMER, mc_init_misc_lat_timer);
++ }
++
++ /* XXX: fix me for AVIVO
++ * Determine if there is enough bandwidth for current display mode
++ */
++ mem_bw = info->mclk * (info->RamWidth / 8) * (info->IsDDR ? 2 : 1);
++
++ pix_clk = 0;
++ pix_clk2 = 0;
++ peak_disp_bw = 0;
++ if (mode1) {
++ pix_clk = mode1->Clock/1000.0;
++ peak_disp_bw += (pix_clk * pixel_bytes1);
++ }
++ if (mode2) {
++ pix_clk2 = mode2->Clock/1000.0;
++ peak_disp_bw += (pix_clk2 * pixel_bytes2);
++ }
++
++ if (peak_disp_bw >= mem_bw * min_mem_eff) {
++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
++ "You may not have enough display bandwidth for current mode\n"
++ "If you have flickering problem, try to lower resolution, refresh rate, or color depth\n");
++ }
++
++ /*
++ * Line Buffer Setup
++ * There is a single line buffer shared by both display controllers.
++ * DC_LB_MEMORY_SPLIT controls how that line buffer is shared between the display
++ * controllers. The paritioning can either be done manually or via one of four
++ * preset allocations specified in bits 1:0:
++ * 0 - line buffer is divided in half and shared between each display controller
++ * 1 - D1 gets 3/4 of the line buffer, D2 gets 1/4
++ * 2 - D1 gets the whole buffer
++ * 3 - D1 gets 1/4 of the line buffer, D2 gets 3/4
++ * Setting bit 2 of DC_LB_MEMORY_SPLIT controls switches to manual allocation mode.
++ * In manual allocation mode, D1 always starts at 0, D1 end/2 is specified in bits
++ * 14:4; D2 allocation follows D1.
++ */
++
++ /* is auto or manual better ? */
++ dc_lb_memory_split = INREG(AVIVO_DC_LB_MEMORY_SPLIT) & ~AVIVO_DC_LB_MEMORY_SPLIT_MASK;
++ dc_lb_memory_split &= ~AVIVO_DC_LB_MEMORY_SPLIT_SHIFT_MODE;
++#if 1
++ /* auto */
++ if (mode1 && mode2) {
++ if (mode1->HDisplay > mode2->HDisplay) {
++ if (mode1->HDisplay > 2560)
++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_3Q_D2_1Q;
++ else
++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF;
++ } else if (mode2->HDisplay > mode1->HDisplay) {
++ if (mode2->HDisplay > 2560)
++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q;
++ else
++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF;
++ } else
++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF;
++ } else if (mode1) {
++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_ONLY;
++ } else if (mode2) {
++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q;
++ }
++#else
++ /* manual */
++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_SHIFT_MODE;
++ dc_lb_memory_split &= ~(AVIVO_DC_LB_DISP1_END_ADR_MASK << AVIVO_DC_LB_DISP1_END_ADR_SHIFT);
++ if (mode1) {
++ dc_lb_memory_split |= ((((mode1->HDisplay / 2) + 64 /*???*/) & AVIVO_DC_LB_DISP1_END_ADR_MASK)
++ << AVIVO_DC_LB_DISP1_END_ADR_SHIFT);
++ } else if (mode2) {
++ dc_lb_memory_split |= (0 << AVIVO_DC_LB_DISP1_END_ADR_SHIFT);
++ }
++ OUTREG(AVIVO_DC_LB_MEMORY_SPLIT, dc_lb_memory_split);
++#endif
++
++ /*
++ * Watermark setup
++ * TODO...
++ * Unforunately, I haven't been able to dig up the avivo watermark programming
++ * guide yet. -AGD
++ */
++
++}
+diff --git a/src/atombios_output.c b/src/atombios_output.c
+index 51be301..49de04f 100644
+--- a/src/atombios_output.c
++++ b/src/atombios_output.c
+@@ -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)
+ {
+@@ -78,7 +80,7 @@ atombios_output_dac1_setup(xf86OutputPtr output, DisplayModePtr mode)
+ }
+ }
+
+- disp_data.usPixelClock = mode->Clock / 10;
++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10);
+ data.exec.index = GetIndexIntoMasterTable(COMMAND, DAC1EncoderControl);
+ data.exec.dataSpace = (void *)&space;
+ data.exec.pspace = &disp_data;
+@@ -128,7 +130,7 @@ atombios_output_dac2_setup(xf86OutputPtr output, DisplayModePtr mode)
+ }
+ }
+
+- disp_data.usPixelClock = mode->Clock / 10;
++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10);
+ data.exec.index = GetIndexIntoMasterTable(COMMAND, DAC2EncoderControl);
+ data.exec.dataSpace = (void *)&space;
+ data.exec.pspace = &disp_data;
+@@ -188,7 +190,7 @@ atombios_output_tv1_setup(xf86OutputPtr output, DisplayModePtr mode)
+ }
+ }
+
+- disp_data.sTVEncoder.usPixelClock = mode->Clock / 10;
++ disp_data.sTVEncoder.usPixelClock = cpu_to_le16(mode->Clock / 10);
+ data.exec.index = GetIndexIntoMasterTable(COMMAND, TVEncoderControl);
+ data.exec.dataSpace = (void *)&space;
+ data.exec.pspace = &disp_data;
+@@ -206,7 +208,8 @@ atombios_output_tv1_setup(xf86OutputPtr output, DisplayModePtr mode)
+ 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(xf86OutputPtr output, DisplayModePtr mode)
+ 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);
+@@ -243,7 +246,7 @@ atombios_output_ddia_setup(xf86OutputPtr output, DisplayModePtr mode)
+ unsigned char *space;
+
+ disp_data.sDVOEncoder.ucAction = ATOM_ENABLE;
+- disp_data.sDVOEncoder.usPixelClock = mode->Clock / 10;
++ disp_data.sDVOEncoder.usPixelClock = cpu_to_le16(mode->Clock / 10);
+
+ if (mode->Clock > 165000)
+ disp_data.sDVOEncoder.usDevAttr.sDigAttrib.ucAttribute = PANEL_ENCODER_MISC_DUAL;
+@@ -264,84 +267,110 @@ atombios_output_ddia_setup(xf86OutputPtr output, DisplayModePtr mode)
+ }
+
+ 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 = 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 = 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.usPixelClock = cpu_to_le16(mode->Clock / 10);
++ 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 = 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;
+ }
+
+@@ -355,7 +384,7 @@ atombios_output_dig1_setup(xf86OutputPtr output, DisplayModePtr mode)
+ unsigned char *space;
+
+ disp_data.ucAction = 1;
+- disp_data.usPixelClock = mode->Clock / 10;
++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10);
+ disp_data.ucConfig = ATOM_ENCODER_CONFIG_TRANSMITTER1;
+ if (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI)) {
+ if (radeon_output->coherent_mode) {
+@@ -406,7 +435,7 @@ atombios_output_dig1_transmitter_setup(xf86OutputPtr output, DisplayModePtr mode
+ unsigned char *space;
+
+ disp_data.ucAction = ATOM_TRANSMITTER_ACTION_ENABLE;
+- disp_data.usPixelClock = mode->Clock / 10;
++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10);
+ disp_data.ucConfig = ATOM_TRANSMITTER_CONFIG_DIG1_ENCODER | ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL;
+
+ if (info->IsIGP && (radeon_output->TMDSType == TMDS_UNIPHY)) {
+@@ -464,7 +493,7 @@ atombios_output_dig2_setup(xf86OutputPtr output, DisplayModePtr mode)
+ unsigned char *space;
+
+ disp_data.ucAction = 1;
+- disp_data.usPixelClock = mode->Clock / 10;
++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10);
+ disp_data.ucConfig = ATOM_ENCODER_CONFIG_TRANSMITTER2;
+ if (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI)) {
+ if (radeon_output->coherent_mode) {
+@@ -515,7 +544,7 @@ atombios_output_dig2_transmitter_setup(xf86OutputPtr output, DisplayModePtr mode
+ unsigned char *space;
+
+ disp_data.ucAction = ATOM_TRANSMITTER_ACTION_ENABLE;
+- disp_data.usPixelClock = mode->Clock / 10;
++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10);
+ disp_data.ucConfig = ATOM_TRANSMITTER_CONFIG_DIG2_ENCODER | ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL;
+
+ if (info->IsIGP && (radeon_output->TMDSType == TMDS_UNIPHY)) {
+@@ -600,34 +629,6 @@ atombios_output_scaler_setup(xf86OutputPtr output, DisplayModePtr mode)
+
+ }
+
+-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 +897,30 @@ atombios_set_output_crtc_source(xf86OutputPtr output)
+ 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 +945,8 @@ atombios_output_mode_set(xf86OutputPtr output,
+ 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 +957,21 @@ atombios_output_mode_set(xf86OutputPtr output,
+ 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 +982,7 @@ atombios_output_mode_set(xf86OutputPtr output,
+ atombios_output_dac2_setup(output, adjusted_mode);
+ atombios_output_tv1_setup(output, adjusted_mode);
+ }
+-
++ atombios_apply_output_quirks(output);
+ }
+
+ static AtomBiosResult
+@@ -979,19 +997,19 @@ atom_bios_dac_load_detect(atomBiosHandlePtr atomBIOS, xf86OutputPtr output)
+ dac_data.sDacload.ucMisc = 0;
+
+ if (radeon_output->devices & ATOM_DEVICE_CRT1_SUPPORT) {
+- dac_data.sDacload.usDeviceID = ATOM_DEVICE_CRT1_SUPPORT;
++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CRT1_SUPPORT);
+ if (radeon_output->DACType == DAC_PRIMARY)
+ dac_data.sDacload.ucDacType = ATOM_DAC_A;
+ else if (radeon_output->DACType == DAC_TVDAC)
+ dac_data.sDacload.ucDacType = ATOM_DAC_B;
+ } else if (radeon_output->devices & ATOM_DEVICE_CRT2_SUPPORT) {
+- dac_data.sDacload.usDeviceID = ATOM_DEVICE_CRT2_SUPPORT;
++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CRT2_SUPPORT);
+ if (radeon_output->DACType == DAC_PRIMARY)
+ dac_data.sDacload.ucDacType = ATOM_DAC_A;
+ else if (radeon_output->DACType == DAC_TVDAC)
+ dac_data.sDacload.ucDacType = ATOM_DAC_B;
+ } else if (radeon_output->devices & ATOM_DEVICE_CV_SUPPORT) {
+- dac_data.sDacload.usDeviceID = ATOM_DEVICE_CV_SUPPORT;
++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CV_SUPPORT);
+ if (radeon_output->DACType == DAC_PRIMARY)
+ dac_data.sDacload.ucDacType = ATOM_DAC_A;
+ else if (radeon_output->DACType == DAC_TVDAC)
+@@ -999,7 +1017,7 @@ atom_bios_dac_load_detect(atomBiosHandlePtr atomBIOS, xf86OutputPtr output)
+ if (IS_DCE3_VARIANT)
+ dac_data.sDacload.ucMisc = 1;
+ } else if (radeon_output->devices & ATOM_DEVICE_TV1_SUPPORT) {
+- dac_data.sDacload.usDeviceID = ATOM_DEVICE_TV1_SUPPORT;
++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_TV1_SUPPORT);
+ if (radeon_output->DACType == DAC_PRIMARY)
+ dac_data.sDacload.ucDacType = ATOM_DAC_A;
+ else if (radeon_output->DACType == DAC_TVDAC)
+diff --git a/src/bicubic_table.h b/src/bicubic_table.h
+new file mode 100644
+index 0000000..765cfff
+--- /dev/null
++++ b/src/bicubic_table.h
+@@ -0,0 +1,646 @@
++static const uint16_t bicubic_tex_512[] = {
++ 0xb266, 0x3c00, 0x3aaa, 0x3155,
++ 0xb287, 0x3bf0, 0x3aa2, 0x3175,
++ 0xb2a9, 0x3be0, 0x3a9a, 0x3196,
++ 0xb2cc, 0x3bd0, 0x3a92, 0x31b7,
++ 0xb2ee, 0x3bc0, 0x3a89, 0x31d9,
++ 0xb312, 0x3bb0, 0x3a81, 0x31fb,
++ 0xb335, 0x3ba0, 0x3a78, 0x321e,
++ 0xb359, 0x3b90, 0x3a6f, 0x3241,
++ 0xb37d, 0x3b80, 0x3a66, 0x3264,
++ 0xb3a2, 0x3b70, 0x3a5d, 0x3288,
++ 0xb3c7, 0x3b60, 0x3a54, 0x32ad,
++ 0xb3ed, 0x3b51, 0x3a4b, 0x32d1,
++ 0xb409, 0x3b41, 0x3a42, 0x32f7,
++ 0xb41c, 0x3b31, 0x3a38, 0x331c,
++ 0xb42f, 0x3b21, 0x3a2f, 0x3342,
++ 0xb443, 0x3b12, 0x3a25, 0x3369,
++ 0xb456, 0x3b02, 0x3a1c, 0x3390,
++ 0xb46a, 0x3af3, 0x3a12, 0x33b7,
++ 0xb47e, 0x3ae3, 0x3a08, 0x33de,
++ 0xb492, 0x3ad4, 0x39fe, 0x3403,
++ 0xb4a6, 0x3ac5, 0x39f4, 0x3417,
++ 0xb4bb, 0x3ab5, 0x39ea, 0x342b,
++ 0xb4cf, 0x3aa6, 0x39df, 0x3440,
++ 0xb4e4, 0x3a97, 0x39d5, 0x3454,
++ 0xb4f9, 0x3a88, 0x39cb, 0x3469,
++ 0xb50e, 0x3a79, 0x39c0, 0x347e,
++ 0xb523, 0x3a6a, 0x39b6, 0x3493,
++ 0xb539, 0x3a5a, 0x39ab, 0x34a8,
++ 0xb54e, 0x3a4c, 0x39a0, 0x34be,
++ 0xb564, 0x3a3d, 0x3996, 0x34d3,
++ 0xb57a, 0x3a2e, 0x398b, 0x34e9,
++ 0xb590, 0x3a1f, 0x3980, 0x34ff,
++ 0xb5a6, 0x3a10, 0x3975, 0x3515,
++ 0xb5bc, 0x3a02, 0x396a, 0x352b,
++ 0xb5d2, 0x39f3, 0x395f, 0x3541,
++ 0xb5e9, 0x39e4, 0x3954, 0x3557,
++ 0xb5ff, 0x39d6, 0x3948, 0x356e,
++ 0xb616, 0x39c7, 0x393d, 0x3584,
++ 0xb62d, 0x39b9, 0x3932, 0x359b,
++ 0xb644, 0x39ab, 0x3926, 0x35b2,
++ 0xb65b, 0x399c, 0x391b, 0x35c9,
++ 0xb672, 0x398e, 0x3910, 0x35df,
++ 0xb68a, 0x3980, 0x3904, 0x35f6,
++ 0xb6a1, 0x3972, 0x38f8, 0x360e,
++ 0xb6b9, 0x3964, 0x38ed, 0x3625,
++ 0xb6d1, 0x3956, 0x38e1, 0x363c,
++ 0xb6e8, 0x3948, 0x38d6, 0x3653,
++ 0xb700, 0x393a, 0x38ca, 0x366b,
++ 0xb719, 0x392c, 0x38be, 0x3682,
++ 0xb731, 0x391e, 0x38b2, 0x369a,
++ 0xb749, 0x3910, 0x38a7, 0x36b1,
++ 0xb762, 0x3902, 0x389b, 0x36c9,
++ 0xb77a, 0x38f5, 0x388f, 0x36e1,
++ 0xb793, 0x38e7, 0x3883, 0x36f8,
++ 0xb7ac, 0x38da, 0x3877, 0x3710,
++ 0xb7c5, 0x38cc, 0x386b, 0x3728,
++ 0xb7de, 0x38bf, 0x385f, 0x3740,
++ 0xb7f7, 0x38b1, 0x3853, 0x3758,
++ 0xb808, 0x38a4, 0x3847, 0x3770,
++ 0xb815, 0x3897, 0x383b, 0x3788,
++ 0xb821, 0x3889, 0x382f, 0x37a0,
++ 0xb82e, 0x387c, 0x3823, 0x37b8,
++ 0xb83b, 0x386f, 0x3817, 0x37d0,
++ 0xb848, 0x3862, 0x380b, 0x37e8,
++ 0xb855, 0x3855, 0x3800, 0x3800,
++ 0xb862, 0x3848, 0x37e8, 0x380b,
++ 0xb86f, 0x383b, 0x37d0, 0x3817,
++ 0xb87c, 0x382e, 0x37b8, 0x3823,
++ 0xb889, 0x3821, 0x37a0, 0x382f,
++ 0xb897, 0x3815, 0x3788, 0x383b,
++ 0xb8a4, 0x3808, 0x3770, 0x3847,
++ 0xb8b1, 0x37f7, 0x3758, 0x3853,
++ 0xb8bf, 0x37de, 0x3740, 0x385f,
++ 0xb8cc, 0x37c5, 0x3728, 0x386b,
++ 0xb8da, 0x37ac, 0x3710, 0x3877,
++ 0xb8e7, 0x3793, 0x36f8, 0x3883,
++ 0xb8f5, 0x377a, 0x36e1, 0x388f,
++ 0xb902, 0x3762, 0x36c9, 0x389b,
++ 0xb910, 0x3749, 0x36b1, 0x38a7,
++ 0xb91e, 0x3731, 0x369a, 0x38b2,
++ 0xb92c, 0x3719, 0x3682, 0x38be,
++ 0xb93a, 0x3700, 0x366b, 0x38ca,
++ 0xb948, 0x36e8, 0x3653, 0x38d6,
++ 0xb956, 0x36d1, 0x363c, 0x38e1,
++ 0xb964, 0x36b9, 0x3625, 0x38ed,
++ 0xb972, 0x36a1, 0x360e, 0x38f8,
++ 0xb980, 0x368a, 0x35f6, 0x3904,
++ 0xb98e, 0x3672, 0x35df, 0x3910,
++ 0xb99c, 0x365b, 0x35c9, 0x391b,
++ 0xb9ab, 0x3644, 0x35b2, 0x3926,
++ 0xb9b9, 0x362d, 0x359b, 0x3932,
++ 0xb9c7, 0x3616, 0x3584, 0x393d,
++ 0xb9d6, 0x35ff, 0x356e, 0x3948,
++ 0xb9e4, 0x35e9, 0x3557, 0x3954,
++ 0xb9f3, 0x35d2, 0x3541, 0x395f,
++ 0xba02, 0x35bc, 0x352b, 0x396a,
++ 0xba10, 0x35a6, 0x3515, 0x3975,
++ 0xba1f, 0x3590, 0x34ff, 0x3980,
++ 0xba2e, 0x357a, 0x34e9, 0x398b,
++ 0xba3d, 0x3564, 0x34d3, 0x3996,
++ 0xba4c, 0x354e, 0x34be, 0x39a0,
++ 0xba5a, 0x3539, 0x34a8, 0x39ab,
++ 0xba6a, 0x3523, 0x3493, 0x39b6,
++ 0xba79, 0x350e, 0x347e, 0x39c0,
++ 0xba88, 0x34f9, 0x3469, 0x39cb,
++ 0xba97, 0x34e4, 0x3454, 0x39d5,
++ 0xbaa6, 0x34cf, 0x3440, 0x39df,
++ 0xbab5, 0x34bb, 0x342b, 0x39ea,
++ 0xbac5, 0x34a6, 0x3417, 0x39f4,
++ 0xbad4, 0x3492, 0x3403, 0x39fe,
++ 0xbae3, 0x347e, 0x33de, 0x3a08,
++ 0xbaf3, 0x346a, 0x33b7, 0x3a12,
++ 0xbb02, 0x3456, 0x3390, 0x3a1c,
++ 0xbb12, 0x3443, 0x3369, 0x3a25,
++ 0xbb21, 0x342f, 0x3342, 0x3a2f,
++ 0xbb31, 0x341c, 0x331c, 0x3a38,
++ 0xbb41, 0x3409, 0x32f7, 0x3a42,
++ 0xbb51, 0x33ed, 0x32d1, 0x3a4b,
++ 0xbb60, 0x33c7, 0x32ad, 0x3a54,
++ 0xbb70, 0x33a2, 0x3288, 0x3a5d,
++ 0xbb80, 0x337d, 0x3264, 0x3a66,
++ 0xbb90, 0x3359, 0x3241, 0x3a6f,
++ 0xbba0, 0x3335, 0x321e, 0x3a78,
++ 0xbbb0, 0x3312, 0x31fb, 0x3a81,
++ 0xbbc0, 0x32ee, 0x31d9, 0x3a89,
++ 0xbbd0, 0x32cc, 0x31b7, 0x3a92,
++ 0xbbe0, 0x32a9, 0x3196, 0x3a9a,
++ 0xbbf0, 0x3287, 0x3175, 0x3aa2,
++ 0 };
++
++static const uint16_t bicubic_tex_2048[] = {
++ 0xb266, 0x3c00, 0x3aaa, 0x3155,
++ 0xb26e, 0x3bfc, 0x3aa8, 0x315d,
++ 0xb277, 0x3bf8, 0x3aa6, 0x3165,
++ 0xb27f, 0x3bf4, 0x3aa4, 0x316d,
++ 0xb287, 0x3bf0, 0x3aa2, 0x3175,
++ 0xb290, 0x3bec, 0x3aa0, 0x317d,
++ 0xb298, 0x3be8, 0x3a9e, 0x3185,
++ 0xb2a1, 0x3be4, 0x3a9c, 0x318e,
++ 0xb2a9, 0x3be0, 0x3a9a, 0x3196,
++ 0xb2b2, 0x3bdc, 0x3a98, 0x319e,
++ 0xb2ba, 0x3bd8, 0x3a96, 0x31a6,
++ 0xb2c3, 0x3bd4, 0x3a94, 0x31af,
++ 0xb2cc, 0x3bd0, 0x3a92, 0x31b7,
++ 0xb2d4, 0x3bcc, 0x3a90, 0x31bf,
++ 0xb2dd, 0x3bc8, 0x3a8d, 0x31c8,
++ 0xb2e6, 0x3bc4, 0x3a8b, 0x31d0,
++ 0xb2ee, 0x3bc0, 0x3a89, 0x31d9,
++ 0xb2f7, 0x3bbc, 0x3a87, 0x31e1,
++ 0xb300, 0x3bb8, 0x3a85, 0x31ea,
++ 0xb309, 0x3bb4, 0x3a83, 0x31f2,
++ 0xb312, 0x3bb0, 0x3a81, 0x31fb,
++ 0xb31a, 0x3bac, 0x3a7e, 0x3204,
++ 0xb323, 0x3ba8, 0x3a7c, 0x320c,
++ 0xb32c, 0x3ba4, 0x3a7a, 0x3215,
++ 0xb335, 0x3ba0, 0x3a78, 0x321e,
++ 0xb33e, 0x3b9c, 0x3a76, 0x3226,
++ 0xb347, 0x3b98, 0x3a74, 0x322f,
++ 0xb350, 0x3b94, 0x3a71, 0x3238,
++ 0xb359, 0x3b90, 0x3a6f, 0x3241,
++ 0xb362, 0x3b8c, 0x3a6d, 0x3249,
++ 0xb36b, 0x3b88, 0x3a6b, 0x3252,
++ 0xb374, 0x3b84, 0x3a69, 0x325b,
++ 0xb37d, 0x3b80, 0x3a66, 0x3264,
++ 0xb387, 0x3b7c, 0x3a64, 0x326d,
++ 0xb390, 0x3b78, 0x3a62, 0x3276,
++ 0xb399, 0x3b74, 0x3a60, 0x327f,
++ 0xb3a2, 0x3b70, 0x3a5d, 0x3288,
++ 0xb3ab, 0x3b6c, 0x3a5b, 0x3291,
++ 0xb3b5, 0x3b68, 0x3a59, 0x329a,
++ 0xb3be, 0x3b64, 0x3a57, 0x32a3,
++ 0xb3c7, 0x3b60, 0x3a54, 0x32ad,
++ 0xb3d0, 0x3b5c, 0x3a52, 0x32b6,
++ 0xb3da, 0x3b58, 0x3a50, 0x32bf,
++ 0xb3e3, 0x3b54, 0x3a4d, 0x32c8,
++ 0xb3ed, 0x3b51, 0x3a4b, 0x32d1,
++ 0xb3f6, 0x3b4d, 0x3a49, 0x32db,
++ 0xb3ff, 0x3b49, 0x3a46, 0x32e4,
++ 0xb404, 0x3b45, 0x3a44, 0x32ed,
++ 0xb409, 0x3b41, 0x3a42, 0x32f7,
++ 0xb40e, 0x3b3d, 0x3a3f, 0x3300,
++ 0xb412, 0x3b39, 0x3a3d, 0x3309,
++ 0xb417, 0x3b35, 0x3a3b, 0x3313,
++ 0xb41c, 0x3b31, 0x3a38, 0x331c,
++ 0xb421, 0x3b2d, 0x3a36, 0x3326,
++ 0xb426, 0x3b29, 0x3a34, 0x332f,
++ 0xb42a, 0x3b25, 0x3a31, 0x3339,
++ 0xb42f, 0x3b21, 0x3a2f, 0x3342,
++ 0xb434, 0x3b1e, 0x3a2c, 0x334c,
++ 0xb439, 0x3b1a, 0x3a2a, 0x3355,
++ 0xb43e, 0x3b16, 0x3a28, 0x335f,
++ 0xb443, 0x3b12, 0x3a25, 0x3369,
++ 0xb448, 0x3b0e, 0x3a23, 0x3372,
++ 0xb44d, 0x3b0a, 0x3a20, 0x337c,
++ 0xb451, 0x3b06, 0x3a1e, 0x3386,
++ 0xb456, 0x3b02, 0x3a1c, 0x3390,
++ 0xb45b, 0x3afe, 0x3a19, 0x3399,
++ 0xb460, 0x3afb, 0x3a17, 0x33a3,
++ 0xb465, 0x3af7, 0x3a14, 0x33ad,
++ 0xb46a, 0x3af3, 0x3a12, 0x33b7,
++ 0xb46f, 0x3aef, 0x3a0f, 0x33c1,
++ 0xb474, 0x3aeb, 0x3a0d, 0x33ca,
++ 0xb479, 0x3ae7, 0x3a0a, 0x33d4,
++ 0xb47e, 0x3ae3, 0x3a08, 0x33de,
++ 0xb483, 0x3ae0, 0x3a05, 0x33e8,
++ 0xb488, 0x3adc, 0x3a03, 0x33f2,
++ 0xb48d, 0x3ad8, 0x3a00, 0x33fc,
++ 0xb492, 0x3ad4, 0x39fe, 0x3403,
++ 0xb497, 0x3ad0, 0x39fb, 0x3408,
++ 0xb49c, 0x3acc, 0x39f9, 0x340d,
++ 0xb4a1, 0x3ac8, 0x39f6, 0x3412,
++ 0xb4a6, 0x3ac5, 0x39f4, 0x3417,
++ 0xb4ac, 0x3ac1, 0x39f1, 0x341c,
++ 0xb4b1, 0x3abd, 0x39ef, 0x3421,
++ 0xb4b6, 0x3ab9, 0x39ec, 0x3426,
++ 0xb4bb, 0x3ab5, 0x39ea, 0x342b,
++ 0xb4c0, 0x3ab1, 0x39e7, 0x3430,
++ 0xb4c5, 0x3aae, 0x39e5, 0x3435,
++ 0xb4ca, 0x3aaa, 0x39e2, 0x343b,
++ 0xb4cf, 0x3aa6, 0x39df, 0x3440,
++ 0xb4d5, 0x3aa2, 0x39dd, 0x3445,
++ 0xb4da, 0x3a9e, 0x39da, 0x344a,
++ 0xb4df, 0x3a9b, 0x39d8, 0x344f,
++ 0xb4e4, 0x3a97, 0x39d5, 0x3454,
++ 0xb4e9, 0x3a93, 0x39d2, 0x345a,
++ 0xb4ef, 0x3a8f, 0x39d0, 0x345f,
++ 0xb4f4, 0x3a8b, 0x39cd, 0x3464,
++ 0xb4f9, 0x3a88, 0x39cb, 0x3469,
++ 0xb4fe, 0x3a84, 0x39c8, 0x346e,
++ 0xb504, 0x3a80, 0x39c5, 0x3474,
++ 0xb509, 0x3a7c, 0x39c3, 0x3479,
++ 0xb50e, 0x3a79, 0x39c0, 0x347e,
++ 0xb513, 0x3a75, 0x39be, 0x3483,
++ 0xb519, 0x3a71, 0x39bb, 0x3489,
++ 0xb51e, 0x3a6d, 0x39b8, 0x348e,
++ 0xb523, 0x3a6a, 0x39b6, 0x3493,
++ 0xb529, 0x3a66, 0x39b3, 0x3499,
++ 0xb52e, 0x3a62, 0x39b0, 0x349e,
++ 0xb533, 0x3a5e, 0x39ae, 0x34a3,
++ 0xb539, 0x3a5a, 0x39ab, 0x34a8,
++ 0xb53e, 0x3a57, 0x39a8, 0x34ae,
++ 0xb543, 0x3a53, 0x39a6, 0x34b3,
++ 0xb549, 0x3a4f, 0x39a3, 0x34b9,
++ 0xb54e, 0x3a4c, 0x39a0, 0x34be,
++ 0xb554, 0x3a48, 0x399e, 0x34c3,
++ 0xb559, 0x3a44, 0x399b, 0x34c9,
++ 0xb55e, 0x3a40, 0x3998, 0x34ce,
++ 0xb564, 0x3a3d, 0x3996, 0x34d3,
++ 0xb569, 0x3a39, 0x3993, 0x34d9,
++ 0xb56f, 0x3a35, 0x3990, 0x34de,
++ 0xb574, 0x3a32, 0x398d, 0x34e4,
++ 0xb57a, 0x3a2e, 0x398b, 0x34e9,
++ 0xb57f, 0x3a2a, 0x3988, 0x34ef,
++ 0xb585, 0x3a26, 0x3985, 0x34f4,
++ 0xb58a, 0x3a23, 0x3983, 0x34f9,
++ 0xb590, 0x3a1f, 0x3980, 0x34ff,
++ 0xb595, 0x3a1b, 0x397d, 0x3504,
++ 0xb59b, 0x3a18, 0x397a, 0x350a,
++ 0xb5a0, 0x3a14, 0x3978, 0x350f,
++ 0xb5a6, 0x3a10, 0x3975, 0x3515,
++ 0xb5ab, 0x3a0d, 0x3972, 0x351a,
++ 0xb5b1, 0x3a09, 0x396f, 0x3520,
++ 0xb5b6, 0x3a05, 0x396d, 0x3525,
++ 0xb5bc, 0x3a02, 0x396a, 0x352b,
++ 0xb5c1, 0x39fe, 0x3967, 0x3530,
++ 0xb5c7, 0x39fa, 0x3964, 0x3536,
++ 0xb5cd, 0x39f7, 0x3961, 0x353c,
++ 0xb5d2, 0x39f3, 0x395f, 0x3541,
++ 0xb5d8, 0x39ef, 0x395c, 0x3547,
++ 0xb5dd, 0x39ec, 0x3959, 0x354c,
++ 0xb5e3, 0x39e8, 0x3956, 0x3552,
++ 0xb5e9, 0x39e4, 0x3954, 0x3557,
++ 0xb5ee, 0x39e1, 0x3951, 0x355d,
++ 0xb5f4, 0x39dd, 0x394e, 0x3563,
++ 0xb5fa, 0x39d9, 0x394b, 0x3568,
++ 0xb5ff, 0x39d6, 0x3948, 0x356e,
++ 0xb605, 0x39d2, 0x3946, 0x3573,
++ 0xb60b, 0x39cf, 0x3943, 0x3579,
++ 0xb610, 0x39cb, 0x3940, 0x357f,
++ 0xb616, 0x39c7, 0x393d, 0x3584,
++ 0xb61c, 0x39c4, 0x393a, 0x358a,
++ 0xb621, 0x39c0, 0x3937, 0x3590,
++ 0xb627, 0x39bd, 0x3935, 0x3595,
++ 0xb62d, 0x39b9, 0x3932, 0x359b,
++ 0xb633, 0x39b5, 0x392f, 0x35a1,
++ 0xb638, 0x39b2, 0x392c, 0x35a6,
++ 0xb63e, 0x39ae, 0x3929, 0x35ac,
++ 0xb644, 0x39ab, 0x3926, 0x35b2,
++ 0xb64a, 0x39a7, 0x3924, 0x35b7,
++ 0xb64f, 0x39a3, 0x3921, 0x35bd,
++ 0xb655, 0x39a0, 0x391e, 0x35c3,
++ 0xb65b, 0x399c, 0x391b, 0x35c9,
++ 0xb661, 0x3999, 0x3918, 0x35ce,
++ 0xb667, 0x3995, 0x3915, 0x35d4,
++ 0xb66c, 0x3992, 0x3912, 0x35da,
++ 0xb672, 0x398e, 0x3910, 0x35df,
++ 0xb678, 0x398a, 0x390d, 0x35e5,
++ 0xb67e, 0x3987, 0x390a, 0x35eb,
++ 0xb684, 0x3983, 0x3907, 0x35f1,
++ 0xb68a, 0x3980, 0x3904, 0x35f6,
++ 0xb68f, 0x397c, 0x3901, 0x35fc,
++ 0xb695, 0x3979, 0x38fe, 0x3602,
++ 0xb69b, 0x3975, 0x38fb, 0x3608,
++ 0xb6a1, 0x3972, 0x38f8, 0x360e,
++ 0xb6a7, 0x396e, 0x38f6, 0x3613,
++ 0xb6ad, 0x396b, 0x38f3, 0x3619,
++ 0xb6b3, 0x3967, 0x38f0, 0x361f,
++ 0xb6b9, 0x3964, 0x38ed, 0x3625,
++ 0xb6bf, 0x3960, 0x38ea, 0x362b,
++ 0xb6c5, 0x395d, 0x38e7, 0x3630,
++ 0xb6cb, 0x3959, 0x38e4, 0x3636,
++ 0xb6d1, 0x3956, 0x38e1, 0x363c,
++ 0xb6d6, 0x3952, 0x38de, 0x3642,
++ 0xb6dc, 0x394f, 0x38db, 0x3648,
++ 0xb6e2, 0x394b, 0x38d9, 0x364d,
++ 0xb6e8, 0x3948, 0x38d6, 0x3653,
++ 0xb6ee, 0x3944, 0x38d3, 0x3659,
++ 0xb6f4, 0x3941, 0x38d0, 0x365f,
++ 0xb6fa, 0x393d, 0x38cd, 0x3665,
++ 0xb700, 0x393a, 0x38ca, 0x366b,
++ 0xb706, 0x3936, 0x38c7, 0x3671,
++ 0xb70c, 0x3933, 0x38c4, 0x3676,
++ 0xb712, 0x392f, 0x38c1, 0x367c,
++ 0xb719, 0x392c, 0x38be, 0x3682,
++ 0xb71f, 0x3928, 0x38bb, 0x3688,
++ 0xb725, 0x3925, 0x38b8, 0x368e,
++ 0xb72b, 0x3921, 0x38b5, 0x3694,
++ 0xb731, 0x391e, 0x38b2, 0x369a,
++ 0xb737, 0x391a, 0x38af, 0x36a0,
++ 0xb73d, 0x3917, 0x38ad, 0x36a5,
++ 0xb743, 0x3914, 0x38aa, 0x36ab,
++ 0xb749, 0x3910, 0x38a7, 0x36b1,
++ 0xb74f, 0x390d, 0x38a4, 0x36b7,
++ 0xb755, 0x3909, 0x38a1, 0x36bd,
++ 0xb75b, 0x3906, 0x389e, 0x36c3,
++ 0xb762, 0x3902, 0x389b, 0x36c9,
++ 0xb768, 0x38ff, 0x3898, 0x36cf,
++ 0xb76e, 0x38fc, 0x3895, 0x36d5,
++ 0xb774, 0x38f8, 0x3892, 0x36db,
++ 0xb77a, 0x38f5, 0x388f, 0x36e1,
++ 0xb780, 0x38f1, 0x388c, 0x36e7,
++ 0xb787, 0x38ee, 0x3889, 0x36ec,
++ 0xb78d, 0x38eb, 0x3886, 0x36f2,
++ 0xb793, 0x38e7, 0x3883, 0x36f8,
++ 0xb799, 0x38e4, 0x3880, 0x36fe,
++ 0xb79f, 0x38e0, 0x387d, 0x3704,
++ 0xb7a5, 0x38dd, 0x387a, 0x370a,
++ 0xb7ac, 0x38da, 0x3877, 0x3710,
++ 0xb7b2, 0x38d6, 0x3874, 0x3716,
++ 0xb7b8, 0x38d3, 0x3871, 0x371c,
++ 0xb7be, 0x38cf, 0x386e, 0x3722,
++ 0xb7c5, 0x38cc, 0x386b, 0x3728,
++ 0xb7cb, 0x38c9, 0x3868, 0x372e,
++ 0xb7d1, 0x38c5, 0x3865, 0x3734,
++ 0xb7d7, 0x38c2, 0x3862, 0x373a,
++ 0xb7de, 0x38bf, 0x385f, 0x3740,
++ 0xb7e4, 0x38bb, 0x385c, 0x3746,
++ 0xb7ea, 0x38b8, 0x3859, 0x374c,
++ 0xb7f1, 0x38b5, 0x3856, 0x3752,
++ 0xb7f7, 0x38b1, 0x3853, 0x3758,
++ 0xb7fd, 0x38ae, 0x3850, 0x375e,
++ 0xb801, 0x38aa, 0x384d, 0x3764,
++ 0xb805, 0x38a7, 0x384a, 0x376a,
++ 0xb808, 0x38a4, 0x3847, 0x3770,
++ 0xb80b, 0x38a0, 0x3844, 0x3776,
++ 0xb80e, 0x389d, 0x3841, 0x377c,
++ 0xb811, 0x389a, 0x383e, 0x3782,
++ 0xb815, 0x3897, 0x383b, 0x3788,
++ 0xb818, 0x3893, 0x3838, 0x378e,
++ 0xb81b, 0x3890, 0x3835, 0x3794,
++ 0xb81e, 0x388d, 0x3832, 0x379a,
++ 0xb821, 0x3889, 0x382f, 0x37a0,
++ 0xb824, 0x3886, 0x382c, 0x37a6,
++ 0xb828, 0x3883, 0x3829, 0x37ac,
++ 0xb82b, 0x387f, 0x3826, 0x37b2,
++ 0xb82e, 0x387c, 0x3823, 0x37b8,
++ 0xb831, 0x3879, 0x3820, 0x37be,
++ 0xb835, 0x3876, 0x381d, 0x37c4,
++ 0xb838, 0x3872, 0x381a, 0x37ca,
++ 0xb83b, 0x386f, 0x3817, 0x37d0,
++ 0xb83e, 0x386c, 0x3814, 0x37d6,
++ 0xb841, 0x3868, 0x3811, 0x37dc,
++ 0xb845, 0x3865, 0x380e, 0x37e2,
++ 0xb848, 0x3862, 0x380b, 0x37e8,
++ 0xb84b, 0x385f, 0x3808, 0x37ee,
++ 0xb84e, 0x385b, 0x3806, 0x37f4,
++ 0xb852, 0x3858, 0x3803, 0x37fa,
++ 0xb855, 0x3855, 0x3800, 0x3800,
++ 0xb858, 0x3852, 0x37fa, 0x3803,
++ 0xb85b, 0x384e, 0x37f4, 0x3806,
++ 0xb85f, 0x384b, 0x37ee, 0x3808,
++ 0xb862, 0x3848, 0x37e8, 0x380b,
++ 0xb865, 0x3845, 0x37e2, 0x380e,
++ 0xb868, 0x3841, 0x37dc, 0x3811,
++ 0xb86c, 0x383e, 0x37d6, 0x3814,
++ 0xb86f, 0x383b, 0x37d0, 0x3817,
++ 0xb872, 0x3838, 0x37ca, 0x381a,
++ 0xb876, 0x3835, 0x37c4, 0x381d,
++ 0xb879, 0x3831, 0x37be, 0x3820,
++ 0xb87c, 0x382e, 0x37b8, 0x3823,
++ 0xb87f, 0x382b, 0x37b2, 0x3826,
++ 0xb883, 0x3828, 0x37ac, 0x3829,
++ 0xb886, 0x3824, 0x37a6, 0x382c,
++ 0xb889, 0x3821, 0x37a0, 0x382f,
++ 0xb88d, 0x381e, 0x379a, 0x3832,
++ 0xb890, 0x381b, 0x3794, 0x3835,
++ 0xb893, 0x3818, 0x378e, 0x3838,
++ 0xb897, 0x3815, 0x3788, 0x383b,
++ 0xb89a, 0x3811, 0x3782, 0x383e,
++ 0xb89d, 0x380e, 0x377c, 0x3841,
++ 0xb8a0, 0x380b, 0x3776, 0x3844,
++ 0xb8a4, 0x3808, 0x3770, 0x3847,
++ 0xb8a7, 0x3805, 0x376a, 0x384a,
++ 0xb8aa, 0x3801, 0x3764, 0x384d,
++ 0xb8ae, 0x37fd, 0x375e, 0x3850,
++ 0xb8b1, 0x37f7, 0x3758, 0x3853,
++ 0xb8b5, 0x37f1, 0x3752, 0x3856,
++ 0xb8b8, 0x37ea, 0x374c, 0x3859,
++ 0xb8bb, 0x37e4, 0x3746, 0x385c,
++ 0xb8bf, 0x37de, 0x3740, 0x385f,
++ 0xb8c2, 0x37d7, 0x373a, 0x3862,
++ 0xb8c5, 0x37d1, 0x3734, 0x3865,
++ 0xb8c9, 0x37cb, 0x372e, 0x3868,
++ 0xb8cc, 0x37c5, 0x3728, 0x386b,
++ 0xb8cf, 0x37be, 0x3722, 0x386e,
++ 0xb8d3, 0x37b8, 0x371c, 0x3871,
++ 0xb8d6, 0x37b2, 0x3716, 0x3874,
++ 0xb8da, 0x37ac, 0x3710, 0x3877,
++ 0xb8dd, 0x37a5, 0x370a, 0x387a,
++ 0xb8e0, 0x379f, 0x3704, 0x387d,
++ 0xb8e4, 0x3799, 0x36fe, 0x3880,
++ 0xb8e7, 0x3793, 0x36f8, 0x3883,
++ 0xb8eb, 0x378d, 0x36f2, 0x3886,
++ 0xb8ee, 0x3787, 0x36ec, 0x3889,
++ 0xb8f1, 0x3780, 0x36e7, 0x388c,
++ 0xb8f5, 0x377a, 0x36e1, 0x388f,
++ 0xb8f8, 0x3774, 0x36db, 0x3892,
++ 0xb8fc, 0x376e, 0x36d5, 0x3895,
++ 0xb8ff, 0x3768, 0x36cf, 0x3898,
++ 0xb902, 0x3762, 0x36c9, 0x389b,
++ 0xb906, 0x375b, 0x36c3, 0x389e,
++ 0xb909, 0x3755, 0x36bd, 0x38a1,
++ 0xb90d, 0x374f, 0x36b7, 0x38a4,
++ 0xb910, 0x3749, 0x36b1, 0x38a7,
++ 0xb914, 0x3743, 0x36ab, 0x38aa,
++ 0xb917, 0x373d, 0x36a5, 0x38ad,
++ 0xb91a, 0x3737, 0x36a0, 0x38af,
++ 0xb91e, 0x3731, 0x369a, 0x38b2,
++ 0xb921, 0x372b, 0x3694, 0x38b5,
++ 0xb925, 0x3725, 0x368e, 0x38b8,
++ 0xb928, 0x371f, 0x3688, 0x38bb,
++ 0xb92c, 0x3719, 0x3682, 0x38be,
++ 0xb92f, 0x3712, 0x367c, 0x38c1,
++ 0xb933, 0x370c, 0x3676, 0x38c4,
++ 0xb936, 0x3706, 0x3671, 0x38c7,
++ 0xb93a, 0x3700, 0x366b, 0x38ca,
++ 0xb93d, 0x36fa, 0x3665, 0x38cd,
++ 0xb941, 0x36f4, 0x365f, 0x38d0,
++ 0xb944, 0x36ee, 0x3659, 0x38d3,
++ 0xb948, 0x36e8, 0x3653, 0x38d6,
++ 0xb94b, 0x36e2, 0x364d, 0x38d9,
++ 0xb94f, 0x36dc, 0x3648, 0x38db,
++ 0xb952, 0x36d6, 0x3642, 0x38de,
++ 0xb956, 0x36d1, 0x363c, 0x38e1,
++ 0xb959, 0x36cb, 0x3636, 0x38e4,
++ 0xb95d, 0x36c5, 0x3630, 0x38e7,
++ 0xb960, 0x36bf, 0x362b, 0x38ea,
++ 0xb964, 0x36b9, 0x3625, 0x38ed,
++ 0xb967, 0x36b3, 0x361f, 0x38f0,
++ 0xb96b, 0x36ad, 0x3619, 0x38f3,
++ 0xb96e, 0x36a7, 0x3613, 0x38f6,
++ 0xb972, 0x36a1, 0x360e, 0x38f8,
++ 0xb975, 0x369b, 0x3608, 0x38fb,
++ 0xb979, 0x3695, 0x3602, 0x38fe,
++ 0xb97c, 0x368f, 0x35fc, 0x3901,
++ 0xb980, 0x368a, 0x35f6, 0x3904,
++ 0xb983, 0x3684, 0x35f1, 0x3907,
++ 0xb987, 0x367e, 0x35eb, 0x390a,
++ 0xb98a, 0x3678, 0x35e5, 0x390d,
++ 0xb98e, 0x3672, 0x35df, 0x3910,
++ 0xb992, 0x366c, 0x35da, 0x3912,
++ 0xb995, 0x3667, 0x35d4, 0x3915,
++ 0xb999, 0x3661, 0x35ce, 0x3918,
++ 0xb99c, 0x365b, 0x35c9, 0x391b,
++ 0xb9a0, 0x3655, 0x35c3, 0x391e,
++ 0xb9a3, 0x364f, 0x35bd, 0x3921,
++ 0xb9a7, 0x364a, 0x35b7, 0x3924,
++ 0xb9ab, 0x3644, 0x35b2, 0x3926,
++ 0xb9ae, 0x363e, 0x35ac, 0x3929,
++ 0xb9b2, 0x3638, 0x35a6, 0x392c,
++ 0xb9b5, 0x3633, 0x35a1, 0x392f,
++ 0xb9b9, 0x362d, 0x359b, 0x3932,
++ 0xb9bd, 0x3627, 0x3595, 0x3935,
++ 0xb9c0, 0x3621, 0x3590, 0x3937,
++ 0xb9c4, 0x361c, 0x358a, 0x393a,
++ 0xb9c7, 0x3616, 0x3584, 0x393d,
++ 0xb9cb, 0x3610, 0x357f, 0x3940,
++ 0xb9cf, 0x360b, 0x3579, 0x3943,
++ 0xb9d2, 0x3605, 0x3573, 0x3946,
++ 0xb9d6, 0x35ff, 0x356e, 0x3948,
++ 0xb9d9, 0x35fa, 0x3568, 0x394b,
++ 0xb9dd, 0x35f4, 0x3563, 0x394e,
++ 0xb9e1, 0x35ee, 0x355d, 0x3951,
++ 0xb9e4, 0x35e9, 0x3557, 0x3954,
++ 0xb9e8, 0x35e3, 0x3552, 0x3956,
++ 0xb9ec, 0x35dd, 0x354c, 0x3959,
++ 0xb9ef, 0x35d8, 0x3547, 0x395c,
++ 0xb9f3, 0x35d2, 0x3541, 0x395f,
++ 0xb9f7, 0x35cd, 0x353c, 0x3961,
++ 0xb9fa, 0x35c7, 0x3536, 0x3964,
++ 0xb9fe, 0x35c1, 0x3530, 0x3967,
++ 0xba02, 0x35bc, 0x352b, 0x396a,
++ 0xba05, 0x35b6, 0x3525, 0x396d,
++ 0xba09, 0x35b1, 0x3520, 0x396f,
++ 0xba0d, 0x35ab, 0x351a, 0x3972,
++ 0xba10, 0x35a6, 0x3515, 0x3975,
++ 0xba14, 0x35a0, 0x350f, 0x3978,
++ 0xba18, 0x359b, 0x350a, 0x397a,
++ 0xba1b, 0x3595, 0x3504, 0x397d,
++ 0xba1f, 0x3590, 0x34ff, 0x3980,
++ 0xba23, 0x358a, 0x34f9, 0x3983,
++ 0xba26, 0x3585, 0x34f4, 0x3985,
++ 0xba2a, 0x357f, 0x34ef, 0x3988,
++ 0xba2e, 0x357a, 0x34e9, 0x398b,
++ 0xba32, 0x3574, 0x34e4, 0x398d,
++ 0xba35, 0x356f, 0x34de, 0x3990,
++ 0xba39, 0x3569, 0x34d9, 0x3993,
++ 0xba3d, 0x3564, 0x34d3, 0x3996,
++ 0xba40, 0x355e, 0x34ce, 0x3998,
++ 0xba44, 0x3559, 0x34c9, 0x399b,
++ 0xba48, 0x3554, 0x34c3, 0x399e,
++ 0xba4c, 0x354e, 0x34be, 0x39a0,
++ 0xba4f, 0x3549, 0x34b9, 0x39a3,
++ 0xba53, 0x3543, 0x34b3, 0x39a6,
++ 0xba57, 0x353e, 0x34ae, 0x39a8,
++ 0xba5a, 0x3539, 0x34a8, 0x39ab,
++ 0xba5e, 0x3533, 0x34a3, 0x39ae,
++ 0xba62, 0x352e, 0x349e, 0x39b0,
++ 0xba66, 0x3529, 0x3499, 0x39b3,
++ 0xba6a, 0x3523, 0x3493, 0x39b6,
++ 0xba6d, 0x351e, 0x348e, 0x39b8,
++ 0xba71, 0x3519, 0x3489, 0x39bb,
++ 0xba75, 0x3513, 0x3483, 0x39be,
++ 0xba79, 0x350e, 0x347e, 0x39c0,
++ 0xba7c, 0x3509, 0x3479, 0x39c3,
++ 0xba80, 0x3504, 0x3474, 0x39c5,
++ 0xba84, 0x34fe, 0x346e, 0x39c8,
++ 0xba88, 0x34f9, 0x3469, 0x39cb,
++ 0xba8b, 0x34f4, 0x3464, 0x39cd,
++ 0xba8f, 0x34ef, 0x345f, 0x39d0,
++ 0xba93, 0x34e9, 0x345a, 0x39d2,
++ 0xba97, 0x34e4, 0x3454, 0x39d5,
++ 0xba9b, 0x34df, 0x344f, 0x39d8,
++ 0xba9e, 0x34da, 0x344a, 0x39da,
++ 0xbaa2, 0x34d5, 0x3445, 0x39dd,
++ 0xbaa6, 0x34cf, 0x3440, 0x39df,
++ 0xbaaa, 0x34ca, 0x343b, 0x39e2,
++ 0xbaae, 0x34c5, 0x3435, 0x39e5,
++ 0xbab1, 0x34c0, 0x3430, 0x39e7,
++ 0xbab5, 0x34bb, 0x342b, 0x39ea,
++ 0xbab9, 0x34b6, 0x3426, 0x39ec,
++ 0xbabd, 0x34b1, 0x3421, 0x39ef,
++ 0xbac1, 0x34ac, 0x341c, 0x39f1,
++ 0xbac5, 0x34a6, 0x3417, 0x39f4,
++ 0xbac8, 0x34a1, 0x3412, 0x39f6,
++ 0xbacc, 0x349c, 0x340d, 0x39f9,
++ 0xbad0, 0x3497, 0x3408, 0x39fb,
++ 0xbad4, 0x3492, 0x3403, 0x39fe,
++ 0xbad8, 0x348d, 0x33fc, 0x3a00,
++ 0xbadc, 0x3488, 0x33f2, 0x3a03,
++ 0xbae0, 0x3483, 0x33e8, 0x3a05,
++ 0xbae3, 0x347e, 0x33de, 0x3a08,
++ 0xbae7, 0x3479, 0x33d4, 0x3a0a,
++ 0xbaeb, 0x3474, 0x33ca, 0x3a0d,
++ 0xbaef, 0x346f, 0x33c1, 0x3a0f,
++ 0xbaf3, 0x346a, 0x33b7, 0x3a12,
++ 0xbaf7, 0x3465, 0x33ad, 0x3a14,
++ 0xbafb, 0x3460, 0x33a3, 0x3a17,
++ 0xbafe, 0x345b, 0x3399, 0x3a19,
++ 0xbb02, 0x3456, 0x3390, 0x3a1c,
++ 0xbb06, 0x3451, 0x3386, 0x3a1e,
++ 0xbb0a, 0x344d, 0x337c, 0x3a20,
++ 0xbb0e, 0x3448, 0x3372, 0x3a23,
++ 0xbb12, 0x3443, 0x3369, 0x3a25,
++ 0xbb16, 0x343e, 0x335f, 0x3a28,
++ 0xbb1a, 0x3439, 0x3355, 0x3a2a,
++ 0xbb1e, 0x3434, 0x334c, 0x3a2c,
++ 0xbb21, 0x342f, 0x3342, 0x3a2f,
++ 0xbb25, 0x342a, 0x3339, 0x3a31,
++ 0xbb29, 0x3426, 0x332f, 0x3a34,
++ 0xbb2d, 0x3421, 0x3326, 0x3a36,
++ 0xbb31, 0x341c, 0x331c, 0x3a38,
++ 0xbb35, 0x3417, 0x3313, 0x3a3b,
++ 0xbb39, 0x3412, 0x3309, 0x3a3d,
++ 0xbb3d, 0x340e, 0x3300, 0x3a3f,
++ 0xbb41, 0x3409, 0x32f7, 0x3a42,
++ 0xbb45, 0x3404, 0x32ed, 0x3a44,
++ 0xbb49, 0x33ff, 0x32e4, 0x3a46,
++ 0xbb4d, 0x33f6, 0x32db, 0x3a49,
++ 0xbb51, 0x33ed, 0x32d1, 0x3a4b,
++ 0xbb54, 0x33e3, 0x32c8, 0x3a4d,
++ 0xbb58, 0x33da, 0x32bf, 0x3a50,
++ 0xbb5c, 0x33d0, 0x32b6, 0x3a52,
++ 0xbb60, 0x33c7, 0x32ad, 0x3a54,
++ 0xbb64, 0x33be, 0x32a3, 0x3a57,
++ 0xbb68, 0x33b5, 0x329a, 0x3a59,
++ 0xbb6c, 0x33ab, 0x3291, 0x3a5b,
++ 0xbb70, 0x33a2, 0x3288, 0x3a5d,
++ 0xbb74, 0x3399, 0x327f, 0x3a60,
++ 0xbb78, 0x3390, 0x3276, 0x3a62,
++ 0xbb7c, 0x3387, 0x326d, 0x3a64,
++ 0xbb80, 0x337d, 0x3264, 0x3a66,
++ 0xbb84, 0x3374, 0x325b, 0x3a69,
++ 0xbb88, 0x336b, 0x3252, 0x3a6b,
++ 0xbb8c, 0x3362, 0x3249, 0x3a6d,
++ 0xbb90, 0x3359, 0x3241, 0x3a6f,
++ 0xbb94, 0x3350, 0x3238, 0x3a71,
++ 0xbb98, 0x3347, 0x322f, 0x3a74,
++ 0xbb9c, 0x333e, 0x3226, 0x3a76,
++ 0xbba0, 0x3335, 0x321e, 0x3a78,
++ 0xbba4, 0x332c, 0x3215, 0x3a7a,
++ 0xbba8, 0x3323, 0x320c, 0x3a7c,
++ 0xbbac, 0x331a, 0x3204, 0x3a7e,
++ 0xbbb0, 0x3312, 0x31fb, 0x3a81,
++ 0xbbb4, 0x3309, 0x31f2, 0x3a83,
++ 0xbbb8, 0x3300, 0x31ea, 0x3a85,
++ 0xbbbc, 0x32f7, 0x31e1, 0x3a87,
++ 0xbbc0, 0x32ee, 0x31d9, 0x3a89,
++ 0xbbc4, 0x32e6, 0x31d0, 0x3a8b,
++ 0xbbc8, 0x32dd, 0x31c8, 0x3a8d,
++ 0xbbcc, 0x32d4, 0x31bf, 0x3a90,
++ 0xbbd0, 0x32cc, 0x31b7, 0x3a92,
++ 0xbbd4, 0x32c3, 0x31af, 0x3a94,
++ 0xbbd8, 0x32ba, 0x31a6, 0x3a96,
++ 0xbbdc, 0x32b2, 0x319e, 0x3a98,
++ 0xbbe0, 0x32a9, 0x3196, 0x3a9a,
++ 0xbbe4, 0x32a1, 0x318e, 0x3a9c,
++ 0xbbe8, 0x3298, 0x3185, 0x3a9e,
++ 0xbbec, 0x3290, 0x317d, 0x3aa0,
++ 0xbbf0, 0x3287, 0x3175, 0x3aa2,
++ 0xbbf4, 0x327f, 0x316d, 0x3aa4,
++ 0xbbf8, 0x3277, 0x3165, 0x3aa6,
++ 0xbbfc, 0x326e, 0x315d, 0x3aa8,
++ 0 };
++
+diff --git a/src/bicubic_table.py b/src/bicubic_table.py
+new file mode 100755
+index 0000000..232ccb7
+--- /dev/null
++++ b/src/bicubic_table.py
+@@ -0,0 +1,72 @@
++#!/usr/bin/python
++
++import struct
++
++def half(i):
++ fs, fe, fm = ((i >> 31) & 0x1, (i >> 23) & 0xff, i & 0x7fffff)
++ s, e, m = (fs, 0, 0)
++
++ if (fe == 0x0):
++ pass
++ if ((fe == 0xff) and (fm == 0x0)):
++ e = 31
++ elif (fe == 0xff):
++ m = 1
++ e = 31
++ else:
++ exp = fe - 127;
++ if (exp < -24):
++ pass
++ elif (exp < -14):
++ temp = 10 - (-14 - exp)
++ m = 2**temp + (m >> (23 - temp))
++ elif (exp > 15):
++ e = 31
++ else:
++ e = exp + 15
++ m = fm >> 13
++
++ return ((s << 15) | (e << 10) | m)
++
++def texgen(pix):
++
++ tex = []
++
++ for i in range(0,pix,4):
++
++ a = i / float(pix)
++ a2 = a ** 2
++ a3 = a ** 3
++
++ w0 = 1 / 6.0 * (-a3 + 3 * a2 + -3 * a + 1)
++ w1 = 1 / 6.0 * (3 * a3 + -6 * a2 + 4)
++ w2 = 1 / 6.0 * (-3 * a3 + 3 * a2 + 3 * a + 1)
++ w3 = 1 / 6.0 * a3
++
++ tex.append(-(1 - (w1 / (w0 + w1)) + a))
++ tex.append(1 + (w3 / (w2 + w3)) - a)
++ tex.append(w0 + w1)
++ tex.append(w2 + w3)
++
++ return tex
++
++def printrow(l, offset):
++
++ seq = [ struct.unpack('<I',struct.pack('f',i))[0] for i in l[offset:offset+4] ]
++ seq = [ hex(half(i)) for i in seq ]
++ return "\t" + ", ".join(seq) + ","
++
++def maketable(pix):
++
++ l = texgen(pix)
++
++ print "static const uint16_t bicubic_tex_" + str(pix) + "[] = {"
++
++ for i in range(0, pix, 4):
++
++ print printrow(l, i)
++
++ print "\t0 };\n"
++
++maketable(512)
++maketable(2048)
+diff --git a/src/legacy_crtc.c b/src/legacy_crtc.c
+index 3df61a7..75ab6c8 100644
+--- a/src/legacy_crtc.c
++++ b/src/legacy_crtc.c
+@@ -48,8 +48,7 @@
+
+ #ifdef XF86DRI
+ #define _XF86DRI_SERVER_
+-#include "radeon_dri.h"
+-#include "radeon_sarea.h"
++#include "radeon_drm.h"
+ #include "sarea.h"
+ #ifdef DRM_IOCTL_MODESET_CTL
+ #include <sys/ioctl.h>
+@@ -624,11 +623,17 @@ radeon_crtc_modeset_ioctl(xf86CrtcPtr crtc, Bool post)
+ RADEONInfoPtr info = RADEONPTR(crtc->scrn);
+ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+ struct drm_modeset_ctl modeset;
++ unsigned char *RADEONMMIO = info->MMIO;
++
++ if (!info->directRenderingEnabled)
++ return;
+
+ modeset.crtc = radeon_crtc->crtc_id;
+ modeset.cmd = post ? _DRM_POST_MODESET : _DRM_PRE_MODESET;
+
+- ioctl(info->drmFD, DRM_IOCTL_MODESET_CTL, &modeset);
++ ioctl(info->dri->drmFD, DRM_IOCTL_MODESET_CTL, &modeset);
++
++ info->ModeReg->gen_int_cntl = INREG( RADEON_GEN_INT_CNTL );
+ #endif
+ }
+
+@@ -752,13 +757,13 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RADEONSavePtr save,
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ int Base;
+ #ifdef XF86DRI
+- RADEONSAREAPrivPtr pSAREAPriv;
++ drm_radeon_sarea_t *pSAREAPriv;
+ XF86DRISAREAPtr pSAREA;
+ #endif
+
+ save->crtc_offset = pScrn->fbOffset;
+ #ifdef XF86DRI
+- if (info->allowPageFlip)
++ if (info->dri && info->dri->allowPageFlip)
+ save->crtc_offset_cntl = RADEON_CRTC_OFFSET_FLIP_CNTL;
+ else
+ #endif
+@@ -851,7 +856,7 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RADEONSavePtr save,
+ pSAREA->frame.height = pScrn->frameY1 - y + 1;
+
+ if (pSAREAPriv->pfCurrentPage == 1) {
+- Base += info->backOffset - info->frontOffset;
++ Base += info->dri->backOffset - info->dri->frontOffset;
+ }
+ }
+ #endif
+@@ -970,7 +975,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save,
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ int Base;
+ #ifdef XF86DRI
+- RADEONSAREAPrivPtr pSAREAPriv;
++ drm_radeon_sarea_t *pSAREAPriv;
+ XF86DRISAREAPtr pSAREA;
+ #endif
+
+@@ -978,7 +983,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save,
+ */
+ save->crtc2_offset = pScrn->fbOffset;
+ #ifdef XF86DRI
+- if (info->allowPageFlip)
++ if (info->dri && info->dri->allowPageFlip)
+ save->crtc2_offset_cntl = RADEON_CRTC_OFFSET_FLIP_CNTL;
+ else
+ #endif
+@@ -1065,7 +1070,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save,
+ pSAREAPriv->crtc2_base = Base;
+
+ if (pSAREAPriv->pfCurrentPage == 1) {
+- Base += info->backOffset - info->frontOffset;
++ Base += info->dri->backOffset - info->dri->frontOffset;
+ }
+ }
+ #endif
+@@ -1327,9 +1332,12 @@ radeon_update_tv_routing(ScrnInfoPtr pScrn, RADEONSavePtr restore)
+ }
+
+ /* Calculate display buffer watermark to prevent buffer underflow */
+-static void
+-RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2, DisplayModePtr mode1, DisplayModePtr mode2)
++void
++RADEONInitDispBandwidthLegacy(ScrnInfoPtr pScrn,
++ DisplayModePtr mode1, int pixel_bytes1,
++ DisplayModePtr mode2, int pixel_bytes2)
+ {
++ RADEONInfoPtr info = RADEONPTR(pScrn);
+ RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
+ unsigned char *RADEONMMIO = info->MMIO;
+
+@@ -1352,10 +1360,10 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2
+ float min_mem_eff = 0.8;
+ float sclk_eff, sclk_delay;
+ float mc_latency_mclk, mc_latency_sclk, cur_latency_mclk, cur_latency_sclk;
+- float disp_latency, disp_latency_overhead, disp_drain_rate, disp_drain_rate2;
++ float disp_latency, disp_latency_overhead, disp_drain_rate = 0, disp_drain_rate2;
+ float pix_clk, pix_clk2; /* in MHz */
+ int cur_size = 16; /* in octawords */
+- int critical_point, critical_point2;
++ int critical_point = 0, critical_point2;
+ int stop_req, max_stop_req;
+ float read_return_rate, time_disp1_drop_priority;
+
+@@ -1366,15 +1374,15 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2
+ */
+ if ((info->DispPriority == 2) && IS_R300_VARIANT) {
+ uint32_t mc_init_misc_lat_timer = INREG(R300_MC_INIT_MISC_LAT_TIMER);
+- if (pRADEONEnt->pCrtc[1]->enabled) {
+- mc_init_misc_lat_timer |= 0x1100; /* display 0 and 1 */
+- } else {
+- mc_init_misc_lat_timer |= 0x0100; /* display 0 only */
+- }
++ mc_init_misc_lat_timer &= ~(R300_MC_DISP1R_INIT_LAT_MASK << R300_MC_DISP1R_INIT_LAT_SHIFT);
++ mc_init_misc_lat_timer &= ~(R300_MC_DISP0R_INIT_LAT_MASK << R300_MC_DISP0R_INIT_LAT_SHIFT);
++ if (pRADEONEnt->pCrtc[1]->enabled)
++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP1R_INIT_LAT_SHIFT); /* display 1 */
++ if (pRADEONEnt->pCrtc[0]->enabled)
++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP0R_INIT_LAT_SHIFT); /* display 0 */
+ OUTREG(R300_MC_INIT_MISC_LAT_TIMER, mc_init_misc_lat_timer);
+ }
+
+-
+ /* R420 and RV410 family not supported yet */
+ if (info->ChipFamily == CHIP_FAMILY_R420 || info->ChipFamily == CHIP_FAMILY_RV410) return;
+
+@@ -1383,15 +1391,17 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2
+ */
+ mem_bw = info->mclk * (info->RamWidth / 8) * (info->IsDDR ? 2 : 1);
+
+- pix_clk = mode1->Clock/1000.0;
+- if (mode2)
++ pix_clk = 0;
++ pix_clk2 = 0;
++ peak_disp_bw = 0;
++ if (mode1) {
++ pix_clk = mode1->Clock/1000.0;
++ peak_disp_bw += (pix_clk * pixel_bytes1);
++ }
++ if (mode2) {
+ pix_clk2 = mode2->Clock/1000.0;
+- else
+- pix_clk2 = 0;
+-
+- peak_disp_bw = (pix_clk * info->CurrentLayout.pixel_bytes);
+- if (pixel_bytes2)
+- peak_disp_bw += (pix_clk2 * pixel_bytes2);
++ peak_disp_bw += (pix_clk2 * pixel_bytes2);
++ }
+
+ if (peak_disp_bw >= mem_bw * min_mem_eff) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+@@ -1399,20 +1409,6 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2
+ "If you have flickering problem, try to lower resolution, refresh rate, or color depth\n");
+ }
+
+- /* CRTC1
+- Set GRPH_BUFFER_CNTL register using h/w defined optimal values.
+- GRPH_STOP_REQ <= MIN[ 0x7C, (CRTC_H_DISP + 1) * (bit depth) / 0x10 ]
+- */
+- stop_req = mode1->HDisplay * info->CurrentLayout.pixel_bytes / 16;
+-
+- /* setup Max GRPH_STOP_REQ default value */
+- if (IS_RV100_VARIANT)
+- max_stop_req = 0x5c;
+- else
+- max_stop_req = 0x7c;
+- if (stop_req > max_stop_req)
+- stop_req = max_stop_req;
+-
+ /* Get values from the EXT_MEM_CNTL register...converting its contents. */
+ temp = INREG(RADEON_MEM_TIMING_CNTL);
+ if ((info->ChipFamily == CHIP_FAMILY_RV100) || info->IsIGP) { /* RV100, M6, IGPs */
+@@ -1435,9 +1431,8 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2
+ }
+
+ if (IS_R300_VARIANT) {
+-
+ /* on the R300, Tcas is included in Trbs.
+- */
++ */
+ temp = INREG(RADEON_MEM_CNTL);
+ data = (R300_MEM_NUM_CHANNELS_MASK & temp);
+ if (data == 1) {
+@@ -1467,13 +1462,14 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2
+ } else {
+ #ifdef XF86DRI
+ if (info->directRenderingEnabled)
+- sclk_eff = info->sclk - (info->agpMode * 50.0 / 3.0);
++ sclk_eff = info->sclk - (info->dri->agpMode * 50.0 / 3.0);
+ else
+ #endif
+ sclk_eff = info->sclk;
+ }
+
+- /* Find the memory controller latency for the display client.
++ /*
++ Find the memory controller latency for the display client.
+ */
+ if (IS_R300_VARIANT) {
+ /*not enough for R350 ???*/
+@@ -1527,89 +1523,107 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2
+ mc_latency_sclk = mc_latency_sclk + disp_latency_overhead + cur_latency_sclk;
+ disp_latency = MAX(mc_latency_mclk, mc_latency_sclk);
+
+- /*
+- Find the drain rate of the display buffer.
+- */
+- disp_drain_rate = pix_clk / (16.0/info->CurrentLayout.pixel_bytes);
+- if (pixel_bytes2)
+- disp_drain_rate2 = pix_clk2 / (16.0/pixel_bytes2);
++ /* setup Max GRPH_STOP_REQ default value */
++ if (IS_RV100_VARIANT)
++ max_stop_req = 0x5c;
+ else
+- disp_drain_rate2 = 0;
++ max_stop_req = 0x7c;
+
+- /*
+- Find the critical point of the display buffer.
+- */
+- critical_point= (uint32_t)(disp_drain_rate * disp_latency + 0.5);
++ if (mode1) {
++ /* CRTC1
++ Set GRPH_BUFFER_CNTL register using h/w defined optimal values.
++ GRPH_STOP_REQ <= MIN[ 0x7C, (CRTC_H_DISP + 1) * (bit depth) / 0x10 ]
++ */
++ stop_req = mode1->HDisplay * pixel_bytes1 / 16;
+
+- /* ???? */
+- /*
+- temp = (info->SavedReg.grph_buffer_cntl & RADEON_GRPH_CRITICAL_POINT_MASK) >> RADEON_GRPH_CRITICAL_POINT_SHIFT;
+- if (critical_point < temp) critical_point = temp;
+- */
+- if (info->DispPriority == 2) {
+- critical_point = 0;
+- }
++ if (stop_req > max_stop_req)
++ stop_req = max_stop_req;
+
+- /*
+- The critical point should never be above max_stop_req-4. Setting
+- GRPH_CRITICAL_CNTL = 0 will thus force high priority all the time.
+- */
+- if (max_stop_req - critical_point < 4) critical_point = 0;
++ /*
++ Find the drain rate of the display buffer.
++ */
++ disp_drain_rate = pix_clk / (16.0/pixel_bytes1);
+
+- if (critical_point == 0 && mode2 && info->ChipFamily == CHIP_FAMILY_R300) {
+- /* some R300 cards have problem with this set to 0, when CRTC2 is enabled.*/
+- critical_point = 0x10;
+- }
++ /*
++ Find the critical point of the display buffer.
++ */
++ critical_point= (uint32_t)(disp_drain_rate * disp_latency + 0.5);
+
+- temp = info->SavedReg->grph_buffer_cntl;
+- temp &= ~(RADEON_GRPH_STOP_REQ_MASK);
+- temp |= (stop_req << RADEON_GRPH_STOP_REQ_SHIFT);
+- temp &= ~(RADEON_GRPH_START_REQ_MASK);
+- if ((info->ChipFamily == CHIP_FAMILY_R350) &&
+- (stop_req > 0x15)) {
+- stop_req -= 0x10;
+- }
+- temp |= (stop_req << RADEON_GRPH_START_REQ_SHIFT);
++ /* ???? */
++ /*
++ temp = (info->SavedReg.grph_buffer_cntl & RADEON_GRPH_CRITICAL_POINT_MASK) >> RADEON_GRPH_CRITICAL_POINT_SHIFT;
++ if (critical_point < temp) critical_point = temp;
++ */
++ if (info->DispPriority == 2) {
++ critical_point = 0;
++ }
+
+- temp |= RADEON_GRPH_BUFFER_SIZE;
+- temp &= ~(RADEON_GRPH_CRITICAL_CNTL |
+- RADEON_GRPH_CRITICAL_AT_SOF |
+- RADEON_GRPH_STOP_CNTL);
+- /*
+- Write the result into the register.
+- */
+- OUTREG(RADEON_GRPH_BUFFER_CNTL, ((temp & ~RADEON_GRPH_CRITICAL_POINT_MASK) |
+- (critical_point << RADEON_GRPH_CRITICAL_POINT_SHIFT)));
++ /*
++ The critical point should never be above max_stop_req-4. Setting
++ GRPH_CRITICAL_CNTL = 0 will thus force high priority all the time.
++ */
++ if (max_stop_req - critical_point < 4) critical_point = 0;
++
++ if (critical_point == 0 && mode2 && info->ChipFamily == CHIP_FAMILY_R300) {
++ /* some R300 cards have problem with this set to 0, when CRTC2 is enabled.*/
++ critical_point = 0x10;
++ }
++
++ temp = info->SavedReg->grph_buffer_cntl;
++ temp &= ~(RADEON_GRPH_STOP_REQ_MASK);
++ temp |= (stop_req << RADEON_GRPH_STOP_REQ_SHIFT);
++ temp &= ~(RADEON_GRPH_START_REQ_MASK);
++ if ((info->ChipFamily == CHIP_FAMILY_R350) &&
++ (stop_req > 0x15)) {
++ stop_req -= 0x10;
++ }
++ temp |= (stop_req << RADEON_GRPH_START_REQ_SHIFT);
++
++ temp |= RADEON_GRPH_BUFFER_SIZE;
++ temp &= ~(RADEON_GRPH_CRITICAL_CNTL |
++ RADEON_GRPH_CRITICAL_AT_SOF |
++ RADEON_GRPH_STOP_CNTL);
++ /*
++ Write the result into the register.
++ */
++ OUTREG(RADEON_GRPH_BUFFER_CNTL, ((temp & ~RADEON_GRPH_CRITICAL_POINT_MASK) |
++ (critical_point << RADEON_GRPH_CRITICAL_POINT_SHIFT)));
+
+ #if 0
+- if ((info->ChipFamily == CHIP_FAMILY_RS400) ||
+- (info->ChipFamily == CHIP_FAMILY_RS480)) {
+- /* attempt to program RS400 disp regs correctly ??? */
+- temp = info->SavedReg->disp1_req_cntl1;
+- temp &= ~(RS400_DISP1_START_REQ_LEVEL_MASK |
+- RS400_DISP1_STOP_REQ_LEVEL_MASK);
+- OUTREG(RS400_DISP1_REQ_CNTL1, (temp |
+- (critical_point << RS400_DISP1_START_REQ_LEVEL_SHIFT) |
+- (critical_point << RS400_DISP1_STOP_REQ_LEVEL_SHIFT)));
+- temp = info->SavedReg->dmif_mem_cntl1;
+- temp &= ~(RS400_DISP1_CRITICAL_POINT_START_MASK |
+- RS400_DISP1_CRITICAL_POINT_STOP_MASK);
+- OUTREG(RS400_DMIF_MEM_CNTL1, (temp |
+- (critical_point << RS400_DISP1_CRITICAL_POINT_START_SHIFT) |
+- (critical_point << RS400_DISP1_CRITICAL_POINT_STOP_SHIFT)));
+- }
++ if ((info->ChipFamily == CHIP_FAMILY_RS400) ||
++ (info->ChipFamily == CHIP_FAMILY_RS480)) {
++ /* attempt to program RS400 disp regs correctly ??? */
++ temp = info->SavedReg->disp1_req_cntl1;
++ temp &= ~(RS400_DISP1_START_REQ_LEVEL_MASK |
++ RS400_DISP1_STOP_REQ_LEVEL_MASK);
++ OUTREG(RS400_DISP1_REQ_CNTL1, (temp |
++ (critical_point << RS400_DISP1_START_REQ_LEVEL_SHIFT) |
++ (critical_point << RS400_DISP1_STOP_REQ_LEVEL_SHIFT)));
++ temp = info->SavedReg->dmif_mem_cntl1;
++ temp &= ~(RS400_DISP1_CRITICAL_POINT_START_MASK |
++ RS400_DISP1_CRITICAL_POINT_STOP_MASK);
++ OUTREG(RS400_DMIF_MEM_CNTL1, (temp |
++ (critical_point << RS400_DISP1_CRITICAL_POINT_START_SHIFT) |
++ (critical_point << RS400_DISP1_CRITICAL_POINT_STOP_SHIFT)));
++ }
+ #endif
+
+- xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+- "GRPH_BUFFER_CNTL from %x to %x\n",
+- (unsigned int)info->SavedReg->grph_buffer_cntl,
+- (unsigned int)INREG(RADEON_GRPH_BUFFER_CNTL));
++ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
++ "GRPH_BUFFER_CNTL from %x to %x\n",
++ (unsigned int)info->SavedReg->grph_buffer_cntl,
++ (unsigned int)INREG(RADEON_GRPH_BUFFER_CNTL));
++ }
+
+ if (mode2) {
+ stop_req = mode2->HDisplay * pixel_bytes2 / 16;
+
+ if (stop_req > max_stop_req) stop_req = max_stop_req;
+
++ /*
++ Find the drain rate of the display buffer.
++ */
++ disp_drain_rate2 = pix_clk2 / (16.0/pixel_bytes2);
++
+ temp = info->SavedReg->grph2_buffer_cntl;
+ temp &= ~(RADEON_GRPH_STOP_REQ_MASK);
+ temp |= (stop_req << RADEON_GRPH_STOP_REQ_SHIFT);
+@@ -1629,7 +1643,10 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2
+ critical_point2 = 0;
+ else {
+ read_return_rate = MIN(info->sclk, info->mclk*(info->RamWidth*(info->IsDDR+1)/128));
+- time_disp1_drop_priority = critical_point / (read_return_rate - disp_drain_rate);
++ if (mode1)
++ time_disp1_drop_priority = critical_point / (read_return_rate - disp_drain_rate);
++ else
++ time_disp1_drop_priority = 0;
+
+ critical_point2 = (uint32_t)((disp_latency + time_disp1_drop_priority +
+ disp_latency) * disp_drain_rate2 + 0.5);
+@@ -1681,45 +1698,6 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2
+ }
+
+ void
+-RADEONInitDispBandwidth(ScrnInfoPtr pScrn)
+-{
+- RADEONInfoPtr info = RADEONPTR(pScrn);
+- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+- DisplayModePtr mode1, mode2;
+- int pixel_bytes2 = 0;
+-
+- if (info->IsPrimary || info->IsSecondary)
+- mode1 = &xf86_config->crtc[0]->mode;
+- else
+- mode1 = info->CurrentLayout.mode;
+- mode2 = NULL;
+- pixel_bytes2 = info->CurrentLayout.pixel_bytes;
+-
+- if (xf86_config->num_crtc == 2) {
+- pixel_bytes2 = 0;
+- mode2 = NULL;
+-
+- if (xf86_config->crtc[1]->enabled && xf86_config->crtc[0]->enabled) {
+- pixel_bytes2 = info->CurrentLayout.pixel_bytes;
+- mode1 = &xf86_config->crtc[0]->mode;
+- mode2 = &xf86_config->crtc[1]->mode;
+- } else if (xf86_config->crtc[0]->enabled) {
+- mode1 = &xf86_config->crtc[0]->mode;
+- } else if (xf86_config->crtc[1]->enabled) {
+- mode1 = &xf86_config->crtc[1]->mode;
+- } else
+- return;
+- } else {
+- if (xf86_config->crtc[0]->enabled)
+- mode1 = &xf86_config->crtc[0]->mode;
+- else
+- return;
+- }
+-
+- RADEONInitDispBandwidth2(pScrn, info, pixel_bytes2, mode1, mode2);
+-}
+-
+-void
+ legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode,
+ DisplayModePtr adjusted_mode, int x, int y)
+ {
+@@ -1729,10 +1707,15 @@ legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode,
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ int i = 0;
+ double dot_clock = 0;
+- int pll_flags = RADEON_PLL_LEGACY | RADEON_PLL_PREFER_LOW_REF_DIV;
++ int pll_flags = RADEON_PLL_LEGACY;
+ Bool update_tv_routing = FALSE;
+ Bool tilingChanged = FALSE;
+
++ if (adjusted_mode->Clock > 200000) /* range limits??? */
++ pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV;
++ else
++ pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV;
++
+ if (info->allowColorTiling) {
+ radeon_crtc->can_tile = (adjusted_mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE;
+ tilingChanged = RADEONSetTiling(pScrn);
+diff --git a/src/legacy_output.c b/src/legacy_output.c
+index 9c9ebb9..e5ddf1f 100644
+--- a/src/legacy_output.c
++++ b/src/legacy_output.c
+@@ -48,6 +48,8 @@
+ #include "radeon_tv.h"
+ #include "radeon_atombios.h"
+
++#include "ati_pciids_gen.h"
++
+ static RADEONMonitorType radeon_detect_tv(ScrnInfoPtr pScrn);
+ static RADEONMonitorType radeon_detect_primary_dac(ScrnInfoPtr pScrn, Bool color);
+ static RADEONMonitorType radeon_detect_tv_dac(ScrnInfoPtr pScrn, Bool color);
+@@ -277,16 +279,12 @@ static void
+ RADEONRestoreDVOChip(ScrnInfoPtr pScrn, xf86OutputPtr output)
+ {
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- unsigned char *RADEONMMIO = info->MMIO;
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
+
+ if (!radeon_output->DVOChip)
+ return;
+
+- OUTREG(radeon_output->dvo_i2c.mask_clk_reg,
+- INREG(radeon_output->dvo_i2c.mask_clk_reg) &
+- (uint32_t)~(RADEON_GPIO_A_0 | RADEON_GPIO_A_1));
+-
++ RADEONI2CDoLock(output, TRUE);
+ if (!RADEONInitExtTMDSInfoFromBIOS(output)) {
+ if (radeon_output->DVOChip) {
+ switch(info->ext_tmds_chip) {
+@@ -316,6 +314,7 @@ RADEONRestoreDVOChip(ScrnInfoPtr pScrn, xf86OutputPtr output)
+ }
+ }
+ }
++ RADEONI2CDoLock(output, FALSE);
+ }
+
+ #if 0
+@@ -727,14 +726,6 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
+ save->crtc2_gen_cntl |= RADEON_CRTC2_CRT2_ON;
+ }
+ tv_dac_change = 1;
+- /* IGP chips seem to use a mix of Primary and TVDAC controls */
+- if (info->IsIGP) {
+- tmp = INREG(RADEON_CRTC_EXT_CNTL);
+- tmp |= RADEON_CRTC_CRT_ON;
+- OUTREG(RADEON_CRTC_EXT_CNTL, tmp);
+- save->crtc_ext_cntl |= RADEON_CRTC_CRT_ON;
+- RADEONDacPowerSet(pScrn, bEnable, TRUE);
+- }
+ }
+ } else if (radeon_output->MonType == MT_DFP) {
+ if (radeon_output->TMDSType == TMDS_INT) {
+@@ -815,14 +806,6 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
+ save->crtc2_gen_cntl &= ~RADEON_CRTC2_CRT2_ON;
+ }
+ }
+- /* IGP chips seem to use a mix of Primary and TVDAC controls */
+- if (info->IsIGP) {
+- tmp = INREG(RADEON_CRTC_EXT_CNTL);
+- tmp &= ~RADEON_CRTC_CRT_ON;
+- OUTREG(RADEON_CRTC_EXT_CNTL, tmp);
+- save->crtc_ext_cntl &= ~RADEON_CRTC_CRT_ON;
+- RADEONDacPowerSet(pScrn, bEnable, TRUE);
+- }
+ }
+ } else if (radeon_output->MonType == MT_DFP) {
+ if (radeon_output->TMDSType == TMDS_INT) {
+@@ -1033,9 +1016,14 @@ RADEONInitFP2Registers(xf86OutputPtr output, RADEONSavePtr save,
+ RADEON_FP2_DVO_RATE_SEL_SDR);
+
+
+- /* XXX: these may be oem specific */
++ /* XXX: these are oem specific */
+ if (IS_R300_VARIANT) {
+- save->fp2_gen_cntl |= RADEON_FP2_PAD_FLOP_EN | R300_FP2_DVO_CLOCK_MODE_SINGLE;
++ if ((info->Chipset == PCI_CHIP_RV350_NP) &&
++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x1028) &&
++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x2001))
++ save->fp2_gen_cntl |= R300_FP2_DVO_CLOCK_MODE_SINGLE; /* Dell Inspiron 8600 */
++ else
++ save->fp2_gen_cntl |= RADEON_FP2_PAD_FLOP_EN | R300_FP2_DVO_CLOCK_MODE_SINGLE;
+ #if 0
+ if (mode->Clock > 165000)
+ save->fp2_gen_cntl |= R300_FP2_DVO_DUAL_CHANNEL_EN;
+@@ -1383,7 +1371,6 @@ RADEONInitOutputRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save,
+ {
+ Bool IsPrimary = crtc_num == 0 ? TRUE : FALSE;
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
+- RADEONInfoPtr info = RADEONPTR(pScrn);
+
+ if (crtc_num == 0)
+ RADEONInitRMXRegisters(output, save, mode);
+@@ -1393,9 +1380,6 @@ RADEONInitOutputRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save,
+ RADEONInitDACRegisters(output, save, mode, IsPrimary);
+ } else {
+ RADEONInitDAC2Registers(output, save, mode, IsPrimary);
+- /* IGP chips seem to use a mix of primary and TVDAC controls */
+- if (info->IsIGP)
+- RADEONInitDACRegisters(output, save, mode, IsPrimary);
+ }
+ } else if (radeon_output->MonType == MT_LCD) {
+ RADEONInitLVDSRegisters(output, save, mode, IsPrimary);
+@@ -1456,8 +1440,8 @@ legacy_output_mode_set(xf86OutputPtr output, DisplayModePtr mode,
+ }
+ OUTREG(RADEON_FP2_GEN_CNTL, fp2_gen_cntl);
+ } else {
+- RADEONRestoreDVOChip(pScrn, output);
+ RADEONRestoreFP2Registers(pScrn, info->ModeReg);
++ RADEONRestoreDVOChip(pScrn, output);
+ }
+ }
+ break;
+diff --git a/src/pcidb/ati_pciids.csv b/src/pcidb/ati_pciids.csv
+index 1f6fa82..07e71a3 100644
+--- a/src/pcidb/ati_pciids.csv
++++ b/src/pcidb/ati_pciids.csv
+@@ -1,5 +1,6 @@
+ "#pciid","define","family","mobility","igp","nocrtc2","Nointtvout","singledac","name"
+ "0x3150","RV380_3150","RV380",1,,,,,"ATI Radeon Mobility X600 (M24) 3150 (PCIE)"
++"0x3151","RV380_3151","RV380",,,,,,"ATI FireMV 2400 (PCI)"
+ "0x3152","RV380_3152","RV380",1,,,,,"ATI Radeon Mobility X300 (M24) 3152 (PCIE)"
+ "0x3154","RV380_3154","RV380",1,,,,,"ATI FireGL M24 GL 3154 (PCIE)"
+ "0x3E50","RV380_3E50","RV380",,,,,,"ATI Radeon X600 (RV380) 3E50 (PCIE)"
+@@ -331,6 +332,9 @@
+ "0x940A","R600_940A","R600",,,,,,"ATI FireGL V8650"
+ "0x940B","R600_940B","R600",,,,,,"ATI FireGL V8600"
+ "0x940F","R600_940F","R600",,,,,,"ATI FireGL V7600"
++"0x9440","RV770_9440","RV770",,,,,,"ATI Radeon 4800 Series"
++"0x9441","RV770_9441","RV770",,,,,,"ATI Radeon HD 4870 x2"
++"0x9442","RV770_9442","RV770",,,,,,"ATI Radeon 4800 Series"
+ "0x94C0","RV610_94C0","RV610",,,,,,"ATI RV610"
+ "0x94C1","RV610_94C1","RV610",,,,,,"ATI Radeon HD 2400 XT"
+ "0x94C3","RV610_94C3","RV610",,,,,,"ATI Radeon HD 2400 Pro"
+@@ -348,6 +352,7 @@
+ "0x9507","RV670_9507","RV670",,,,,,"ATI RV670"
+ "0x950F","RV670_950F","RV670",,,,,,"ATI Radeon HD3870 X2"
+ "0x9511","RV670_9511","RV670",,,,,,"ATI FireGL V7700"
++"0x9515","RV670_9515","RV670",,,,,,"ATI Radeon HD3850"
+ "0x9580","RV630_9580","RV630",,,,,,"ATI RV630"
+ "0x9581","RV630_9581","RV630",1,,,,,"ATI Mobility Radeon HD 2600"
+ "0x9583","RV630_9583","RV630",1,,,,,"ATI Mobility Radeon HD 2600 XT"
+diff --git a/src/radeon.h b/src/radeon.h
+index 4f77c3b..f7ae1a8 100644
+--- a/src/radeon.h
++++ b/src/radeon.h
+@@ -72,9 +72,10 @@
+ /* DRI support */
+ #ifdef XF86DRI
+ #define _XF86DRI_SERVER_
+-#include "radeon_dripriv.h"
+ #include "dri.h"
+ #include "GL/glxint.h"
++#include "xf86drm.h"
++
+ #ifdef DAMAGE
+ #include "damage.h"
+ #include "globals.h"
+@@ -98,6 +99,36 @@
+ #define MIN(a,b) ((a)>(b)?(b):(a))
+ #endif
+
++#if HAVE_BYTESWAP_H
++#include <byteswap.h>
++#elif defined(USE_SYS_ENDIAN_H)
++#include <sys/endian.h>
++#else
++#define bswap_16(value) \
++ ((((value) & 0xff) << 8) | ((value) >> 8))
++
++#define bswap_32(value) \
++ (((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \
++ (uint32_t)bswap_16((uint16_t)((value) >> 16)))
++
++#define bswap_64(value) \
++ (((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \
++ << 32) | \
++ (uint64_t)bswap_32((uint32_t)((value) >> 32)))
++#endif
++
++#if X_BYTE_ORDER == X_BIG_ENDIAN
++#define le32_to_cpu(x) bswap_32(x)
++#define le16_to_cpu(x) bswap_16(x)
++#define cpu_to_le32(x) bswap_32(x)
++#define cpu_to_le16(x) bswap_16(x)
++#else
++#define le32_to_cpu(x) (x)
++#define le16_to_cpu(x) (x)
++#define cpu_to_le32(x) (x)
++#define cpu_to_le16(x) (x)
++#endif
++
+ /* Provide substitutes for gcc's __FUNCTION__ on other compilers */
+ #if !defined(__GNUC__) && !defined(__FUNCTION__)
+ # define __FUNCTION__ __func__ /* C99 */
+@@ -220,7 +251,12 @@ typedef struct {
+ #define RADEON_PLL_NO_ODD_POST_DIV (1 << 1)
+ #define RADEON_PLL_USE_REF_DIV (1 << 2)
+ #define RADEON_PLL_LEGACY (1 << 3)
+-#define RADEON_PLL_PREFER_LOW_REF_DIV (1 << 4)
++#define RADEON_PLL_PREFER_LOW_REF_DIV (1 << 4)
++#define RADEON_PLL_PREFER_HIGH_REF_DIV (1 << 5)
++#define RADEON_PLL_PREFER_LOW_FB_DIV (1 << 6)
++#define RADEON_PLL_PREFER_HIGH_FB_DIV (1 << 7)
++#define RADEON_PLL_PREFER_LOW_POST_DIV (1 << 8)
++#define RADEON_PLL_PREFER_HIGH_POST_DIV (1 << 9)
+
+ typedef struct {
+ uint16_t reference_freq;
+@@ -287,6 +323,7 @@ typedef enum {
+ CHIP_FAMILY_RV620,
+ CHIP_FAMILY_RV635,
+ CHIP_FAMILY_RS780,
++ CHIP_FAMILY_RV770,
+ CHIP_FAMILY_LAST
+ } RADEONChipFamily;
+
+@@ -377,156 +414,45 @@ typedef struct {
+ int singledac;
+ } RADEONCardInfo;
+
+-typedef struct {
+- EntityInfoPtr pEnt;
+- pciVideoPtr PciInfo;
+- PCITAG PciTag;
+- int Chipset;
+- RADEONChipFamily ChipFamily;
+- RADEONErrata ChipErrata;
+-
+- unsigned long LinearAddr; /* Frame buffer physical address */
+- unsigned long MMIOAddr; /* MMIO region physical address */
+- unsigned long BIOSAddr; /* BIOS physical address */
+- uint32_t fbLocation;
+- uint32_t gartLocation;
+- uint32_t mc_fb_location;
+- uint32_t mc_agp_location;
+- uint32_t mc_agp_location_hi;
+-
+- void *MMIO; /* Map of MMIO region */
+- void *FB; /* Map of frame buffer */
+- uint8_t *VBIOS; /* Video BIOS pointer */
+-
+- Bool IsAtomBios; /* New BIOS used in R420 etc. */
+- int ROMHeaderStart; /* Start of the ROM Info Table */
+- int MasterDataStart; /* Offset for Master Data Table for ATOM BIOS */
+-
+- uint32_t MemCntl;
+- uint32_t BusCntl;
+- unsigned long MMIOSize; /* MMIO region physical address */
+- unsigned long FbMapSize; /* Size of frame buffer, in bytes */
+- unsigned long FbSecureSize; /* Size of secured fb area at end of
+- framebuffer */
+-
+- Bool IsMobility; /* Mobile chips for laptops */
+- Bool IsIGP; /* IGP chips */
+- Bool HasSingleDAC; /* only TVDAC on chip */
+- Bool ddc_mode; /* Validate mode by matching exactly
+- * the modes supported in DDC data
+- */
+- Bool R300CGWorkaround;
+-
+- /* EDID or BIOS values for FPs */
+- int RefDivider;
+- int FeedbackDivider;
+- int PostDivider;
+- Bool UseBiosDividers;
+- /* EDID data using DDC interface */
+- Bool ddc_bios;
+- Bool ddc1;
+- Bool ddc2;
+-
+- RADEONPLLRec pll;
+-
+- int RamWidth;
+- float sclk; /* in MHz */
+- float mclk; /* in MHz */
+- Bool IsDDR;
+- int DispPriority;
+-
+- RADEONSavePtr SavedReg; /* Original (text) mode */
+- RADEONSavePtr ModeReg; /* Current mode */
+- Bool (*CloseScreen)(int, ScreenPtr);
+-
+- void (*BlockHandler)(int, pointer, pointer, pointer);
+-
+- Bool PaletteSavedOnVT; /* Palette saved on last VT switch */
+-
+-#ifdef USE_EXA
+- ExaDriverPtr exa;
+- int exaSyncMarker;
+- int exaMarkerSynced;
+- int engineMode;
+-#define EXA_ENGINEMODE_UNKNOWN 0
+-#define EXA_ENGINEMODE_2D 1
+-#define EXA_ENGINEMODE_3D 2
+ #ifdef XF86DRI
+- Bool accelDFS;
+-#endif
+-#endif
+-#ifdef USE_XAA
+- XAAInfoRecPtr accel;
+-#endif
+- Bool accelOn;
+- xf86CursorInfoPtr cursor;
+- Bool allowColorTiling;
+- Bool tilingEnabled; /* mirror of sarea->tiling_enabled */
+-#ifdef ARGB_CURSOR
+- Bool cursor_argb;
+-#endif
+- int cursor_fg;
+- int cursor_bg;
++struct radeon_cp {
++ Bool CPRuns; /* CP is running */
++ Bool CPInUse; /* CP has been used by X server */
++ Bool CPStarted; /* CP has started */
++ int CPMode; /* CP mode that server/clients use */
++ int CPFifoSize; /* Size of the CP command FIFO */
++ int CPusecTimeout; /* CP timeout in usecs */
++ Bool needCacheFlush;
+
+-#ifdef USE_XAA
+- /*
+- * XAAForceTransBlit is used to change the behavior of the XAA
+- * SetupForScreenToScreenCopy function, to make it DGA-friendly.
+- */
+- Bool XAAForceTransBlit;
+-#endif
++ /* CP accleration */
++ drmBufPtr indirectBuffer;
++ int indirectStart;
+
+- int fifo_slots; /* Free slots in the FIFO (64 max) */
+- int pix24bpp; /* Depth of pixmap for 24bpp fb */
+- Bool dac6bits; /* Use 6 bit DAC? */
++ /* Debugging info for BEGIN_RING/ADVANCE_RING pairs. */
++ int dma_begin_count;
++ char *dma_debug_func;
++ int dma_debug_lineno;
+
+- /* Computed values for Radeon */
+- int pitch;
+- int datatype;
+- uint32_t dp_gui_master_cntl;
+- uint32_t dp_gui_master_cntl_clip;
+- uint32_t trans_color;
++ };
+
+- /* Saved values for ScreenToScreenCopy */
+- int xdir;
+- int ydir;
++typedef struct {
++ /* Nothing here yet */
++ int dummy;
++} RADEONConfigPrivRec, *RADEONConfigPrivPtr;
+
+-#ifdef USE_XAA
+- /* ScanlineScreenToScreenColorExpand support */
+- unsigned char *scratch_buffer[1];
+- unsigned char *scratch_save;
+- int scanline_x;
+- int scanline_y;
+- int scanline_w;
+- int scanline_h;
+- int scanline_h_w;
+- int scanline_words;
+- int scanline_direct;
+- int scanline_bpp; /* Only used for ImageWrite */
+- int scanline_fg;
+- int scanline_bg;
+- int scanline_hpass;
+- int scanline_x1clip;
+- int scanline_x2clip;
++typedef struct {
++#ifdef PER_CONTEXT_SAREA
++ drm_context_t ctx_id;
++ drm_handle_t sarea_handle;
++#else
++ /* Nothing here yet */
++ int dummy;
+ #endif
+- /* Saved values for DashedTwoPointLine */
+- int dashLen;
+- uint32_t dashPattern;
+- int dash_fg;
+- int dash_bg;
++} RADEONDRIContextRec, *RADEONDRIContextPtr;
+
+- DGAModePtr DGAModes;
+- int numDGAModes;
+- Bool DGAactive;
+- int DGAViewportStatus;
+- DGAFunctionRec DGAFuncs;
++struct radeon_dri {
++ Bool noBackBuffer;
+
+- RADEONFBLayout CurrentLayout;
+- uint32_t dst_pitch_offset;
+-#ifdef XF86DRI
+- Bool noBackBuffer;
+- Bool directRenderingEnabled;
+- Bool directRenderingInited;
+ Bool newMemoryMap;
+ drmVersionPtr pLibDRMVersion;
+ drmVersionPtr pKernelDRMVersion;
+@@ -542,7 +468,6 @@ typedef struct {
+ drmSize registerSize;
+ drm_handle_t registerHandle;
+
+- RADEONCardType cardType; /* Current card is a PCI card */
+ drmSize pciSize;
+ drm_handle_t pciMemHandle;
+ unsigned char *PCI; /* Map */
+@@ -564,15 +489,7 @@ typedef struct {
+
+ uint32_t pciCommand;
+
+- Bool CPRuns; /* CP is running */
+- Bool CPInUse; /* CP has been used by X server */
+- Bool CPStarted; /* CP has started */
+- int CPMode; /* CP mode that server/clients use */
+- int CPFifoSize; /* Size of the CP command FIFO */
+- int CPusecTimeout; /* CP timeout in usecs */
+- Bool needCacheFlush;
+-
+- /* CP ring buffer data */
++ /* CP ring buffer data */
+ unsigned long ringStart; /* Offset into GART space */
+ drm_handle_t ringHandle; /* Handle from drmAddMap */
+ drmSize ringMapSize; /* Size of map */
+@@ -585,7 +502,7 @@ typedef struct {
+ drmSize ringReadMapSize; /* Size of map */
+ drmAddress ringReadPtr; /* Map */
+
+- /* CP vertex/indirect buffer data */
++ /* CP vertex/indirect buffer data */
+ unsigned long bufStart; /* Offset into GART space */
+ drm_handle_t bufHandle; /* Handle from drmAddMap */
+ drmSize bufMapSize; /* Size of map */
+@@ -594,7 +511,7 @@ typedef struct {
+ int bufNumBufs; /* Number of buffers */
+ drmBufMapPtr buffers; /* Buffer map */
+
+- /* CP GART Texture data */
++ /* CP GART Texture data */
+ unsigned long gartTexStart; /* Offset into GART space */
+ drm_handle_t gartTexHandle; /* Handle from drmAddMap */
+ drmSize gartTexMapSize; /* Size of map */
+@@ -602,11 +519,7 @@ typedef struct {
+ drmAddress gartTex; /* Map */
+ int log2GARTTexGran;
+
+- /* CP accleration */
+- drmBufPtr indirectBuffer;
+- int indirectStart;
+-
+- /* DRI screen private data */
++ /* DRI screen private data */
+ int fbX;
+ int fbY;
+ int backX;
+@@ -628,43 +541,215 @@ typedef struct {
+ int pciGartSize;
+ uint32_t pciGartOffset;
+ void *pciGartBackup;
++
++ int irq;
++
++#ifdef PER_CONTEXT_SAREA
++ int perctx_sarea_size;
++#endif
++
+ #ifdef USE_XAA
+ uint32_t frontPitchOffset;
+ uint32_t backPitchOffset;
+ uint32_t depthPitchOffset;
+
+- /* offscreen memory management */
++ /* offscreen memory management */
+ int backLines;
+ FBAreaPtr backArea;
+ int depthTexLines;
+ FBAreaPtr depthTexArea;
+ #endif
+
+- /* Saved scissor values */
+- uint32_t sc_left;
+- uint32_t sc_right;
+- uint32_t sc_top;
+- uint32_t sc_bottom;
++};
++#endif
++
++struct radeon_accel_state {
++ /* common accel data */
++ int fifo_slots; /* Free slots in the FIFO (64 max) */
++ /* Computed values for Radeon */
++ uint32_t dp_gui_master_cntl;
++ uint32_t dp_gui_master_cntl_clip;
++ uint32_t trans_color;
++ /* Saved values for ScreenToScreenCopy */
++ int xdir;
++ int ydir;
++ uint32_t dst_pitch_offset;
++
++ /* render accel */
++ unsigned short texW[2];
++ unsigned short texH[2];
++ Bool XInited3D; /* X itself has the 3D context */
++ int num_gb_pipes;
++ Bool has_tcl;
++
++#ifdef USE_EXA
++ /* EXA */
++ ExaDriverPtr exa;
++ int exaSyncMarker;
++ int exaMarkerSynced;
++ int engineMode;
++#define EXA_ENGINEMODE_UNKNOWN 0
++#define EXA_ENGINEMODE_2D 1
++#define EXA_ENGINEMODE_3D 2
++
++ Bool is_transform[2];
++ PictTransform *transform[2];
++ Bool has_mask;
++ /* Whether we are tiling horizontally and vertically */
++ Bool need_src_tile_x;
++ Bool need_src_tile_y;
++ /* Size of tiles ... set to 65536x65536 if not tiling in that direction */
++ Bool src_tile_width;
++ Bool src_tile_height;
++#endif
++
++#ifdef USE_XAA
++ /* XAA */
++ XAAInfoRecPtr accel;
++ /* ScanlineScreenToScreenColorExpand support */
++ unsigned char *scratch_buffer[1];
++ unsigned char *scratch_save;
++ int scanline_x;
++ int scanline_y;
++ int scanline_w;
++ int scanline_h;
++ int scanline_h_w;
++ int scanline_words;
++ int scanline_direct;
++ int scanline_bpp; /* Only used for ImageWrite */
++ int scanline_fg;
++ int scanline_bg;
++ int scanline_hpass;
++ int scanline_x1clip;
++ int scanline_x2clip;
++ /* Saved values for DashedTwoPointLine */
++ int dashLen;
++ uint32_t dashPattern;
++ int dash_fg;
++ int dash_bg;
++
++ FBLinearPtr RenderTex;
++ void (*RenderCallback)(ScrnInfoPtr);
++ Time RenderTimeout;
++ /*
++ * XAAForceTransBlit is used to change the behavior of the XAA
++ * SetupForScreenToScreenCopy function, to make it DGA-friendly.
++ */
++ Bool XAAForceTransBlit;
++#endif
++
++};
+
+- uint32_t re_top_left;
+- uint32_t re_width_height;
++typedef struct {
++ EntityInfoPtr pEnt;
++ pciVideoPtr PciInfo;
++ PCITAG PciTag;
++ int Chipset;
++ RADEONChipFamily ChipFamily;
++ RADEONErrata ChipErrata;
++
++ unsigned long LinearAddr; /* Frame buffer physical address */
++ unsigned long MMIOAddr; /* MMIO region physical address */
++ unsigned long BIOSAddr; /* BIOS physical address */
++ uint32_t fbLocation;
++ uint32_t gartLocation;
++ uint32_t mc_fb_location;
++ uint32_t mc_agp_location;
++ uint32_t mc_agp_location_hi;
+
+- uint32_t aux_sc_cntl;
++ void *MMIO; /* Map of MMIO region */
++ void *FB; /* Map of frame buffer */
++ uint8_t *VBIOS; /* Video BIOS pointer */
+
+- int irq;
++ Bool IsAtomBios; /* New BIOS used in R420 etc. */
++ int ROMHeaderStart; /* Start of the ROM Info Table */
++ int MasterDataStart; /* Offset for Master Data Table for ATOM BIOS */
+
+- Bool DMAForXv;
++ uint32_t MemCntl;
++ uint32_t BusCntl;
++ unsigned long MMIOSize; /* MMIO region physical address */
++ unsigned long FbMapSize; /* Size of frame buffer, in bytes */
++ unsigned long FbSecureSize; /* Size of secured fb area at end of
++ framebuffer */
+
+-#ifdef PER_CONTEXT_SAREA
+- int perctx_sarea_size;
++ Bool IsMobility; /* Mobile chips for laptops */
++ Bool IsIGP; /* IGP chips */
++ Bool HasSingleDAC; /* only TVDAC on chip */
++ Bool ddc_mode; /* Validate mode by matching exactly
++ * the modes supported in DDC data
++ */
++ Bool R300CGWorkaround;
++
++ /* EDID or BIOS values for FPs */
++ int RefDivider;
++ int FeedbackDivider;
++ int PostDivider;
++ Bool UseBiosDividers;
++ /* EDID data using DDC interface */
++ Bool ddc_bios;
++ Bool ddc1;
++ Bool ddc2;
++
++ RADEONPLLRec pll;
++
++ int RamWidth;
++ float sclk; /* in MHz */
++ float mclk; /* in MHz */
++ Bool IsDDR;
++ int DispPriority;
++
++ RADEONSavePtr SavedReg; /* Original (text) mode */
++ RADEONSavePtr ModeReg; /* Current mode */
++ Bool (*CloseScreen)(int, ScreenPtr);
++
++ void (*BlockHandler)(int, pointer, pointer, pointer);
++
++ Bool PaletteSavedOnVT; /* Palette saved on last VT switch */
++
++ xf86CursorInfoPtr cursor;
++#ifdef ARGB_CURSOR
++ Bool cursor_argb;
+ #endif
++ int cursor_fg;
++ int cursor_bg;
+
+- /* Debugging info for BEGIN_RING/ADVANCE_RING pairs. */
+- int dma_begin_count;
+- char *dma_debug_func;
+- int dma_debug_lineno;
++ int pix24bpp; /* Depth of pixmap for 24bpp fb */
++ Bool dac6bits; /* Use 6 bit DAC? */
++
++ DGAModePtr DGAModes;
++ int numDGAModes;
++ Bool DGAactive;
++ int DGAViewportStatus;
++ DGAFunctionRec DGAFuncs;
++
++ RADEONFBLayout CurrentLayout;
++
++#ifdef XF86DRI
++ Bool directRenderingEnabled;
++ Bool directRenderingInited;
++ RADEONCardType cardType; /* Current card is a PCI card */
++ struct radeon_cp *cp;
++ struct radeon_dri *dri;
++#ifdef USE_EXA
++ Bool accelDFS;
++#endif
++ Bool DMAForXv;
+ #endif /* XF86DRI */
+
++ /* accel */
++ Bool RenderAccel; /* Render */
++ Bool allowColorTiling;
++ Bool tilingEnabled; /* mirror of sarea->tiling_enabled */
++ struct radeon_accel_state *accel_state;
++ Bool accelOn;
++ Bool useEXA;
++#ifdef USE_EXA
++ XF86ModReqInfo exaReq;
++#endif
++#ifdef USE_XAA
++ XF86ModReqInfo xaaReq;
++#endif
++
+ /* XVideo */
+ XF86VideoAdaptorPtr adaptor;
+ void (*VideoTimerCallback)(ScrnInfoPtr, Time);
+@@ -693,31 +778,10 @@ typedef struct {
+ int overlay_scaler_buffer_width;
+ int ecp_div;
+
+- /* Render */
+- Bool RenderAccel;
+- unsigned short texW[2];
+- unsigned short texH[2];
+-#ifdef USE_XAA
+- FBLinearPtr RenderTex;
+- void (*RenderCallback)(ScrnInfoPtr);
+- Time RenderTimeout;
+-#endif
+-
+ /* general */
+ Bool showCache;
+ OptionInfoPtr Options;
+
+- Bool useEXA;
+-#ifdef USE_EXA
+- XF86ModReqInfo exaReq;
+-#endif
+-#ifdef USE_XAA
+- XF86ModReqInfo xaaReq;
+-#endif
+-
+- /* X itself has the 3D context */
+- Bool XInited3D;
+-
+ DisplayModePtr currentMode, savedCurrentMode;
+
+ /* special handlings for DELL triple-head server */
+@@ -772,22 +836,19 @@ typedef struct {
+ Bool r600_shadow_fb;
+ void *fb_shadow;
+
+- int num_gb_pipes;
+- Bool has_tcl;
+ } RADEONInfoRec, *RADEONInfoPtr;
+
+ #define RADEONWaitForFifo(pScrn, entries) \
+ do { \
+- if (info->fifo_slots < entries) \
++ if (info->accel_state->fifo_slots < entries) \
+ RADEONWaitForFifoFunction(pScrn, entries); \
+- info->fifo_slots -= entries; \
++ info->accel_state->fifo_slots -= entries; \
+ } while (0)
+
+ /* legacy_crtc.c */
+ extern void legacy_crtc_dpms(xf86CrtcPtr crtc, int mode);
+ extern void legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode,
+ DisplayModePtr adjusted_mode, int x, int y);
+-extern void RADEONInitDispBandwidth(ScrnInfoPtr pScrn);
+ extern void RADEONRestoreCommonRegisters(ScrnInfoPtr pScrn,
+ RADEONSavePtr restore);
+ extern void RADEONRestoreCrtcRegisters(ScrnInfoPtr pScrn,
+@@ -872,6 +933,7 @@ extern Bool RADEONGetTMDSInfoFromBIOS(xf86OutputPtr output);
+ extern Bool RADEONGetTVInfoFromBIOS(xf86OutputPtr output);
+ extern Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output);
+ extern Bool RADEONPostCardFromBIOSTables(ScrnInfoPtr pScrn);
++extern Bool radeon_card_posted(ScrnInfoPtr pScrn);
+
+ /* radeon_commonfuncs.c */
+ #ifdef XF86DRI
+@@ -894,6 +956,7 @@ extern DisplayModePtr RADEONCrtcFindClosestMode(xf86CrtcPtr crtc,
+ DisplayModePtr pMode);
+ extern void RADEONUnblank(ScrnInfoPtr pScrn);
+ extern Bool RADEONSetTiling(ScrnInfoPtr pScrn);
++extern void RADEONInitDispBandwidth(ScrnInfoPtr pScrn);
+
+ /* radeon_cursor.c */
+ extern Bool RADEONCursorInit(ScreenPtr pScreen);
+@@ -983,6 +1046,8 @@ extern void RADEONPrintPortMap(ScrnInfoPtr pScrn);
+ extern void RADEONSetOutputType(ScrnInfoPtr pScrn,
+ RADEONOutputPrivatePtr radeon_output);
+ extern Bool RADEONSetupConnectors(ScrnInfoPtr pScrn);
++extern Bool RADEONI2CDoLock(xf86OutputPtr output, Bool lock_state);
++
+
+ /* radeon_tv.c */
+ extern void RADEONSaveTVRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save);
+@@ -1003,6 +1068,16 @@ extern void RADEONUpdateHVPosition(xf86OutputPtr output, DisplayModePtr mode);
+ extern void RADEONInitVideo(ScreenPtr pScreen);
+ extern void RADEONResetVideo(ScrnInfoPtr pScrn);
+
++/* radeon_legacy_memory.c */
++extern uint32_t
++radeon_legacy_allocate_memory(ScrnInfoPtr pScrn,
++ void **mem_struct,
++ int size,
++ int align);
++extern void
++radeon_legacy_free_memory(ScrnInfoPtr pScrn,
++ void *mem_struct);
++
+ #ifdef XF86DRI
+ # ifdef USE_XAA
+ /* radeon_accelfuncs.c */
+@@ -1011,72 +1086,58 @@ extern void RADEONAccelInitCP(ScreenPtr pScreen, XAAInfoRecPtr a);
+
+ #define RADEONCP_START(pScrn, info) \
+ do { \
+- int _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_START); \
++ int _ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_START); \
+ if (_ret) { \
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \
+ "%s: CP start %d\n", __FUNCTION__, _ret); \
+ } \
+- info->CPStarted = TRUE; \
++ info->cp->CPStarted = TRUE; \
+ } while (0)
+
+ #define RADEONCP_RELEASE(pScrn, info) \
+ do { \
+- if (info->CPInUse) { \
++ if (info->cp->CPInUse) { \
+ RADEON_PURGE_CACHE(); \
+ RADEON_WAIT_UNTIL_IDLE(); \
+ RADEONCPReleaseIndirect(pScrn); \
+- info->CPInUse = FALSE; \
++ info->cp->CPInUse = FALSE; \
+ } \
+ } while (0)
+
+ #define RADEONCP_STOP(pScrn, info) \
+ do { \
+ int _ret; \
+- if (info->CPStarted) { \
++ if (info->cp->CPStarted) { \
+ _ret = RADEONCPStop(pScrn, info); \
+ if (_ret) { \
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \
+ "%s: CP stop %d\n", __FUNCTION__, _ret); \
+ } \
+- info->CPStarted = FALSE; \
++ info->cp->CPStarted = FALSE; \
+ } \
+ RADEONEngineRestore(pScrn); \
+- info->CPRuns = FALSE; \
++ info->cp->CPRuns = FALSE; \
+ } while (0)
+
+ #define RADEONCP_RESET(pScrn, info) \
+ do { \
+- if (RADEONCP_USE_RING_BUFFER(info->CPMode)) { \
+- int _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_RESET); \
++ int _ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_RESET); \
+ if (_ret) { \
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \
+ "%s: CP reset %d\n", __FUNCTION__, _ret); \
+ } \
+- } \
+ } while (0)
+
+ #define RADEONCP_REFRESH(pScrn, info) \
+ do { \
+- if (!info->CPInUse) { \
+- if (info->needCacheFlush) { \
++ if (!info->cp->CPInUse) { \
++ if (info->cp->needCacheFlush) { \
+ RADEON_PURGE_CACHE(); \
+ RADEON_PURGE_ZCACHE(); \
+- info->needCacheFlush = FALSE; \
++ info->cp->needCacheFlush = FALSE; \
+ } \
+ RADEON_WAIT_UNTIL_IDLE(); \
+- if (info->ChipFamily <= CHIP_FAMILY_RV280) { \
+- BEGIN_RING(6); \
+- OUT_RING_REG(RADEON_RE_TOP_LEFT, info->re_top_left); \
+- OUT_RING_REG(RADEON_RE_WIDTH_HEIGHT, info->re_width_height); \
+- OUT_RING_REG(RADEON_AUX_SC_CNTL, info->aux_sc_cntl); \
+- ADVANCE_RING(); \
+- } else { \
+- BEGIN_RING(4); \
+- OUT_RING_REG(R300_SC_SCISSOR0, info->re_top_left); \
+- OUT_RING_REG(R300_SC_SCISSOR1, info->re_width_height); \
+- ADVANCE_RING(); \
+- } \
+- info->CPInUse = TRUE; \
++ info->cp->CPInUse = TRUE; \
+ } \
+ } while (0)
+
+@@ -1100,33 +1161,33 @@ do { \
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, \
+ "BEGIN_RING(%d) in %s\n", (unsigned int)n, __FUNCTION__);\
+ } \
+- if (++info->dma_begin_count != 1) { \
++ if (++info->cp->dma_begin_count != 1) { \
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \
+ "BEGIN_RING without end at %s:%d\n", \
+- info->dma_debug_func, info->dma_debug_lineno); \
+- info->dma_begin_count = 1; \
++ info->cp->dma_debug_func, info->cp->dma_debug_lineno); \
++ info->cp->dma_begin_count = 1; \
+ } \
+- info->dma_debug_func = __FILE__; \
+- info->dma_debug_lineno = __LINE__; \
+- if (!info->indirectBuffer) { \
+- info->indirectBuffer = RADEONCPGetBuffer(pScrn); \
+- info->indirectStart = 0; \
+- } else if (info->indirectBuffer->used + (n) * (int)sizeof(uint32_t) > \
+- info->indirectBuffer->total) { \
++ info->cp->dma_debug_func = __FILE__; \
++ info->cp->dma_debug_lineno = __LINE__; \
++ if (!info->cp->indirectBuffer) { \
++ info->cp->indirectBuffer = RADEONCPGetBuffer(pScrn); \
++ info->cp->indirectStart = 0; \
++ } else if (info->cp->indirectBuffer->used + (n) * (int)sizeof(uint32_t) > \
++ info->cp->indirectBuffer->total) { \
+ RADEONCPFlushIndirect(pScrn, 1); \
+ } \
+ __expected = n; \
+- __head = (pointer)((char *)info->indirectBuffer->address + \
+- info->indirectBuffer->used); \
++ __head = (pointer)((char *)info->cp->indirectBuffer->address + \
++ info->cp->indirectBuffer->used); \
+ __count = 0; \
+ } while (0)
+
+ #define ADVANCE_RING() do { \
+- if (info->dma_begin_count-- != 1) { \
++ if (info->cp->dma_begin_count-- != 1) { \
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \
+ "ADVANCE_RING without begin at %s:%d\n", \
+ __FILE__, __LINE__); \
+- info->dma_begin_count = 0; \
++ info->cp->dma_begin_count = 0; \
+ } \
+ if (__count != __expected) { \
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \
+@@ -1136,11 +1197,11 @@ do { \
+ if (RADEON_VERBOSE) { \
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, \
+ "ADVANCE_RING() start: %d used: %d count: %d\n", \
+- info->indirectStart, \
+- info->indirectBuffer->used, \
++ info->cp->indirectStart, \
++ info->cp->indirectBuffer->used, \
+ __count * (int)sizeof(uint32_t)); \
+ } \
+- info->indirectBuffer->used += __count * (int)sizeof(uint32_t); \
++ info->cp->indirectBuffer->used += __count * (int)sizeof(uint32_t); \
+ } while (0)
+
+ #define OUT_RING(x) do { \
+@@ -1162,7 +1223,7 @@ do { \
+ if (RADEON_VERBOSE) \
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, \
+ "FLUSH_RING in %s\n", __FUNCTION__); \
+- if (info->indirectBuffer) { \
++ if (info->cp->indirectBuffer) { \
+ RADEONCPFlushIndirect(pScrn, 0); \
+ } \
+ } while (0)
+@@ -1236,19 +1297,19 @@ static __inline__ void RADEON_MARK_SYNC(RADEONInfoPtr info, ScrnInfoPtr pScrn)
+ #endif
+ #ifdef USE_XAA
+ if (!info->useEXA)
+- SET_SYNC_FLAG(info->accel);
++ SET_SYNC_FLAG(info->accel_state->accel);
+ #endif
+ }
+
+ static __inline__ void RADEON_SYNC(RADEONInfoPtr info, ScrnInfoPtr pScrn)
+ {
+ #ifdef USE_EXA
+- if (info->useEXA)
++ if (info->useEXA && pScrn->pScreen)
+ exaWaitSync(pScrn->pScreen);
+ #endif
+ #ifdef USE_XAA
+- if (!info->useEXA && info->accel)
+- info->accel->Sync(pScrn);
++ if (!info->useEXA && info->accel_state->accel)
++ info->accel_state->accel->Sync(pScrn);
+ #endif
+ }
+
+diff --git a/src/radeon_accel.c b/src/radeon_accel.c
+index 65ad33d..a6e332d 100644
+--- a/src/radeon_accel.c
++++ b/src/radeon_accel.c
+@@ -83,9 +83,7 @@
+ #include "radeon_version.h"
+ #ifdef XF86DRI
+ #define _XF86DRI_SERVER_
+-#include "radeon_dri.h"
+-#include "radeon_common.h"
+-#include "radeon_sarea.h"
++#include "radeon_drm.h"
+ #endif
+
+ /* Line support */
+@@ -130,9 +128,9 @@ void RADEONWaitForFifoFunction(ScrnInfoPtr pScrn, int entries)
+
+ for (;;) {
+ for (i = 0; i < RADEON_TIMEOUT; i++) {
+- info->fifo_slots =
++ info->accel_state->fifo_slots =
+ INREG(RADEON_RBBM_STATUS) & RADEON_RBBM_FIFOCNT_MASK;
+- if (info->fifo_slots >= entries) return;
++ if (info->accel_state->fifo_slots >= entries) return;
+ }
+ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+ "FIFO timed out: %u entries, stat=0x%08x\n",
+@@ -324,8 +322,8 @@ void RADEONEngineRestore(ScrnInfoPtr pScrn)
+ * in the wrong place (happened).
+ */
+ RADEONWaitForFifo(pScrn, 2);
+- OUTREG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset);
+- OUTREG(RADEON_SRC_PITCH_OFFSET, info->dst_pitch_offset);
++ OUTREG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset);
++ OUTREG(RADEON_SRC_PITCH_OFFSET, info->accel_state->dst_pitch_offset);
+
+ RADEONWaitForFifo(pScrn, 1);
+ #if X_BYTE_ORDER == X_BIG_ENDIAN
+@@ -343,7 +341,7 @@ void RADEONEngineRestore(ScrnInfoPtr pScrn)
+ OUTREG(RADEON_DEFAULT_SC_BOTTOM_RIGHT, (RADEON_DEFAULT_SC_RIGHT_MAX
+ | RADEON_DEFAULT_SC_BOTTOM_MAX));
+ RADEONWaitForFifo(pScrn, 1);
+- OUTREG(RADEON_DP_GUI_MASTER_CNTL, (info->dp_gui_master_cntl
++ OUTREG(RADEON_DP_GUI_MASTER_CNTL, (info->accel_state->dp_gui_master_cntl
+ | RADEON_GMC_BRUSH_SOLID_COLOR
+ | RADEON_GMC_SRC_DATATYPE_COLOR));
+
+@@ -356,7 +354,7 @@ void RADEONEngineRestore(ScrnInfoPtr pScrn)
+
+ RADEONWaitForIdleMMIO(pScrn);
+
+- info->XInited3D = FALSE;
++ info->accel_state->XInited3D = FALSE;
+ }
+
+ /* Initialize the acceleration hardware */
+@@ -364,6 +362,7 @@ void RADEONEngineInit(ScrnInfoPtr pScrn)
+ {
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ unsigned char *RADEONMMIO = info->MMIO;
++ int datatype = 0;
+
+ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+ "EngineInit (%d/%d)\n",
+@@ -372,21 +371,21 @@ void RADEONEngineInit(ScrnInfoPtr pScrn)
+
+ #ifdef XF86DRI
+ if (info->directRenderingEnabled && (IS_R300_3D || IS_R500_3D)) {
+- drmRadeonGetParam np;
++ drm_radeon_getparam_t np;
+ int num_pipes;
+
+ memset(&np, 0, sizeof(np));
+ np.param = RADEON_PARAM_NUM_GB_PIPES;
+ np.value = &num_pipes;
+
+- if (drmCommandWriteRead(info->drmFD, DRM_RADEON_GETPARAM, &np,
++ if (drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_GETPARAM, &np,
+ sizeof(np)) < 0) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Failed to determine num pipes from DRM, falling back to "
+ "manual look-up!\n");
+- info->num_gb_pipes = 0;
++ info->accel_state->num_gb_pipes = 0;
+ } else {
+- info->num_gb_pipes = num_pipes;
++ info->accel_state->num_gb_pipes = num_pipes;
+ }
+ }
+ #endif
+@@ -399,34 +398,34 @@ void RADEONEngineInit(ScrnInfoPtr pScrn)
+ (info->ChipFamily == CHIP_FAMILY_RS400) ||
+ (info->ChipFamily == CHIP_FAMILY_RS480) ||
+ IS_R500_3D) {
+- if (info->num_gb_pipes == 0) {
++ if (info->accel_state->num_gb_pipes == 0) {
+ uint32_t gb_pipe_sel = INREG(R400_GB_PIPE_SELECT);
+
+- info->num_gb_pipes = ((gb_pipe_sel >> 12) & 0x3) + 1;
++ info->accel_state->num_gb_pipes = ((gb_pipe_sel >> 12) & 0x3) + 1;
+ if (IS_R500_3D)
+ OUTPLL(pScrn, R500_DYN_SCLK_PWMEM_PIPE, (1 | ((gb_pipe_sel >> 8) & 0xf) << 4));
+ }
+ } else {
+- if (info->num_gb_pipes == 0) {
++ if (info->accel_state->num_gb_pipes == 0) {
+ if ((info->ChipFamily == CHIP_FAMILY_R300) ||
+ (info->ChipFamily == CHIP_FAMILY_R350)) {
+ /* R3xx chips */
+- info->num_gb_pipes = 2;
++ info->accel_state->num_gb_pipes = 2;
+ } else {
+ /* RV3xx chips */
+- info->num_gb_pipes = 1;
++ info->accel_state->num_gb_pipes = 1;
+ }
+ }
+ }
+
+ if (IS_R300_3D || IS_R500_3D)
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "num pipes is %d\n", info->num_gb_pipes);
++ "num quad-pipes is %d\n", info->accel_state->num_gb_pipes);
+
+ if (IS_R300_3D || IS_R500_3D) {
+ uint32_t gb_tile_config = (R300_ENABLE_TILING | R300_TILE_SIZE_16 | R300_SUBPIXEL_1_16);
+
+- switch(info->num_gb_pipes) {
++ switch(info->accel_state->num_gb_pipes) {
+ case 2: gb_tile_config |= R300_PIPE_COUNT_R300; break;
+ case 3: gb_tile_config |= R300_PIPE_COUNT_R420_3P; break;
+ case 4: gb_tile_config |= R300_PIPE_COUNT_R420; break;
+@@ -446,11 +445,11 @@ void RADEONEngineInit(ScrnInfoPtr pScrn)
+ RADEONEngineReset(pScrn);
+
+ switch (info->CurrentLayout.pixel_code) {
+- case 8: info->datatype = 2; break;
+- case 15: info->datatype = 3; break;
+- case 16: info->datatype = 4; break;
+- case 24: info->datatype = 5; break;
+- case 32: info->datatype = 6; break;
++ case 8: datatype = 2; break;
++ case 15: datatype = 3; break;
++ case 16: datatype = 4; break;
++ case 24: datatype = 5; break;
++ case 32: datatype = 6; break;
+ default:
+ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+ "Unknown depth/bpp = %d/%d (code = %d)\n",
+@@ -458,34 +457,12 @@ void RADEONEngineInit(ScrnInfoPtr pScrn)
+ info->CurrentLayout.bitsPerPixel,
+ info->CurrentLayout.pixel_code);
+ }
+- info->pitch = ((info->CurrentLayout.displayWidth / 8) *
+- (info->CurrentLayout.pixel_bytes == 3 ? 3 : 1));
+
+- xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+- "Pitch for acceleration = %d\n", info->pitch);
+-
+- info->dp_gui_master_cntl =
+- ((info->datatype << RADEON_GMC_DST_DATATYPE_SHIFT)
++ info->accel_state->dp_gui_master_cntl =
++ ((datatype << RADEON_GMC_DST_DATATYPE_SHIFT)
+ | RADEON_GMC_CLR_CMP_CNTL_DIS
+ | RADEON_GMC_DST_PITCH_OFFSET_CNTL);
+
+-#ifdef XF86DRI
+- info->sc_left = 0x00000000;
+- info->sc_right = RADEON_DEFAULT_SC_RIGHT_MAX;
+- info->sc_top = 0x00000000;
+- info->sc_bottom = RADEON_DEFAULT_SC_BOTTOM_MAX;
+-
+- info->re_top_left = 0x00000000;
+- if (info->ChipFamily <= CHIP_FAMILY_RV280)
+- info->re_width_height = ((0x7ff << RADEON_RE_WIDTH_SHIFT) |
+- (0x7ff << RADEON_RE_HEIGHT_SHIFT));
+- else
+- info->re_width_height = ((8191 << R300_SCISSOR_X_SHIFT) |
+- (8191 << R300_SCISSOR_Y_SHIFT));
+-
+- info->aux_sc_cntl = 0x00000000;
+-#endif
+-
+ RADEONEngineRestore(pScrn);
+ }
+
+@@ -534,14 +511,14 @@ void RADEONEngineInit(ScrnInfoPtr pScrn)
+ /* Stop the CP */
+ int RADEONCPStop(ScrnInfoPtr pScrn, RADEONInfoPtr info)
+ {
+- drmRadeonCPStop stop;
++ drm_radeon_cp_stop_t stop;
+ int ret, i;
+
+ stop.flush = 1;
+ stop.idle = 1;
+
+- ret = drmCommandWrite(info->drmFD, DRM_RADEON_CP_STOP, &stop,
+- sizeof(drmRadeonCPStop));
++ ret = drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_STOP, &stop,
++ sizeof(drm_radeon_cp_stop_t));
+
+ if (ret == 0) {
+ return 0;
+@@ -553,8 +530,8 @@ int RADEONCPStop(ScrnInfoPtr pScrn, RADEONInfoPtr info)
+
+ i = 0;
+ do {
+- ret = drmCommandWrite(info->drmFD, DRM_RADEON_CP_STOP, &stop,
+- sizeof(drmRadeonCPStop));
++ ret = drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_STOP, &stop,
++ sizeof(drm_radeon_cp_stop_t));
+ } while (ret && errno == EBUSY && i++ < RADEON_IDLE_RETRY);
+
+ if (ret == 0) {
+@@ -565,8 +542,8 @@ int RADEONCPStop(ScrnInfoPtr pScrn, RADEONInfoPtr info)
+
+ stop.idle = 0;
+
+- if (drmCommandWrite(info->drmFD, DRM_RADEON_CP_STOP,
+- &stop, sizeof(drmRadeonCPStop))) {
++ if (drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_STOP,
++ &stop, sizeof(drm_radeon_cp_stop_t))) {
+ return -errno;
+ } else {
+ return 0;
+@@ -608,7 +585,7 @@ drmBufPtr RADEONCPGetBuffer(ScrnInfoPtr pScrn)
+
+ while (1) {
+ do {
+- ret = drmDMA(info->drmFD, &dma);
++ ret = drmDMA(info->dri->drmFD, &dma);
+ if (ret && ret != -EBUSY) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "%s: CP GetBuffer %d\n", __FUNCTION__, ret);
+@@ -616,7 +593,7 @@ drmBufPtr RADEONCPGetBuffer(ScrnInfoPtr pScrn)
+ } while ((ret == -EBUSY) && (i++ < RADEON_TIMEOUT));
+
+ if (ret == 0) {
+- buf = &info->buffers->list[indx];
++ buf = &info->dri->buffers->list[indx];
+ buf->used = 0;
+ if (RADEON_VERBOSE) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+@@ -641,9 +618,9 @@ drmBufPtr RADEONCPGetBuffer(ScrnInfoPtr pScrn)
+ void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard)
+ {
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- drmBufPtr buffer = info->indirectBuffer;
+- int start = info->indirectStart;
+- drmRadeonIndirect indirect;
++ drmBufPtr buffer = info->cp->indirectBuffer;
++ int start = info->cp->indirectStart;
++ drm_radeon_indirect_t indirect;
+
+ if (!buffer) return;
+ if (start == buffer->used && !discard) return;
+@@ -658,18 +635,18 @@ void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard)
+ indirect.end = buffer->used;
+ indirect.discard = discard;
+
+- drmCommandWriteRead(info->drmFD, DRM_RADEON_INDIRECT,
+- &indirect, sizeof(drmRadeonIndirect));
++ drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_INDIRECT,
++ &indirect, sizeof(drm_radeon_indirect_t));
+
+ if (discard) {
+- info->indirectBuffer = RADEONCPGetBuffer(pScrn);
+- info->indirectStart = 0;
++ info->cp->indirectBuffer = RADEONCPGetBuffer(pScrn);
++ info->cp->indirectStart = 0;
+ } else {
+ /* Start on a double word boundary */
+- info->indirectStart = buffer->used = (buffer->used + 7) & ~7;
++ info->cp->indirectStart = buffer->used = (buffer->used + 7) & ~7;
+ if (RADEON_VERBOSE) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, " Starting at %d\n",
+- info->indirectStart);
++ info->cp->indirectStart);
+ }
+ }
+ }
+@@ -678,12 +655,12 @@ void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard)
+ void RADEONCPReleaseIndirect(ScrnInfoPtr pScrn)
+ {
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- drmBufPtr buffer = info->indirectBuffer;
+- int start = info->indirectStart;
+- drmRadeonIndirect indirect;
++ drmBufPtr buffer = info->cp->indirectBuffer;
++ int start = info->cp->indirectStart;
++ drm_radeon_indirect_t indirect;
+
+- info->indirectBuffer = NULL;
+- info->indirectStart = 0;
++ info->cp->indirectBuffer = NULL;
++ info->cp->indirectStart = 0;
+
+ if (!buffer) return;
+
+@@ -697,8 +674,8 @@ void RADEONCPReleaseIndirect(ScrnInfoPtr pScrn)
+ indirect.end = buffer->used;
+ indirect.discard = 1;
+
+- drmCommandWriteRead(info->drmFD, DRM_RADEON_INDIRECT,
+- &indirect, sizeof(drmRadeonIndirect));
++ drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_INDIRECT,
++ &indirect, sizeof(drm_radeon_indirect_t));
+ }
+
+ /** \brief Calculate HostDataBlit parameters from pointer and pitch
+@@ -964,7 +941,7 @@ Bool RADEONAccelInit(ScreenPtr pScreen)
+ if (!info->useEXA) {
+ XAAInfoRecPtr a;
+
+- if (!(a = info->accel = XAACreateInfoRec())) {
++ if (!(a = info->accel_state->accel = XAACreateInfoRec())) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "XAACreateInfoRec Error\n");
+ return FALSE;
+ }
+@@ -993,16 +970,16 @@ void RADEONInit3DEngine(ScrnInfoPtr pScrn)
+
+ #ifdef XF86DRI
+ if (info->directRenderingEnabled) {
+- RADEONSAREAPrivPtr pSAREAPriv;
++ drm_radeon_sarea_t *pSAREAPriv;
+
+ pSAREAPriv = DRIGetSAREAPrivate(pScrn->pScreen);
+- pSAREAPriv->ctxOwner = DRIGetContext(pScrn->pScreen);
++ pSAREAPriv->ctx_owner = DRIGetContext(pScrn->pScreen);
+ RADEONInit3DEngineCP(pScrn);
+ } else
+ #endif
+ RADEONInit3DEngineMMIO(pScrn);
+
+- info->XInited3D = TRUE;
++ info->accel_state->XInited3D = TRUE;
+ }
+
+ #ifdef USE_XAA
+@@ -1013,7 +990,7 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen)
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ int cpp = info->CurrentLayout.pixel_bytes;
+- int depthCpp = (info->depthBits - 8) / 4;
++ int depthCpp = (info->dri->depthBits - 8) / 4;
+ int width_bytes = pScrn->displayWidth * cpp;
+ int bufferSize;
+ int depthSize;
+@@ -1023,9 +1000,9 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen)
+ BoxRec MemBox;
+ FBAreaPtr fbarea;
+
+- info->frontOffset = 0;
+- info->frontPitch = pScrn->displayWidth;
+- info->backPitch = pScrn->displayWidth;
++ info->dri->frontOffset = 0;
++ info->dri->frontPitch = pScrn->displayWidth;
++ info->dri->backPitch = pScrn->displayWidth;
+
+ /* make sure we use 16 line alignment for tiling (8 might be enough).
+ * Might need that for non-XF86DRI too?
+@@ -1042,30 +1019,18 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen)
+ * which is always the case if color tiling is used due to color pitch
+ * but not necessarily otherwise, and its height a multiple of 16 lines.
+ */
+- info->depthPitch = (pScrn->displayWidth + 31) & ~31;
+- depthSize = ((((pScrn->virtualY + 15) & ~15) * info->depthPitch
++ info->dri->depthPitch = (pScrn->displayWidth + 31) & ~31;
++ depthSize = ((((pScrn->virtualY + 15) & ~15) * info->dri->depthPitch
+ * depthCpp + RADEON_BUFFER_ALIGN) & ~RADEON_BUFFER_ALIGN);
+
+- switch (info->CPMode) {
+- case RADEON_DEFAULT_CP_PIO_MODE:
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CP in PIO mode\n");
+- break;
+- case RADEON_DEFAULT_CP_BM_MODE:
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CP in BM mode\n");
+- break;
+- default:
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CP in UNKNOWN mode\n");
+- break;
+- }
+-
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Using %d MB GART aperture\n", info->gartSize);
++ "Using %d MB GART aperture\n", info->dri->gartSize);
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Using %d MB for the ring buffer\n", info->ringSize);
++ "Using %d MB for the ring buffer\n", info->dri->ringSize);
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Using %d MB for vertex/indirect buffers\n", info->bufSize);
++ "Using %d MB for vertex/indirect buffers\n", info->dri->bufSize);
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Using %d MB for GART textures\n", info->gartTexSize);
++ "Using %d MB for GART textures\n", info->dri->gartTexSize);
+
+ /* Try for front, back, depth, and three framebuffers worth of
+ * pixmap cache. Should be enough for a fullscreen background
+@@ -1075,35 +1040,35 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen)
+ * otherwise probably), and never reserve more than 3 offscreen buffers as it's
+ * probably useless for XAA.
+ */
+- if (info->textureSize >= 0) {
++ if (info->dri->textureSize >= 0) {
+ texsizerequest = ((int)info->FbMapSize - 2 * bufferSize - depthSize
+ - 2 * width_bytes - 16384 - info->FbSecureSize)
+ /* first divide, then multiply or we'll get an overflow (been there...) */
+- / 100 * info->textureSize;
++ / 100 * info->dri->textureSize;
+ }
+ else {
+ texsizerequest = (int)info->FbMapSize / 2;
+ }
+- info->textureSize = info->FbMapSize - info->FbSecureSize - 5 * bufferSize - depthSize;
++ info->dri->textureSize = info->FbMapSize - info->FbSecureSize - 5 * bufferSize - depthSize;
+
+ /* If that gives us less than the requested memory, let's
+ * be greedy and grab some more. Sorry, I care more about 3D
+ * performance than playing nicely, and you'll get around a full
+ * framebuffer's worth of pixmap cache anyway.
+ */
+- if (info->textureSize < texsizerequest) {
+- info->textureSize = info->FbMapSize - 4 * bufferSize - depthSize;
++ if (info->dri->textureSize < texsizerequest) {
++ info->dri->textureSize = info->FbMapSize - 4 * bufferSize - depthSize;
+ }
+- if (info->textureSize < texsizerequest) {
+- info->textureSize = info->FbMapSize - 3 * bufferSize - depthSize;
++ if (info->dri->textureSize < texsizerequest) {
++ info->dri->textureSize = info->FbMapSize - 3 * bufferSize - depthSize;
+ }
+
+ /* If there's still no space for textures, try without pixmap cache, but
+ * never use the reserved space, the space hw cursor and PCIGART table might
+ * use.
+ */
+- if (info->textureSize < 0) {
+- info->textureSize = info->FbMapSize - 2 * bufferSize - depthSize
++ if (info->dri->textureSize < 0) {
++ info->dri->textureSize = info->FbMapSize - 2 * bufferSize - depthSize
+ - 2 * width_bytes - 16384 - info->FbSecureSize;
+ }
+
+@@ -1112,14 +1077,14 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen)
+ */
+ /* FIXME: what's this good for? condition is pretty much impossible to meet */
+ if ((int)info->FbMapSize - 8192*width_bytes - bufferSize - depthSize
+- > info->textureSize) {
+- info->textureSize =
++ > info->dri->textureSize) {
++ info->dri->textureSize =
+ info->FbMapSize - 8192*width_bytes - bufferSize - depthSize;
+ }
+
+ /* If backbuffer is disabled, don't allocate memory for it */
+- if (info->noBackBuffer) {
+- info->textureSize += bufferSize;
++ if (info->dri->noBackBuffer) {
++ info->dri->textureSize += bufferSize;
+ }
+
+ /* RADEON_BUFFER_ALIGN is not sufficient for backbuffer!
+@@ -1131,61 +1096,61 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen)
+ can't be used (?) due to that log_tex_granularity thing???
+ Could use different copyscreentoscreen function for the pageflip copies
+ (which would use different src and dst offsets) to avoid this. */
+- if (info->allowColorTiling && !info->noBackBuffer) {
+- info->textureSize = info->FbMapSize - ((info->FbMapSize - info->textureSize +
++ if (info->allowColorTiling && !info->dri->noBackBuffer) {
++ info->dri->textureSize = info->FbMapSize - ((info->FbMapSize - info->dri->textureSize +
+ width_bytes * 16 - 1) / (width_bytes * 16)) * (width_bytes * 16);
+ }
+- if (info->textureSize > 0) {
+- l = RADEONMinBits((info->textureSize-1) / RADEON_NR_TEX_REGIONS);
++ if (info->dri->textureSize > 0) {
++ l = RADEONMinBits((info->dri->textureSize-1) / RADEON_NR_TEX_REGIONS);
+ if (l < RADEON_LOG_TEX_GRANULARITY)
+ l = RADEON_LOG_TEX_GRANULARITY;
+ /* Round the texture size up to the nearest whole number of
+ * texture regions. Again, be greedy about this, don't
+ * round down.
+ */
+- info->log2TexGran = l;
+- info->textureSize = (info->textureSize >> l) << l;
++ info->dri->log2TexGran = l;
++ info->dri->textureSize = (info->dri->textureSize >> l) << l;
+ } else {
+- info->textureSize = 0;
++ info->dri->textureSize = 0;
+ }
+
+ /* Set a minimum usable local texture heap size. This will fit
+ * two 256x256x32bpp textures.
+ */
+- if (info->textureSize < 512 * 1024) {
+- info->textureOffset = 0;
+- info->textureSize = 0;
++ if (info->dri->textureSize < 512 * 1024) {
++ info->dri->textureOffset = 0;
++ info->dri->textureSize = 0;
+ }
+
+- if (info->allowColorTiling && !info->noBackBuffer) {
+- info->textureOffset = ((info->FbMapSize - info->textureSize) /
+- (width_bytes * 16)) * (width_bytes * 16);
++ if (info->allowColorTiling && !info->dri->noBackBuffer) {
++ info->dri->textureOffset = ((info->FbMapSize - info->dri->textureSize) /
++ (width_bytes * 16)) * (width_bytes * 16);
+ }
+ else {
+ /* Reserve space for textures */
+- info->textureOffset = ((info->FbMapSize - info->textureSize +
+- RADEON_BUFFER_ALIGN) &
+- ~(uint32_t)RADEON_BUFFER_ALIGN);
++ info->dri->textureOffset = ((info->FbMapSize - info->dri->textureSize +
++ RADEON_BUFFER_ALIGN) &
++ ~(uint32_t)RADEON_BUFFER_ALIGN);
+ }
+
+ /* Reserve space for the shared depth
+ * buffer.
+ */
+- info->depthOffset = ((info->textureOffset - depthSize +
+- RADEON_BUFFER_ALIGN) &
+- ~(uint32_t)RADEON_BUFFER_ALIGN);
++ info->dri->depthOffset = ((info->dri->textureOffset - depthSize +
++ RADEON_BUFFER_ALIGN) &
++ ~(uint32_t)RADEON_BUFFER_ALIGN);
+
+ /* Reserve space for the shared back buffer */
+- if (info->noBackBuffer) {
+- info->backOffset = info->depthOffset;
++ if (info->dri->noBackBuffer) {
++ info->dri->backOffset = info->dri->depthOffset;
+ } else {
+- info->backOffset = ((info->depthOffset - bufferSize +
+- RADEON_BUFFER_ALIGN) &
+- ~(uint32_t)RADEON_BUFFER_ALIGN);
++ info->dri->backOffset = ((info->dri->depthOffset - bufferSize +
++ RADEON_BUFFER_ALIGN) &
++ ~(uint32_t)RADEON_BUFFER_ALIGN);
+ }
+
+- info->backY = info->backOffset / width_bytes;
+- info->backX = (info->backOffset - (info->backY * width_bytes)) / cpp;
++ info->dri->backY = info->dri->backOffset / width_bytes;
++ info->dri->backX = (info->dri->backOffset - (info->dri->backY * width_bytes)) / cpp;
+
+ scanlines = (info->FbMapSize-info->FbSecureSize) / width_bytes;
+ if (scanlines > 8191)
+@@ -1236,12 +1201,12 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen)
+ /* Lines in offscreen area needed for depth buffer and
+ * textures
+ */
+- info->depthTexLines = (scanlines
+- - info->depthOffset / width_bytes);
+- info->backLines = (scanlines
+- - info->backOffset / width_bytes
+- - info->depthTexLines);
+- info->backArea = NULL;
++ info->dri->depthTexLines = (scanlines
++ - info->dri->depthOffset / width_bytes);
++ info->dri->backLines = (scanlines
++ - info->dri->backOffset / width_bytes
++ - info->dri->depthTexLines);
++ info->dri->backArea = NULL;
+ } else {
+ xf86DrvMsg(scrnIndex, X_ERROR,
+ "Unable to determine largest offscreen area "
+@@ -1252,30 +1217,30 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen)
+
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "Will use front buffer at offset 0x%x\n",
+- info->frontOffset);
++ info->dri->frontOffset);
+
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "Will use back buffer at offset 0x%x\n",
+- info->backOffset);
++ info->dri->backOffset);
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "Will use depth buffer at offset 0x%x\n",
+- info->depthOffset);
++ info->dri->depthOffset);
+ if (info->cardType==CARD_PCIE)
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "Will use %d kb for PCI GART table at offset 0x%x\n",
+- info->pciGartSize/1024, (unsigned)info->pciGartOffset);
++ info->dri->pciGartSize/1024, (unsigned)info->dri->pciGartOffset);
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "Will use %d kb for textures at offset 0x%x\n",
+- info->textureSize/1024, info->textureOffset);
++ info->dri->textureSize/1024, info->dri->textureOffset);
+
+- info->frontPitchOffset = (((info->frontPitch * cpp / 64) << 22) |
+- ((info->frontOffset + info->fbLocation) >> 10));
++ info->dri->frontPitchOffset = (((info->dri->frontPitch * cpp / 64) << 22) |
++ ((info->dri->frontOffset + info->fbLocation) >> 10));
+
+- info->backPitchOffset = (((info->backPitch * cpp / 64) << 22) |
+- ((info->backOffset + info->fbLocation) >> 10));
++ info->dri->backPitchOffset = (((info->dri->backPitch * cpp / 64) << 22) |
++ ((info->dri->backOffset + info->fbLocation) >> 10));
+
+- info->depthPitchOffset = (((info->depthPitch * depthCpp / 64) << 22) |
+- ((info->depthOffset + info->fbLocation) >> 10));
++ info->dri->depthPitchOffset = (((info->dri->depthPitch * depthCpp / 64) << 22) |
++ ((info->dri->depthOffset + info->fbLocation) >> 10));
+ return TRUE;
+ }
+ #endif /* XF86DRI */
+diff --git a/src/radeon_accelfuncs.c b/src/radeon_accelfuncs.c
+index 56793cd..45eb6d5 100644
+--- a/src/radeon_accelfuncs.c
++++ b/src/radeon_accelfuncs.c
+@@ -137,14 +137,14 @@ FUNC_NAME(RADEONSetupForSolidFill)(ScrnInfoPtr pScrn,
+ ACCEL_PREAMBLE();
+
+ /* Save for later clipping */
+- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl
+- | RADEON_GMC_BRUSH_SOLID_COLOR
+- | RADEON_GMC_SRC_DATATYPE_COLOR
+- | RADEON_ROP[rop].pattern);
++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl
++ | RADEON_GMC_BRUSH_SOLID_COLOR
++ | RADEON_GMC_SRC_DATATYPE_COLOR
++ | RADEON_ROP[rop].pattern);
+
+ BEGIN_ACCEL(4);
+
+- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip);
++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip);
+ OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, color);
+ OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask);
+ OUT_ACCEL_REG(RADEON_DP_CNTL, (RADEON_DST_X_LEFT_TO_RIGHT
+@@ -172,7 +172,7 @@ FUNC_NAME(RADEONSubsequentSolidFillRect)(ScrnInfoPtr pScrn,
+
+ BEGIN_ACCEL(3);
+
+- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset |
++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset |
+ ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+ OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x);
+ OUT_ACCEL_REG(RADEON_DST_WIDTH_HEIGHT, (w << 16) | h);
+@@ -191,10 +191,10 @@ FUNC_NAME(RADEONSetupForSolidLine)(ScrnInfoPtr pScrn,
+ ACCEL_PREAMBLE();
+
+ /* Save for later clipping */
+- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl
+- | RADEON_GMC_BRUSH_SOLID_COLOR
+- | RADEON_GMC_SRC_DATATYPE_COLOR
+- | RADEON_ROP[rop].pattern);
++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl
++ | RADEON_GMC_BRUSH_SOLID_COLOR
++ | RADEON_GMC_SRC_DATATYPE_COLOR
++ | RADEON_ROP[rop].pattern);
+
+ if (info->ChipFamily >= CHIP_FAMILY_RV200) {
+ BEGIN_ACCEL(1);
+@@ -205,7 +205,7 @@ FUNC_NAME(RADEONSetupForSolidLine)(ScrnInfoPtr pScrn,
+
+ BEGIN_ACCEL(3);
+
+- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip);
++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip);
+ OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, color);
+ OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask);
+
+@@ -236,7 +236,7 @@ FUNC_NAME(RADEONSubsequentSolidHorVertLine)(ScrnInfoPtr pScrn,
+
+ OUT_ACCEL_REG(RADEON_DP_CNTL, (RADEON_DST_X_LEFT_TO_RIGHT
+ | RADEON_DST_Y_TOP_TO_BOTTOM));
+- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset |
++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset |
+ ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+ OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x);
+ OUT_ACCEL_REG(RADEON_DST_WIDTH_HEIGHT, (w << 16) | h);
+@@ -269,7 +269,7 @@ FUNC_NAME(RADEONSubsequentSolidTwoPointLine)(ScrnInfoPtr pScrn,
+
+ BEGIN_ACCEL(3);
+
+- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset |
++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset |
+ ((info->tilingEnabled && (ya <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+ OUT_ACCEL_REG(RADEON_DST_LINE_START, (ya << 16) | xa);
+ OUT_ACCEL_REG(RADEON_DST_LINE_END, (yb << 16) | xb);
+@@ -298,8 +298,8 @@ FUNC_NAME(RADEONSetupForDashedLine)(ScrnInfoPtr pScrn,
+ ACCEL_PREAMBLE();
+
+ /* Save for determining whether or not to draw last pixel */
+- info->dashLen = length;
+- info->dashPattern = pat;
++ info->accel_state->dashLen = length;
++ info->accel_state->dashPattern = pat;
+
+ #if X_BYTE_ORDER == X_BIG_ENDIAN
+ # define PAT_SHIFT(pat, shift) (pat >> shift)
+@@ -315,18 +315,18 @@ FUNC_NAME(RADEONSetupForDashedLine)(ScrnInfoPtr pScrn,
+ }
+
+ /* Save for later clipping */
+- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl
+- | (bg == -1
+- ? RADEON_GMC_BRUSH_32x1_MONO_FG_LA
+- : RADEON_GMC_BRUSH_32x1_MONO_FG_BG)
+- | RADEON_ROP[rop].pattern
+- | RADEON_GMC_BYTE_LSB_TO_MSB);
+- info->dash_fg = fg;
+- info->dash_bg = bg;
++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl
++ | (bg == -1
++ ? RADEON_GMC_BRUSH_32x1_MONO_FG_LA
++ : RADEON_GMC_BRUSH_32x1_MONO_FG_BG)
++ | RADEON_ROP[rop].pattern
++ | RADEON_GMC_BYTE_LSB_TO_MSB);
++ info->accel_state->dash_fg = fg;
++ info->accel_state->dash_bg = bg;
+
+ BEGIN_ACCEL((bg == -1) ? 4 : 5);
+
+- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip);
++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip);
+ OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask);
+ OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, fg);
+ if (bg != -1)
+@@ -348,7 +348,7 @@ FUNC_NAME(RADEONDashedLastPel)(ScrnInfoPtr pScrn,
+ int fg)
+ {
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- uint32_t dp_gui_master_cntl = info->dp_gui_master_cntl_clip;
++ uint32_t dp_gui_master_cntl = info->accel_state->dp_gui_master_cntl_clip;
+ ACCEL_PREAMBLE();
+
+ dp_gui_master_cntl &= ~RADEON_GMC_BRUSH_DATATYPE_MASK;
+@@ -362,15 +362,15 @@ FUNC_NAME(RADEONDashedLastPel)(ScrnInfoPtr pScrn,
+ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, dp_gui_master_cntl);
+ OUT_ACCEL_REG(RADEON_DP_CNTL, (RADEON_DST_X_LEFT_TO_RIGHT
+ | RADEON_DST_Y_TOP_TO_BOTTOM));
+- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset |
++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset |
+ ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+ OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, fg);
+ OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x);
+ OUT_ACCEL_REG(RADEON_DST_WIDTH_HEIGHT, (1 << 16) | 1);
+
+ /* Restore old values */
+- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip);
+- OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, info->dash_fg);
++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip);
++ OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, info->accel_state->dash_fg);
+
+ FINISH_ACCEL();
+ BEGIN_ACCEL(2);
+@@ -402,17 +402,17 @@ FUNC_NAME(RADEONSubsequentDashedTwoPointLine)(ScrnInfoPtr pScrn,
+ else shift = deltay;
+
+ shift += phase;
+- shift %= info->dashLen;
++ shift %= info->accel_state->dashLen;
+
+- if ((info->dashPattern >> shift) & 1)
+- FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->dash_fg);
+- else if (info->dash_bg != -1)
+- FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->dash_bg);
++ if ((info->accel_state->dashPattern >> shift) & 1)
++ FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->accel_state->dash_fg);
++ else if (info->accel_state->dash_bg != -1)
++ FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->accel_state->dash_bg);
+ }
+
+ BEGIN_ACCEL(4);
+
+- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset |
++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset |
+ ((info->tilingEnabled && (ya <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+ OUT_ACCEL_REG(RADEON_DST_LINE_START, (ya << 16) | xa);
+ OUT_ACCEL_REG(RADEON_DST_LINE_PATCOUNT, phase);
+@@ -433,7 +433,7 @@ FUNC_NAME(RADEONSetTransparency)(ScrnInfoPtr pScrn,
+ {
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+
+- if ((trans_color != -1) || (info->XAAForceTransBlit == TRUE)) {
++ if ((trans_color != -1) || (info->accel_state->XAAForceTransBlit == TRUE)) {
+ ACCEL_PREAMBLE();
+
+ BEGIN_ACCEL(3);
+@@ -461,20 +461,20 @@ FUNC_NAME(RADEONSetupForScreenToScreenCopy)(ScrnInfoPtr pScrn,
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ ACCEL_PREAMBLE();
+
+- info->xdir = xdir;
+- info->ydir = ydir;
++ info->accel_state->xdir = xdir;
++ info->accel_state->ydir = ydir;
+
+ /* Save for later clipping */
+- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl
+- | RADEON_GMC_BRUSH_NONE
+- | RADEON_GMC_SRC_DATATYPE_COLOR
+- | RADEON_ROP[rop].rop
+- | RADEON_DP_SRC_SOURCE_MEMORY
+- | RADEON_GMC_SRC_PITCH_OFFSET_CNTL);
++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl
++ | RADEON_GMC_BRUSH_NONE
++ | RADEON_GMC_SRC_DATATYPE_COLOR
++ | RADEON_ROP[rop].rop
++ | RADEON_DP_SRC_SOURCE_MEMORY
++ | RADEON_GMC_SRC_PITCH_OFFSET_CNTL);
+
+ BEGIN_ACCEL(3);
+
+- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip);
++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip);
+ OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask);
+ OUT_ACCEL_REG(RADEON_DP_CNTL,
+ ((xdir >= 0 ? RADEON_DST_X_LEFT_TO_RIGHT : 0) |
+@@ -487,7 +487,7 @@ FUNC_NAME(RADEONSetupForScreenToScreenCopy)(ScrnInfoPtr pScrn,
+ RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE);
+ FINISH_ACCEL();
+
+- info->trans_color = trans_color;
++ info->accel_state->trans_color = trans_color;
+ FUNC_NAME(RADEONSetTransparency)(pScrn, trans_color);
+ }
+
+@@ -501,14 +501,14 @@ FUNC_NAME(RADEONSubsequentScreenToScreenCopy)(ScrnInfoPtr pScrn,
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ ACCEL_PREAMBLE();
+
+- if (info->xdir < 0) xa += w - 1, xb += w - 1;
+- if (info->ydir < 0) ya += h - 1, yb += h - 1;
++ if (info->accel_state->xdir < 0) xa += w - 1, xb += w - 1;
++ if (info->accel_state->ydir < 0) ya += h - 1, yb += h - 1;
+
+ BEGIN_ACCEL(5);
+
+- OUT_ACCEL_REG(RADEON_SRC_PITCH_OFFSET, info->dst_pitch_offset |
++ OUT_ACCEL_REG(RADEON_SRC_PITCH_OFFSET, info->accel_state->dst_pitch_offset |
+ ((info->tilingEnabled && (ya <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset |
++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset |
+ ((info->tilingEnabled && (yb <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+ OUT_ACCEL_REG(RADEON_SRC_Y_X, (ya << 16) | xa);
+ OUT_ACCEL_REG(RADEON_DST_Y_X, (yb << 16) | xb);
+@@ -552,19 +552,19 @@ FUNC_NAME(RADEONSetupForMono8x8PatternFill)(ScrnInfoPtr pScrn,
+ #endif
+
+ /* Save for later clipping */
+- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl
+- | (bg == -1
+- ? RADEON_GMC_BRUSH_8X8_MONO_FG_LA
+- : RADEON_GMC_BRUSH_8X8_MONO_FG_BG)
+- | RADEON_ROP[rop].pattern
++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl
++ | (bg == -1
++ ? RADEON_GMC_BRUSH_8X8_MONO_FG_LA
++ : RADEON_GMC_BRUSH_8X8_MONO_FG_BG)
++ | RADEON_ROP[rop].pattern
+ #if X_BYTE_ORDER == X_LITTLE_ENDIAN
+- | RADEON_GMC_BYTE_MSB_TO_LSB
++ | RADEON_GMC_BYTE_MSB_TO_LSB
+ #endif
+- );
++ );
+
+ BEGIN_ACCEL((bg == -1) ? 5 : 6);
+
+- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip);
++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip);
+ OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask);
+ OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, fg);
+ if (bg != -1)
+@@ -600,7 +600,7 @@ FUNC_NAME(RADEONSubsequentMono8x8PatternFillRect)(ScrnInfoPtr pScrn,
+
+ BEGIN_ACCEL(4);
+
+- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset |
++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset |
+ ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+ OUT_ACCEL_REG(RADEON_BRUSH_Y_X, (patterny << 8) | patternx);
+ OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x);
+@@ -625,21 +625,21 @@ FUNC_NAME(RADEONSetupForColor8x8PatternFill)(ScrnInfoPtr pScrn,
+ ACCEL_PREAMBLE();
+
+ /* Save for later clipping */
+- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl
+- | RADEON_GMC_BRUSH_8x8_COLOR
+- | RADEON_GMC_SRC_DATATYPE_COLOR
+- | RADEON_ROP[rop].pattern
+- | RADEON_DP_SRC_SOURCE_MEMORY);
++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl
++ | RADEON_GMC_BRUSH_8x8_COLOR
++ | RADEON_GMC_SRC_DATATYPE_COLOR
++ | RADEON_ROP[rop].pattern
++ | RADEON_DP_SRC_SOURCE_MEMORY);
+
+ BEGIN_ACCEL(3);
+
+- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip);
++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip);
+ OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask);
+ OUT_ACCEL_REG(RADEON_SRC_Y_X, (paty << 16) | patx);
+
+ FINISH_ACCEL();
+
+- info->trans_color = trans_color;
++ info->accel_state->trans_color = trans_color;
+ FUNC_NAME(RADEONSetTransparency)(pScrn, trans_color);
+ }
+
+@@ -655,7 +655,7 @@ FUNC_NAME(RADEONSubsequentColor8x8PatternFillRect)(ScrnInfoPtr pScrn,
+
+ BEGIN_ACCEL(4);
+
+- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset |
++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset |
+ ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+ OUT_ACCEL_REG(RADEON_BRUSH_Y_X, (paty << 16) | patx);
+ OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x);
+@@ -666,7 +666,7 @@ FUNC_NAME(RADEONSubsequentColor8x8PatternFillRect)(ScrnInfoPtr pScrn,
+ #endif
+
+ #ifdef ACCEL_CP
+-#define CP_BUFSIZE (info->indirectBuffer->total/4-10)
++#define CP_BUFSIZE (info->cp->indirectBuffer->total/4-10)
+
+ /* Helper function to write out a HOSTDATA_BLT packet into the indirect
+ * buffer and set the XAA scratch buffer address appropriately.
+@@ -675,41 +675,41 @@ static void
+ RADEONCPScanlinePacket(ScrnInfoPtr pScrn, int bufno)
+ {
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- int chunk_words = info->scanline_hpass * info->scanline_words;
++ int chunk_words = info->accel_state->scanline_hpass * info->accel_state->scanline_words;
+ ACCEL_PREAMBLE();
+
+ if (RADEON_VERBOSE) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "CPScanline Packet h=%d hpass=%d chunkwords=%d\n",
+- info->scanline_h, info->scanline_hpass, chunk_words);
++ info->accel_state->scanline_h, info->accel_state->scanline_hpass, chunk_words);
+ }
+ BEGIN_RING(chunk_words+10);
+
+ OUT_RING(CP_PACKET3(RADEON_CP_PACKET3_CNTL_HOSTDATA_BLT,chunk_words+10-2));
+- OUT_RING(info->dp_gui_master_cntl_clip);
+- OUT_RING(info->dst_pitch_offset |
+- ((info->tilingEnabled && (info->scanline_y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+- OUT_RING((info->scanline_y << 16) |
+- (info->scanline_x1clip & 0xffff));
+- OUT_RING(((info->scanline_y+info->scanline_hpass) << 16) |
+- (info->scanline_x2clip & 0xffff));
+- OUT_RING(info->scanline_fg);
+- OUT_RING(info->scanline_bg);
+- OUT_RING((info->scanline_y << 16) |
+- (info->scanline_x & 0xffff));
+- OUT_RING((info->scanline_hpass << 16) |
+- (info->scanline_w & 0xffff));
++ OUT_RING(info->accel_state->dp_gui_master_cntl_clip);
++ OUT_RING(info->accel_state->dst_pitch_offset |
++ ((info->tilingEnabled && (info->accel_state->scanline_y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
++ OUT_RING((info->accel_state->scanline_y << 16) |
++ (info->accel_state->scanline_x1clip & 0xffff));
++ OUT_RING(((info->accel_state->scanline_y+info->accel_state->scanline_hpass) << 16) |
++ (info->accel_state->scanline_x2clip & 0xffff));
++ OUT_RING(info->accel_state->scanline_fg);
++ OUT_RING(info->accel_state->scanline_bg);
++ OUT_RING((info->accel_state->scanline_y << 16) |
++ (info->accel_state->scanline_x & 0xffff));
++ OUT_RING((info->accel_state->scanline_hpass << 16) |
++ (info->accel_state->scanline_w & 0xffff));
+ OUT_RING(chunk_words);
+
+- info->scratch_buffer[bufno] = (unsigned char *)&__head[__count];
++ info->accel_state->scratch_buffer[bufno] = (unsigned char *)&__head[__count];
+ __count += chunk_words;
+
+ /* The ring can only be advanced after the __head and __count have
+ been adjusted above */
+ FINISH_ACCEL();
+
+- info->scanline_y += info->scanline_hpass;
+- info->scanline_h -= info->scanline_hpass;
++ info->accel_state->scanline_y += info->accel_state->scanline_hpass;
++ info->accel_state->scanline_h -= info->accel_state->scanline_hpass;
+ }
+ #endif
+
+@@ -729,22 +729,22 @@ FUNC_NAME(RADEONSetupForScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr pScrn,
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ ACCEL_PREAMBLE();
+
+- info->scanline_bpp = 0;
++ info->accel_state->scanline_bpp = 0;
+
+ /* Save for later clipping */
+- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl
+- | RADEON_GMC_DST_CLIPPING
+- | RADEON_GMC_BRUSH_NONE
+- | (bg == -1
+- ? RADEON_GMC_SRC_DATATYPE_MONO_FG_LA
+- : RADEON_GMC_SRC_DATATYPE_MONO_FG_BG)
+- | RADEON_ROP[rop].rop
++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl
++ | RADEON_GMC_DST_CLIPPING
++ | RADEON_GMC_BRUSH_NONE
++ | (bg == -1
++ ? RADEON_GMC_SRC_DATATYPE_MONO_FG_LA
++ : RADEON_GMC_SRC_DATATYPE_MONO_FG_BG)
++ | RADEON_ROP[rop].rop
+ #if X_BYTE_ORDER == X_LITTLE_ENDIAN
+- | RADEON_GMC_BYTE_LSB_TO_MSB
++ | RADEON_GMC_BYTE_LSB_TO_MSB
+ #else
+- | RADEON_GMC_BYTE_MSB_TO_LSB
++ | RADEON_GMC_BYTE_MSB_TO_LSB
+ #endif
+- | RADEON_DP_SRC_SOURCE_HOST_DATA);
++ | RADEON_DP_SRC_SOURCE_HOST_DATA);
+
+ #ifdef ACCEL_MMIO
+
+@@ -755,15 +755,15 @@ FUNC_NAME(RADEONSetupForScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr pScrn,
+
+ OUT_ACCEL_REG(RADEON_RBBM_GUICNTL, RADEON_HOST_DATA_SWAP_NONE);
+ #endif
+- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip);
++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip);
+ OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask);
+ OUT_ACCEL_REG(RADEON_DP_SRC_FRGD_CLR, fg);
+ OUT_ACCEL_REG(RADEON_DP_SRC_BKGD_CLR, bg);
+
+ #else /* ACCEL_CP */
+
+- info->scanline_fg = fg;
+- info->scanline_bg = bg;
++ info->accel_state->scanline_fg = fg;
++ info->accel_state->scanline_bg = bg;
+
+ #if X_BYTE_ORDER == X_LITTLE_ENDIAN
+ BEGIN_ACCEL(1);
+@@ -796,31 +796,31 @@ FUNC_NAME(RADEONSubsequentScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr
+ #ifdef ACCEL_MMIO
+ ACCEL_PREAMBLE();
+
+- info->scanline_h = h;
+- info->scanline_words = (w + 31) >> 5;
++ info->accel_state->scanline_h = h;
++ info->accel_state->scanline_words = (w + 31) >> 5;
+
+ #ifdef __alpha__
+ /* Always use indirect for Alpha */
+ if (0)
+ #else
+- if ((info->scanline_words * h) <= 9)
++ if ((info->accel_state->scanline_words * h) <= 9)
+ #endif
+ {
+ /* Turn on direct for less than 9 dword colour expansion */
+- info->scratch_buffer[0] =
++ info->accel_state->scratch_buffer[0] =
+ (unsigned char *)(ADDRREG(RADEON_HOST_DATA_LAST)
+- - (info->scanline_words - 1));
+- info->scanline_direct = 1;
++ - (info->accel_state->scanline_words - 1));
++ info->accel_state->scanline_direct = 1;
+ } else {
+ /* Use indirect for anything else */
+- info->scratch_buffer[0] = info->scratch_save;
+- info->scanline_direct = 0;
++ info->accel_state->scratch_buffer[0] = info->accel_state->scratch_save;
++ info->accel_state->scanline_direct = 0;
+ }
+
+- BEGIN_ACCEL(5 + (info->scanline_direct ?
+- (info->scanline_words * h) : 0));
++ BEGIN_ACCEL(5 + (info->accel_state->scanline_direct ?
++ (info->accel_state->scanline_words * h) : 0));
+
+- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset |
++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset |
+ ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+ OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, (y << 16) | ((x+skipleft)
+ & 0xffff));
+@@ -833,17 +833,17 @@ FUNC_NAME(RADEONSubsequentScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr
+
+ #else /* ACCEL_CP */
+
+- info->scanline_x = x;
+- info->scanline_y = y;
++ info->accel_state->scanline_x = x;
++ info->accel_state->scanline_y = y;
+ /* Have to pad the width here and use clipping engine */
+- info->scanline_w = (w + 31) & ~31;
+- info->scanline_h = h;
++ info->accel_state->scanline_w = (w + 31) & ~31;
++ info->accel_state->scanline_h = h;
+
+- info->scanline_x1clip = x + skipleft;
+- info->scanline_x2clip = x + w;
++ info->accel_state->scanline_x1clip = x + skipleft;
++ info->accel_state->scanline_x2clip = x + w;
+
+- info->scanline_words = info->scanline_w / 32;
+- info->scanline_hpass = min(h,(CP_BUFSIZE/info->scanline_words));
++ info->accel_state->scanline_words = info->accel_state->scanline_w / 32;
++ info->accel_state->scanline_hpass = min(h,(CP_BUFSIZE/info->accel_state->scanline_words));
+
+ RADEONCPScanlinePacket(pScrn, 0);
+
+@@ -859,21 +859,21 @@ FUNC_NAME(RADEONSubsequentScanline)(ScrnInfoPtr pScrn,
+ {
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ #ifdef ACCEL_MMIO
+- uint32_t *p = (pointer)info->scratch_buffer[bufno];
++ uint32_t *p = (pointer)info->accel_state->scratch_buffer[bufno];
+ int i;
+- int left = info->scanline_words;
++ int left = info->accel_state->scanline_words;
+ volatile uint32_t *d;
+ ACCEL_PREAMBLE();
+
+- if (info->scanline_direct) return;
++ if (info->accel_state->scanline_direct) return;
+
+- --info->scanline_h;
++ --info->accel_state->scanline_h;
+
+ while (left) {
+ write_mem_barrier();
+ if (left <= 8) {
+ /* Last scanline - finish write to DATA_LAST */
+- if (info->scanline_h == 0) {
++ if (info->accel_state->scanline_h == 0) {
+ BEGIN_ACCEL(left);
+ /* Unrolling doesn't improve performance */
+ for (d = ADDRREG(RADEON_HOST_DATA_LAST) - (left - 1); left; --left)
+@@ -900,25 +900,25 @@ FUNC_NAME(RADEONSubsequentScanline)(ScrnInfoPtr pScrn,
+
+ #if X_BYTE_ORDER == X_BIG_ENDIAN
+ if (info->ChipFamily >= CHIP_FAMILY_R300) {
+- if (info->scanline_bpp == 16) {
+- RADEONCopySwap(info->scratch_buffer[bufno],
+- info->scratch_buffer[bufno],
+- info->scanline_words << 2,
++ if (info->accel_state->scanline_bpp == 16) {
++ RADEONCopySwap(info->accel_state->scratch_buffer[bufno],
++ info->accel_state->scratch_buffer[bufno],
++ info->accel_state->scanline_words << 2,
+ RADEON_HOST_DATA_SWAP_HDW);
+- } else if (info->scanline_bpp < 15) {
+- RADEONCopySwap(info->scratch_buffer[bufno],
+- info->scratch_buffer[bufno],
+- info->scanline_words << 2,
++ } else if (info->accel_state->scanline_bpp < 15) {
++ RADEONCopySwap(info->accel_state->scratch_buffer[bufno],
++ info->accel_state->scratch_buffer[bufno],
++ info->accel_state->scanline_words << 2,
+ RADEON_HOST_DATA_SWAP_32BIT);
+ }
+ }
+ #endif
+
+- if (--info->scanline_hpass) {
+- info->scratch_buffer[bufno] += 4 * info->scanline_words;
+- } else if (info->scanline_h) {
+- info->scanline_hpass =
+- min(info->scanline_h,(CP_BUFSIZE/info->scanline_words));
++ if (--info->accel_state->scanline_hpass) {
++ info->accel_state->scratch_buffer[bufno] += 4 * info->accel_state->scanline_words;
++ } else if (info->accel_state->scanline_h) {
++ info->accel_state->scanline_hpass =
++ min(info->accel_state->scanline_h,(CP_BUFSIZE/info->accel_state->scanline_words));
+ RADEONCPScanlinePacket(pScrn, bufno);
+ }
+
+@@ -937,16 +937,16 @@ FUNC_NAME(RADEONSetupForScanlineImageWrite)(ScrnInfoPtr pScrn,
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ ACCEL_PREAMBLE();
+
+- info->scanline_bpp = bpp;
++ info->accel_state->scanline_bpp = bpp;
+
+ /* Save for later clipping */
+- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl
+- | RADEON_GMC_DST_CLIPPING
+- | RADEON_GMC_BRUSH_NONE
+- | RADEON_GMC_SRC_DATATYPE_COLOR
+- | RADEON_ROP[rop].rop
+- | RADEON_GMC_BYTE_MSB_TO_LSB
+- | RADEON_DP_SRC_SOURCE_HOST_DATA);
++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl
++ | RADEON_GMC_DST_CLIPPING
++ | RADEON_GMC_BRUSH_NONE
++ | RADEON_GMC_SRC_DATATYPE_COLOR
++ | RADEON_ROP[rop].rop
++ | RADEON_GMC_BYTE_MSB_TO_LSB
++ | RADEON_DP_SRC_SOURCE_HOST_DATA);
+
+ #ifdef ACCEL_MMIO
+
+@@ -962,7 +962,7 @@ FUNC_NAME(RADEONSetupForScanlineImageWrite)(ScrnInfoPtr pScrn,
+ else
+ OUT_ACCEL_REG(RADEON_RBBM_GUICNTL, RADEON_HOST_DATA_SWAP_NONE);
+ #endif
+- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip);
++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip);
+
+ #else /* ACCEL_CP */
+
+@@ -984,7 +984,7 @@ FUNC_NAME(RADEONSetupForScanlineImageWrite)(ScrnInfoPtr pScrn,
+
+ FINISH_ACCEL();
+
+- info->trans_color = trans_color;
++ info->accel_state->trans_color = trans_color;
+ FUNC_NAME(RADEONSetTransparency)(pScrn, trans_color);
+ }
+
+@@ -1007,31 +1007,31 @@ FUNC_NAME(RADEONSubsequentScanlineImageWriteRect)(ScrnInfoPtr pScrn,
+ if (pScrn->bitsPerPixel == 8) shift = 3;
+ else if (pScrn->bitsPerPixel == 16) shift = 1;
+
+- info->scanline_h = h;
+- info->scanline_words = (w * info->scanline_bpp + 31) >> 5;
++ info->accel_state->scanline_h = h;
++ info->accel_state->scanline_words = (w * info->accel_state->scanline_bpp + 31) >> 5;
+
+ #ifdef __alpha__
+ /* Always use indirect for Alpha */
+ if (0)
+ #else
+- if ((info->scanline_words * h) <= 9)
++ if ((info->accel_state->scanline_words * h) <= 9)
+ #endif
+ {
+ /* Turn on direct for less than 9 dword colour expansion */
+- info->scratch_buffer[0]
++ info->accel_state->scratch_buffer[0]
+ = (unsigned char *)(ADDRREG(RADEON_HOST_DATA_LAST)
+- - (info->scanline_words - 1));
+- info->scanline_direct = 1;
++ - (info->accel_state->scanline_words - 1));
++ info->accel_state->scanline_direct = 1;
+ } else {
+ /* Use indirect for anything else */
+- info->scratch_buffer[0] = info->scratch_save;
+- info->scanline_direct = 0;
++ info->accel_state->scratch_buffer[0] = info->accel_state->scratch_save;
++ info->accel_state->scanline_direct = 0;
+ }
+
+- BEGIN_ACCEL(5 + (info->scanline_direct ?
+- (info->scanline_words * h) : 0));
++ BEGIN_ACCEL(5 + (info->accel_state->scanline_direct ?
++ (info->accel_state->scanline_words * h) : 0));
+
+- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset |
++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset |
+ ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0));
+ OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, (y << 16) | ((x+skipleft)
+ & 0xffff));
+@@ -1050,17 +1050,17 @@ FUNC_NAME(RADEONSubsequentScanlineImageWriteRect)(ScrnInfoPtr pScrn,
+ if (pScrn->bitsPerPixel == 8) pad = 3;
+ else if (pScrn->bitsPerPixel == 16) pad = 1;
+
+- info->scanline_x = x;
+- info->scanline_y = y;
++ info->accel_state->scanline_x = x;
++ info->accel_state->scanline_y = y;
+ /* Have to pad the width here and use clipping engine */
+- info->scanline_w = (w + pad) & ~pad;
+- info->scanline_h = h;
++ info->accel_state->scanline_w = (w + pad) & ~pad;
++ info->accel_state->scanline_h = h;
+
+- info->scanline_x1clip = x + skipleft;
+- info->scanline_x2clip = x + w;
++ info->accel_state->scanline_x1clip = x + skipleft;
++ info->accel_state->scanline_x2clip = x + w;
+
+- info->scanline_words = (w * info->scanline_bpp + 31) / 32;
+- info->scanline_hpass = min(h,(CP_BUFSIZE/info->scanline_words));
++ info->accel_state->scanline_words = (w * info->accel_state->scanline_bpp + 31) / 32;
++ info->accel_state->scanline_hpass = min(h,(CP_BUFSIZE/info->accel_state->scanline_words));
+
+ RADEONCPScanlinePacket(pScrn, 0);
+
+@@ -1110,7 +1110,7 @@ FUNC_NAME(RADEONSetClippingRectangle)(ScrnInfoPtr pScrn,
+
+ BEGIN_ACCEL(3);
+
+- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, (info->dp_gui_master_cntl_clip
++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, (info->accel_state->dp_gui_master_cntl_clip
+ | RADEON_GMC_DST_CLIPPING));
+ OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, tmp1);
+ OUT_ACCEL_REG(RADEON_SC_BOTTOM_RIGHT, tmp2);
+@@ -1122,7 +1122,7 @@ FUNC_NAME(RADEONSetClippingRectangle)(ScrnInfoPtr pScrn,
+ RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE);
+ FINISH_ACCEL();
+
+- FUNC_NAME(RADEONSetTransparency)(pScrn, info->trans_color);
++ FUNC_NAME(RADEONSetTransparency)(pScrn, info->accel_state->trans_color);
+ }
+
+ /* Disable the clipping rectangle */
+@@ -1134,7 +1134,7 @@ FUNC_NAME(RADEONDisableClipping)(ScrnInfoPtr pScrn)
+
+ BEGIN_ACCEL(3);
+
+- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip);
++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip);
+ OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, 0);
+ OUT_ACCEL_REG(RADEON_SC_BOTTOM_RIGHT, (RADEON_DEFAULT_SC_RIGHT_MAX |
+ RADEON_DEFAULT_SC_BOTTOM_MAX));
+@@ -1146,7 +1146,7 @@ FUNC_NAME(RADEONDisableClipping)(ScrnInfoPtr pScrn)
+ RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE);
+ FINISH_ACCEL();
+
+- FUNC_NAME(RADEONSetTransparency)(pScrn, info->trans_color);
++ FUNC_NAME(RADEONSetTransparency)(pScrn, info->accel_state->trans_color);
+ }
+
+ void
+@@ -1203,12 +1203,12 @@ FUNC_NAME(RADEONAccelInit)(ScreenPtr pScreen, XAAInfoRecPtr a)
+ | ROP_NEEDS_SOURCE
+ | LEFT_EDGE_CLIPPING_NEGATIVE_X);
+ a->NumScanlineColorExpandBuffers = 1;
+- a->ScanlineColorExpandBuffers = info->scratch_buffer;
+- if (!info->scratch_save)
+- info->scratch_save
++ a->ScanlineColorExpandBuffers = info->accel_state->scratch_buffer;
++ if (!info->accel_state->scratch_save)
++ info->accel_state->scratch_save
+ = xalloc(((pScrn->virtualX+31)/32*4)
+ + (pScrn->virtualX * info->CurrentLayout.pixel_bytes));
+- info->scratch_buffer[0] = info->scratch_save;
++ info->accel_state->scratch_buffer[0] = info->accel_state->scratch_save;
+ a->SetupForScanlineCPUToScreenColorExpandFill
+ = FUNC_NAME(RADEONSetupForScanlineCPUToScreenColorExpandFill);
+ a->SubsequentScanlineCPUToScreenColorExpandFill
+@@ -1299,7 +1299,7 @@ FUNC_NAME(RADEONAccelInit)(ScreenPtr pScreen, XAAInfoRecPtr a)
+
+ /* ImageWrite */
+ a->NumScanlineImageWriteBuffers = 1;
+- a->ScanlineImageWriteBuffers = info->scratch_buffer;
++ a->ScanlineImageWriteBuffers = info->accel_state->scratch_buffer;
+ a->SetupForScanlineImageWrite
+ = FUNC_NAME(RADEONSetupForScanlineImageWrite);
+ a->SubsequentScanlineImageWriteRect
+diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
+index 20aa722..851014b 100644
+--- a/src/radeon_atombios.c
++++ b/src/radeon_atombios.c
+@@ -501,11 +501,11 @@ rhdAtomASICInit(atomBiosHandlePtr handle)
+ RHDAtomBiosFunc(handle->scrnIndex, handle,
+ GET_DEFAULT_ENGINE_CLOCK,
+ &data);
+- asicInit.sASICInitClocks.ulDefaultEngineClock = data.val / 10;/*in 10 Khz*/
++ asicInit.sASICInitClocks.ulDefaultEngineClock = cpu_to_le32(data.val / 10);/*in 10 Khz*/
+ RHDAtomBiosFunc(handle->scrnIndex, handle,
+ GET_DEFAULT_MEMORY_CLOCK,
+ &data);
+- asicInit.sASICInitClocks.ulDefaultMemoryClock = data.val / 10;/*in 10 Khz*/
++ asicInit.sASICInitClocks.ulDefaultMemoryClock = cpu_to_le32(data.val / 10);/*in 10 Khz*/
+ data.exec.dataSpace = NULL;
+ data.exec.index = 0x0;
+ data.exec.pspace = &asicInit;
+@@ -609,17 +609,6 @@ rhdAtomInit(atomBiosHandlePtr unused1, AtomBiosRequestID unused2,
+ #endif
+ handle->BIOSImageSize = BIOSImageSize;
+
+-# if ATOM_BIOS_PARSER
+- /* Try to find out if BIOS has been posted (either by system or int10 */
+- if (!rhdAtomGetFbBaseAndSize(handle, NULL, NULL)) {
+- /* run AsicInit */
+- if (!rhdAtomASICInit(handle))
+- xf86DrvMsg(scrnIndex, X_WARNING,
+- "%s: AsicInit failed. Won't be able to obtain in VRAM "
+- "FB scratch space\n",__func__);
+- }
+-# endif
+-
+ data->atomhandle = handle;
+ return ATOM_SUCCESS;
+
+@@ -654,12 +643,18 @@ rhdAtomVramInfoQuery(atomBiosHandlePtr handle, AtomBiosRequestID func,
+
+ switch (func) {
+ case GET_FW_FB_START:
+- *val = le32_to_cpu(atomDataPtr->VRAM_UsageByFirmware
+- ->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware);
++ if (atomDataPtr->VRAM_UsageByFirmware)
++ *val = le32_to_cpu(atomDataPtr->VRAM_UsageByFirmware
++ ->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware);
++ else
++ return ATOM_NOT_IMPLEMENTED;
+ break;
+ case GET_FW_FB_SIZE:
+- *val = le16_to_cpu(atomDataPtr->VRAM_UsageByFirmware
+- ->asFirmwareVramReserveInfo[0].usFirmwareUseInKb);
++ if (atomDataPtr->VRAM_UsageByFirmware)
++ *val = le16_to_cpu(atomDataPtr->VRAM_UsageByFirmware
++ ->asFirmwareVramReserveInfo[0].usFirmwareUseInKb);
++ else
++ return ATOM_NOT_IMPLEMENTED;
+ break;
+ default:
+ return ATOM_NOT_IMPLEMENTED;
+@@ -1391,35 +1386,57 @@ const int object_connector_convert[] =
+ CONNECTOR_DISPLAY_PORT,
+ };
+
+-static void
+-rhdAtomParseI2CRecord(atomBiosHandlePtr handle,
+- ATOM_I2C_RECORD *Record, int *ddc_line)
++xf86MonPtr radeon_atom_get_edid(xf86OutputPtr output)
+ {
+- ErrorF(" %s: I2C Record: %s[%x] EngineID: %x I2CAddr: %x\n",
+- __func__,
+- Record->sucI2cId.bfHW_Capable ? "HW_Line" : "GPIO_ID",
+- Record->sucI2cId.bfI2C_LineMux,
+- Record->sucI2cId.bfHW_EngineID,
+- Record->ucI2CAddr);
+-
+- if (!*(unsigned char *)&(Record->sucI2cId))
+- *ddc_line = 0;
+- else {
+- if (Record->ucI2CAddr != 0)
+- return;
+-
+- if (Record->sucI2cId.bfHW_Capable) {
+- switch(Record->sucI2cId.bfI2C_LineMux) {
+- case 0: *ddc_line = 0x7e40; break;
+- case 1: *ddc_line = 0x7e50; break;
+- case 2: *ddc_line = 0x7e30; break;
+- default: break;
+- }
+- return;
+- } else {
+- /* add GPIO pin parsing */
+- }
+- }
++ RADEONOutputPrivatePtr radeon_output = output->driver_private;
++ RADEONInfoPtr info = RADEONPTR(output->scrn);
++ READ_EDID_FROM_HW_I2C_DATA_PS_ALLOCATION edid_data;
++ AtomBiosArgRec data;
++ unsigned char *space;
++ int i2c_clock = 50;
++ int engine_clk = info->sclk * 100;
++ int prescale;
++ unsigned char *edid;
++ xf86MonPtr mon = NULL;
++
++ if (!radeon_output->ddc_i2c.hw_capable)
++ return mon;
++
++ if (info->atomBIOS->fbBase)
++ edid = (unsigned char *)info->FB + info->atomBIOS->fbBase;
++ else if (info->atomBIOS->scratchBase)
++ edid = (unsigned char *)info->atomBIOS->scratchBase;
++ else
++ return mon;
++
++ memset(edid, 0, ATOM_EDID_RAW_DATASIZE);
++
++ if (info->ChipFamily == CHIP_FAMILY_R520)
++ prescale = (127 << 8) + (engine_clk * 10) / (4 * 127 * i2c_clock);
++ else if (info->ChipFamily < CHIP_FAMILY_R600)
++ prescale = (((engine_clk * 10)/(4 * 128 * 100) + 1) << 8) + 128;
++ else
++ prescale = (info->pll.reference_freq * 10) / i2c_clock;
++
++ edid_data.usPrescale = prescale;
++ edid_data.usVRAMAddress = 0;
++ edid_data.ucSlaveAddr = 0xa0;
++ edid_data.ucLineNumber = radeon_output->ddc_i2c.hw_line;
++
++ data.exec.index = GetIndexIntoMasterTable(COMMAND, ReadEDIDFromHWAssistedI2C);
++ data.exec.dataSpace = (void *)&space;
++ data.exec.pspace = &edid_data;
++
++ if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS)
++ ErrorF("Atom Get EDID success\n");
++ else
++ ErrorF("Atom Get EDID failed\n");
++
++ if (edid[1] == 0xff)
++ mon = xf86InterpretEDID(output->scrn->scrnIndex, edid);
++
++ return mon;
++
+ }
+
+ static RADEONI2CBusRec
+@@ -1450,36 +1467,53 @@ RADEONLookupGPIOLineForDDC(ScrnInfoPtr pScrn, uint8_t id)
+ i2c.put_data_reg = le16_to_cpu(gpio.usDataEnRegisterIndex) * 4;
+ i2c.get_clk_reg = le16_to_cpu(gpio.usClkY_RegisterIndex) * 4;
+ i2c.get_data_reg = le16_to_cpu(gpio.usDataY_RegisterIndex) * 4;
++ i2c.a_clk_reg = le16_to_cpu(gpio.usClkA_RegisterIndex) * 4;
++ i2c.a_data_reg = le16_to_cpu(gpio.usDataA_RegisterIndex) * 4;
+ i2c.mask_clk_mask = (1 << gpio.ucClkMaskShift);
+ i2c.mask_data_mask = (1 << gpio.ucDataMaskShift);
+ i2c.put_clk_mask = (1 << gpio.ucClkEnShift);
+ i2c.put_data_mask = (1 << gpio.ucDataEnShift);
+ i2c.get_clk_mask = (1 << gpio.ucClkY_Shift);
+ i2c.get_data_mask = (1 << gpio.ucDataY_Shift);
++ i2c.a_clk_mask = (1 << gpio.ucClkA_Shift);
++ i2c.a_data_mask = (1 << gpio.ucDataA_Shift);
++ i2c.hw_line = gpio.sucI2cId.sbfAccess.bfI2C_LineMux;
++ i2c.hw_capable = gpio.sucI2cId.sbfAccess.bfHW_Capable;
+ i2c.valid = TRUE;
+
+ #if 0
++ ErrorF("id: %d\n", id);
++ ErrorF("hw capable: %d\n", gpio.sucI2cId.sbfAccess.bfHW_Capable);
++ ErrorF("hw engine id: %d\n", gpio.sucI2cId.sbfAccess.bfHW_EngineID);
++ ErrorF("line mux %d\n", gpio.sucI2cId.sbfAccess.bfI2C_LineMux);
+ ErrorF("mask_clk_reg: 0x%x\n", gpio.usClkMaskRegisterIndex * 4);
+ ErrorF("mask_data_reg: 0x%x\n", gpio.usDataMaskRegisterIndex * 4);
+ ErrorF("put_clk_reg: 0x%x\n", gpio.usClkEnRegisterIndex * 4);
+ ErrorF("put_data_reg: 0x%x\n", gpio.usDataEnRegisterIndex * 4);
+ ErrorF("get_clk_reg: 0x%x\n", gpio.usClkY_RegisterIndex * 4);
+ ErrorF("get_data_reg: 0x%x\n", gpio.usDataY_RegisterIndex * 4);
+- ErrorF("other_clk_reg: 0x%x\n", gpio.usClkA_RegisterIndex * 4);
+- ErrorF("other_data_reg: 0x%x\n", gpio.usDataA_RegisterIndex * 4);
++ ErrorF("a_clk_reg: 0x%x\n", gpio.usClkA_RegisterIndex * 4);
++ ErrorF("a_data_reg: 0x%x\n", gpio.usDataA_RegisterIndex * 4);
+ ErrorF("mask_clk_mask: %d\n", gpio.ucClkMaskShift);
+ ErrorF("mask_data_mask: %d\n", gpio.ucDataMaskShift);
+ ErrorF("put_clk_mask: %d\n", gpio.ucClkEnShift);
+ ErrorF("put_data_mask: %d\n", gpio.ucDataEnShift);
+ ErrorF("get_clk_mask: %d\n", gpio.ucClkY_Shift);
+ ErrorF("get_data_mask: %d\n", gpio.ucDataY_Shift);
+- ErrorF("other_clk_mask: %d\n", gpio.ucClkA_Shift);
+- ErrorF("other_data_mask: %d\n", gpio.ucDataA_Shift);
++ ErrorF("a_clk_mask: %d\n", gpio.ucClkA_Shift);
++ ErrorF("a_data_mask: %d\n", gpio.ucDataA_Shift);
+ #endif
+
+ return i2c;
+ }
+
++static RADEONI2CBusRec
++rhdAtomParseI2CRecord(ScrnInfoPtr pScrn, atomBiosHandlePtr handle,
++ ATOM_I2C_RECORD *Record)
++{
++ return RADEONLookupGPIOLineForDDC(pScrn, Record->sucI2cId.bfI2C_LineMux);
++}
++
+ Bool
+ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn)
+ {
+@@ -1489,7 +1523,7 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn)
+ atomDataTablesPtr atomDataPtr;
+ ATOM_CONNECTOR_OBJECT_TABLE *con_obj;
+ ATOM_INTEGRATED_SYSTEM_INFO_V2 *igp_obj = NULL;
+- int i, j, ddc_line = 0;
++ int i, j;
+
+ atomDataPtr = info->atomBIOS->atomDataPtr;
+ if (!rhdAtomGetTableRevisionAndSize((ATOM_COMMON_TABLE_HEADER *)(atomDataPtr->Object_Header), &crev, &frev, &size))
+@@ -1560,15 +1594,23 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn)
+ 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:
+@@ -1577,8 +1619,12 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn)
+ 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:
+@@ -1617,10 +1663,8 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn)
+ ErrorF("record type %d\n", Record->ucRecordType);
+ switch (Record->ucRecordType) {
+ case ATOM_I2C_RECORD_TYPE:
+- rhdAtomParseI2CRecord(info->atomBIOS,
+- (ATOM_I2C_RECORD *)Record,
+- &ddc_line);
+- info->BiosConnector[i].ddc_i2c = atom_setup_i2c_bus(ddc_line);
++ info->BiosConnector[i].ddc_i2c = rhdAtomParseI2CRecord(pScrn, info->atomBIOS,
++ (ATOM_I2C_RECORD *)Record);
+ break;
+ case ATOM_HPD_INT_RECORD_TYPE:
+ break;
+@@ -1636,6 +1680,71 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn)
+ }
+
+ 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;
+@@ -1751,6 +1860,30 @@ static void RADEONApplyATOMQuirks(ScrnInfoPtr pScrn, int index)
+ }
+ }
+
++ /* Falcon NW laptop lists vga ddc line for LVDS */
++ if ((info->Chipset == PCI_CHIP_RV410_5653) &&
++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x1462) &&
++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x0291)) {
++ if (info->BiosConnector[index].ConnectorType == CONNECTOR_LVDS) {
++ info->BiosConnector[index].ddc_i2c.valid = FALSE;
++ }
++ }
++
++ /* Funky macbooks */
++ if ((info->Chipset == PCI_CHIP_RV530_71C5) &&
++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x106b) &&
++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x0080)) {
++ if ((index == ATOM_DEVICE_CRT1_INDEX) ||
++ (index == ATOM_DEVICE_CRT2_INDEX) ||
++ (index == ATOM_DEVICE_DFP2_INDEX))
++ info->BiosConnector[index].valid = FALSE;
++
++ if (index == ATOM_DEVICE_DFP1_INDEX) {
++ info->BiosConnector[index].DACType = DAC_TVDAC;
++ info->BiosConnector[index].devices |= (1 << ATOM_DEVICE_CRT2_INDEX);
++ }
++ }
++
+ }
+
+ Bool
+@@ -2027,9 +2160,12 @@ RHDAtomBiosFunc(int scrnIndex, atomBiosHandlePtr handle,
+ VOID*
+ CailAllocateMemory(VOID *CAIL,UINT16 size)
+ {
++ void *ret;
+ CAILFUNC(CAIL);
+
+- return malloc(size);
++ ret = malloc(size);
++ memset(ret, 0, size);
++ return ret;
+ }
+
+ VOID
+@@ -2256,4 +2392,15 @@ atombios_get_command_table_version(atomBiosHandlePtr atomBIOS, int index, int *m
+ }
+
+
++UINT16 ATOM_BSWAP16(UINT16 x)
++{
++ return bswap_16(x);
++}
++
++UINT32 ATOM_BSWAP32(UINT32 x)
++{
++ return bswap_32(x);
++}
++
++
+ #endif /* ATOM_BIOS */
+diff --git a/src/radeon_atombios.h b/src/radeon_atombios.h
+index fe7044d..fbe8dd5 100644
+--- a/src/radeon_atombios.h
++++ b/src/radeon_atombios.h
+@@ -125,12 +125,18 @@ atombios_static_pwrmgt_setup(ScrnInfoPtr pScrn, int enable);
+ extern Bool
+ RADEONGetATOMTVInfo(xf86OutputPtr output);
+
++extern Bool
++RADEONGetATOMLVDSInfo(xf86OutputPtr output);
++
+ extern int
+ atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode);
+
+ extern void
+ atombios_get_command_table_version(atomBiosHandlePtr atomBIOS, int index, int *major, int *minor);
+
++extern xf86MonPtr
++radeon_atom_get_edid(xf86OutputPtr output);
++
+ Bool
+ rhdAtomASICInit(atomBiosHandlePtr handle);
+
+diff --git a/src/radeon_atomwrapper.c b/src/radeon_atomwrapper.c
+index 3e7ae01..bed1471 100644
+--- a/src/radeon_atomwrapper.c
++++ b/src/radeon_atomwrapper.c
+@@ -31,6 +31,7 @@
+
+ #define INT32 INT32
+ #include "CD_Common_Types.h"
++#include "atombios.h"
+ #include "CD_Definitions.h"
+
+
+diff --git a/src/radeon_bios.c b/src/radeon_bios.c
+index 529dda7..22bb5ed 100644
+--- a/src/radeon_bios.c
++++ b/src/radeon_bios.c
+@@ -266,6 +266,26 @@ radeon_read_unposted_bios(ScrnInfoPtr pScrn)
+ return ret;
+ }
+
++Bool
++radeon_card_posted(ScrnInfoPtr pScrn)
++{
++ RADEONInfoPtr info = RADEONPTR(pScrn);
++ unsigned char *RADEONMMIO = info->MMIO;
++ uint32_t reg;
++
++ if (IS_AVIVO_VARIANT) {
++ reg = INREG(AVIVO_D1CRTC_CONTROL) | INREG(AVIVO_D2CRTC_CONTROL);
++ if (reg & AVIVO_CRTC_EN)
++ return TRUE;
++ } else {
++ reg = INREG(RADEON_CRTC_GEN_CNTL) | INREG(RADEON_CRTC2_GEN_CNTL);
++ if (reg & RADEON_CRTC_EN)
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
+ /* Read the Video BIOS block and the FP registers (if applicable). */
+ Bool
+ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10)
+@@ -273,6 +293,7 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10)
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ int tmp;
+ unsigned short dptr;
++ Bool posted = TRUE;
+
+ #ifdef XSERVER_LIBPCIACCESS
+ int size = info->PciInfo->rom_size > RADEON_VBIOS_SIZE ? info->PciInfo->rom_size : RADEON_VBIOS_SIZE;
+@@ -291,6 +312,7 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10)
+ RADEON_VBIOS_SIZE);
+ } else if (!radeon_read_bios(pScrn)) {
+ (void)radeon_read_unposted_bios(pScrn);
++ posted = FALSE;
+ }
+ }
+
+@@ -326,7 +348,7 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10)
+ info->VBIOS = NULL;
+ return FALSE;
+ }
+-
++
+ tmp = info->ROMHeaderStart + 4;
+ if ((RADEON_BIOS8(tmp) == 'A' &&
+ RADEON_BIOS8(tmp+1) == 'T' &&
+@@ -344,51 +366,65 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10)
+ info->IsAtomBios ? "ATOM":"Legacy");
+
+ if (info->IsAtomBios) {
+- AtomBiosArgRec atomBiosArg;
++ AtomBiosArgRec atomBiosArg;
+
+- if (RHDAtomBiosFunc(pScrn->scrnIndex, NULL, ATOMBIOS_INIT, &atomBiosArg)
+- == ATOM_SUCCESS) {
+- info->atomBIOS = atomBiosArg.atomhandle;
+- }
++ if (RHDAtomBiosFunc(pScrn->scrnIndex, NULL, ATOMBIOS_INIT, &atomBiosArg)
++ == ATOM_SUCCESS) {
++ info->atomBIOS = atomBiosArg.atomhandle;
++ }
+
+- atomBiosArg.fb.start = info->FbFreeStart;
+- atomBiosArg.fb.size = info->FbFreeSize;
+- if (RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ATOMBIOS_ALLOCATE_FB_SCRATCH,
++ atomBiosArg.fb.start = info->FbFreeStart;
++ atomBiosArg.fb.size = info->FbFreeSize;
++ if (RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ATOMBIOS_ALLOCATE_FB_SCRATCH,
+ &atomBiosArg) == ATOM_SUCCESS) {
+
+ info->FbFreeStart = atomBiosArg.fb.start;
+ info->FbFreeSize = atomBiosArg.fb.size;
+- }
+-
+- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_ENGINE_CLOCK,
+- &atomBiosArg);
+- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_MEMORY_CLOCK,
+- &atomBiosArg);
+- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
+- GET_MAX_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg);
+- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
+- GET_MIN_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg);
+- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
+- GET_MAX_PIXEL_CLOCK_PLL_INPUT, &atomBiosArg);
+- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
++ }
++
++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_ENGINE_CLOCK,
++ &atomBiosArg);
++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_MEMORY_CLOCK,
++ &atomBiosArg);
++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
++ GET_MAX_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg);
++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
++ GET_MIN_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg);
++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
++ GET_MAX_PIXEL_CLOCK_PLL_INPUT, &atomBiosArg);
++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
+ GET_MIN_PIXEL_CLOCK_PLL_INPUT, &atomBiosArg);
+- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
+ GET_MAX_PIXEL_CLK, &atomBiosArg);
+- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
+- GET_REF_CLOCK, &atomBiosArg);
++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS,
++ GET_REF_CLOCK, &atomBiosArg);
+
+ info->MasterDataStart = RADEON_BIOS16 (info->ROMHeaderStart + 32);
+ }
++
++ /* We are a bit too quick at using this "unposted" to re-post the
++ * card. This causes some problems with VT switch on some machines,
++ * so let's work around this for now by only POSTing if none of the
++ * CRTCs are enabled
++ */
++ if ((!posted) && info->VBIOS) {
++ posted = radeon_card_posted(pScrn);
++ }
++
++ if ((!posted) && info->VBIOS) {
++ if (info->IsAtomBios) {
++ if (!rhdAtomASICInit(info->atomBIOS))
++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
++ "%s: AsicInit failed.\n",__func__);
++ } else {
+ #if 0
+- else {
+- /* non-primary card may need posting */
+- if (!pInt10) {
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Attempting to POST via BIOS tables\n");
++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Attempting to POST via legacy BIOS tables\n");
+ RADEONGetBIOSInitTableOffsets(pScrn);
+ RADEONPostCardFromBIOSTables(pScrn);
++#endif
+ }
+ }
+-#endif
++
+ return TRUE;
+ }
+
+@@ -397,7 +433,7 @@ static Bool RADEONGetATOMConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
+ RADEONInfoPtr info = RADEONPTR (pScrn);
+
+ if (!info->VBIOS) return FALSE;
+-
++
+ if (RADEONGetATOMConnectorInfoFromBIOSObject(pScrn))
+ return TRUE;
+
+@@ -411,28 +447,41 @@ static void RADEONApplyLegacyQuirks(ScrnInfoPtr pScrn, int index)
+ {
+ RADEONInfoPtr info = RADEONPTR (pScrn);
+
+- /* on XPRESS chips, CRT2_DDC and MONID_DCC both use the
+- * MONID gpio, but use different pins.
+- * CRT2_DDC uses the standard pinout, MONID_DDC uses
+- * something else.
++ /* For RS300/RS350/RS400 chips, there is no primary DAC. Force VGA port to use TVDAC
++ * Also there is no internal TMDS
+ */
++ if ((info->ChipFamily == CHIP_FAMILY_RS300) ||
++ (info->ChipFamily == CHIP_FAMILY_RS400) ||
++ (info->ChipFamily == CHIP_FAMILY_RS480)) {
++ info->BiosConnector[index].DACType = DAC_TVDAC;
++ info->BiosConnector[index].TMDSType = TMDS_EXT;
++ }
++
++ /* XPRESS DDC quirks */
+ if ((info->ChipFamily == CHIP_FAMILY_RS400 ||
+ info->ChipFamily == CHIP_FAMILY_RS480) &&
+- info->BiosConnector[index].ConnectorType == CONNECTOR_VGA &&
+ info->BiosConnector[index].ddc_i2c.mask_clk_reg == RADEON_GPIO_CRT2_DDC) {
+ info->BiosConnector[index].ddc_i2c = legacy_setup_i2c_bus(RADEON_GPIO_MONID);
+- }
+-
+- /* XPRESS desktop chips seem to have a proprietary connector listed for
+- * DVI-D, try and do the right thing here.
+- */
+- if ((!info->IsMobility) &&
+- (info->BiosConnector[index].ConnectorType == CONNECTOR_LVDS)) {
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+- "Proprietary connector found, assuming DVI-D\n");
+- info->BiosConnector[index].DACType = DAC_NONE;
+- info->BiosConnector[index].TMDSType = TMDS_EXT;
+- info->BiosConnector[index].ConnectorType = CONNECTOR_DVI_D;
++ } else if ((info->ChipFamily == CHIP_FAMILY_RS400 ||
++ info->ChipFamily == CHIP_FAMILY_RS480) &&
++ info->BiosConnector[index].ddc_i2c.mask_clk_reg == RADEON_GPIO_MONID) {
++ info->BiosConnector[index].ddc_i2c.valid = TRUE;
++ info->BiosConnector[index].ddc_i2c.mask_clk_mask = (0x20 << 8);
++ info->BiosConnector[index].ddc_i2c.mask_data_mask = 0x80;
++ info->BiosConnector[index].ddc_i2c.a_clk_mask = (0x20 << 8);
++ info->BiosConnector[index].ddc_i2c.a_data_mask = 0x80;
++ info->BiosConnector[index].ddc_i2c.put_clk_mask = (0x20 << 8);
++ info->BiosConnector[index].ddc_i2c.put_data_mask = 0x80;
++ info->BiosConnector[index].ddc_i2c.get_clk_mask = (0x20 << 8);
++ info->BiosConnector[index].ddc_i2c.get_data_mask = 0x80;
++ info->BiosConnector[index].ddc_i2c.mask_clk_reg = RADEON_GPIOPAD_MASK;
++ info->BiosConnector[index].ddc_i2c.mask_data_reg = RADEON_GPIOPAD_MASK;
++ info->BiosConnector[index].ddc_i2c.a_clk_reg = RADEON_GPIOPAD_A;
++ info->BiosConnector[index].ddc_i2c.a_data_reg = RADEON_GPIOPAD_A;
++ info->BiosConnector[index].ddc_i2c.put_clk_reg = RADEON_GPIOPAD_EN;
++ info->BiosConnector[index].ddc_i2c.put_data_reg = RADEON_GPIOPAD_EN;
++ info->BiosConnector[index].ddc_i2c.get_clk_reg = RADEON_LCD_GPIO_Y_REG;
++ info->BiosConnector[index].ddc_i2c.get_data_reg = RADEON_LCD_GPIO_Y_REG;
+ }
+
+ /* Certain IBM chipset RN50s have a BIOS reporting two VGAs,
+@@ -454,6 +503,16 @@ static void RADEONApplyLegacyQuirks(ScrnInfoPtr pScrn, int index)
+ }
+ }
+
++ /* X300 card with extra non-existent DVI port */
++ if (info->Chipset == PCI_CHIP_RV370_5B60 &&
++ PCI_SUB_VENDOR_ID(info->PciInfo) == 0x17af &&
++ PCI_SUB_DEVICE_ID(info->PciInfo) == 0x201e &&
++ index == 2) {
++ if (info->BiosConnector[index].ConnectorType == CONNECTOR_DVI_I) {
++ info->BiosConnector[index].valid = FALSE;
++ }
++ }
++
+ }
+
+ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
+@@ -479,7 +538,7 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
+ ConnectorType = (tmp >> 12) & 0xf;
+ switch (ConnectorType) {
+ case CONNECTOR_PROPRIETARY_LEGACY:
+- info->BiosConnector[i].ConnectorType = CONNECTOR_LVDS;
++ info->BiosConnector[i].ConnectorType = CONNECTOR_DVI_D;
+ break;
+ case CONNECTOR_CRT_LEGACY:
+ info->BiosConnector[i].ConnectorType = CONNECTOR_VGA;
+@@ -528,10 +587,6 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
+ else
+ info->BiosConnector[i].DACType = DAC_PRIMARY;
+
+- /* For RS300/RS350/RS400 chips, there is no primary DAC. Force VGA port to use TVDAC*/
+- if (info->IsIGP)
+- info->BiosConnector[i].DACType = DAC_TVDAC;
+-
+ if ((tmp >> 4) & 0x1)
+ info->BiosConnector[i].TMDSType = TMDS_EXT;
+ else
+@@ -560,7 +615,10 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
+ }
+
+ /* check LVDS table */
+- if (info->IsMobility) {
++ /* RS4xx can be mobile or desktop so check the connectors */
++ if (info->IsMobility ||
++ info->ChipFamily == CHIP_FAMILY_RS400 ||
++ info->ChipFamily == CHIP_FAMILY_RS480) {
+ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x40);
+ if (offset) {
+ info->BiosConnector[4].valid = TRUE;
+@@ -591,10 +649,10 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
+ break;
+ case DDC_LCD:
+ info->BiosConnector[4].ddc_i2c = legacy_setup_i2c_bus(RADEON_LCD_GPIO_MASK);
+- info->BiosConnector[4].ddc_i2c.mask_clk_mask =
+- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07);
+- info->BiosConnector[4].ddc_i2c.mask_data_mask =
+- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07);
++ info->BiosConnector[4].ddc_i2c.mask_clk_mask = RADEON_BIOS32(tmp0 + 0x03);
++ info->BiosConnector[4].ddc_i2c.mask_data_mask = RADEON_BIOS32(tmp0 + 0x07);
++ info->BiosConnector[4].ddc_i2c.a_clk_mask = RADEON_BIOS32(tmp0 + 0x03);
++ info->BiosConnector[4].ddc_i2c.a_data_mask = RADEON_BIOS32(tmp0 + 0x07);
+ info->BiosConnector[4].ddc_i2c.put_clk_mask = RADEON_BIOS32(tmp0 + 0x03);
+ info->BiosConnector[4].ddc_i2c.put_data_mask = RADEON_BIOS32(tmp0 + 0x07);
+ info->BiosConnector[4].ddc_i2c.get_clk_mask = RADEON_BIOS32(tmp0 + 0x03);
+@@ -602,10 +660,10 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
+ break;
+ case DDC_GPIO:
+ info->BiosConnector[4].ddc_i2c = legacy_setup_i2c_bus(RADEON_MDGPIO_EN_REG);
+- info->BiosConnector[4].ddc_i2c.mask_clk_mask =
+- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07);
+- info->BiosConnector[4].ddc_i2c.mask_data_mask =
+- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07);
++ info->BiosConnector[4].ddc_i2c.mask_clk_mask = RADEON_BIOS32(tmp0 + 0x03);
++ info->BiosConnector[4].ddc_i2c.mask_data_mask = RADEON_BIOS32(tmp0 + 0x07);
++ info->BiosConnector[4].ddc_i2c.a_clk_mask = RADEON_BIOS32(tmp0 + 0x03);
++ info->BiosConnector[4].ddc_i2c.a_data_mask = RADEON_BIOS32(tmp0 + 0x07);
+ info->BiosConnector[4].ddc_i2c.put_clk_mask = RADEON_BIOS32(tmp0 + 0x03);
+ info->BiosConnector[4].ddc_i2c.put_data_mask = RADEON_BIOS32(tmp0 + 0x07);
+ info->BiosConnector[4].ddc_i2c.get_clk_mask = RADEON_BIOS32(tmp0 + 0x03);
+@@ -917,30 +975,9 @@ Bool RADEONGetLVDSInfoFromBIOS (xf86OutputPtr output)
+
+ 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);
+
+@@ -963,7 +1000,7 @@ Bool RADEONGetLVDSInfoFromBIOS (xf86OutputPtr output)
+ 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;
+@@ -1118,6 +1155,50 @@ Bool RADEONGetTMDSInfoFromBIOS (xf86OutputPtr output)
+ return FALSE;
+ }
+
++static RADEONI2CBusRec
++RADEONLookupI2CBlock(ScrnInfoPtr pScrn, int id)
++{
++ RADEONInfoPtr info = RADEONPTR (pScrn);
++ int offset, blocks, i;
++ RADEONI2CBusRec i2c;
++
++ memset(&i2c, 0, sizeof(RADEONI2CBusRec));
++ i2c.valid = FALSE;
++
++ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x70);
++ if (offset) {
++ blocks = RADEON_BIOS8(offset + 2);
++ for (i = 0; i < blocks; i++) {
++ int i2c_id = RADEON_BIOS8(offset + 3 + (i * 5) + 0);
++ if (id == i2c_id) {
++ int reg = RADEON_BIOS16(offset + 3 + (i * 5) + 1) * 4;
++ int clock_shift = RADEON_BIOS8(offset + 3 + (i * 5) + 3);
++ int data_shift = RADEON_BIOS8(offset + 3 + (i * 5) + 4);
++
++ i2c.mask_clk_mask = (1 << clock_shift);
++ i2c.mask_data_mask = (1 << data_shift);
++ i2c.a_clk_mask = (1 << clock_shift);
++ i2c.a_data_mask = (1 << data_shift);
++ i2c.put_clk_mask = (1 << clock_shift);
++ i2c.put_data_mask = (1 << data_shift);
++ i2c.get_clk_mask = (1 << clock_shift);
++ i2c.get_data_mask = (1 << data_shift);
++ i2c.mask_clk_reg = reg;
++ i2c.mask_data_reg = reg;
++ i2c.a_clk_reg = reg;
++ i2c.a_data_reg = reg;
++ i2c.put_clk_reg = reg;
++ i2c.put_data_reg = reg;
++ i2c.get_clk_reg = reg;
++ i2c.get_data_reg = reg;
++ i2c.valid = TRUE;
++ break;
++ }
++ }
++ }
++ return i2c;
++}
++
+ Bool RADEONGetExtTMDSInfoFromBIOS (xf86OutputPtr output)
+ {
+ ScrnInfoPtr pScrn = output->scrn;
+@@ -1129,6 +1210,52 @@ Bool RADEONGetExtTMDSInfoFromBIOS (xf86OutputPtr output)
+
+ if (info->IsAtomBios) {
+ return FALSE;
++ } else if (info->IsIGP) {
++ /* RS4xx TMDS stuff is in the mobile table */
++ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x42);
++ if (offset) {
++ int rev = RADEON_BIOS8(offset);
++ if (rev >= 6) {
++ offset = RADEON_BIOS16(offset + 0x17);
++ if (offset) {
++ offset = RADEON_BIOS16(offset + 2);
++ rev = RADEON_BIOS8(offset);
++ if (offset && (rev > 1)) {
++ int blocks = RADEON_BIOS8(offset + 3);
++ int index = offset + 4;
++ radeon_output->dvo_i2c.valid = FALSE;
++ while (blocks > 0) {
++ int id = RADEON_BIOS16(index);
++ index += 2;
++ switch (id >> 13) {
++ case 0:
++ index += 6;
++ break;
++ case 2:
++ index += 10;
++ break;
++ case 3:
++ index += 2;
++ break;
++ case 4:
++ index += 2;
++ break;
++ case 6:
++ radeon_output->dvo_i2c_slave_addr =
++ RADEON_BIOS16(index) & 0xff;
++ index += 2;
++ radeon_output->dvo_i2c =
++ RADEONLookupI2CBlock(pScrn, RADEON_BIOS8(index));
++ return TRUE;
++ default:
++ break;
++ }
++ blocks--;
++ }
++ }
++ }
++ }
++ }
+ } else {
+ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x58);
+ if (offset) {
+@@ -1148,10 +1275,11 @@ Bool RADEONGetExtTMDSInfoFromBIOS (xf86OutputPtr output)
+ radeon_output->dvo_i2c = legacy_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
+ else if (gpio_reg == 4)
+ radeon_output->dvo_i2c = legacy_setup_i2c_bus(RADEON_GPIO_CRT2_DDC);
+- else if (gpio_reg == 5)
++ else if (gpio_reg == 5) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "unsupported MM gpio_reg\n");
+- else {
++ return FALSE;
++ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Unknown gpio reg: %d\n", gpio_reg);
+ return FALSE;
+@@ -1179,12 +1307,82 @@ Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output)
+ unsigned char *RADEONMMIO = info->MMIO;
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
+ int offset, index, id;
+- uint32_t val, reg, andmask, ormask;
++ uint32_t val, reg, and_mask, or_mask;
+
+ if (!info->VBIOS) return FALSE;
+
+ if (info->IsAtomBios) {
+ return FALSE;
++ } else if (info->IsIGP) {
++ /* RS4xx TMDS stuff is in the mobile table */
++ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x42);
++ if (offset) {
++ int rev = RADEON_BIOS8(offset);
++ if (rev >= 6) {
++ offset = RADEON_BIOS16(offset + 0x17);
++ if (offset) {
++ offset = RADEON_BIOS16(offset + 2);
++ rev = RADEON_BIOS8(offset);
++ if (offset && (rev > 1)) {
++ int blocks = RADEON_BIOS8(offset + 3);
++ index = offset + 4;
++ while (blocks > 0) {
++ id = RADEON_BIOS16(index);
++ index += 2;
++ switch (id >> 13) {
++ case 0:
++ reg = (id & 0x1fff) * 4;
++ val = RADEON_BIOS32(index);
++ index += 4;
++ ErrorF("MMIO: 0x%x 0x%x\n",
++ (unsigned)reg, (unsigned)val);
++ OUTREG(reg, val);
++ break;
++ case 2:
++ reg = (id & 0x1fff) * 4;
++ and_mask = RADEON_BIOS32(index);
++ index += 4;
++ or_mask = RADEON_BIOS32(index);
++ index += 4;
++ ErrorF("MMIO mask: 0x%x 0x%x 0x%x\n",
++ (unsigned)reg, (unsigned)and_mask, (unsigned)or_mask);
++ val = INREG(reg);
++ val = (val & and_mask) | or_mask;
++ OUTREG(reg, val);
++ break;
++ case 3:
++ val = RADEON_BIOS16(index);
++ index += 2;
++ ErrorF("delay: %u\n", (unsigned)val);
++ usleep(val);
++ break;
++ case 4:
++ val = RADEON_BIOS16(index);
++ index += 2;
++ ErrorF("delay: %u\n", (unsigned)val * 1000);
++ usleep(val * 1000);
++ break;
++ case 6:
++ index++;
++ reg = RADEON_BIOS8(index);
++ index++;
++ val = RADEON_BIOS8(index);
++ index++;
++ ErrorF("i2c write: 0x%x, 0x%x\n", (unsigned)reg,
++ (unsigned)val);
++ RADEONDVOWriteByte(radeon_output->DVOChip, reg, val);
++ break;
++ default:
++ ErrorF("unknown id %d\n", id>>13);
++ return FALSE;
++ }
++ blocks--;
++ }
++ return TRUE;
++ }
++ }
++ }
++ }
+ } else {
+ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x58);
+ if (offset) {
+@@ -1194,24 +1392,24 @@ Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output)
+ index += 2;
+ switch(id >> 13) {
+ case 0:
+- reg = id & 0x1fff;
++ reg = (id & 0x1fff) * 4;
+ val = RADEON_BIOS32(index);
+ index += 4;
+- ErrorF("WRITE INDEXED: 0x%x 0x%x\n",
++ ErrorF("MMIO: 0x%x 0x%x\n",
+ (unsigned)reg, (unsigned)val);
+- /*OUTREG(reg, val);*/
++ OUTREG(reg, val);
+ break;
+ case 2:
+- reg = id & 0x1fff;
+- andmask = RADEON_BIOS32(index);
++ reg = (id & 0x1fff) * 4;
++ and_mask = RADEON_BIOS32(index);
+ index += 4;
+- ormask = RADEON_BIOS32(index);
++ or_mask = RADEON_BIOS32(index);
+ index += 4;
+ val = INREG(reg);
+- val = (val & andmask) | ormask;
+- ErrorF("MASK DIRECT: 0x%x 0x%x 0x%x\n",
+- (unsigned)reg, (unsigned)andmask, (unsigned)ormask);
+- /*OUTREG(reg, val);*/
++ val = (val & and_mask) | or_mask;
++ ErrorF("MMIO mask: 0x%x 0x%x 0x%x\n",
++ (unsigned)reg, (unsigned)and_mask, (unsigned)or_mask);
++ OUTREG(reg, val);
+ break;
+ case 4:
+ val = RADEON_BIOS16(index);
+@@ -1221,15 +1419,15 @@ Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output)
+ break;
+ case 5:
+ reg = id & 0x1fff;
+- andmask = RADEON_BIOS32(index);
++ and_mask = RADEON_BIOS32(index);
+ index += 4;
+- ormask = RADEON_BIOS32(index);
++ or_mask = RADEON_BIOS32(index);
+ index += 4;
+- ErrorF("MASK PLL: 0x%x 0x%x 0x%x\n",
+- (unsigned)reg, (unsigned)andmask, (unsigned)ormask);
+- /*val = INPLL(pScrn, reg);
+- val = (val & andmask) | ormask;
+- OUTPLL(pScrn, reg, val);*/
++ ErrorF("PLL mask: 0x%x 0x%x 0x%x\n",
++ (unsigned)reg, (unsigned)and_mask, (unsigned)or_mask);
++ val = INPLL(pScrn, reg);
++ val = (val & and_mask) | or_mask;
++ OUTPLL(pScrn, reg, val);
+ break;
+ case 6:
+ reg = id & 0x1fff;
+diff --git a/src/radeon_chipinfo_gen.h b/src/radeon_chipinfo_gen.h
+index ed3174a..daaf717 100644
+--- a/src/radeon_chipinfo_gen.h
++++ b/src/radeon_chipinfo_gen.h
+@@ -1,6 +1,7 @@
+ /* This file is autogenerated please do not edit */
+ RADEONCardInfo RADEONCards[] = {
+ { 0x3150, CHIP_FAMILY_RV380, 1, 0, 0, 0, 0 },
++ { 0x3151, CHIP_FAMILY_RV380, 0, 0, 0, 0, 0 },
+ { 0x3152, CHIP_FAMILY_RV380, 1, 0, 0, 0, 0 },
+ { 0x3154, CHIP_FAMILY_RV380, 1, 0, 0, 0, 0 },
+ { 0x3E50, CHIP_FAMILY_RV380, 0, 0, 0, 0, 0 },
+@@ -250,6 +251,9 @@ RADEONCardInfo RADEONCards[] = {
+ { 0x940A, CHIP_FAMILY_R600, 0, 0, 0, 0, 0 },
+ { 0x940B, CHIP_FAMILY_R600, 0, 0, 0, 0, 0 },
+ { 0x940F, CHIP_FAMILY_R600, 0, 0, 0, 0, 0 },
++ { 0x9440, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 },
++ { 0x9441, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 },
++ { 0x9442, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 },
+ { 0x94C0, CHIP_FAMILY_RV610, 0, 0, 0, 0, 0 },
+ { 0x94C1, CHIP_FAMILY_RV610, 0, 0, 0, 0, 0 },
+ { 0x94C3, CHIP_FAMILY_RV610, 0, 0, 0, 0, 0 },
+@@ -267,6 +271,7 @@ RADEONCardInfo RADEONCards[] = {
+ { 0x9507, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 },
+ { 0x950F, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 },
+ { 0x9511, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 },
++ { 0x9515, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 },
+ { 0x9580, CHIP_FAMILY_RV630, 0, 0, 0, 0, 0 },
+ { 0x9581, CHIP_FAMILY_RV630, 1, 0, 0, 0, 0 },
+ { 0x9583, CHIP_FAMILY_RV630, 1, 0, 0, 0, 0 },
+diff --git a/src/radeon_chipset_gen.h b/src/radeon_chipset_gen.h
+index d1761d2..79b094a 100644
+--- a/src/radeon_chipset_gen.h
++++ b/src/radeon_chipset_gen.h
+@@ -1,6 +1,7 @@
+ /* This file is autogenerated please do not edit */
+ static SymTabRec RADEONChipsets[] = {
+ { PCI_CHIP_RV380_3150, "ATI Radeon Mobility X600 (M24) 3150 (PCIE)" },
++ { PCI_CHIP_RV380_3151, "ATI FireMV 2400 (PCI)" },
+ { PCI_CHIP_RV380_3152, "ATI Radeon Mobility X300 (M24) 3152 (PCIE)" },
+ { PCI_CHIP_RV380_3154, "ATI FireGL M24 GL 3154 (PCIE)" },
+ { PCI_CHIP_RV380_3E50, "ATI Radeon X600 (RV380) 3E50 (PCIE)" },
+@@ -250,6 +251,9 @@ static SymTabRec RADEONChipsets[] = {
+ { PCI_CHIP_R600_940A, "ATI FireGL V8650" },
+ { PCI_CHIP_R600_940B, "ATI FireGL V8600" },
+ { PCI_CHIP_R600_940F, "ATI FireGL V7600" },
++ { PCI_CHIP_RV770_9440, "ATI Radeon 4800 Series" },
++ { PCI_CHIP_RV770_9441, "ATI Radeon HD 4870 x2" },
++ { PCI_CHIP_RV770_9442, "ATI Radeon 4800 Series" },
+ { PCI_CHIP_RV610_94C0, "ATI RV610" },
+ { PCI_CHIP_RV610_94C1, "ATI Radeon HD 2400 XT" },
+ { PCI_CHIP_RV610_94C3, "ATI Radeon HD 2400 Pro" },
+@@ -267,6 +271,7 @@ static SymTabRec RADEONChipsets[] = {
+ { PCI_CHIP_RV670_9507, "ATI RV670" },
+ { PCI_CHIP_RV670_950F, "ATI Radeon HD3870 X2" },
+ { PCI_CHIP_RV670_9511, "ATI FireGL V7700" },
++ { PCI_CHIP_RV670_9515, "ATI Radeon HD3850" },
+ { PCI_CHIP_RV630_9580, "ATI RV630" },
+ { PCI_CHIP_RV630_9581, "ATI Mobility Radeon HD 2600" },
+ { PCI_CHIP_RV630_9583, "ATI Mobility Radeon HD 2600 XT" },
+diff --git a/src/radeon_common.h b/src/radeon_common.h
+deleted file mode 100644
+index 193c1f9..0000000
+--- a/src/radeon_common.h
++++ /dev/null
+@@ -1,496 +0,0 @@
+-/* radeon_common.h -- common header definitions for Radeon 2D/3D/DRM suite
+- *
+- * Copyright 2000 VA Linux Systems, Inc., Fremont, California.
+- * Copyright 2002 Tungsten Graphics, 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 NONINFRINGEMENT. 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.
+- *
+- * Author:
+- * Gareth Hughes <gareth@valinux.com>
+- * Kevin E. Martin <martin@valinux.com>
+- * Keith Whitwell <keith@tungstengraphics.com>
+- *
+- * Converted to common header format:
+- * Jens Owen <jens@tungstengraphics.com>
+- *
+- */
+-
+-#ifndef _RADEON_COMMON_H_
+-#define _RADEON_COMMON_H_
+-
+-#include <inttypes.h>
+-#include "xf86drm.h"
+-
+-/* WARNING: If you change any of these defines, make sure to change
+- * the kernel include file as well (radeon_drm.h)
+- */
+-
+-/* Driver specific DRM command indices
+- * NOTE: these are not OS specific, but they are driver specific
+- */
+-#define DRM_RADEON_CP_INIT 0x00
+-#define DRM_RADEON_CP_START 0x01
+-#define DRM_RADEON_CP_STOP 0x02
+-#define DRM_RADEON_CP_RESET 0x03
+-#define DRM_RADEON_CP_IDLE 0x04
+-#define DRM_RADEON_RESET 0x05
+-#define DRM_RADEON_FULLSCREEN 0x06
+-#define DRM_RADEON_SWAP 0x07
+-#define DRM_RADEON_CLEAR 0x08
+-#define DRM_RADEON_VERTEX 0x09
+-#define DRM_RADEON_INDICES 0x0a
+-#define DRM_RADEON_STIPPLE 0x0c
+-#define DRM_RADEON_INDIRECT 0x0d
+-#define DRM_RADEON_TEXTURE 0x0e
+-#define DRM_RADEON_VERTEX2 0x0f
+-#define DRM_RADEON_CMDBUF 0x10
+-#define DRM_RADEON_GETPARAM 0x11
+-#define DRM_RADEON_FLIP 0x12
+-#define DRM_RADEON_ALLOC 0x13
+-#define DRM_RADEON_FREE 0x14
+-#define DRM_RADEON_INIT_HEAP 0x15
+-#define DRM_RADEON_IRQ_EMIT 0x16
+-#define DRM_RADEON_IRQ_WAIT 0x17
+-#define DRM_RADEON_CP_RESUME 0x18
+-#define DRM_RADEON_SETPARAM 0x19
+-#define DRM_RADEON_SURF_ALLOC 0x1a
+-#define DRM_RADEON_SURF_FREE 0x1b
+-#define DRM_RADEON_MAX_DRM_COMMAND_INDEX 0x39
+-
+-
+-#define RADEON_FRONT 0x1
+-#define RADEON_BACK 0x2
+-#define RADEON_DEPTH 0x4
+-#define RADEON_STENCIL 0x8
+-
+-#define RADEON_CLEAR_X1 0
+-#define RADEON_CLEAR_Y1 1
+-#define RADEON_CLEAR_X2 2
+-#define RADEON_CLEAR_Y2 3
+-#define RADEON_CLEAR_DEPTH 4
+-
+-
+-typedef struct {
+- enum {
+- DRM_RADEON_INIT_CP = 0x01,
+- DRM_RADEON_CLEANUP_CP = 0x02,
+- DRM_RADEON_INIT_R200_CP = 0x03,
+- DRM_RADEON_INIT_R300_CP = 0x04
+- } func;
+- unsigned long sarea_priv_offset;
+- int is_pci;
+- int cp_mode;
+- int gart_size;
+- int ring_size;
+- int usec_timeout;
+-
+- unsigned int fb_bpp;
+- unsigned int front_offset, front_pitch;
+- unsigned int back_offset, back_pitch;
+- unsigned int depth_bpp;
+- unsigned int depth_offset, depth_pitch;
+-
+- unsigned long fb_offset;
+- unsigned long mmio_offset;
+- unsigned long ring_offset;
+- unsigned long ring_rptr_offset;
+- unsigned long buffers_offset;
+- unsigned long gart_textures_offset;
+-} drmRadeonInit;
+-
+-typedef struct {
+- int flush;
+- int idle;
+-} drmRadeonCPStop;
+-
+-typedef struct {
+- int idx;
+- int start;
+- int end;
+- int discard;
+-} drmRadeonIndirect;
+-
+-typedef union drmRadeonClearR {
+- float f[5];
+- unsigned int ui[5];
+-} drmRadeonClearRect;
+-
+-typedef struct drmRadeonClearT {
+- unsigned int flags;
+- unsigned int clear_color;
+- unsigned int clear_depth;
+- unsigned int color_mask;
+- unsigned int depth_mask; /* misnamed field: should be stencil */
+- drmRadeonClearRect *depth_boxes;
+-} drmRadeonClearType;
+-
+-typedef struct drmRadeonFullscreenT {
+- enum {
+- RADEON_INIT_FULLSCREEN = 0x01,
+- RADEON_CLEANUP_FULLSCREEN = 0x02
+- } func;
+-} drmRadeonFullscreenType;
+-
+-typedef struct {
+- unsigned int *mask;
+-} drmRadeonStipple;
+-
+-typedef struct {
+- unsigned int x;
+- unsigned int y;
+- unsigned int width;
+- unsigned int height;
+- const void *data;
+-} drmRadeonTexImage;
+-
+-typedef struct {
+- unsigned int offset;
+- int pitch;
+- int format;
+- int width; /* Texture image coordinates */
+- int height;
+- drmRadeonTexImage *image;
+-} drmRadeonTexture;
+-
+-
+-#define RADEON_MAX_TEXTURE_UNITS 3
+-
+-/* Layout matches drm_radeon_state_t in linux drm_radeon.h.
+- */
+-typedef struct {
+- struct {
+- unsigned int pp_misc; /* 0x1c14 */
+- unsigned int pp_fog_color;
+- unsigned int re_solid_color;
+- unsigned int rb3d_blendcntl;
+- unsigned int rb3d_depthoffset;
+- unsigned int rb3d_depthpitch;
+- unsigned int rb3d_zstencilcntl;
+- unsigned int pp_cntl; /* 0x1c38 */
+- unsigned int rb3d_cntl;
+- unsigned int rb3d_coloroffset;
+- unsigned int re_width_height;
+- unsigned int rb3d_colorpitch;
+- } context;
+- struct {
+- unsigned int se_cntl;
+- } setup1;
+- struct {
+- unsigned int se_coord_fmt; /* 0x1c50 */
+- } vertex;
+- struct {
+- unsigned int re_line_pattern; /* 0x1cd0 */
+- unsigned int re_line_state;
+- unsigned int se_line_width; /* 0x1db8 */
+- } line;
+- struct {
+- unsigned int pp_lum_matrix; /* 0x1d00 */
+- unsigned int pp_rot_matrix_0; /* 0x1d58 */
+- unsigned int pp_rot_matrix_1;
+- } bumpmap;
+- struct {
+- unsigned int rb3d_stencilrefmask; /* 0x1d7c */
+- unsigned int rb3d_ropcntl;
+- unsigned int rb3d_planemask;
+- } mask;
+- struct {
+- unsigned int se_vport_xscale; /* 0x1d98 */
+- unsigned int se_vport_xoffset;
+- unsigned int se_vport_yscale;
+- unsigned int se_vport_yoffset;
+- unsigned int se_vport_zscale;
+- unsigned int se_vport_zoffset;
+- } viewport;
+- struct {
+- unsigned int se_cntl_status; /* 0x2140 */
+- } setup2;
+- struct {
+- unsigned int re_top_left; /*ignored*/ /* 0x26c0 */
+- unsigned int re_misc;
+- } misc;
+- struct {
+- unsigned int pp_txfilter;
+- unsigned int pp_txformat;
+- unsigned int pp_txoffset;
+- unsigned int pp_txcblend;
+- unsigned int pp_txablend;
+- unsigned int pp_tfactor;
+- unsigned int pp_border_color;
+- } texture[RADEON_MAX_TEXTURE_UNITS];
+- struct {
+- unsigned int se_zbias_factor;
+- unsigned int se_zbias_constant;
+- } zbias;
+- unsigned int dirty;
+-} drmRadeonState;
+-
+-/* 1.1 vertex ioctl. Used in compatibility modes.
+- */
+-typedef struct {
+- int prim;
+- int idx; /* Index of vertex buffer */
+- int count; /* Number of vertices in buffer */
+- int discard; /* Client finished with buffer? */
+-} drmRadeonVertex;
+-
+-typedef struct {
+- unsigned int start;
+- unsigned int finish;
+- unsigned int prim:8;
+- unsigned int stateidx:8;
+- unsigned int numverts:16; /* overloaded as offset/64 for elt prims */
+- unsigned int vc_format;
+-} drmRadeonPrim;
+-
+-typedef struct {
+- int idx; /* Index of vertex buffer */
+- int discard; /* Client finished with buffer? */
+- int nr_states;
+- drmRadeonState *state;
+- int nr_prims;
+- drmRadeonPrim *prim;
+-} drmRadeonVertex2;
+-
+-#define RADEON_MAX_STATES 16
+-#define RADEON_MAX_PRIMS 64
+-
+-/* Command buffer. Replace with true dma stream?
+- */
+-typedef struct {
+- int bufsz;
+- char *buf;
+- int nbox;
+- drm_clip_rect_t *boxes;
+-} drmRadeonCmdBuffer;
+-
+-/* New style per-packet identifiers for use in cmd_buffer ioctl with
+- * the RADEON_EMIT_PACKET command. Comments relate new packets to old
+- * state bits and the packet size:
+- */
+-#define RADEON_EMIT_PP_MISC 0 /* context/7 */
+-#define RADEON_EMIT_PP_CNTL 1 /* context/3 */
+-#define RADEON_EMIT_RB3D_COLORPITCH 2 /* context/1 */
+-#define RADEON_EMIT_RE_LINE_PATTERN 3 /* line/2 */
+-#define RADEON_EMIT_SE_LINE_WIDTH 4 /* line/1 */
+-#define RADEON_EMIT_PP_LUM_MATRIX 5 /* bumpmap/1 */
+-#define RADEON_EMIT_PP_ROT_MATRIX_0 6 /* bumpmap/2 */
+-#define RADEON_EMIT_RB3D_STENCILREFMASK 7 /* masks/3 */
+-#define RADEON_EMIT_SE_VPORT_XSCALE 8 /* viewport/6 */
+-#define RADEON_EMIT_SE_CNTL 9 /* setup/2 */
+-#define RADEON_EMIT_SE_CNTL_STATUS 10 /* setup/1 */
+-#define RADEON_EMIT_RE_MISC 11 /* misc/1 */
+-#define RADEON_EMIT_PP_TXFILTER_0 12 /* tex0/6 */
+-#define RADEON_EMIT_PP_BORDER_COLOR_0 13 /* tex0/1 */
+-#define RADEON_EMIT_PP_TXFILTER_1 14 /* tex1/6 */
+-#define RADEON_EMIT_PP_BORDER_COLOR_1 15 /* tex1/1 */
+-#define RADEON_EMIT_PP_TXFILTER_2 16 /* tex2/6 */
+-#define RADEON_EMIT_PP_BORDER_COLOR_2 17 /* tex2/1 */
+-#define RADEON_EMIT_SE_ZBIAS_FACTOR 18 /* zbias/2 */
+-#define RADEON_EMIT_SE_TCL_OUTPUT_VTX_FMT 19 /* tcl/11 */
+-#define RADEON_EMIT_SE_TCL_MATERIAL_EMMISSIVE_RED 20 /* material/17 */
+-#define R200_EMIT_PP_TXCBLEND_0 21 /* tex0/4 */
+-#define R200_EMIT_PP_TXCBLEND_1 22 /* tex1/4 */
+-#define R200_EMIT_PP_TXCBLEND_2 23 /* tex2/4 */
+-#define R200_EMIT_PP_TXCBLEND_3 24 /* tex3/4 */
+-#define R200_EMIT_PP_TXCBLEND_4 25 /* tex4/4 */
+-#define R200_EMIT_PP_TXCBLEND_5 26 /* tex5/4 */
+-#define R200_EMIT_PP_TXCBLEND_6 27 /* /4 */
+-#define R200_EMIT_PP_TXCBLEND_7 28 /* /4 */
+-#define R200_EMIT_TCL_LIGHT_MODEL_CTL_0 29 /* tcl/6 */
+-#define R200_EMIT_TFACTOR_0 30 /* tf/6 */
+-#define R200_EMIT_VTX_FMT_0 31 /* vtx/4 */
+-#define R200_EMIT_VAP_CTL 32 /* vap/1 */
+-#define R200_EMIT_MATRIX_SELECT_0 33 /* msl/5 */
+-#define R200_EMIT_TEX_PROC_CTL_2 34 /* tcg/5 */
+-#define R200_EMIT_TCL_UCP_VERT_BLEND_CTL 35 /* tcl/1 */
+-#define R200_EMIT_PP_TXFILTER_0 36 /* tex0/6 */
+-#define R200_EMIT_PP_TXFILTER_1 37 /* tex1/6 */
+-#define R200_EMIT_PP_TXFILTER_2 38 /* tex2/6 */
+-#define R200_EMIT_PP_TXFILTER_3 39 /* tex3/6 */
+-#define R200_EMIT_PP_TXFILTER_4 40 /* tex4/6 */
+-#define R200_EMIT_PP_TXFILTER_5 41 /* tex5/6 */
+-#define R200_EMIT_PP_TXOFFSET_0 42 /* tex0/1 */
+-#define R200_EMIT_PP_TXOFFSET_1 43 /* tex1/1 */
+-#define R200_EMIT_PP_TXOFFSET_2 44 /* tex2/1 */
+-#define R200_EMIT_PP_TXOFFSET_3 45 /* tex3/1 */
+-#define R200_EMIT_PP_TXOFFSET_4 46 /* tex4/1 */
+-#define R200_EMIT_PP_TXOFFSET_5 47 /* tex5/1 */
+-#define R200_EMIT_VTE_CNTL 48 /* vte/1 */
+-#define R200_EMIT_OUTPUT_VTX_COMP_SEL 49 /* vtx/1 */
+-#define R200_EMIT_PP_TAM_DEBUG3 50 /* tam/1 */
+-#define R200_EMIT_PP_CNTL_X 51 /* cst/1 */
+-#define R200_EMIT_RB3D_DEPTHXY_OFFSET 52 /* cst/1 */
+-#define R200_EMIT_RE_AUX_SCISSOR_CNTL 53 /* cst/1 */
+-#define R200_EMIT_RE_SCISSOR_TL_0 54 /* cst/2 */
+-#define R200_EMIT_RE_SCISSOR_TL_1 55 /* cst/2 */
+-#define R200_EMIT_RE_SCISSOR_TL_2 56 /* cst/2 */
+-#define R200_EMIT_SE_VAP_CNTL_STATUS 57 /* cst/1 */
+-#define R200_EMIT_SE_VTX_STATE_CNTL 58 /* cst/1 */
+-#define R200_EMIT_RE_POINTSIZE 59 /* cst/1 */
+-#define R200_EMIT_TCL_INPUT_VTX_VECTOR_ADDR_0 60 /* cst/4 */
+-#define R200_EMIT_PP_CUBIC_FACES_0 61
+-#define R200_EMIT_PP_CUBIC_OFFSETS_0 62
+-#define R200_EMIT_PP_CUBIC_FACES_1 63
+-#define R200_EMIT_PP_CUBIC_OFFSETS_1 64
+-#define R200_EMIT_PP_CUBIC_FACES_2 65
+-#define R200_EMIT_PP_CUBIC_OFFSETS_2 66
+-#define R200_EMIT_PP_CUBIC_FACES_3 67
+-#define R200_EMIT_PP_CUBIC_OFFSETS_3 68
+-#define R200_EMIT_PP_CUBIC_FACES_4 69
+-#define R200_EMIT_PP_CUBIC_OFFSETS_4 70
+-#define R200_EMIT_PP_CUBIC_FACES_5 71
+-#define R200_EMIT_PP_CUBIC_OFFSETS_5 72
+-#define RADEON_EMIT_PP_TEX_SIZE_0 73
+-#define RADEON_EMIT_PP_TEX_SIZE_1 74
+-#define RADEON_EMIT_PP_TEX_SIZE_2 75
+-#define R200_EMIT_RB3D_BLENDCOLOR 76
+-#define RADEON_MAX_STATE_PACKETS 77
+-
+-
+-/* Commands understood by cmd_buffer ioctl. More can be added but
+- * obviously these can't be removed or changed:
+- */
+-#define RADEON_CMD_PACKET 1 /* emit one of the register packets above */
+-#define RADEON_CMD_SCALARS 2 /* emit scalar data */
+-#define RADEON_CMD_VECTORS 3 /* emit vector data */
+-#define RADEON_CMD_DMA_DISCARD 4 /* discard current dma buf */
+-#define RADEON_CMD_PACKET3 5 /* emit hw packet */
+-#define RADEON_CMD_PACKET3_CLIP 6 /* emit hw packet wrapped in cliprects */
+-#define RADEON_CMD_SCALARS2 7 /* R200 stopgap */
+-#define RADEON_CMD_WAIT 8 /* synchronization */
+-
+-typedef union {
+- int i;
+- struct {
+- unsigned char cmd_type, pad0, pad1, pad2;
+- } header;
+- struct {
+- unsigned char cmd_type, packet_id, pad0, pad1;
+- } packet;
+- struct {
+- unsigned char cmd_type, offset, stride, count;
+- } scalars;
+- struct {
+- unsigned char cmd_type, offset, stride, count;
+- } vectors;
+- struct {
+- unsigned char cmd_type, buf_idx, pad0, pad1;
+- } dma;
+- struct {
+- unsigned char cmd_type, flags, pad0, pad1;
+- } wait;
+-} drmRadeonCmdHeader;
+-
+-
+-#define RADEON_WAIT_2D 0x1
+-#define RADEON_WAIT_3D 0x2
+-
+-
+-/* 1.3: An ioctl to get parameters that aren't available to the 3d
+- * client any other way.
+- */
+-#define RADEON_PARAM_GART_BUFFER_OFFSET 1 /* card offset of 1st GART buffer */
+-#define RADEON_PARAM_LAST_FRAME 2
+-#define RADEON_PARAM_LAST_DISPATCH 3
+-#define RADEON_PARAM_LAST_CLEAR 4
+-/* Added with DRM version 1.6. */
+-#define RADEON_PARAM_IRQ_NR 5
+-#define RADEON_PARAM_GART_BASE 6 /* card offset of GART base */
+-/* Added with DRM version 1.8. */
+-#define RADEON_PARAM_REGISTER_HANDLE 7 /* for drmMap() */
+-#define RADEON_PARAM_STATUS_HANDLE 8
+-#define RADEON_PARAM_SAREA_HANDLE 9
+-#define RADEON_PARAM_GART_TEX_HANDLE 10
+-#define RADEON_PARAM_SCRATCH_OFFSET 11
+-#define RADEON_PARAM_CARD_TYPE 12
+-#define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */
+-#define RADEON_PARAM_FB_LOCATION 14 /* FB location */
+-#define RADEON_PARAM_NUM_GB_PIPES 15
+-
+-typedef struct drm_radeon_getparam {
+- int param;
+- int *value;
+-} drmRadeonGetParam;
+-
+-
+-#define RADEON_MEM_REGION_GART 1
+-#define RADEON_MEM_REGION_FB 2
+-
+-typedef struct drm_radeon_mem_alloc {
+- int region;
+- int alignment;
+- int size;
+- int *region_offset; /* offset from start of fb or GART */
+-} drmRadeonMemAlloc;
+-
+-typedef struct drm_radeon_mem_free {
+- int region;
+- int region_offset;
+-} drmRadeonMemFree;
+-
+-typedef struct drm_radeon_mem_init_heap {
+- int region;
+- int size;
+- int start;
+-} drmRadeonMemInitHeap;
+-
+-/* 1.6: Userspace can request & wait on irq's:
+- */
+-typedef struct drm_radeon_irq_emit {
+- int *irq_seq;
+-} drmRadeonIrqEmit;
+-
+-typedef struct drm_radeon_irq_wait {
+- int irq_seq;
+-} drmRadeonIrqWait;
+-
+-
+-/* 1.10: Clients tell the DRM where they think the framebuffer is located in
+- * the card's address space, via a new generic ioctl to set parameters
+- */
+-
+-typedef struct drm_radeon_set_param {
+- unsigned int param;
+- int64_t value;
+-} drmRadeonSetParam;
+-
+-#define RADEON_SETPARAM_FB_LOCATION 1
+-#define RADEON_SETPARAM_SWITCH_TILING 2
+-#define RADEON_SETPARAM_PCIGART_LOCATION 3
+-#define RADEON_SETPARAM_NEW_MEMMAP 4
+-#define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5
+-#define RADEON_SETPARAM_VBLANK_CRTC 6 /* VBLANK CRTC */
+-/* 1.14: Clients can allocate/free a surface
+- */
+-typedef struct drm_radeon_surface_alloc {
+- unsigned int address;
+- unsigned int size;
+- unsigned int flags;
+-} drmRadeonSurfaceAlloc;
+-
+-typedef struct drm_radeon_surface_free {
+- unsigned int address;
+-} drmRadeonSurfaceFree;
+-
+-#define DRM_RADEON_VBLANK_CRTC1 1
+-#define DRM_RADEON_VBLANK_CRTC2 2
+-
+-#endif
+diff --git a/src/radeon_commonfuncs.c b/src/radeon_commonfuncs.c
+index 58fe306..dba197e 100644
+--- a/src/radeon_commonfuncs.c
++++ b/src/radeon_commonfuncs.c
+@@ -58,7 +58,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
+ uint32_t gb_tile_config, su_reg_dest, vap_cntl;
+ ACCEL_PREAMBLE();
+
+- info->texW[0] = info->texH[0] = info->texW[1] = info->texH[1] = 1;
++ info->accel_state->texW[0] = info->accel_state->texH[0] =
++ info->accel_state->texW[1] = info->accel_state->texH[1] = 1;
+
+ if (IS_R300_3D || IS_R500_3D) {
+
+@@ -70,7 +71,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
+
+ gb_tile_config = (R300_ENABLE_TILING | R300_TILE_SIZE_16 | R300_SUBPIXEL_1_16);
+
+- switch(info->num_gb_pipes) {
++ switch(info->accel_state->num_gb_pipes) {
+ case 2: gb_tile_config |= R300_PIPE_COUNT_R300; break;
+ case 3: gb_tile_config |= R300_PIPE_COUNT_R420_3P; break;
+ case 4: gb_tile_config |= R300_PIPE_COUNT_R420; break;
+@@ -87,7 +88,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
+ FINISH_ACCEL();
+
+ if (IS_R500_3D) {
+- su_reg_dest = ((1 << info->num_gb_pipes) - 1);
++ su_reg_dest = ((1 << info->accel_state->num_gb_pipes) - 1);
+ BEGIN_ACCEL(2);
+ OUT_ACCEL_REG(R500_SU_REG_DEST, su_reg_dest);
+ OUT_ACCEL_REG(R500_VAP_INDEX_OFFSET, 0);
+@@ -146,7 +147,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
+ FINISH_ACCEL();
+
+ /* setup the VAP */
+- if (info->has_tcl)
++ if (info->accel_state->has_tcl)
+ vap_cntl = ((5 << R300_PVS_NUM_SLOTS_SHIFT) |
+ (5 << R300_PVS_NUM_CNTLRS_SHIFT) |
+ (9 << R300_VF_MAX_VTX_NUM_SHIFT));
+@@ -158,25 +159,26 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
+ if (info->ChipFamily == CHIP_FAMILY_RV515)
+ vap_cntl |= (2 << R300_PVS_NUM_FPUS_SHIFT);
+ else if ((info->ChipFamily == CHIP_FAMILY_RV530) ||
+- (info->ChipFamily == CHIP_FAMILY_RV560))
++ (info->ChipFamily == CHIP_FAMILY_RV560) ||
++ (info->ChipFamily == CHIP_FAMILY_RV570))
+ vap_cntl |= (5 << R300_PVS_NUM_FPUS_SHIFT);
+- else if (info->ChipFamily == CHIP_FAMILY_R420)
++ else if ((info->ChipFamily == CHIP_FAMILY_RV410) ||
++ (info->ChipFamily == CHIP_FAMILY_R420))
+ vap_cntl |= (6 << R300_PVS_NUM_FPUS_SHIFT);
+ else if ((info->ChipFamily == CHIP_FAMILY_R520) ||
+- (info->ChipFamily == CHIP_FAMILY_R580) ||
+- (info->ChipFamily == CHIP_FAMILY_RV570))
++ (info->ChipFamily == CHIP_FAMILY_R580))
+ vap_cntl |= (8 << R300_PVS_NUM_FPUS_SHIFT);
+ else
+ vap_cntl |= (4 << R300_PVS_NUM_FPUS_SHIFT);
+
+- if (info->has_tcl)
++ if (info->accel_state->has_tcl)
+ BEGIN_ACCEL(15);
+ else
+ BEGIN_ACCEL(9);
+ OUT_ACCEL_REG(R300_VAP_VTX_STATE_CNTL, 0);
+ OUT_ACCEL_REG(R300_VAP_PVS_STATE_FLUSH_REG, 0);
+
+- if (info->has_tcl)
++ if (info->accel_state->has_tcl)
+ OUT_ACCEL_REG(R300_VAP_CNTL_STATUS, 0);
+ else
+ OUT_ACCEL_REG(R300_VAP_CNTL_STATUS, R300_PVS_BYPASS);
+@@ -206,7 +208,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
+ ((R300_WRITE_ENA_X | R300_WRITE_ENA_Y | R300_WRITE_ENA_Z | R300_WRITE_ENA_W)
+ << R300_WRITE_ENA_2_SHIFT)));
+
+- if (info->has_tcl) {
++ if (info->accel_state->has_tcl) {
+ OUT_ACCEL_REG(R300_VAP_PVS_FLOW_CNTL_OPC, 0);
+ OUT_ACCEL_REG(R300_VAP_GB_VERT_CLIP_ADJ, 0x3f800000);
+ OUT_ACCEL_REG(R300_VAP_GB_VERT_DISC_ADJ, 0x3f800000);
+@@ -217,8 +219,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
+ FINISH_ACCEL();
+
+ /* pre-load the vertex shaders */
+- if (info->has_tcl) {
+- /* exa mask shader program */
++ if (info->accel_state->has_tcl) {
++ /* exa mask/Xv bicubic shader program */
+ BEGIN_ACCEL(13);
+ OUT_ACCEL_REG(R300_VAP_PVS_VECTOR_INDX_REG, 0);
+ /* PVS inst 0 */
+@@ -498,14 +500,14 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
+ if (IS_R300_3D) {
+ BEGIN_ACCEL(2);
+ /* tex inst for src texture */
+- OUT_ACCEL_REG(R300_US_TEX_INST_0,
++ OUT_ACCEL_REG(R300_US_TEX_INST(0),
+ (R300_TEX_SRC_ADDR(0) |
+ R300_TEX_DST_ADDR(0) |
+ R300_TEX_ID(0) |
+ R300_TEX_INST(R300_TEX_INST_LD)));
+
+ /* tex inst for mask texture */
+- OUT_ACCEL_REG(R300_US_TEX_INST_1,
++ OUT_ACCEL_REG(R300_US_TEX_INST(1),
+ (R300_TEX_SRC_ADDR(1) |
+ R300_TEX_DST_ADDR(1) |
+ R300_TEX_ID(1) |
+@@ -514,9 +516,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
+ }
+
+ if (IS_R300_3D) {
+- BEGIN_ACCEL(9);
++ BEGIN_ACCEL(8);
+ OUT_ACCEL_REG(R300_US_CONFIG, (0 << R300_NLEVEL_SHIFT) | R300_FIRST_TEX);
+- OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */
+ OUT_ACCEL_REG(R300_US_CODE_ADDR_0,
+ (R300_ALU_START(0) |
+ R300_ALU_SIZE(0) |
+@@ -533,9 +534,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
+ R300_TEX_START(0) |
+ R300_TEX_SIZE(0)));
+ } else {
+- BEGIN_ACCEL(7);
++ BEGIN_ACCEL(6);
+ OUT_ACCEL_REG(R300_US_CONFIG, R500_ZERO_TIMES_ANYTHING_EQUALS_ZERO);
+- OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */
+ OUT_ACCEL_REG(R500_US_FC_CTRL, 0);
+ }
+ OUT_ACCEL_REG(R300_US_W_FMT, 0);
+@@ -687,14 +687,14 @@ void FUNC_NAME(RADEONWaitForIdle)(ScrnInfoPtr pScrn)
+
+ #ifdef ACCEL_CP
+ /* Make sure the CP is idle first */
+- if (info->CPStarted) {
++ if (info->cp->CPStarted) {
+ int ret;
+
+ FLUSH_RING();
+
+ for (;;) {
+ do {
+- ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_IDLE);
++ ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_IDLE);
+ if (ret && ret != -EBUSY) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "%s: CP idle %d\n", __FUNCTION__, ret);
+diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c
+index c63b650..9040bae 100644
+--- a/src/radeon_crtc.c
++++ b/src/radeon_crtc.c
+@@ -48,8 +48,7 @@
+
+ #ifdef XF86DRI
+ #define _XF86DRI_SERVER_
+-#include "radeon_dri.h"
+-#include "radeon_sarea.h"
++#include "radeon_drm.h"
+ #include "sarea.h"
+ #endif
+
+@@ -58,6 +57,14 @@ extern void atombios_crtc_mode_set(xf86CrtcPtr crtc,
+ DisplayModePtr adjusted_mode,
+ int x, int y);
+ extern void atombios_crtc_dpms(xf86CrtcPtr crtc, int mode);
++extern void
++RADEONInitDispBandwidthLegacy(ScrnInfoPtr pScrn,
++ DisplayModePtr mode1, int pixel_bytes1,
++ DisplayModePtr mode2, int pixel_bytes2);
++extern void
++RADEONInitDispBandwidthAVIVO(ScrnInfoPtr pScrn,
++ DisplayModePtr mode1, int pixel_bytes1,
++ DisplayModePtr mode2, int pixel_bytes2);
+
+ void
+ radeon_crtc_dpms(xf86CrtcPtr crtc, int mode)
+@@ -220,7 +227,12 @@ RADEONComputePLL(RADEONPLLPtr pll,
+ best_freq = current_freq;
+ best_error = error;
+ best_vco_diff = vco_diff;
+- } else if ((flags & RADEON_PLL_PREFER_LOW_REF_DIV) && (ref_div < best_ref_div)) {
++ } else if (((flags & RADEON_PLL_PREFER_LOW_REF_DIV) && (ref_div < best_ref_div)) ||
++ ((flags & RADEON_PLL_PREFER_HIGH_REF_DIV) && (ref_div > best_ref_div)) ||
++ ((flags & RADEON_PLL_PREFER_LOW_FB_DIV) && (feedback_div < best_feedback_div)) ||
++ ((flags & RADEON_PLL_PREFER_HIGH_FB_DIV) && (feedback_div > best_feedback_div)) ||
++ ((flags & RADEON_PLL_PREFER_LOW_POST_DIV) && (post_div < best_post_div)) ||
++ ((flags & RADEON_PLL_PREFER_HIGH_POST_DIV) && (post_div > best_post_div))) {
+ best_post_div = post_div;
+ best_ref_div = ref_div;
+ best_feedback_div = feedback_div;
+@@ -354,7 +366,7 @@ radeon_crtc_lock(xf86CrtcPtr crtc)
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+
+ #ifdef XF86DRI
+- if (info->CPStarted && pScrn->pScreen) {
++ if (info->cp->CPStarted && pScrn->pScreen) {
+ DRILock(pScrn->pScreen, 0);
+ if (info->accelOn)
+ RADEON_SYNC(info, pScrn);
+@@ -375,51 +387,13 @@ radeon_crtc_unlock(xf86CrtcPtr crtc)
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+
+ #ifdef XF86DRI
+- if (info->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen);
++ if (info->cp->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen);
+ #endif
+
+ if (info->accelOn)
+ RADEON_SYNC(info, pScrn);
+ }
+
+-#ifdef USE_XAA
+-/**
+- * Allocates memory from the XF86 linear allocator, but also purges
+- * memory if possible to cause the allocation to succeed.
+- */
+-static FBLinearPtr
+-radeon_xf86AllocateOffscreenLinear(ScreenPtr pScreen, int length,
+- int granularity,
+- MoveLinearCallbackProcPtr moveCB,
+- RemoveLinearCallbackProcPtr removeCB,
+- pointer privData)
+-{
+- FBLinearPtr linear;
+- int max_size;
+-
+- linear = xf86AllocateOffscreenLinear(pScreen, length, granularity, moveCB,
+- removeCB, privData);
+- if (linear != NULL)
+- return linear;
+-
+- /* The above allocation didn't succeed, so purge unlocked stuff and try
+- * again.
+- */
+- xf86QueryLargestOffscreenLinear(pScreen, &max_size, granularity,
+- PRIORITY_EXTREME);
+-
+- if (max_size < length)
+- return NULL;
+-
+- xf86PurgeUnlockedOffscreenAreas(pScreen);
+-
+- linear = xf86AllocateOffscreenLinear(pScreen, length, granularity, moveCB,
+- removeCB, privData);
+-
+- return linear;
+-}
+-#endif
+-
+ /**
+ * Allocates memory for a locked-in-framebuffer shadow of the given
+ * width and height for this CRTC's rotated shadow framebuffer.
+@@ -429,8 +403,6 @@ static void *
+ radeon_crtc_shadow_allocate (xf86CrtcPtr crtc, int width, int height)
+ {
+ ScrnInfoPtr pScrn = crtc->scrn;
+- /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */
+- ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+ unsigned long rotate_pitch;
+@@ -441,49 +413,14 @@ radeon_crtc_shadow_allocate (xf86CrtcPtr crtc, int width, int height)
+ rotate_pitch = pScrn->displayWidth * cpp;
+ size = rotate_pitch * height;
+
+-#ifdef USE_EXA
+ /* We could get close to what we want here by just creating a pixmap like
+ * normal, but we have to lock it down in framebuffer, and there is no
+ * setter for offscreen area locking in EXA currently. So, we just
+ * allocate offscreen memory and fake up a pixmap header for it.
+ */
+- if (info->useEXA) {
+- assert(radeon_crtc->rotate_mem_exa == NULL);
+-
+- radeon_crtc->rotate_mem_exa = exaOffscreenAlloc(pScreen, size, align,
+- TRUE, NULL, NULL);
+- if (radeon_crtc->rotate_mem_exa == NULL) {
+- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+- "Couldn't allocate shadow memory for rotated CRTC\n");
+- return NULL;
+- }
+- rotate_offset = radeon_crtc->rotate_mem_exa->offset;
+- }
+-#endif /* USE_EXA */
+-#ifdef USE_XAA
+- if (!info->useEXA) {
+- /* The XFree86 linear allocator operates in units of screen pixels,
+- * sadly.
+- */
+- size = (size + cpp - 1) / cpp;
+- align = (align + cpp - 1) / cpp;
+-
+- assert(radeon_crtc->rotate_mem_xaa == NULL);
+-
+- radeon_crtc->rotate_mem_xaa =
+- radeon_xf86AllocateOffscreenLinear(pScreen, size, align,
+- NULL, NULL, NULL);
+- if (radeon_crtc->rotate_mem_xaa == NULL) {
+- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+- "Couldn't allocate shadow memory for rotated CRTC\n");
+- return NULL;
+- }
+-#ifdef XF86DRI
+- rotate_offset = info->frontOffset +
+- radeon_crtc->rotate_mem_xaa->offset * cpp;
+-#endif
+- }
+-#endif /* USE_XAA */
++ rotate_offset = radeon_legacy_allocate_memory(pScrn, &radeon_crtc->crtc_rotate_mem, size, align);
++ if (rotate_offset == 0)
++ return NULL;
+
+ return info->FB + rotate_offset;
+ }
+@@ -523,26 +460,16 @@ static void
+ radeon_crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data)
+ {
+ ScrnInfoPtr pScrn = crtc->scrn;
+- RADEONInfoPtr info = RADEONPTR(pScrn);
+ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+
+ if (rotate_pixmap)
+ FreeScratchPixmapHeader(rotate_pixmap);
+-
++
+ if (data) {
+-#ifdef USE_EXA
+- if (info->useEXA && radeon_crtc->rotate_mem_exa != NULL) {
+- exaOffscreenFree(pScrn->pScreen, radeon_crtc->rotate_mem_exa);
+- radeon_crtc->rotate_mem_exa = NULL;
+- }
+-#endif /* USE_EXA */
+-#ifdef USE_XAA
+- if (!info->useEXA) {
+- xf86FreeOffscreenLinear(radeon_crtc->rotate_mem_xaa);
+- radeon_crtc->rotate_mem_xaa = NULL;
+- }
+-#endif /* USE_XAA */
++ radeon_legacy_free_memory(pScrn, radeon_crtc->crtc_rotate_mem);
++ radeon_crtc->crtc_rotate_mem = NULL;
+ }
++
+ }
+
+ static const xf86CrtcFuncsRec radeon_crtc_funcs = {
+@@ -567,6 +494,43 @@ static const xf86CrtcFuncsRec radeon_crtc_funcs = {
+ .destroy = NULL, /* XXX */
+ };
+
++void
++RADEONInitDispBandwidth(ScrnInfoPtr pScrn)
++{
++ RADEONInfoPtr info = RADEONPTR(pScrn);
++ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
++ DisplayModePtr mode1 = NULL, mode2 = NULL;
++ int pixel_bytes1 = info->CurrentLayout.pixel_bytes;
++ int pixel_bytes2 = info->CurrentLayout.pixel_bytes;
++
++ if (xf86_config->num_crtc == 2) {
++ if (xf86_config->crtc[1]->enabled &&
++ xf86_config->crtc[0]->enabled) {
++ mode1 = &xf86_config->crtc[0]->mode;
++ mode2 = &xf86_config->crtc[1]->mode;
++ } else if (xf86_config->crtc[0]->enabled) {
++ mode1 = &xf86_config->crtc[0]->mode;
++ } else if (xf86_config->crtc[1]->enabled) {
++ mode2 = &xf86_config->crtc[1]->mode;
++ } else
++ return;
++ } else {
++ if (info->IsPrimary)
++ mode1 = &xf86_config->crtc[0]->mode;
++ else if (info->IsSecondary)
++ mode2 = &xf86_config->crtc[0]->mode;
++ else if (xf86_config->crtc[0]->enabled)
++ mode1 = &xf86_config->crtc[0]->mode;
++ else
++ return;
++ }
++
++ if (IS_AVIVO_VARIANT)
++ RADEONInitDispBandwidthAVIVO(pScrn, mode1, pixel_bytes1, mode2, pixel_bytes2);
++ else
++ RADEONInitDispBandwidthLegacy(pScrn, mode1, pixel_bytes1, mode2, pixel_bytes2);
++}
++
+ Bool RADEONAllocateControllers(ScrnInfoPtr pScrn, int mask)
+ {
+ RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
+@@ -791,7 +755,7 @@ RADEONSetTiling(ScrnInfoPtr pScrn)
+
+ #ifdef XF86DRI
+ if (info->directRenderingEnabled && (info->tilingEnabled != can_tile)) {
+- RADEONSAREAPrivPtr pSAREAPriv;
++ drm_radeon_sarea_t *pSAREAPriv;
+ if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_SWITCH_TILING, (can_tile ? 1 : 0)) < 0)
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "[drm] failed changing tiling status\n");
+diff --git a/src/radeon_cursor.c b/src/radeon_cursor.c
+index c4472db..08bfddf 100644
+--- a/src/radeon_cursor.c
++++ b/src/radeon_cursor.c
+@@ -209,21 +209,23 @@ radeon_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
+ if (xorigin >= CURSOR_WIDTH) xorigin = CURSOR_WIDTH - 1;
+ if (yorigin >= CURSOR_HEIGHT) yorigin = CURSOR_HEIGHT - 1;
+
+- if (mode->Flags & V_INTERLACE)
+- y /= 2;
+- else if (mode->Flags & V_DBLSCAN)
+- y *= 2;
+-
+ if (IS_AVIVO_VARIANT) {
+ /* avivo cursor spans the full fb width */
+- x += crtc->x;
+- y += crtc->y;
++ if (crtc->rotatedData == NULL) {
++ x += crtc->x;
++ y += crtc->y;
++ }
+ avivo_lock_cursor(crtc, TRUE);
+ OUTREG(AVIVO_D1CUR_POSITION + radeon_crtc->crtc_offset, ((xorigin ? 0 : x) << 16)
+ | (yorigin ? 0 : y));
+ OUTREG(AVIVO_D1CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin);
+ avivo_lock_cursor(crtc, FALSE);
+ } else {
++ if (mode->Flags & V_INTERLACE)
++ y /= 2;
++ else if (mode->Flags & V_DBLSCAN)
++ y *= 2;
++
+ if (crtc_id == 0) {
+ OUTREG(RADEON_CUR_HORZ_VERT_OFF, (RADEON_CUR_LOCK
+ | (xorigin << 16)
+@@ -325,49 +327,32 @@ Bool RADEONCursorInit(ScreenPtr pScreen)
+ int width_bytes;
+ int height;
+ int size_bytes;
+- uint32_t cursor_offset = 0;
+ int c;
+
+ size_bytes = CURSOR_WIDTH * 4 * CURSOR_HEIGHT;
+ width = pScrn->displayWidth;
+ width_bytes = width * (pScrn->bitsPerPixel / 8);
+ height = ((size_bytes * xf86_config->num_crtc) + width_bytes - 1) / width_bytes;
++ int align = IS_AVIVO_VARIANT ? 4096 : 256;
+
+-#ifdef USE_XAA
+ if (!info->useEXA) {
+- int align = IS_AVIVO_VARIANT ? 4096 : 256;
+- FBAreaPtr fbarea;
+-
+- fbarea = xf86AllocateOffscreenArea(pScreen, width, height,
+- align, NULL, NULL, NULL);
+-
+- if (!fbarea) {
+- cursor_offset = 0;
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+- "Hardware cursor disabled"
+- " due to insufficient offscreen memory\n");
+- return FALSE;
+- } else {
+- cursor_offset = RADEON_ALIGN((fbarea->box.x1 +
+- fbarea->box.y1 * width) *
+- info->CurrentLayout.pixel_bytes,
+- align);
+-
+- for (c = 0; c < xf86_config->num_crtc; c++) {
+- xf86CrtcPtr crtc = xf86_config->crtc[c];
+- RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+-
+- radeon_crtc->cursor_offset = cursor_offset + (c * size_bytes);
+-
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Using hardware cursor %d (scanline %u)\n", c,
+- (unsigned)(radeon_crtc->cursor_offset / pScrn->displayWidth
+- / info->CurrentLayout.pixel_bytes));
+- }
++ for (c = 0; c < xf86_config->num_crtc; c++) {
++ xf86CrtcPtr crtc = xf86_config->crtc[c];
++ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+
++ radeon_crtc->cursor_offset =
++ radeon_legacy_allocate_memory(pScrn, &radeon_crtc->cursor_mem, size_bytes, align);
++
++ if (radeon_crtc->cursor_offset == 0)
++ return FALSE;
++
++ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++ "Will use %d kb for hardware cursor %d at offset 0x%08x\n",
++ (size_bytes * xf86_config->num_crtc) / 1024,
++ c,
++ (unsigned int)radeon_crtc->cursor_offset);
+ }
+ }
+-#endif
+
+ return xf86_cursors_init (pScreen, CURSOR_WIDTH, CURSOR_HEIGHT,
+ (HARDWARE_CURSOR_TRUECOLOR_AT_8BPP |
+diff --git a/src/radeon_dga.c b/src/radeon_dga.c
+index d623fe4..6b0fabe 100644
+--- a/src/radeon_dga.c
++++ b/src/radeon_dga.c
+@@ -47,6 +47,9 @@
+ /* Driver data structures */
+ #include "radeon.h"
+ #include "radeon_probe.h"
++#ifdef XF86DRI
++#include "radeon_drm.h"
++#endif
+
+ /* X and server generic header files */
+ #include "xf86.h"
+@@ -126,12 +129,12 @@ SECOND_PASS:
+ }
+ #endif /* USE_EXA */
+ #ifdef USE_XAA
+- if (!info->useEXA && info->accel) {
+- if (info->accel->SetupForSolidFill &&
+- info->accel->SubsequentSolidFillRect)
++ if (!info->useEXA && info->accel_state->accel) {
++ if (info->accel_state->accel->SetupForSolidFill &&
++ info->accel_state->accel->SubsequentSolidFillRect)
+ currentMode->flags |= DGA_FILL_RECT;
+- if (info->accel->SetupForScreenToScreenCopy &&
+- info->accel->SubsequentScreenToScreenCopy)
++ if (info->accel_state->accel->SetupForScreenToScreenCopy &&
++ info->accel_state->accel->SubsequentScreenToScreenCopy)
+ currentMode->flags |= DGA_BLIT_RECT | DGA_BLIT_RECT_TRANS;
+ if (currentMode->flags &
+ (DGA_PIXMAP_AVAILABLE | DGA_FILL_RECT |
+@@ -265,13 +268,13 @@ Bool RADEONDGAInit(ScreenPtr pScreen)
+ }
+ #endif /* USE_EXA */
+ #ifdef USE_XAA
+- if (!info->useEXA && info->accel) {
+- info->DGAFuncs.Sync = info->accel->Sync;
+- if (info->accel->SetupForSolidFill &&
+- info->accel->SubsequentSolidFillRect)
++ if (!info->useEXA && info->accel_state->accel) {
++ info->DGAFuncs.Sync = info->accel_state->accel->Sync;
++ if (info->accel_state->accel->SetupForSolidFill &&
++ info->accel_state->accel->SubsequentSolidFillRect)
+ info->DGAFuncs.FillRect = RADEON_FillRect;
+- if (info->accel->SetupForScreenToScreenCopy &&
+- info->accel->SubsequentScreenToScreenCopy) {
++ if (info->accel_state->accel->SetupForScreenToScreenCopy &&
++ info->accel_state->accel->SubsequentScreenToScreenCopy) {
+ info->DGAFuncs.BlitRect = RADEON_BlitRect;
+ info->DGAFuncs.BlitTransRect = RADEON_BlitTransRect;
+ }
+@@ -383,8 +386,8 @@ static void RADEON_FillRect(ScrnInfoPtr pScrn,
+ #endif /* USE_EXA */
+ #ifdef USE_XAA
+ if (!info->useEXA) {
+- (*info->accel->SetupForSolidFill)(pScrn, color, GXcopy, (uint32_t)(~0));
+- (*info->accel->SubsequentSolidFillRect)(pScrn, x, y, w, h);
++ (*info->accel_state->accel->SetupForSolidFill)(pScrn, color, GXcopy, (uint32_t)(~0));
++ (*info->accel_state->accel->SubsequentSolidFillRect)(pScrn, x, y, w, h);
+ if (pScrn->bitsPerPixel == info->CurrentLayout.bitsPerPixel)
+ RADEON_MARK_SYNC(info, pScrn);
+ }
+@@ -413,10 +416,10 @@ static void RADEON_BlitRect(ScrnInfoPtr pScrn,
+ #endif /* USE_EXA */
+ #ifdef USE_XAA
+ if (!info->useEXA) {
+- (*info->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir,
+- GXcopy, (uint32_t)(~0), -1);
+- (*info->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy,
+- dstx, dsty, w, h);
++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir,
++ GXcopy, (uint32_t)(~0), -1);
++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy,
++ dstx, dsty, w, h);
+ if (pScrn->bitsPerPixel == info->CurrentLayout.bitsPerPixel)
+ RADEON_MARK_SYNC(info, pScrn);
+ }
+@@ -431,14 +434,14 @@ static void RADEON_BlitTransRect(ScrnInfoPtr pScrn,
+ int xdir = ((srcx < dstx) && (srcy == dsty)) ? -1 : 1;
+ int ydir = (srcy < dsty) ? -1 : 1;
+
+- info->XAAForceTransBlit = TRUE;
+- (*info->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir,
+- GXcopy, (uint32_t)(~0), color);
++ info->accel_state->XAAForceTransBlit = TRUE;
++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir,
++ GXcopy, (uint32_t)(~0), color);
+
+- info->XAAForceTransBlit = FALSE;
++ info->accel_state->XAAForceTransBlit = FALSE;
+
+- (*info->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy,
+- dstx, dsty, w, h);
++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy,
++ dstx, dsty, w, h);
+
+ if (pScrn->bitsPerPixel == info->CurrentLayout.bitsPerPixel)
+ RADEON_MARK_SYNC(info, pScrn);
+diff --git a/src/radeon_dri.c b/src/radeon_dri.c
+index 0fc03e4..5542d2b 100644
+--- a/src/radeon_dri.c
++++ b/src/radeon_dri.c
+@@ -46,6 +46,7 @@
+ #include "radeon_video.h"
+ #include "radeon_reg.h"
+ #include "radeon_macros.h"
++#include "radeon_drm.h"
+ #include "radeon_dri.h"
+ #include "radeon_version.h"
+
+@@ -58,10 +59,13 @@
+ #define _XF86DRI_SERVER_
+ #include "GL/glxtokens.h"
+ #include "sarea.h"
+-#include "radeon_sarea.h"
+
+ static size_t radeon_drm_page_size;
+
++#define RADEON_MAX_DRAWABLES 256
++
++extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs,
++ void **configprivs);
+
+ static void RADEONDRITransitionTo2d(ScreenPtr pScreen);
+ static void RADEONDRITransitionTo3d(ScreenPtr pScreen);
+@@ -92,7 +96,7 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen)
+ RADEONConfigPrivPtr *pRADEONConfigPtrs = 0;
+ int i, accum, stencil, db, use_db;
+
+- use_db = !info->noBackBuffer ? 1 : 0;
++ use_db = !info->dri->noBackBuffer ? 1 : 0;
+
+ switch (info->CurrentLayout.pixel_code) {
+ case 8: /* 8bpp mode is not support */
+@@ -166,7 +170,7 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen)
+ pConfigs[i].doubleBuffer = FALSE;
+ pConfigs[i].stereo = FALSE;
+ pConfigs[i].bufferSize = 16;
+- pConfigs[i].depthSize = info->depthBits;
++ pConfigs[i].depthSize = info->dri->depthBits;
+ if (pConfigs[i].depthSize == 24 ? (RADEON_USE_STENCIL - stencil)
+ : stencil) {
+ pConfigs[i].stencilSize = 8;
+@@ -252,7 +256,7 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen)
+ pConfigs[i].doubleBuffer = FALSE;
+ pConfigs[i].stereo = FALSE;
+ pConfigs[i].bufferSize = 32;
+- pConfigs[i].depthSize = info->depthBits;
++ pConfigs[i].depthSize = info->dri->depthBits;
+ if (pConfigs[i].depthSize == 24 ? (RADEON_USE_STENCIL - stencil)
+ : stencil) {
+ pConfigs[i].stencilSize = 8;
+@@ -280,9 +284,9 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen)
+ break;
+ }
+
+- info->numVisualConfigs = numConfigs;
+- info->pVisualConfigs = pConfigs;
+- info->pVisualConfigsPriv = pRADEONConfigs;
++ info->dri->numVisualConfigs = numConfigs;
++ info->dri->pVisualConfigs = pConfigs;
++ info->dri->pVisualConfigsPriv = pRADEONConfigs;
+ GlxSetVisualConfigs(numConfigs, pConfigs, (void**)pRADEONConfigPtrs);
+ return TRUE;
+ }
+@@ -300,8 +304,8 @@ static Bool RADEONCreateContext(ScreenPtr pScreen, VisualPtr visual,
+ ctx_info = (RADEONDRIContextPtr)contextStore;
+ if (!ctx_info) return FALSE;
+
+- if (drmAddMap(info->drmFD, 0,
+- info->perctx_sarea_size,
++ if (drmAddMap(info->dri->drmFD, 0,
++ info->dri->perctx_sarea_size,
+ DRM_SHM,
+ DRM_REMOVABLE,
+ &ctx_info->sarea_handle) < 0) {
+@@ -311,12 +315,12 @@ static Bool RADEONCreateContext(ScreenPtr pScreen, VisualPtr visual,
+ return FALSE;
+ }
+
+- if (drmAddContextPrivateMapping(info->drmFD, hwContext,
++ if (drmAddContextPrivateMapping(info->dri->drmFD, hwContext,
+ ctx_info->sarea_handle) < 0) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "[dri] could not associate private sarea to ctx id (%d)\n",
+ (int)hwContext);
+- drmRmMap(info->drmFD, ctx_info->sarea_handle);
++ drmRmMap(info->dri->drmFD, ctx_info->sarea_handle);
+ return FALSE;
+ }
+
+@@ -337,7 +341,7 @@ static void RADEONDestroyContext(ScreenPtr pScreen, drm_context_t hwContext,
+ ctx_info = (RADEONDRIContextPtr)contextStore;
+ if (!ctx_info) return;
+
+- if (drmRmMap(info->drmFD, ctx_info->sarea_handle) < 0) {
++ if (drmRmMap(info->dri->drmFD, ctx_info->sarea_handle) < 0) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "[dri] could not remove private sarea for ctx id (%d)\n",
+ (int)hwContext);
+@@ -356,29 +360,29 @@ static void RADEONEnterServer(ScreenPtr pScreen)
+ {
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- RADEONSAREAPrivPtr pSAREAPriv;
++ drm_radeon_sarea_t *pSAREAPriv;
+
+
+ RADEON_MARK_SYNC(info, pScrn);
+
+ pSAREAPriv = DRIGetSAREAPrivate(pScrn->pScreen);
+- if (pSAREAPriv->ctxOwner != DRIGetContext(pScrn->pScreen)) {
+- info->XInited3D = FALSE;
+- info->needCacheFlush = (info->ChipFamily >= CHIP_FAMILY_R300);
++ if (pSAREAPriv->ctx_owner != DRIGetContext(pScrn->pScreen)) {
++ info->accel_state->XInited3D = FALSE;
++ info->cp->needCacheFlush = (info->ChipFamily >= CHIP_FAMILY_R300);
+ }
+
+ #ifdef DAMAGE
+- if (!info->pDamage && info->allowPageFlip) {
++ if (!info->dri->pDamage && info->dri->allowPageFlip) {
+ PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen);
+- info->pDamage = DamageCreate(NULL, NULL, DamageReportNone, TRUE,
+- pScreen, pPix);
++ info->dri->pDamage = DamageCreate(NULL, NULL, DamageReportNone, TRUE,
++ pScreen, pPix);
+
+- if (info->pDamage == NULL) {
++ if (info->dri->pDamage == NULL) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "No screen damage record, page flipping disabled\n");
+- info->allowPageFlip = 0;
++ info->dri->allowPageFlip = 0;
+ } else {
+- DamageRegister(&pPix->drawable, info->pDamage);
++ DamageRegister(&pPix->drawable, info->dri->pDamage);
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Damage tracking initialized for page flipping\n");
+@@ -401,8 +405,8 @@ static void RADEONLeaveServer(ScreenPtr pScreen)
+ RING_LOCALS;
+
+ #ifdef DAMAGE
+- if (info->pDamage) {
+- RegionPtr pDamageReg = DamageRegion(info->pDamage);
++ if (info->dri->pDamage) {
++ RegionPtr pDamageReg = DamageRegion(info->dri->pDamage);
+ int nrects = pDamageReg ? REGION_NUM_RECTS(pDamageReg) : 0;
+
+ if (nrects) {
+@@ -417,7 +421,7 @@ static void RADEONLeaveServer(ScreenPtr pScreen)
+ RADEONCP_RELEASE(pScrn, info);
+
+ #ifdef USE_EXA
+- info->engineMode = EXA_ENGINEMODE_UNKNOWN;
++ info->accel_state->engineMode = EXA_ENGINEMODE_UNKNOWN;
+ #endif
+ }
+
+@@ -451,17 +455,17 @@ static void RADEONDRISwapContext(ScreenPtr pScreen, DRISyncType syncType,
+
+ /* 16-bit depth buffer functions */
+ #define WRITE_DEPTH16(_x, _y, d) \
+- *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->frontPitch)) = (d)
++ *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->dri->frontPitch)) = (d)
+
+ #define READ_DEPTH16(d, _x, _y) \
+- (d) = *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->frontPitch))
++ (d) = *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->dri->frontPitch))
+
+ /* 32-bit depth buffer (stencil and depth simultaneously) functions */
+ #define WRITE_DEPTHSTENCIL32(_x, _y, d) \
+- *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->frontPitch)) = (d)
++ *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->dri->frontPitch)) = (d)
+
+ #define READ_DEPTHSTENCIL32(d, _x, _y) \
+- (d) = *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->frontPitch))
++ (d) = *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->dri->frontPitch))
+
+ /* Screen to screen copy of data in the depth buffer */
+ static void RADEONScreenToScreenCopyDepth(ScrnInfoPtr pScrn,
+@@ -470,7 +474,7 @@ static void RADEONScreenToScreenCopyDepth(ScrnInfoPtr pScrn,
+ int w, int h)
+ {
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- unsigned char *buf = info->FB + info->depthOffset;
++ unsigned char *buf = info->FB + info->dri->depthOffset;
+ int xstart, xend, xdir;
+ int ystart, yend, ydir;
+ int x, y, d;
+@@ -641,12 +645,12 @@ static void RADEONDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg,
+ }
+
+ /* pretty much a hack. */
+- info->dst_pitch_offset = info->backPitchOffset;
++ info->accel_state->dst_pitch_offset = info->dri->backPitchOffset;
+ if (info->tilingEnabled)
+- info->dst_pitch_offset |= RADEON_DST_TILE_MACRO;
++ info->accel_state->dst_pitch_offset |= RADEON_DST_TILE_MACRO;
+
+- (*info->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, GXcopy,
+- (uint32_t)(-1), -1);
++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, GXcopy,
++ (uint32_t)(-1), -1);
+
+ for (; nbox-- ; pbox++) {
+ int xa = pbox->x1;
+@@ -664,12 +668,12 @@ static void RADEONDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg,
+ if (w <= 0) continue;
+ if (h <= 0) continue;
+
+- (*info->accel->SubsequentScreenToScreenCopy)(pScrn,
+- xa, ya,
+- destx, desty,
+- w, h);
++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn,
++ xa, ya,
++ destx, desty,
++ w, h);
+
+- if (info->depthMoves) {
++ if (info->dri->depthMoves) {
+ RADEONScreenToScreenCopyDepth(pScrn,
+ xa, ya,
+ destx, desty,
+@@ -677,14 +681,14 @@ static void RADEONDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg,
+ }
+ }
+
+- info->dst_pitch_offset = info->frontPitchOffset;;
++ info->accel_state->dst_pitch_offset = info->dri->frontPitchOffset;;
+
+ xfree(pptNew2);
+ xfree(pboxNew2);
+ xfree(pptNew1);
+ xfree(pboxNew1);
+
+- info->accel->NeedToSync = TRUE;
++ info->accel_state->accel->NeedToSync = TRUE;
+ #endif /* USE_XAA */
+ }
+
+@@ -692,36 +696,36 @@ static void RADEONDRIInitGARTValues(RADEONInfoPtr info)
+ {
+ int s, l;
+
+- info->gartOffset = 0;
++ info->dri->gartOffset = 0;
+
+ /* Initialize the CP ring buffer data */
+- info->ringStart = info->gartOffset;
+- info->ringMapSize = info->ringSize*1024*1024 + radeon_drm_page_size;
+- info->ringSizeLog2QW = RADEONMinBits(info->ringSize*1024*1024/8)-1;
++ info->dri->ringStart = info->dri->gartOffset;
++ info->dri->ringMapSize = info->dri->ringSize*1024*1024 + radeon_drm_page_size;
++ info->dri->ringSizeLog2QW = RADEONMinBits(info->dri->ringSize*1024*1024/8)-1;
+
+- info->ringReadOffset = info->ringStart + info->ringMapSize;
+- info->ringReadMapSize = radeon_drm_page_size;
++ info->dri->ringReadOffset = info->dri->ringStart + info->dri->ringMapSize;
++ info->dri->ringReadMapSize = radeon_drm_page_size;
+
+ /* Reserve space for vertex/indirect buffers */
+- info->bufStart = info->ringReadOffset + info->ringReadMapSize;
+- info->bufMapSize = info->bufSize*1024*1024;
++ info->dri->bufStart = info->dri->ringReadOffset + info->dri->ringReadMapSize;
++ info->dri->bufMapSize = info->dri->bufSize*1024*1024;
+
+ /* Reserve the rest for GART textures */
+- info->gartTexStart = info->bufStart + info->bufMapSize;
+- s = (info->gartSize*1024*1024 - info->gartTexStart);
++ info->dri->gartTexStart = info->dri->bufStart + info->dri->bufMapSize;
++ s = (info->dri->gartSize*1024*1024 - info->dri->gartTexStart);
+ l = RADEONMinBits((s-1) / RADEON_NR_TEX_REGIONS);
+ if (l < RADEON_LOG_TEX_GRANULARITY) l = RADEON_LOG_TEX_GRANULARITY;
+- info->gartTexMapSize = (s >> l) << l;
+- info->log2GARTTexGran = l;
++ info->dri->gartTexMapSize = (s >> l) << l;
++ info->dri->log2GARTTexGran = l;
+ }
+
+ /* Set AGP transfer mode according to requests and constraints */
+ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen)
+ {
+ unsigned char *RADEONMMIO = info->MMIO;
+- unsigned long mode = drmAgpGetMode(info->drmFD); /* Default mode */
+- unsigned int vendor = drmAgpVendorId(info->drmFD);
+- unsigned int device = drmAgpDeviceId(info->drmFD);
++ unsigned long mode = drmAgpGetMode(info->dri->drmFD); /* Default mode */
++ unsigned int vendor = drmAgpVendorId(info->dri->drmFD);
++ unsigned int device = drmAgpDeviceId(info->dri->drmFD);
+ /* ignore agp 3.0 mode bit from the chip as it's buggy on some cards with
+ pcie-agp rialto bridge chip - use the one from bridge which must match */
+ uint32_t agp_status = (INREG(RADEON_AGP_STATUS) | RADEON_AGPv3_MODE) & mode;
+@@ -739,26 +743,26 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen)
+
+ from = X_DEFAULT;
+
+- if (xf86GetOptValInteger(info->Options, OPTION_AGP_MODE, &info->agpMode)) {
+- if ((info->agpMode < (is_v3 ? 4 : 1)) ||
+- (info->agpMode > (is_v3 ? 8 : 4)) ||
+- (info->agpMode & (info->agpMode - 1))) {
++ if (xf86GetOptValInteger(info->Options, OPTION_AGP_MODE, &info->dri->agpMode)) {
++ if ((info->dri->agpMode < (is_v3 ? 4 : 1)) ||
++ (info->dri->agpMode > (is_v3 ? 8 : 4)) ||
++ (info->dri->agpMode & (info->dri->agpMode - 1))) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "Illegal AGP Mode: %d (valid values: %s), leaving at "
+- "%dx\n", info->agpMode, is_v3 ? "4, 8" : "1, 2, 4",
++ "%dx\n", info->dri->agpMode, is_v3 ? "4, 8" : "1, 2, 4",
+ defaultMode);
+- info->agpMode = defaultMode;
++ info->dri->agpMode = defaultMode;
+ } else
+ from = X_CONFIG;
+ } else
+- info->agpMode = defaultMode;
++ info->dri->agpMode = defaultMode;
+
+- xf86DrvMsg(pScreen->myNum, from, "Using AGP %dx\n", info->agpMode);
++ xf86DrvMsg(pScreen->myNum, from, "Using AGP %dx\n", info->dri->agpMode);
+
+ mode &= ~RADEON_AGP_MODE_MASK;
+ if (is_v3) {
+ /* only set one mode bit for AGPv3 */
+- switch (info->agpMode) {
++ switch (info->dri->agpMode) {
+ case 8: mode |= RADEON_AGPv3_8X_MODE; break;
+ case 4: default: mode |= RADEON_AGPv3_4X_MODE;
+ }
+@@ -766,7 +770,7 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen)
+ * currently these bits are not used in all tested cards.
+ */
+ } else {
+- switch (info->agpMode) {
++ switch (info->dri->agpMode) {
+ case 4: mode |= RADEON_AGP_4X_MODE;
+ case 2: mode |= RADEON_AGP_2X_MODE;
+ case 1: default: mode |= RADEON_AGP_1X_MODE;
+@@ -800,9 +804,9 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen)
+ PCI_DEV_VENDOR_ID(info->PciInfo),
+ PCI_DEV_DEVICE_ID(info->PciInfo));
+
+- if (drmAgpEnable(info->drmFD, mode) < 0) {
++ if (drmAgpEnable(info->dri->drmFD, mode) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] AGP not enabled\n");
+- drmAgpRelease(info->drmFD);
++ drmAgpRelease(info->dri->drmFD);
+ return FALSE;
+ }
+
+@@ -829,15 +833,15 @@ static void RADEONSetAgpBase(RADEONInfoPtr info, ScreenPtr pScreen)
+ * agp_base_2 ?
+ */
+ if (info->ChipFamily == CHIP_FAMILY_RV515)
+- OUTMC(pScrn, RV515_MC_AGP_BASE, drmAgpBase(info->drmFD));
++ OUTMC(pScrn, RV515_MC_AGP_BASE, drmAgpBase(info->dri->drmFD));
+ else if ((info->ChipFamily >= CHIP_FAMILY_R520) &&
+ (info->ChipFamily <= CHIP_FAMILY_RV570))
+- OUTMC(pScrn, R520_MC_AGP_BASE, drmAgpBase(info->drmFD));
++ OUTMC(pScrn, R520_MC_AGP_BASE, drmAgpBase(info->dri->drmFD));
+ else if ((info->ChipFamily == CHIP_FAMILY_RS690) ||
+ (info->ChipFamily == CHIP_FAMILY_RS740))
+- OUTMC(pScrn, RS690_MC_AGP_BASE, drmAgpBase(info->drmFD));
++ OUTMC(pScrn, RS690_MC_AGP_BASE, drmAgpBase(info->dri->drmFD));
+ else if (info->ChipFamily < CHIP_FAMILY_RV515)
+- OUTREG(RADEON_AGP_BASE, drmAgpBase(info->drmFD));
++ OUTREG(RADEON_AGP_BASE, drmAgpBase(info->dri->drmFD));
+ }
+
+ /* Initialize the AGP state. Request memory for use in AGP space, and
+@@ -847,7 +851,7 @@ static Bool RADEONDRIAgpInit(RADEONInfoPtr info, ScreenPtr pScreen)
+ {
+ int ret;
+
+- if (drmAgpAcquire(info->drmFD) < 0) {
++ if (drmAgpAcquire(info->dri->drmFD) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_WARNING, "[agp] AGP not available\n");
+ return FALSE;
+ }
+@@ -857,101 +861,101 @@ static Bool RADEONDRIAgpInit(RADEONInfoPtr info, ScreenPtr pScreen)
+
+ RADEONDRIInitGARTValues(info);
+
+- if ((ret = drmAgpAlloc(info->drmFD, info->gartSize*1024*1024, 0, NULL,
+- &info->agpMemHandle)) < 0) {
++ if ((ret = drmAgpAlloc(info->dri->drmFD, info->dri->gartSize*1024*1024, 0, NULL,
++ &info->dri->agpMemHandle)) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] Out of memory (%d)\n", ret);
+- drmAgpRelease(info->drmFD);
++ drmAgpRelease(info->dri->drmFD);
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[agp] %d kB allocated with handle 0x%08x\n",
+- info->gartSize*1024, info->agpMemHandle);
++ info->dri->gartSize*1024, info->dri->agpMemHandle);
+
+- if (drmAgpBind(info->drmFD,
+- info->agpMemHandle, info->gartOffset) < 0) {
++ if (drmAgpBind(info->dri->drmFD,
++ info->dri->agpMemHandle, info->dri->gartOffset) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] Could not bind\n");
+- drmAgpFree(info->drmFD, info->agpMemHandle);
+- drmAgpRelease(info->drmFD);
++ drmAgpFree(info->dri->drmFD, info->dri->agpMemHandle);
++ drmAgpRelease(info->dri->drmFD);
+ return FALSE;
+ }
+
+- if (drmAddMap(info->drmFD, info->ringStart, info->ringMapSize,
+- DRM_AGP, DRM_READ_ONLY, &info->ringHandle) < 0) {
++ if (drmAddMap(info->dri->drmFD, info->dri->ringStart, info->dri->ringMapSize,
++ DRM_AGP, DRM_READ_ONLY, &info->dri->ringHandle) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[agp] Could not add ring mapping\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+- "[agp] ring handle = 0x%08x\n", info->ringHandle);
++ "[agp] ring handle = 0x%08x\n", info->dri->ringHandle);
+
+- if (drmMap(info->drmFD, info->ringHandle, info->ringMapSize,
+- &info->ring) < 0) {
++ if (drmMap(info->dri->drmFD, info->dri->ringHandle, info->dri->ringMapSize,
++ &info->dri->ring) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] Could not map ring\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[agp] Ring mapped at 0x%08lx\n",
+- (unsigned long)info->ring);
++ (unsigned long)info->dri->ring);
+
+- if (drmAddMap(info->drmFD, info->ringReadOffset, info->ringReadMapSize,
+- DRM_AGP, DRM_READ_ONLY, &info->ringReadPtrHandle) < 0) {
++ if (drmAddMap(info->dri->drmFD, info->dri->ringReadOffset, info->dri->ringReadMapSize,
++ DRM_AGP, DRM_READ_ONLY, &info->dri->ringReadPtrHandle) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[agp] Could not add ring read ptr mapping\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[agp] ring read ptr handle = 0x%08x\n",
+- info->ringReadPtrHandle);
++ info->dri->ringReadPtrHandle);
+
+- if (drmMap(info->drmFD, info->ringReadPtrHandle, info->ringReadMapSize,
+- &info->ringReadPtr) < 0) {
++ if (drmMap(info->dri->drmFD, info->dri->ringReadPtrHandle, info->dri->ringReadMapSize,
++ &info->dri->ringReadPtr) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[agp] Could not map ring read ptr\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[agp] Ring read ptr mapped at 0x%08lx\n",
+- (unsigned long)info->ringReadPtr);
++ (unsigned long)info->dri->ringReadPtr);
+
+- if (drmAddMap(info->drmFD, info->bufStart, info->bufMapSize,
+- DRM_AGP, 0, &info->bufHandle) < 0) {
++ if (drmAddMap(info->dri->drmFD, info->dri->bufStart, info->dri->bufMapSize,
++ DRM_AGP, 0, &info->dri->bufHandle) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[agp] Could not add vertex/indirect buffers mapping\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[agp] vertex/indirect buffers handle = 0x%08x\n",
+- info->bufHandle);
++ info->dri->bufHandle);
+
+- if (drmMap(info->drmFD, info->bufHandle, info->bufMapSize,
+- &info->buf) < 0) {
++ if (drmMap(info->dri->drmFD, info->dri->bufHandle, info->dri->bufMapSize,
++ &info->dri->buf) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[agp] Could not map vertex/indirect buffers\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[agp] Vertex/indirect buffers mapped at 0x%08lx\n",
+- (unsigned long)info->buf);
++ (unsigned long)info->dri->buf);
+
+- if (drmAddMap(info->drmFD, info->gartTexStart, info->gartTexMapSize,
+- DRM_AGP, 0, &info->gartTexHandle) < 0) {
++ if (drmAddMap(info->dri->drmFD, info->dri->gartTexStart, info->dri->gartTexMapSize,
++ DRM_AGP, 0, &info->dri->gartTexHandle) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[agp] Could not add GART texture map mapping\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[agp] GART texture map handle = 0x%08x\n",
+- info->gartTexHandle);
++ info->dri->gartTexHandle);
+
+- if (drmMap(info->drmFD, info->gartTexHandle, info->gartTexMapSize,
+- &info->gartTex) < 0) {
++ if (drmMap(info->dri->drmFD, info->dri->gartTexHandle, info->dri->gartTexMapSize,
++ &info->dri->gartTex) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[agp] Could not map GART texture map\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[agp] GART Texture map mapped at 0x%08lx\n",
+- (unsigned long)info->gartTex);
++ (unsigned long)info->dri->gartTex);
+
+ RADEONSetAgpBase(info, pScreen);
+
+@@ -966,104 +970,104 @@ static Bool RADEONDRIPciInit(RADEONInfoPtr info, ScreenPtr pScreen)
+ int ret;
+ int flags = DRM_READ_ONLY | DRM_LOCKED | DRM_KERNEL;
+
+- ret = drmScatterGatherAlloc(info->drmFD, info->gartSize*1024*1024,
+- &info->pciMemHandle);
++ ret = drmScatterGatherAlloc(info->dri->drmFD, info->dri->gartSize*1024*1024,
++ &info->dri->pciMemHandle);
+ if (ret < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "[pci] Out of memory (%d)\n", ret);
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[pci] %d kB allocated with handle 0x%08x\n",
+- info->gartSize*1024, info->pciMemHandle);
++ info->dri->gartSize*1024, info->dri->pciMemHandle);
+
+ RADEONDRIInitGARTValues(info);
+
+- if (drmAddMap(info->drmFD, info->ringStart, info->ringMapSize,
+- DRM_SCATTER_GATHER, flags, &info->ringHandle) < 0) {
++ if (drmAddMap(info->dri->drmFD, info->dri->ringStart, info->dri->ringMapSize,
++ DRM_SCATTER_GATHER, flags, &info->dri->ringHandle) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[pci] Could not add ring mapping\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+- "[pci] ring handle = 0x%08x\n", info->ringHandle);
++ "[pci] ring handle = 0x%08x\n", info->dri->ringHandle);
+
+- if (drmMap(info->drmFD, info->ringHandle, info->ringMapSize,
+- &info->ring) < 0) {
++ if (drmMap(info->dri->drmFD, info->dri->ringHandle, info->dri->ringMapSize,
++ &info->dri->ring) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "[pci] Could not map ring\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[pci] Ring mapped at 0x%08lx\n",
+- (unsigned long)info->ring);
++ (unsigned long)info->dri->ring);
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[pci] Ring contents 0x%08lx\n",
+- *(unsigned long *)(pointer)info->ring);
++ *(unsigned long *)(pointer)info->dri->ring);
+
+- if (drmAddMap(info->drmFD, info->ringReadOffset, info->ringReadMapSize,
+- DRM_SCATTER_GATHER, flags, &info->ringReadPtrHandle) < 0) {
++ if (drmAddMap(info->dri->drmFD, info->dri->ringReadOffset, info->dri->ringReadMapSize,
++ DRM_SCATTER_GATHER, flags, &info->dri->ringReadPtrHandle) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[pci] Could not add ring read ptr mapping\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[pci] ring read ptr handle = 0x%08x\n",
+- info->ringReadPtrHandle);
++ info->dri->ringReadPtrHandle);
+
+- if (drmMap(info->drmFD, info->ringReadPtrHandle, info->ringReadMapSize,
+- &info->ringReadPtr) < 0) {
++ if (drmMap(info->dri->drmFD, info->dri->ringReadPtrHandle, info->dri->ringReadMapSize,
++ &info->dri->ringReadPtr) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[pci] Could not map ring read ptr\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[pci] Ring read ptr mapped at 0x%08lx\n",
+- (unsigned long)info->ringReadPtr);
++ (unsigned long)info->dri->ringReadPtr);
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[pci] Ring read ptr contents 0x%08lx\n",
+- *(unsigned long *)(pointer)info->ringReadPtr);
++ *(unsigned long *)(pointer)info->dri->ringReadPtr);
+
+- if (drmAddMap(info->drmFD, info->bufStart, info->bufMapSize,
+- DRM_SCATTER_GATHER, 0, &info->bufHandle) < 0) {
++ if (drmAddMap(info->dri->drmFD, info->dri->bufStart, info->dri->bufMapSize,
++ DRM_SCATTER_GATHER, 0, &info->dri->bufHandle) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[pci] Could not add vertex/indirect buffers mapping\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[pci] vertex/indirect buffers handle = 0x%08x\n",
+- info->bufHandle);
++ info->dri->bufHandle);
+
+- if (drmMap(info->drmFD, info->bufHandle, info->bufMapSize,
+- &info->buf) < 0) {
++ if (drmMap(info->dri->drmFD, info->dri->bufHandle, info->dri->bufMapSize,
++ &info->dri->buf) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[pci] Could not map vertex/indirect buffers\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[pci] Vertex/indirect buffers mapped at 0x%08lx\n",
+- (unsigned long)info->buf);
++ (unsigned long)info->dri->buf);
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[pci] Vertex/indirect buffers contents 0x%08lx\n",
+- *(unsigned long *)(pointer)info->buf);
++ *(unsigned long *)(pointer)info->dri->buf);
+
+- if (drmAddMap(info->drmFD, info->gartTexStart, info->gartTexMapSize,
+- DRM_SCATTER_GATHER, 0, &info->gartTexHandle) < 0) {
++ if (drmAddMap(info->dri->drmFD, info->dri->gartTexStart, info->dri->gartTexMapSize,
++ DRM_SCATTER_GATHER, 0, &info->dri->gartTexHandle) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[pci] Could not add GART texture map mapping\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[pci] GART texture map handle = 0x%08x\n",
+- info->gartTexHandle);
++ info->dri->gartTexHandle);
+
+- if (drmMap(info->drmFD, info->gartTexHandle, info->gartTexMapSize,
+- &info->gartTex) < 0) {
++ if (drmMap(info->dri->drmFD, info->dri->gartTexHandle, info->dri->gartTexMapSize,
++ &info->dri->gartTex) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[pci] Could not map GART texture map\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[pci] GART Texture map mapped at 0x%08lx\n",
+- (unsigned long)info->gartTex);
++ (unsigned long)info->dri->gartTex);
+
+ return TRUE;
+ }
+@@ -1074,13 +1078,13 @@ static Bool RADEONDRIPciInit(RADEONInfoPtr info, ScreenPtr pScreen)
+ static Bool RADEONDRIMapInit(RADEONInfoPtr info, ScreenPtr pScreen)
+ {
+ /* Map registers */
+- info->registerSize = info->MMIOSize;
+- if (drmAddMap(info->drmFD, info->MMIOAddr, info->registerSize,
+- DRM_REGISTERS, DRM_READ_ONLY, &info->registerHandle) < 0) {
++ info->dri->registerSize = info->MMIOSize;
++ if (drmAddMap(info->dri->drmFD, info->MMIOAddr, info->dri->registerSize,
++ DRM_REGISTERS, DRM_READ_ONLY, &info->dri->registerHandle) < 0) {
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+- "[drm] register handle = 0x%08x\n", info->registerHandle);
++ "[drm] register handle = 0x%08x\n", info->dri->registerHandle);
+
+ return TRUE;
+ }
+@@ -1090,43 +1094,43 @@ static int RADEONDRIKernelInit(RADEONInfoPtr info, ScreenPtr pScreen)
+ {
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ int cpp = info->CurrentLayout.pixel_bytes;
+- drmRadeonInit drmInfo;
++ drm_radeon_init_t drmInfo;
+
+- memset(&drmInfo, 0, sizeof(drmRadeonInit));
++ memset(&drmInfo, 0, sizeof(drm_radeon_init_t));
+ if ( info->ChipFamily >= CHIP_FAMILY_R300 )
+- drmInfo.func = DRM_RADEON_INIT_R300_CP;
++ drmInfo.func = RADEON_INIT_R300_CP;
+ else
+ if ( info->ChipFamily >= CHIP_FAMILY_R200 )
+- drmInfo.func = DRM_RADEON_INIT_R200_CP;
++ drmInfo.func = RADEON_INIT_R200_CP;
+ else
+- drmInfo.func = DRM_RADEON_INIT_CP;
++ drmInfo.func = RADEON_INIT_CP;
+
+ drmInfo.sarea_priv_offset = sizeof(XF86DRISAREARec);
+ drmInfo.is_pci = (info->cardType!=CARD_AGP);
+- drmInfo.cp_mode = info->CPMode;
+- drmInfo.gart_size = info->gartSize*1024*1024;
+- drmInfo.ring_size = info->ringSize*1024*1024;
+- drmInfo.usec_timeout = info->CPusecTimeout;
++ drmInfo.cp_mode = RADEON_CSQ_PRIBM_INDBM;
++ drmInfo.gart_size = info->dri->gartSize*1024*1024;
++ drmInfo.ring_size = info->dri->ringSize*1024*1024;
++ drmInfo.usec_timeout = info->cp->CPusecTimeout;
+
+ drmInfo.fb_bpp = info->CurrentLayout.pixel_code;
+- drmInfo.depth_bpp = (info->depthBits - 8) * 2;
+-
+- drmInfo.front_offset = info->frontOffset;
+- drmInfo.front_pitch = info->frontPitch * cpp;
+- drmInfo.back_offset = info->backOffset;
+- drmInfo.back_pitch = info->backPitch * cpp;
+- drmInfo.depth_offset = info->depthOffset;
+- drmInfo.depth_pitch = info->depthPitch * drmInfo.depth_bpp / 8;
+-
+- drmInfo.fb_offset = info->fbHandle;
+- drmInfo.mmio_offset = info->registerHandle;
+- drmInfo.ring_offset = info->ringHandle;
+- drmInfo.ring_rptr_offset = info->ringReadPtrHandle;
+- drmInfo.buffers_offset = info->bufHandle;
+- drmInfo.gart_textures_offset= info->gartTexHandle;
+-
+- if (drmCommandWrite(info->drmFD, DRM_RADEON_CP_INIT,
+- &drmInfo, sizeof(drmRadeonInit)) < 0)
++ drmInfo.depth_bpp = (info->dri->depthBits - 8) * 2;
++
++ drmInfo.front_offset = info->dri->frontOffset;
++ drmInfo.front_pitch = info->dri->frontPitch * cpp;
++ drmInfo.back_offset = info->dri->backOffset;
++ drmInfo.back_pitch = info->dri->backPitch * cpp;
++ drmInfo.depth_offset = info->dri->depthOffset;
++ drmInfo.depth_pitch = info->dri->depthPitch * drmInfo.depth_bpp / 8;
++
++ drmInfo.fb_offset = info->dri->fbHandle;
++ drmInfo.mmio_offset = info->dri->registerHandle;
++ drmInfo.ring_offset = info->dri->ringHandle;
++ drmInfo.ring_rptr_offset = info->dri->ringReadPtrHandle;
++ drmInfo.buffers_offset = info->dri->bufHandle;
++ drmInfo.gart_textures_offset= info->dri->gartTexHandle;
++
++ if (drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_INIT,
++ &drmInfo, sizeof(drm_radeon_init_t)) < 0)
+ return FALSE;
+
+ /* DRM_RADEON_CP_INIT does an engine reset, which resets some engine
+@@ -1140,21 +1144,21 @@ static int RADEONDRIKernelInit(RADEONInfoPtr info, ScreenPtr pScreen)
+
+ static void RADEONDRIGartHeapInit(RADEONInfoPtr info, ScreenPtr pScreen)
+ {
+- drmRadeonMemInitHeap drmHeap;
++ drm_radeon_mem_init_heap_t drmHeap;
+
+ /* Start up the simple memory manager for GART space */
+ drmHeap.region = RADEON_MEM_REGION_GART;
+ drmHeap.start = 0;
+- drmHeap.size = info->gartTexMapSize;
++ drmHeap.size = info->dri->gartTexMapSize;
+
+- if (drmCommandWrite(info->drmFD, DRM_RADEON_INIT_HEAP,
++ if (drmCommandWrite(info->dri->drmFD, DRM_RADEON_INIT_HEAP,
+ &drmHeap, sizeof(drmHeap))) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[drm] Failed to initialize GART heap manager\n");
+ } else {
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[drm] Initialized kernel GART heap manager, %d\n",
+- info->gartTexMapSize);
++ info->dri->gartTexMapSize);
+ }
+ }
+
+@@ -1164,29 +1168,29 @@ static void RADEONDRIGartHeapInit(RADEONInfoPtr info, ScreenPtr pScreen)
+ static Bool RADEONDRIBufInit(RADEONInfoPtr info, ScreenPtr pScreen)
+ {
+ /* Initialize vertex buffers */
+- info->bufNumBufs = drmAddBufs(info->drmFD,
+- info->bufMapSize / RADEON_BUFFER_SIZE,
+- RADEON_BUFFER_SIZE,
+- (info->cardType!=CARD_AGP) ? DRM_SG_BUFFER : DRM_AGP_BUFFER,
+- info->bufStart);
++ info->dri->bufNumBufs = drmAddBufs(info->dri->drmFD,
++ info->dri->bufMapSize / RADEON_BUFFER_SIZE,
++ RADEON_BUFFER_SIZE,
++ (info->cardType!=CARD_AGP) ? DRM_SG_BUFFER : DRM_AGP_BUFFER,
++ info->dri->bufStart);
+
+- if (info->bufNumBufs <= 0) {
++ if (info->dri->bufNumBufs <= 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[drm] Could not create vertex/indirect buffers list\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[drm] Added %d %d byte vertex/indirect buffers\n",
+- info->bufNumBufs, RADEON_BUFFER_SIZE);
++ info->dri->bufNumBufs, RADEON_BUFFER_SIZE);
+
+- if (!(info->buffers = drmMapBufs(info->drmFD))) {
++ if (!(info->dri->buffers = drmMapBufs(info->dri->drmFD))) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[drm] Failed to map vertex/indirect buffers list\n");
+ return FALSE;
+ }
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[drm] Mapped %d vertex/indirect buffers\n",
+- info->buffers->count);
++ info->dri->buffers->count);
+
+ return TRUE;
+ }
+@@ -1195,29 +1199,35 @@ static void RADEONDRIIrqInit(RADEONInfoPtr info, ScreenPtr pScreen)
+ {
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+
+- if (!info->irq) {
+- info->irq = drmGetInterruptFromBusID(
+- info->drmFD,
++ if (!info->dri->irq) {
++ info->dri->irq = drmGetInterruptFromBusID(
++ info->dri->drmFD,
+ PCI_CFG_BUS(info->PciInfo),
+ PCI_CFG_DEV(info->PciInfo),
+ PCI_CFG_FUNC(info->PciInfo));
+
+- if ((drmCtlInstHandler(info->drmFD, info->irq)) != 0) {
++ if ((drmCtlInstHandler(info->dri->drmFD, info->dri->irq)) != 0) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "[drm] failure adding irq handler, "
+ "there is a device already using that irq\n"
+ "[drm] falling back to irq-free operation\n");
+- info->irq = 0;
++ info->dri->irq = 0;
+ } else {
+ unsigned char *RADEONMMIO = info->MMIO;
+ info->ModeReg->gen_int_cntl = INREG( RADEON_GEN_INT_CNTL );
++
++ /* Let the DRM know it can safely disable the vblank interrupts */
++ radeon_crtc_modeset_ioctl(XF86_CRTC_CONFIG_PTR(pScrn)->crtc[0],
++ FALSE);
++ radeon_crtc_modeset_ioctl(XF86_CRTC_CONFIG_PTR(pScrn)->crtc[0],
++ TRUE);
+ }
+ }
+
+- if (info->irq)
++ if (info->dri->irq)
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "[drm] dma control initialized, using IRQ %d\n",
+- info->irq);
++ info->dri->irq);
+ }
+
+
+@@ -1233,7 +1243,7 @@ static void RADEONDRICPInit(ScrnInfoPtr pScrn)
+ RADEONCP_START(pScrn, info);
+ #ifdef USE_XAA
+ if (!info->useEXA)
+- info->dst_pitch_offset = info->frontPitchOffset;
++ info->accel_state->dst_pitch_offset = info->dri->frontPitchOffset;
+ #endif
+ }
+
+@@ -1274,16 +1284,16 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn)
+
+ /* Check the lib version */
+ if (xf86LoaderCheckSymbol("drmGetLibVersion"))
+- info->pLibDRMVersion = drmGetLibVersion(info->drmFD);
+- if (info->pLibDRMVersion == NULL) {
++ info->dri->pLibDRMVersion = drmGetLibVersion(info->dri->drmFD);
++ if (info->dri->pLibDRMVersion == NULL) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "[dri] RADEONDRIGetVersion failed because libDRM is really "
+ "way to old to even get a version number out of it.\n"
+ "[dri] Disabling DRI.\n");
+ return FALSE;
+ }
+- if (info->pLibDRMVersion->version_major != 1 ||
+- info->pLibDRMVersion->version_minor < 2) {
++ if (info->dri->pLibDRMVersion->version_major != 1 ||
++ info->dri->pLibDRMVersion->version_minor < 2) {
+ /* incompatible drm library version */
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "[dri] RADEONDRIGetVersion failed because of a "
+@@ -1291,11 +1301,11 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn)
+ "[dri] libdrm.a module version is %d.%d.%d but "
+ "version 1.2.x is needed.\n"
+ "[dri] Disabling DRI.\n",
+- info->pLibDRMVersion->version_major,
+- info->pLibDRMVersion->version_minor,
+- info->pLibDRMVersion->version_patchlevel);
+- drmFreeVersion(info->pLibDRMVersion);
+- info->pLibDRMVersion = NULL;
++ info->dri->pLibDRMVersion->version_major,
++ info->dri->pLibDRMVersion->version_minor,
++ info->dri->pLibDRMVersion->version_patchlevel);
++ drmFreeVersion(info->dri->pLibDRMVersion);
++ info->dri->pLibDRMVersion = NULL;
+ return FALSE;
+ }
+
+@@ -1322,9 +1332,9 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn)
+ }
+
+ /* Get DRM version & close DRM */
+- info->pKernelDRMVersion = drmGetVersion(fd);
++ info->dri->pKernelDRMVersion = drmGetVersion(fd);
+ drmClose(fd);
+- if (info->pKernelDRMVersion == NULL) {
++ if (info->dri->pKernelDRMVersion == NULL) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "[dri] RADEONDRIGetVersion failed to get the DRM version\n"
+ "[dri] Disabling DRI.\n");
+@@ -1344,10 +1354,10 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn)
+ }
+
+ /* We don't, bummer ! */
+- if (info->pKernelDRMVersion->version_major != 1 ||
+- info->pKernelDRMVersion->version_minor < req_minor ||
+- (info->pKernelDRMVersion->version_minor == req_minor &&
+- info->pKernelDRMVersion->version_patchlevel < req_patch)) {
++ if (info->dri->pKernelDRMVersion->version_major != 1 ||
++ info->dri->pKernelDRMVersion->version_minor < req_minor ||
++ (info->dri->pKernelDRMVersion->version_minor == req_minor &&
++ info->dri->pKernelDRMVersion->version_patchlevel < req_patch)) {
+ /* Incompatible drm version */
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "[dri] RADEONDRIGetVersion failed because of a version "
+@@ -1355,13 +1365,13 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn)
+ "[dri] radeon.o kernel module version is %d.%d.%d "
+ "but version 1.%d.%d or newer is needed.\n"
+ "[dri] Disabling DRI.\n",
+- info->pKernelDRMVersion->version_major,
+- info->pKernelDRMVersion->version_minor,
+- info->pKernelDRMVersion->version_patchlevel,
++ info->dri->pKernelDRMVersion->version_major,
++ info->dri->pKernelDRMVersion->version_minor,
++ info->dri->pKernelDRMVersion->version_patchlevel,
+ req_minor,
+ req_patch);
+- drmFreeVersion(info->pKernelDRMVersion);
+- info->pKernelDRMVersion = NULL;
++ drmFreeVersion(info->dri->pKernelDRMVersion);
++ info->dri->pKernelDRMVersion = NULL;
+ return FALSE;
+ }
+
+@@ -1377,7 +1387,7 @@ Bool RADEONDRISetVBlankInterrupt(ScrnInfoPtr pScrn, Bool on)
+ if (!info->want_vblank_interrupts)
+ on = FALSE;
+
+- if (info->directRenderingEnabled && info->pKernelDRMVersion->version_minor >= 28) {
++ if (info->directRenderingEnabled && info->dri->pKernelDRMVersion->version_minor >= 28) {
+ if (on) {
+ if (xf86_config->num_crtc > 1 && xf86_config->crtc[1]->enabled)
+ value = DRM_RADEON_VBLANK_CRTC1 | DRM_RADEON_VBLANK_CRTC2;
+@@ -1406,7 +1416,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen)
+ DRIInfoPtr pDRIInfo;
+ RADEONDRIPtr pRADEONDRI;
+
+- info->DRICloseScreen = NULL;
++ info->dri->DRICloseScreen = NULL;
+
+ switch (info->CurrentLayout.pixel_code) {
+ case 8:
+@@ -1432,7 +1442,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen)
+ */
+ if (!(pDRIInfo = DRICreateInfoRec())) return FALSE;
+
+- info->pDRIInfo = pDRIInfo;
++ info->dri->pDRIInfo = pDRIInfo;
+ pDRIInfo->drmDriverName = RADEON_DRIVER_NAME;
+
+ if ( (info->ChipFamily >= CHIP_FAMILY_R300) ) {
+@@ -1453,11 +1463,10 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen)
+ PCI_DEV_DEV(info->PciInfo),
+ PCI_DEV_FUNC(info->PciInfo));
+ }
+- pDRIInfo->ddxDriverMajorVersion = info->allowColorTiling ?
+- RADEON_VERSION_MAJOR_TILED : RADEON_VERSION_MAJOR;
+- pDRIInfo->ddxDriverMinorVersion = RADEON_VERSION_MINOR;
+- pDRIInfo->ddxDriverPatchVersion = RADEON_VERSION_PATCH;
+- pDRIInfo->frameBufferPhysicalAddress = (void *)info->LinearAddr + info->frontOffset;
++ pDRIInfo->ddxDriverMajorVersion = info->allowColorTiling ? 5 : 4;
++ pDRIInfo->ddxDriverMinorVersion = 3;
++ pDRIInfo->ddxDriverPatchVersion = 0;
++ pDRIInfo->frameBufferPhysicalAddress = (void *)info->LinearAddr + info->dri->frontOffset;
+ pDRIInfo->frameBufferSize = info->FbMapSize - info->FbSecureSize;
+ pDRIInfo->frameBufferStride = (pScrn->displayWidth *
+ info->CurrentLayout.pixel_bytes);
+@@ -1487,7 +1496,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen)
+ /* For now the mapping works by using a fixed size defined
+ * in the SAREA header
+ */
+- if (sizeof(XF86DRISAREARec)+sizeof(RADEONSAREAPriv) > SAREA_MAX) {
++ if (sizeof(XF86DRISAREARec)+sizeof(drm_radeon_sarea_t) > SAREA_MAX) {
+ ErrorF("Data does not fit in SAREA\n");
+ return FALSE;
+ }
+@@ -1495,8 +1504,8 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen)
+ #endif
+
+ if (!(pRADEONDRI = (RADEONDRIPtr)xcalloc(sizeof(RADEONDRIRec),1))) {
+- DRIDestroyInfoRec(info->pDRIInfo);
+- info->pDRIInfo = NULL;
++ DRIDestroyInfoRec(info->dri->pDRIInfo);
++ info->dri->pDRIInfo = NULL;
+ return FALSE;
+ }
+ pDRIInfo->devPrivate = pRADEONDRI;
+@@ -1538,7 +1547,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen)
+ }
+ #endif
+
+- if (!DRIScreenInit(pScreen, pDRIInfo, &info->drmFD)) {
++ if (!DRIScreenInit(pScreen, pDRIInfo, &info->dri->drmFD)) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[dri] DRIScreenInit failed. Disabling DRI.\n");
+ xfree(pDRIInfo->devPrivate);
+@@ -1581,7 +1590,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen)
+ void *scratch_ptr;
+ int scratch_int;
+
+- DRIGetDeviceInfo(pScreen, &info->fbHandle,
++ DRIGetDeviceInfo(pScreen, &info->dri->fbHandle,
+ &scratch_int, &scratch_int,
+ &scratch_int, &scratch_int,
+ &scratch_ptr);
+@@ -1605,7 +1614,7 @@ static Bool RADEONDRIDoCloseScreen(int scrnIndex, ScreenPtr pScreen)
+
+ RADEONDRICloseScreen(pScreen);
+
+- pScreen->CloseScreen = info->DRICloseScreen;
++ pScreen->CloseScreen = info->dri->DRICloseScreen;
+ return (*pScreen->CloseScreen)(scrnIndex, pScreen);
+ }
+
+@@ -1617,11 +1626,11 @@ Bool RADEONDRIFinishScreenInit(ScreenPtr pScreen)
+ {
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- RADEONSAREAPrivPtr pSAREAPriv;
++ drm_radeon_sarea_t *pSAREAPriv;
+ RADEONDRIPtr pRADEONDRI;
+
+- info->pDRIInfo->driverSwapMethod = DRI_HIDE_X_CONTEXT;
+- /* info->pDRIInfo->driverSwapMethod = DRI_SERVER_SWAP; */
++ info->dri->pDRIInfo->driverSwapMethod = DRI_HIDE_X_CONTEXT;
++ /* info->dri->pDRIInfo->driverSwapMethod = DRI_SERVER_SWAP; */
+
+ /* NOTE: DRIFinishScreenInit must be called before *DRIKernelInit
+ * because *DRIKernelInit requires that the hardware lock is held by
+@@ -1655,10 +1664,10 @@ Bool RADEONDRIFinishScreenInit(ScreenPtr pScreen)
+ RADEONDRICPInit(pScrn);
+
+ /* Initialize the SAREA private data structure */
+- pSAREAPriv = (RADEONSAREAPrivPtr)DRIGetSAREAPrivate(pScreen);
++ pSAREAPriv = (drm_radeon_sarea_t*)DRIGetSAREAPrivate(pScreen);
+ memset(pSAREAPriv, 0, sizeof(*pSAREAPriv));
+
+- pRADEONDRI = (RADEONDRIPtr)info->pDRIInfo->devPrivate;
++ pRADEONDRI = (RADEONDRIPtr)info->dri->pDRIInfo->devPrivate;
+
+ pRADEONDRI->deviceID = info->Chipset;
+ pRADEONDRI->width = pScrn->virtualX;
+@@ -1667,40 +1676,40 @@ Bool RADEONDRIFinishScreenInit(ScreenPtr pScreen)
+ pRADEONDRI->bpp = pScrn->bitsPerPixel;
+
+ pRADEONDRI->IsPCI = (info->cardType!=CARD_AGP);
+- pRADEONDRI->AGPMode = info->agpMode;
++ pRADEONDRI->AGPMode = info->dri->agpMode;
+
+- pRADEONDRI->frontOffset = info->frontOffset;
+- pRADEONDRI->frontPitch = info->frontPitch;
+- pRADEONDRI->backOffset = info->backOffset;
+- pRADEONDRI->backPitch = info->backPitch;
+- pRADEONDRI->depthOffset = info->depthOffset;
+- pRADEONDRI->depthPitch = info->depthPitch;
+- pRADEONDRI->textureOffset = info->textureOffset;
+- pRADEONDRI->textureSize = info->textureSize;
+- pRADEONDRI->log2TexGran = info->log2TexGran;
++ pRADEONDRI->frontOffset = info->dri->frontOffset;
++ pRADEONDRI->frontPitch = info->dri->frontPitch;
++ pRADEONDRI->backOffset = info->dri->backOffset;
++ pRADEONDRI->backPitch = info->dri->backPitch;
++ pRADEONDRI->depthOffset = info->dri->depthOffset;
++ pRADEONDRI->depthPitch = info->dri->depthPitch;
++ pRADEONDRI->textureOffset = info->dri->textureOffset;
++ pRADEONDRI->textureSize = info->dri->textureSize;
++ pRADEONDRI->log2TexGran = info->dri->log2TexGran;
+
+- pRADEONDRI->registerHandle = info->registerHandle;
+- pRADEONDRI->registerSize = info->registerSize;
++ pRADEONDRI->registerHandle = info->dri->registerHandle;
++ pRADEONDRI->registerSize = info->dri->registerSize;
+
+- pRADEONDRI->statusHandle = info->ringReadPtrHandle;
+- pRADEONDRI->statusSize = info->ringReadMapSize;
++ pRADEONDRI->statusHandle = info->dri->ringReadPtrHandle;
++ pRADEONDRI->statusSize = info->dri->ringReadMapSize;
+
+- pRADEONDRI->gartTexHandle = info->gartTexHandle;
+- pRADEONDRI->gartTexMapSize = info->gartTexMapSize;
+- pRADEONDRI->log2GARTTexGran = info->log2GARTTexGran;
+- pRADEONDRI->gartTexOffset = info->gartTexStart;
++ pRADEONDRI->gartTexHandle = info->dri->gartTexHandle;
++ pRADEONDRI->gartTexMapSize = info->dri->gartTexMapSize;
++ pRADEONDRI->log2GARTTexGran = info->dri->log2GARTTexGran;
++ pRADEONDRI->gartTexOffset = info->dri->gartTexStart;
+
+ pRADEONDRI->sarea_priv_offset = sizeof(XF86DRISAREARec);
+
+ #ifdef PER_CONTEXT_SAREA
+ /* Set per-context SAREA size */
+- pRADEONDRI->perctx_sarea_size = info->perctx_sarea_size;
++ pRADEONDRI->perctx_sarea_size = info->dri->perctx_sarea_size;
+ #endif
+
+ info->directRenderingInited = TRUE;
+
+ /* Wrap CloseScreen */
+- info->DRICloseScreen = pScreen->CloseScreen;
++ info->dri->DRICloseScreen = pScreen->CloseScreen;
+ pScreen->CloseScreen = RADEONDRIDoCloseScreen;
+
+ /* disable vblank at startup */
+@@ -1721,7 +1730,7 @@ void RADEONDRIResume(ScreenPtr pScreen)
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+
+- if (info->pKernelDRMVersion->version_minor >= 9) {
++ if (info->dri->pKernelDRMVersion->version_minor >= 9) {
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "[RESUME] Attempting to re-init Radeon hardware.\n");
+ } else {
+@@ -1738,7 +1747,7 @@ void RADEONDRIResume(ScreenPtr pScreen)
+ RADEONSetAgpBase(info, pScreen);
+ }
+
+- _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_RESUME);
++ _ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_RESUME);
+ if (_ret) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "%s: CP resume %d\n", __FUNCTION__, _ret);
+@@ -1777,86 +1786,86 @@ void RADEONDRICloseScreen(ScreenPtr pScreen)
+ {
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- drmRadeonInit drmInfo;
++ drm_radeon_init_t drmInfo;
+
+ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+ "RADEONDRICloseScreen\n");
+
+ #ifdef DAMAGE
+- REGION_UNINIT(pScreen, &info->driRegion);
++ REGION_UNINIT(pScreen, &info->dri->driRegion);
+ #endif
+
+- if (info->irq) {
++ if (info->dri->irq) {
+ RADEONDRISetVBlankInterrupt (pScrn, FALSE);
+- drmCtlUninstHandler(info->drmFD);
+- info->irq = 0;
++ drmCtlUninstHandler(info->dri->drmFD);
++ info->dri->irq = 0;
+ info->ModeReg->gen_int_cntl = 0;
+ }
+
+ /* De-allocate vertex buffers */
+- if (info->buffers) {
+- drmUnmapBufs(info->buffers);
+- info->buffers = NULL;
++ if (info->dri->buffers) {
++ drmUnmapBufs(info->dri->buffers);
++ info->dri->buffers = NULL;
+ }
+
+ /* De-allocate all kernel resources */
+- memset(&drmInfo, 0, sizeof(drmRadeonInit));
+- drmInfo.func = DRM_RADEON_CLEANUP_CP;
+- drmCommandWrite(info->drmFD, DRM_RADEON_CP_INIT,
+- &drmInfo, sizeof(drmRadeonInit));
++ memset(&drmInfo, 0, sizeof(drm_radeon_init_t));
++ drmInfo.func = RADEON_CLEANUP_CP;
++ drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_INIT,
++ &drmInfo, sizeof(drm_radeon_init_t));
+
+ /* De-allocate all GART resources */
+- if (info->gartTex) {
+- drmUnmap(info->gartTex, info->gartTexMapSize);
+- info->gartTex = NULL;
++ if (info->dri->gartTex) {
++ drmUnmap(info->dri->gartTex, info->dri->gartTexMapSize);
++ info->dri->gartTex = NULL;
+ }
+- if (info->buf) {
+- drmUnmap(info->buf, info->bufMapSize);
+- info->buf = NULL;
++ if (info->dri->buf) {
++ drmUnmap(info->dri->buf, info->dri->bufMapSize);
++ info->dri->buf = NULL;
+ }
+- if (info->ringReadPtr) {
+- drmUnmap(info->ringReadPtr, info->ringReadMapSize);
+- info->ringReadPtr = NULL;
++ if (info->dri->ringReadPtr) {
++ drmUnmap(info->dri->ringReadPtr, info->dri->ringReadMapSize);
++ info->dri->ringReadPtr = NULL;
+ }
+- if (info->ring) {
+- drmUnmap(info->ring, info->ringMapSize);
+- info->ring = NULL;
++ if (info->dri->ring) {
++ drmUnmap(info->dri->ring, info->dri->ringMapSize);
++ info->dri->ring = NULL;
+ }
+- if (info->agpMemHandle != DRM_AGP_NO_HANDLE) {
+- drmAgpUnbind(info->drmFD, info->agpMemHandle);
+- drmAgpFree(info->drmFD, info->agpMemHandle);
+- info->agpMemHandle = DRM_AGP_NO_HANDLE;
+- drmAgpRelease(info->drmFD);
++ if (info->dri->agpMemHandle != DRM_AGP_NO_HANDLE) {
++ drmAgpUnbind(info->dri->drmFD, info->dri->agpMemHandle);
++ drmAgpFree(info->dri->drmFD, info->dri->agpMemHandle);
++ info->dri->agpMemHandle = DRM_AGP_NO_HANDLE;
++ drmAgpRelease(info->dri->drmFD);
+ }
+- if (info->pciMemHandle) {
+- drmScatterGatherFree(info->drmFD, info->pciMemHandle);
+- info->pciMemHandle = 0;
++ if (info->dri->pciMemHandle) {
++ drmScatterGatherFree(info->dri->drmFD, info->dri->pciMemHandle);
++ info->dri->pciMemHandle = 0;
+ }
+
+- if (info->pciGartBackup) {
+- xfree(info->pciGartBackup);
+- info->pciGartBackup = NULL;
++ if (info->dri->pciGartBackup) {
++ xfree(info->dri->pciGartBackup);
++ info->dri->pciGartBackup = NULL;
+ }
+
+ /* De-allocate all DRI resources */
+ DRICloseScreen(pScreen);
+
+ /* De-allocate all DRI data structures */
+- if (info->pDRIInfo) {
+- if (info->pDRIInfo->devPrivate) {
+- xfree(info->pDRIInfo->devPrivate);
+- info->pDRIInfo->devPrivate = NULL;
++ if (info->dri->pDRIInfo) {
++ if (info->dri->pDRIInfo->devPrivate) {
++ xfree(info->dri->pDRIInfo->devPrivate);
++ info->dri->pDRIInfo->devPrivate = NULL;
+ }
+- DRIDestroyInfoRec(info->pDRIInfo);
+- info->pDRIInfo = NULL;
++ DRIDestroyInfoRec(info->dri->pDRIInfo);
++ info->dri->pDRIInfo = NULL;
+ }
+- if (info->pVisualConfigs) {
+- xfree(info->pVisualConfigs);
+- info->pVisualConfigs = NULL;
++ if (info->dri->pVisualConfigs) {
++ xfree(info->dri->pVisualConfigs);
++ info->dri->pVisualConfigs = NULL;
+ }
+- if (info->pVisualConfigsPriv) {
+- xfree(info->pVisualConfigsPriv);
+- info->pVisualConfigsPriv = NULL;
++ if (info->dri->pVisualConfigsPriv) {
++ xfree(info->dri->pVisualConfigsPriv);
++ info->dri->pVisualConfigsPriv = NULL;
+ }
+ }
+
+@@ -1885,24 +1894,24 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg)
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ int i, num;
+ ScreenPtr pScreen = pScrn->pScreen;
+- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen);
++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen);
+ #ifdef USE_EXA
+ PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen);
+ #endif
+ RegionRec region;
+ BoxPtr pbox;
+
+- if (!info->directRenderingInited || !info->CPStarted)
++ if (!info->directRenderingInited || !info->cp->CPStarted)
+ return;
+
+ /* Don't want to do this when no 3d is active and pages are
+ * right-way-round
+ */
+- if (!pSAREAPriv->pfAllowPageFlip && pSAREAPriv->pfCurrentPage == 0)
++ if (!pSAREAPriv->pfState && pSAREAPriv->pfCurrentPage == 0)
+ return;
+
+ REGION_NULL(pScreen, &region);
+- REGION_SUBTRACT(pScreen, &region, pReg, &info->driRegion);
++ REGION_SUBTRACT(pScreen, &region, pReg, &info->dri->driRegion);
+
+ num = REGION_NUM_RECTS(&region);
+
+@@ -1919,9 +1928,9 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg)
+ uint32_t src_pitch_offset, dst_pitch_offset, datatype;
+
+ RADEONGetPixmapOffsetPitch(pPix, &src_pitch_offset);
+- dst_pitch_offset = src_pitch_offset + (info->backOffset >> 10);
++ dst_pitch_offset = src_pitch_offset + (info->dri->backOffset >> 10);
+ RADEONGetDatatypeBpp(pScrn->bitsPerPixel, &datatype);
+- info->xdir = info->ydir = 1;
++ info->accel_state->xdir = info->accel_state->ydir = 1;
+
+ RADEONDoPrepareCopyCP(pScrn, src_pitch_offset, dst_pitch_offset, datatype,
+ GXcopy, ~0);
+@@ -1931,13 +1940,14 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg)
+ #ifdef USE_XAA
+ if (!info->useEXA) {
+ /* Make sure accel has been properly inited */
+- if (info->accel == NULL || info->accel->SetupForScreenToScreenCopy == NULL)
++ if (info->accel_state->accel == NULL ||
++ info->accel_state->accel->SetupForScreenToScreenCopy == NULL)
+ goto out;
+ if (info->tilingEnabled)
+- info->dst_pitch_offset |= RADEON_DST_TILE_MACRO;
+- (*info->accel->SetupForScreenToScreenCopy)(pScrn,
+- 1, 1, GXcopy,
+- (uint32_t)(-1), -1);
++ info->accel_state->dst_pitch_offset |= RADEON_DST_TILE_MACRO;
++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn,
++ 1, 1, GXcopy,
++ (uint32_t)(-1), -1);
+ }
+ #endif
+
+@@ -1954,23 +1964,23 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg)
+
+ #ifdef USE_XAA
+ if (!info->useEXA) {
+- (*info->accel->SubsequentScreenToScreenCopy)(pScrn, xa, ya,
+- xa + info->backX,
+- ya + info->backY,
+- xb - xa + 1,
+- yb - ya + 1);
++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn, xa, ya,
++ xa + info->dri->backX,
++ ya + info->dri->backY,
++ xb - xa + 1,
++ yb - ya + 1);
+ }
+ #endif
+ }
+ }
+
+ #ifdef USE_XAA
+- info->dst_pitch_offset &= ~RADEON_DST_TILE_MACRO;
++ info->accel_state->dst_pitch_offset &= ~RADEON_DST_TILE_MACRO;
+ #endif
+
+ out:
+ REGION_NULL(pScreen, &region);
+- DamageEmpty(info->pDamage);
++ DamageEmpty(info->dri->pDamage);
+ }
+
+ #endif /* DAMAGE */
+@@ -1981,13 +1991,13 @@ static void RADEONEnablePageFlip(ScreenPtr pScreen)
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+
+- if (info->allowPageFlip) {
+- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen);
++ if (info->dri->allowPageFlip) {
++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen);
+ BoxRec box = { .x1 = 0, .y1 = 0, .x2 = pScrn->virtualX - 1,
+ .y2 = pScrn->virtualY - 1 };
+ RegionPtr pReg = REGION_CREATE(pScreen, &box, 1);
+
+- pSAREAPriv->pfAllowPageFlip = 1;
++ pSAREAPriv->pfState = 1;
+ RADEONDRIRefreshArea(pScrn, pReg);
+ REGION_DESTROY(pScreen, pReg);
+ }
+@@ -2000,9 +2010,9 @@ static void RADEONDisablePageFlip(ScreenPtr pScreen)
+ * -- Field in sarea, plus bumping the window counters.
+ * -- DRM needs to cope with Front-to-Back swapbuffers.
+ */
+- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen);
++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen);
+
+- pSAREAPriv->pfAllowPageFlip = 0;
++ pSAREAPriv->pfState = 0;
+ }
+
+ static void RADEONDRITransitionSingleToMulti3d(ScreenPtr pScreen)
+@@ -2034,9 +2044,9 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen)
+ * first so we always start with all free offscreen memory, except
+ * maybe for Xv
+ */
+- if (info->backArea) {
+- xf86FreeOffscreenArea(info->backArea);
+- info->backArea = NULL;
++ if (info->dri->backArea) {
++ xf86FreeOffscreenArea(info->dri->backArea);
++ info->dri->backArea = NULL;
+ }
+
+ xf86PurgeUnlockedOffscreenAreas(pScreen);
+@@ -2047,7 +2057,7 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen)
+ * FIXME: This is hideous. What about telling xv "oh btw you have no memory
+ * any more?" -- anholt
+ */
+- if (height < (info->depthTexLines + info->backLines)) {
++ if (height < (info->dri->depthTexLines + info->dri->backLines)) {
+ RADEONPortPrivPtr portPriv = info->adaptor->pPortPrivates[0].ptr;
+ xf86FreeOffscreenLinear((FBLinearPtr)portPriv->video_memory);
+ portPriv->video_memory = NULL;
+@@ -2061,29 +2071,29 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen)
+ */
+ fbarea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth,
+ height
+- - info->depthTexLines
+- - info->backLines,
++ - info->dri->depthTexLines
++ - info->dri->backLines,
+ pScrn->displayWidth,
+ NULL, NULL, NULL);
+ if (!fbarea)
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "Unable to reserve placeholder "
+ "offscreen area, you might experience screen corruption\n");
+
+- info->backArea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth,
+- info->backLines,
+- pScrn->displayWidth,
+- NULL, NULL, NULL);
+- if (!info->backArea)
++ info->dri->backArea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth,
++ info->dri->backLines,
++ pScrn->displayWidth,
++ NULL, NULL, NULL);
++ if (!info->dri->backArea)
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "Unable to reserve offscreen "
+ "area for back buffer, you might experience screen "
+ "corruption\n");
+
+- info->depthTexArea = xf86AllocateOffscreenArea(pScreen,
+- pScrn->displayWidth,
+- info->depthTexLines,
+- pScrn->displayWidth,
+- NULL, NULL, NULL);
+- if (!info->depthTexArea)
++ info->dri->depthTexArea = xf86AllocateOffscreenArea(pScreen,
++ pScrn->displayWidth,
++ info->dri->depthTexLines,
++ pScrn->displayWidth,
++ NULL, NULL, NULL);
++ if (!info->dri->depthTexArea)
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "Unable to reserve offscreen "
+ "area for depth buffer and textures, you might "
+ "experience screen corruption\n");
+@@ -2092,7 +2102,7 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen)
+ }
+ #endif /* USE_XAA */
+
+- info->have3DWindows = 1;
++ info->dri->have3DWindows = 1;
+
+ RADEONChangeSurfaces(pScrn);
+ RADEONEnablePageFlip(pScreen);
+@@ -2108,19 +2118,19 @@ static void RADEONDRITransitionTo2d(ScreenPtr pScreen)
+ {
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen);
++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen);
+
+ /* Try flipping back to the front page if necessary */
+ if (pSAREAPriv->pfCurrentPage == 1)
+- drmCommandNone(info->drmFD, DRM_RADEON_FLIP);
++ drmCommandNone(info->dri->drmFD, DRM_RADEON_FLIP);
+
+ /* Shut down shadowing if we've made it back to the front page */
+ if (pSAREAPriv->pfCurrentPage == 0) {
+ RADEONDisablePageFlip(pScreen);
+ #ifdef USE_XAA
+ if (!info->useEXA) {
+- xf86FreeOffscreenArea(info->backArea);
+- info->backArea = NULL;
++ xf86FreeOffscreenArea(info->dri->backArea);
++ info->dri->backArea = NULL;
+ }
+ #endif
+ } else {
+@@ -2131,10 +2141,10 @@ static void RADEONDRITransitionTo2d(ScreenPtr pScreen)
+
+ #ifdef USE_XAA
+ if (!info->useEXA)
+- xf86FreeOffscreenArea(info->depthTexArea);
++ xf86FreeOffscreenArea(info->dri->depthTexArea);
+ #endif
+
+- info->have3DWindows = 0;
++ info->dri->have3DWindows = 0;
+
+ RADEONChangeSurfaces(pScrn);
+
+@@ -2154,8 +2164,8 @@ RADEONDRIClipNotify(ScreenPtr pScreen, WindowPtr *ppWin, int num)
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+
+- REGION_UNINIT(pScreen, &info->driRegion);
+- REGION_NULL(pScreen, &info->driRegion);
++ REGION_UNINIT(pScreen, &info->dri->driRegion);
++ REGION_NULL(pScreen, &info->dri->driRegion);
+
+ if (num > 0) {
+ int i;
+@@ -2164,8 +2174,8 @@ RADEONDRIClipNotify(ScreenPtr pScreen, WindowPtr *ppWin, int num)
+ WindowPtr pWin = ppWin[i];
+
+ if (pWin) {
+- REGION_UNION(pScreen, &info->driRegion, &pWin->clipList,
+- &info->driRegion);
++ REGION_UNION(pScreen, &info->dri->driRegion, &pWin->clipList,
++ &info->dri->driRegion);
+ }
+ }
+ }
+@@ -2178,24 +2188,24 @@ void RADEONDRIAllocatePCIGARTTable(ScreenPtr pScreen)
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+
+ if (info->cardType != CARD_PCIE ||
+- info->pKernelDRMVersion->version_minor < 19)
++ info->dri->pKernelDRMVersion->version_minor < 19)
+ return;
+
+ if (info->FbSecureSize==0)
+ return;
+
+ /* set the old default size of pci gart table */
+- if (info->pKernelDRMVersion->version_minor < 26)
+- info->pciGartSize = 32768;
++ if (info->dri->pKernelDRMVersion->version_minor < 26)
++ info->dri->pciGartSize = 32768;
+
+- info->pciGartSize = RADEONDRIGetPciAperTableSize(pScrn);
++ info->dri->pciGartSize = RADEONDRIGetPciAperTableSize(pScrn);
+
+ /* allocate space to back up PCIEGART table */
+- info->pciGartBackup = xnfcalloc(1, info->pciGartSize);
+- if (info->pciGartBackup == NULL)
++ info->dri->pciGartBackup = xnfcalloc(1, info->dri->pciGartSize);
++ if (info->dri->pciGartBackup == NULL)
+ return;
+
+- info->pciGartOffset = (info->FbMapSize - info->FbSecureSize);
++ info->dri->pciGartOffset = (info->FbMapSize - info->FbSecureSize);
+
+
+ }
+@@ -2207,7 +2217,7 @@ int RADEONDRIGetPciAperTableSize(ScrnInfoPtr pScrn)
+ int ret_size;
+ int num_pages;
+
+- num_pages = (info->pciAperSize * 1024 * 1024) / page_size;
++ num_pages = (info->dri->pciAperSize * 1024 * 1024) / page_size;
+
+ ret_size = num_pages * sizeof(unsigned int);
+
+@@ -2216,14 +2226,14 @@ int RADEONDRIGetPciAperTableSize(ScrnInfoPtr pScrn)
+
+ int RADEONDRISetParam(ScrnInfoPtr pScrn, unsigned int param, int64_t value)
+ {
+- drmRadeonSetParam radeonsetparam;
++ drm_radeon_setparam_t radeonsetparam;
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ int ret;
+
+- memset(&radeonsetparam, 0, sizeof(drmRadeonSetParam));
++ memset(&radeonsetparam, 0, sizeof(drm_radeon_setparam_t));
+ radeonsetparam.param = param;
+ radeonsetparam.value = value;
+- ret = drmCommandWrite(info->drmFD, DRM_RADEON_SETPARAM,
+- &radeonsetparam, sizeof(drmRadeonSetParam));
++ ret = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SETPARAM,
++ &radeonsetparam, sizeof(drm_radeon_setparam_t));
+ return ret;
+ }
+diff --git a/src/radeon_dri.h b/src/radeon_dri.h
+index 67892a6..6e3ad62 100644
+--- a/src/radeon_dri.h
++++ b/src/radeon_dri.h
+@@ -39,9 +39,8 @@
+ #include "xf86drm.h"
+
+ /* DRI Driver defaults */
+-#define RADEON_DEFAULT_CP_PIO_MODE RADEON_CSQ_PRIPIO_INDPIO
+-#define RADEON_DEFAULT_CP_BM_MODE RADEON_CSQ_PRIBM_INDBM
+ #define RADEON_DEFAULT_GART_SIZE 8 /* MB (must be 2^n and > 4MB) */
++#define R300_DEFAULT_GART_SIZE 32 /* MB (for R300 and above) */
+ #define RADEON_DEFAULT_RING_SIZE 1 /* MB (must be page aligned) */
+ #define RADEON_DEFAULT_BUFFER_SIZE 2 /* MB (must be page aligned) */
+ #define RADEON_DEFAULT_GART_TEX_SIZE 1 /* MB (must be page aligned) */
+@@ -52,10 +51,6 @@
+
+ #define RADEON_CARD_TYPE_RADEON 1
+
+-#define RADEONCP_USE_RING_BUFFER(m) \
+- (((m) == RADEON_CSQ_PRIBM_INDDIS) || \
+- ((m) == RADEON_CSQ_PRIBM_INDBM))
+-
+ typedef struct {
+ /* DRI screen private data */
+ int deviceID; /* PCI device ID */
+diff --git a/src/radeon_dripriv.h b/src/radeon_dripriv.h
+deleted file mode 100644
+index fcde08e..0000000
+--- a/src/radeon_dripriv.h
++++ /dev/null
+@@ -1,63 +0,0 @@
+-/*
+- * Copyright 2000 ATI Technologies Inc., Markham, Ontario,
+- * 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, 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.
+- */
+-
+-/*
+- * Authors:
+- * Kevin E. Martin <martin@xfree86.org>
+- * Rickard E. Faith <faith@valinux.com>
+- *
+- */
+-
+-#ifndef _RADEON_DRIPRIV_H_
+-#define _RADEON_DRIPRIV_H_
+-
+-#include "GL/glxint.h"
+-#include "xf86drm.h"
+-#include "radeon_common.h"
+-
+-#define RADEON_MAX_DRAWABLES 256
+-
+-extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs,
+- void **configprivs);
+-
+-typedef struct {
+- /* Nothing here yet */
+- int dummy;
+-} RADEONConfigPrivRec, *RADEONConfigPrivPtr;
+-
+-typedef struct {
+-#ifdef PER_CONTEXT_SAREA
+- drm_context_t ctx_id;
+- drm_handle_t sarea_handle;
+-#else
+- /* Nothing here yet */
+- int dummy;
+-#endif
+-} RADEONDRIContextRec, *RADEONDRIContextPtr;
+-
+-#endif
+diff --git a/src/radeon_driver.c b/src/radeon_driver.c
+index f18ad99..c759bd6 100644
+--- a/src/radeon_driver.c
++++ b/src/radeon_driver.c
+@@ -79,7 +79,7 @@
+ #ifdef XF86DRI
+ #define _XF86DRI_SERVER_
+ #include "radeon_dri.h"
+-#include "radeon_sarea.h"
++#include "radeon_drm.h"
+ #include "sarea.h"
+ #endif
+
+@@ -498,7 +498,7 @@ static Bool RADEONUnmapMem(ScrnInfoPtr pScrn)
+ void RADEONPllErrataAfterIndex(RADEONInfoPtr info)
+ {
+ unsigned char *RADEONMMIO = info->MMIO;
+-
++
+ if (!(info->ChipErrata & CHIP_ERRATA_PLL_DUMMYREADS))
+ return;
+
+@@ -669,7 +669,14 @@ static void radeon_write_mc_fb_agp_location(ScrnInfoPtr pScrn, int mask, uint32_
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ unsigned char *RADEONMMIO = info->MMIO;
+
+- if (info->ChipFamily >= CHIP_FAMILY_R600) {
++ if (info->ChipFamily >= CHIP_FAMILY_RV770) {
++ if (mask & LOC_FB)
++ OUTREG(R700_MC_VM_FB_LOCATION, fb_loc);
++ if (mask & LOC_AGP) {
++ OUTREG(R600_MC_VM_AGP_BOT, agp_loc);
++ OUTREG(R600_MC_VM_AGP_TOP, agp_loc_hi);
++ }
++ } else if (info->ChipFamily >= CHIP_FAMILY_R600) {
+ if (mask & LOC_FB)
+ OUTREG(R600_MC_VM_FB_LOCATION, fb_loc);
+ if (mask & LOC_AGP) {
+@@ -712,7 +719,14 @@ static void radeon_read_mc_fb_agp_location(ScrnInfoPtr pScrn, int mask, uint32_t
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ unsigned char *RADEONMMIO = info->MMIO;
+
+- if (info->ChipFamily >= CHIP_FAMILY_R600) {
++ if (info->ChipFamily >= CHIP_FAMILY_RV770) {
++ if (mask & LOC_FB)
++ *fb_loc = INREG(R700_MC_VM_FB_LOCATION);
++ if (mask & LOC_AGP) {
++ *agp_loc = INREG(R600_MC_VM_AGP_BOT);
++ *agp_loc_hi = INREG(R600_MC_VM_AGP_TOP);
++ }
++ } else if (info->ChipFamily >= CHIP_FAMILY_R600) {
+ if (mask & LOC_FB)
+ *fb_loc = INREG(R600_MC_VM_FB_LOCATION);
+ if (mask & LOC_AGP) {
+@@ -1160,7 +1174,6 @@ static Bool RADEONPreInitVisual(ScrnInfoPtr pScrn)
+
+ xf86PrintDepthBpp(pScrn);
+
+- info->fifo_slots = 0;
+ info->pix24bpp = xf86GetBppFromDepth(pScrn,
+ pScrn->depth);
+ info->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel;
+@@ -1271,7 +1284,7 @@ static void RADEONInitMemoryMap(ScrnInfoPtr pScrn)
+
+ #ifdef XF86DRI
+ /* Apply memory map limitation if using an old DRI */
+- if (info->directRenderingEnabled && !info->newMemoryMap) {
++ if (info->directRenderingEnabled && !info->dri->newMemoryMap) {
+ if (aper_size < mem_size)
+ mem_size = aper_size;
+ }
+@@ -1286,7 +1299,7 @@ static void RADEONInitMemoryMap(ScrnInfoPtr pScrn)
+ #ifdef XF86DRI
+ /* Old DRI has restrictions on the memory map */
+ if ( info->directRenderingEnabled &&
+- info->pKernelDRMVersion->version_minor < 10 )
++ info->dri->pKernelDRMVersion->version_minor < 10 )
+ info->mc_fb_location = (mem_size - 1) & 0xffff0000U;
+ else
+ #endif
+@@ -1474,18 +1487,18 @@ static uint32_t RADEONGetAccessibleVRAM(ScrnInfoPtr pScrn)
+ * we need to limit the amount of accessible video memory
+ */
+ if (info->directRenderingEnabled &&
+- info->pKernelDRMVersion->version_minor < 23) {
++ info->dri->pKernelDRMVersion->version_minor < 23) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "[dri] limiting video memory to one aperture of %uK\n",
+ (unsigned)aper_size);
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "[dri] detected radeon kernel module version 1.%d but"
+ " 1.23 or newer is required for full memory mapping.\n",
+- info->pKernelDRMVersion->version_minor);
+- info->newMemoryMap = FALSE;
++ info->dri->pKernelDRMVersion->version_minor);
++ info->dri->newMemoryMap = FALSE;
+ return aper_size;
+ }
+- info->newMemoryMap = TRUE;
++ info->dri->newMemoryMap = TRUE;
+ #endif /* XF86DRI */
+
+ /* Set HDP_APER_CNTL only on cards that are known not to be broken,
+@@ -1893,20 +1906,6 @@ static Bool RADEONPreInitChipType(ScrnInfoPtr pScrn)
+ return FALSE;
+ }
+
+-
+- if ((info->ChipFamily == CHIP_FAMILY_RS100) ||
+- (info->ChipFamily == CHIP_FAMILY_RS200) ||
+- (info->ChipFamily == CHIP_FAMILY_RS300) ||
+- (info->ChipFamily == CHIP_FAMILY_RS400) ||
+- (info->ChipFamily == CHIP_FAMILY_RS480) ||
+- (info->ChipFamily == CHIP_FAMILY_RS600) ||
+- (info->ChipFamily == CHIP_FAMILY_RS690) ||
+- (info->ChipFamily == CHIP_FAMILY_RS740))
+- info->has_tcl = FALSE;
+- else {
+- info->has_tcl = TRUE;
+- }
+-
+ return TRUE;
+ }
+
+@@ -1960,6 +1959,25 @@ static Bool RADEONPreInitAccel(ScrnInfoPtr pScrn)
+ char *optstr;
+ #endif
+
++ if (!(info->accel_state = xcalloc(1, sizeof(struct radeon_accel_state)))) {
++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to allocate accel_state rec!\n");
++ return FALSE;
++ }
++ info->accel_state->fifo_slots = 0;
++
++ if ((info->ChipFamily == CHIP_FAMILY_RS100) ||
++ (info->ChipFamily == CHIP_FAMILY_RS200) ||
++ (info->ChipFamily == CHIP_FAMILY_RS300) ||
++ (info->ChipFamily == CHIP_FAMILY_RS400) ||
++ (info->ChipFamily == CHIP_FAMILY_RS480) ||
++ (info->ChipFamily == CHIP_FAMILY_RS600) ||
++ (info->ChipFamily == CHIP_FAMILY_RS690) ||
++ (info->ChipFamily == CHIP_FAMILY_RS740))
++ info->accel_state->has_tcl = FALSE;
++ else {
++ info->accel_state->has_tcl = TRUE;
++ }
++
+ info->useEXA = FALSE;
+
+ if (info->ChipFamily >= CHIP_FAMILY_R600) {
+@@ -2032,16 +2050,22 @@ static Bool RADEONPreInitAccel(ScrnInfoPtr pScrn)
+
+ static Bool RADEONPreInitInt10(ScrnInfoPtr pScrn, xf86Int10InfoPtr *ppInt10)
+ {
+-#if !defined(__powerpc__) && !defined(__sparc__)
++#if (!defined(__powerpc__) && !defined(__sparc__)) || \
++ (defined(XSERVER_LIBPCIACCESS) && HAVE_PCI_DEVICE_ENABLE)
+ RADEONInfoPtr info = RADEONPTR(pScrn);
++#endif
++#if !defined(__powerpc__) && !defined(__sparc__)
+ unsigned char *RADEONMMIO = info->MMIO;
+ uint32_t fp2_gen_ctl_save = 0;
++#endif
+
+ #ifdef XSERVER_LIBPCIACCESS
+ #if HAVE_PCI_DEVICE_ENABLE
+ pci_device_enable(info->PciInfo);
+ #endif
+ #endif
++
++#if !defined(__powerpc__) && !defined(__sparc__)
+ /* don't need int10 on atom cards.
+ * in theory all radeons, but the older stuff
+ * isn't 100% yet
+@@ -2087,10 +2111,19 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn)
+
+ info->directRenderingEnabled = FALSE;
+ info->directRenderingInited = FALSE;
+- info->CPInUse = FALSE;
+- info->CPStarted = FALSE;
+- info->pLibDRMVersion = NULL;
+- info->pKernelDRMVersion = NULL;
++
++ if (!(info->dri = xcalloc(1, sizeof(struct radeon_dri)))) {
++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,"Unable to allocate dri rec!\n");
++ return FALSE;
++ }
++
++ if (!(info->cp = xcalloc(1, sizeof(struct radeon_cp)))) {
++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,"Unable to allocate cp rec!\n");
++ return FALSE;
++ }
++ info->cp->CPInUse = FALSE;
++ info->cp->CPStarted = FALSE;
++ info->cp->CPusecTimeout = RADEON_DEFAULT_CP_TIMEOUT;
+
+ if (xf86IsEntityShared(info->pEnt->index)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+@@ -2106,19 +2139,16 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn)
+
+ if (info->Chipset == PCI_CHIP_RN50_515E ||
+ info->Chipset == PCI_CHIP_RN50_5969 ||
+- info->Chipset == PCI_CHIP_RC410_5A61 ||
+- info->Chipset == PCI_CHIP_RC410_5A62 ||
+- info->Chipset == PCI_CHIP_RS485_5975 ||
+ info->ChipFamily == CHIP_FAMILY_RS600 ||
+ info->ChipFamily >= CHIP_FAMILY_R600) {
+ if (xf86ReturnOptValBool(info->Options, OPTION_DRI, FALSE)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+- "Direct rendering for RN50/RC410/RS485/RS600/R600 forced on -- "
++ "Direct rendering for RN50/RS600/R600 forced on -- "
+ "This is NOT officially supported at the hardware level "
+ "and may cause instability or lockups\n");
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Direct rendering not officially supported on RN50/RC410/R600\n");
++ "Direct rendering not officially supported on RN50/RS600/R600\n");
+ return FALSE;
+ }
+ }
+@@ -2136,18 +2166,26 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn)
+ return FALSE;
+ }
+
++ if (!(info->dri = xcalloc(1, sizeof(struct radeon_dri)))) {
++ ErrorF("Unable to allocate dri rec!\n");
++ return FALSE;
++ }
++
++ info->dri->pLibDRMVersion = NULL;
++ info->dri->pKernelDRMVersion = NULL;
++
+ if (!RADEONDRIGetVersion(pScrn))
+ return FALSE;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "[dri] Found DRI library version %d.%d.%d and kernel"
+ " module version %d.%d.%d\n",
+- info->pLibDRMVersion->version_major,
+- info->pLibDRMVersion->version_minor,
+- info->pLibDRMVersion->version_patchlevel,
+- info->pKernelDRMVersion->version_major,
+- info->pKernelDRMVersion->version_minor,
+- info->pKernelDRMVersion->version_patchlevel);
++ info->dri->pLibDRMVersion->version_major,
++ info->dri->pLibDRMVersion->version_minor,
++ info->dri->pLibDRMVersion->version_patchlevel,
++ info->dri->pKernelDRMVersion->version_major,
++ info->dri->pKernelDRMVersion->version_minor,
++ info->dri->pKernelDRMVersion->version_patchlevel);
+
+ if (info->Chipset == PCI_CHIP_RS400_5A41 ||
+ info->Chipset == PCI_CHIP_RS400_5A42 ||
+@@ -2158,7 +2196,7 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn)
+ info->Chipset == PCI_CHIP_RS482_5974 ||
+ info->Chipset == PCI_CHIP_RS485_5975) {
+
+- if (info->pKernelDRMVersion->version_minor < 27) {
++ if (info->dri->pKernelDRMVersion->version_minor < 27) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Direct rendering broken on XPRESS 200 and 200M with DRI less than 1.27\n");
+ return FALSE;
+@@ -2167,25 +2205,22 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn)
+ "Direct rendering experimental on RS400/Xpress 200 enabled\n");
+ }
+
+- if (xf86ReturnOptValBool(info->Options, OPTION_CP_PIO, FALSE)) {
+- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forcing CP into PIO mode\n");
+- info->CPMode = RADEON_DEFAULT_CP_PIO_MODE;
+- } else {
+- info->CPMode = RADEON_DEFAULT_CP_BM_MODE;
+- }
++ if (info->ChipFamily >= CHIP_FAMILY_R300)
++ info->dri->gartSize = R300_DEFAULT_GART_SIZE;
++ else
++ info->dri->gartSize = RADEON_DEFAULT_GART_SIZE;
+
+- info->gartSize = RADEON_DEFAULT_GART_SIZE;
+- info->ringSize = RADEON_DEFAULT_RING_SIZE;
+- info->bufSize = RADEON_DEFAULT_BUFFER_SIZE;
+- info->gartTexSize = RADEON_DEFAULT_GART_TEX_SIZE;
+- info->pciAperSize = RADEON_DEFAULT_PCI_APER_SIZE;
+- info->CPusecTimeout = RADEON_DEFAULT_CP_TIMEOUT;
++ info->dri->ringSize = RADEON_DEFAULT_RING_SIZE;
++ info->dri->bufSize = RADEON_DEFAULT_BUFFER_SIZE;
++ info->dri->gartTexSize = RADEON_DEFAULT_GART_TEX_SIZE;
++ info->dri->pciAperSize = RADEON_DEFAULT_PCI_APER_SIZE;
++ info->cp->CPusecTimeout = RADEON_DEFAULT_CP_TIMEOUT;
+
+ if ((xf86GetOptValInteger(info->Options,
+- OPTION_GART_SIZE, (int *)&(info->gartSize))) ||
++ OPTION_GART_SIZE, (int *)&(info->dri->gartSize))) ||
+ (xf86GetOptValInteger(info->Options,
+- OPTION_GART_SIZE_OLD, (int *)&(info->gartSize)))) {
+- switch (info->gartSize) {
++ OPTION_GART_SIZE_OLD, (int *)&(info->dri->gartSize)))) {
++ switch (info->dri->gartSize) {
+ case 4:
+ case 8:
+ case 16:
+@@ -2197,24 +2232,24 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn)
+
+ default:
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+- "Illegal GART size: %d MB\n", info->gartSize);
++ "Illegal GART size: %d MB\n", info->dri->gartSize);
+ return FALSE;
+ }
+ }
+
+ if (xf86GetOptValInteger(info->Options,
+- OPTION_RING_SIZE, &(info->ringSize))) {
+- if (info->ringSize < 1 || info->ringSize >= (int)info->gartSize) {
++ OPTION_RING_SIZE, &(info->dri->ringSize))) {
++ if (info->dri->ringSize < 1 || info->dri->ringSize >= (int)info->dri->gartSize) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Illegal ring buffer size: %d MB\n",
+- info->ringSize);
++ info->dri->ringSize);
+ return FALSE;
+ }
+ }
+
+ if (xf86GetOptValInteger(info->Options,
+- OPTION_PCIAPER_SIZE, &(info->pciAperSize))) {
+- switch(info->pciAperSize) {
++ OPTION_PCIAPER_SIZE, &(info->dri->pciAperSize))) {
++ switch(info->dri->pciAperSize) {
+ case 32:
+ case 64:
+ case 128:
+@@ -2223,63 +2258,63 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn)
+ default:
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Illegal pci aper size: %d MB\n",
+- info->pciAperSize);
++ info->dri->pciAperSize);
+ return FALSE;
+ }
+ }
+
+
+ if (xf86GetOptValInteger(info->Options,
+- OPTION_BUFFER_SIZE, &(info->bufSize))) {
+- if (info->bufSize < 1 || info->bufSize >= (int)info->gartSize) {
++ OPTION_BUFFER_SIZE, &(info->dri->bufSize))) {
++ if (info->dri->bufSize < 1 || info->dri->bufSize >= (int)info->dri->gartSize) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Illegal vertex/indirect buffers size: %d MB\n",
+- info->bufSize);
++ info->dri->bufSize);
+ return FALSE;
+ }
+- if (info->bufSize > 2) {
++ if (info->dri->bufSize > 2) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Illegal vertex/indirect buffers size: %d MB\n",
+- info->bufSize);
++ info->dri->bufSize);
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Clamping vertex/indirect buffers size to 2 MB\n");
+- info->bufSize = 2;
++ info->dri->bufSize = 2;
+ }
+ }
+
+- if (info->ringSize + info->bufSize + info->gartTexSize >
+- (int)info->gartSize) {
++ if (info->dri->ringSize + info->dri->bufSize + info->dri->gartTexSize >
++ (int)info->dri->gartSize) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Buffers are too big for requested GART space\n");
+ return FALSE;
+ }
+
+- info->gartTexSize = info->gartSize - (info->ringSize + info->bufSize);
++ info->dri->gartTexSize = info->dri->gartSize - (info->dri->ringSize + info->dri->bufSize);
+
+ if (xf86GetOptValInteger(info->Options, OPTION_USEC_TIMEOUT,
+- &(info->CPusecTimeout))) {
++ &(info->cp->CPusecTimeout))) {
+ /* This option checked by the RADEON DRM kernel module */
+ }
+
+ /* Two options to try and squeeze as much texture memory as possible
+ * for dedicated 3d rendering boxes
+ */
+- info->noBackBuffer = xf86ReturnOptValBool(info->Options,
+- OPTION_NO_BACKBUFFER,
+- FALSE);
++ info->dri->noBackBuffer = xf86ReturnOptValBool(info->Options,
++ OPTION_NO_BACKBUFFER,
++ FALSE);
+
+- info->allowPageFlip = 0;
++ info->dri->allowPageFlip = 0;
+
+ #ifdef DAMAGE
+- if (info->noBackBuffer) {
++ if (info->dri->noBackBuffer) {
+ from = X_DEFAULT;
+ reason = " because back buffer disabled";
+ } else {
+ from = xf86GetOptValBool(info->Options, OPTION_PAGE_FLIP,
+- &info->allowPageFlip) ? X_CONFIG : X_DEFAULT;
++ &info->dri->allowPageFlip) ? X_CONFIG : X_DEFAULT;
+
+ if (IS_AVIVO_VARIANT) {
+- info->allowPageFlip = 0;
++ info->dri->allowPageFlip = 0;
+ reason = " on r5xx and newer chips.\n";
+ } else {
+ reason = "";
+@@ -2292,7 +2327,7 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn)
+ #endif
+
+ xf86DrvMsg(pScrn->scrnIndex, from, "Page Flipping %sabled%s\n",
+- info->allowPageFlip ? "en" : "dis", reason);
++ info->dri->allowPageFlip ? "en" : "dis", reason);
+
+ info->DMAForXv = TRUE;
+ from = xf86GetOptValBool(info->Options, OPTION_XV_DMA, &info->DMAForXv)
+@@ -2332,15 +2367,15 @@ static void RADEONPreInitColorTiling(ScrnInfoPtr pScrn)
+
+ #ifdef XF86DRI
+ if (info->directRenderingEnabled &&
+- info->pKernelDRMVersion->version_minor < 14) {
++ info->dri->pKernelDRMVersion->version_minor < 14) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "[dri] color tiling disabled because of version "
+ "mismatch.\n"
+ "[dri] radeon.o kernel module version is %d.%d.%d but "
+ "1.14.0 or later is required for color tiling.\n",
+- info->pKernelDRMVersion->version_major,
+- info->pKernelDRMVersion->version_minor,
+- info->pKernelDRMVersion->version_patchlevel);
++ info->dri->pKernelDRMVersion->version_major,
++ info->dri->pKernelDRMVersion->version_minor,
++ info->dri->pKernelDRMVersion->version_patchlevel);
+ info->allowColorTiling = FALSE;
+ return;
+ }
+@@ -2994,7 +3029,7 @@ static void RADEONLoadPalette(ScrnInfoPtr pScrn, int numColors,
+ int c;
+
+ #ifdef XF86DRI
+- if (info->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0);
++ if (info->cp->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0);
+ #endif
+
+ if (info->accelOn && pScrn->pScreen)
+@@ -3058,7 +3093,7 @@ static void RADEONLoadPalette(ScrnInfoPtr pScrn, int numColors,
+ }
+
+ #ifdef XF86DRI
+- if (info->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen);
++ if (info->cp->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen);
+ #endif
+ }
+
+@@ -3077,12 +3112,12 @@ static void RADEONBlockHandler(int i, pointer blockData,
+ (*info->VideoTimerCallback)(pScrn, currentTime.milliseconds);
+
+ #if defined(RENDER) && defined(USE_XAA)
+- if(info->RenderCallback)
+- (*info->RenderCallback)(pScrn);
++ if(info->accel_state->RenderCallback)
++ (*info->accel_state->RenderCallback)(pScrn);
+ #endif
+
+ #ifdef USE_EXA
+- info->engineMode = EXA_ENGINEMODE_UNKNOWN;
++ info->accel_state->engineMode = EXA_ENGINEMODE_UNKNOWN;
+ #endif
+ }
+
+@@ -3175,17 +3210,17 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+
+ info->accelOn = FALSE;
+ #ifdef USE_XAA
+- info->accel = NULL;
++ info->accel_state->accel = NULL;
+ #endif
+ #ifdef XF86DRI
+- pScrn->fbOffset = info->frontOffset;
++ pScrn->fbOffset = info->dri->frontOffset;
+ #endif
+
+ if (info->IsSecondary) pScrn->fbOffset = pScrn->videoRam * 1024;
+ #ifdef XF86DRI
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "RADEONScreenInit %lx %ld %d\n",
+- pScrn->memPhysBase, pScrn->fbOffset, info->frontOffset);
++ pScrn->memPhysBase, pScrn->fbOffset, info->dri->frontOffset);
+ #else
+ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+ "RADEONScreenInit %lx %ld\n",
+@@ -3194,8 +3229,8 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+ if (!RADEONMapMem(pScrn)) return FALSE;
+
+ #ifdef XF86DRI
+- info->fbX = 0;
+- info->fbY = 0;
++ info->dri->fbX = 0;
++ info->dri->fbY = 0;
+ #endif
+
+ info->PaletteSavedOnVT = FALSE;
+@@ -3249,21 +3284,21 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+ if (info->directRenderingEnabled) {
+ MessageType from;
+
+- info->depthBits = pScrn->depth;
++ info->dri->depthBits = pScrn->depth;
+
+ from = xf86GetOptValInteger(info->Options, OPTION_DEPTH_BITS,
+- &info->depthBits)
++ &info->dri->depthBits)
+ ? X_CONFIG : X_DEFAULT;
+
+- if (info->depthBits != 16 && info->depthBits != 24) {
++ if (info->dri->depthBits != 16 && info->dri->depthBits != 24) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Value for Option \"DepthBits\" must be 16 or 24\n");
+- info->depthBits = pScrn->depth;
++ info->dri->depthBits = pScrn->depth;
+ from = X_DEFAULT;
+ }
+
+ xf86DrvMsg(pScrn->scrnIndex, from,
+- "Using %d bit depth buffer\n", info->depthBits);
++ "Using %d bit depth buffer\n", info->dri->depthBits);
+ }
+
+
+@@ -3276,7 +3311,7 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+ RADEONInitMemoryMap(pScrn);
+
+ /* empty the surfaces */
+- {
++ if (info->ChipFamily < CHIP_FAMILY_R600) {
+ unsigned char *RADEONMMIO = info->MMIO;
+ unsigned int j;
+ for (j = 0; j < 8; j++) {
+@@ -3288,14 +3323,14 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+
+ #ifdef XF86DRI
+ /* Depth moves are disabled by default since they are extremely slow */
+- info->depthMoves = xf86ReturnOptValBool(info->Options,
++ info->dri->depthMoves = xf86ReturnOptValBool(info->Options,
+ OPTION_DEPTH_MOVE, FALSE);
+- if (info->depthMoves && info->allowColorTiling) {
++ if (info->dri->depthMoves && info->allowColorTiling) {
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Enabling depth moves\n");
+- } else if (info->depthMoves) {
++ } else if (info->dri->depthMoves) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Depth moves don't work without color tiling, disabled\n");
+- info->depthMoves = FALSE;
++ info->dri->depthMoves = FALSE;
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Depth moves disabled by default\n");
+@@ -3331,15 +3366,15 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+ * default, can be overridden with Option "FBTexPercent".
+ * Round down to a whole number of texture regions.
+ */
+- info->textureSize = 50;
++ info->dri->textureSize = 50;
+
+ if (xf86GetOptValInteger(info->Options, OPTION_FBTEX_PERCENT,
+- &(info->textureSize))) {
+- if (info->textureSize < 0 || info->textureSize > 100) {
++ &(info->dri->textureSize))) {
++ if (info->dri->textureSize < 0 || info->dri->textureSize > 100) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Illegal texture memory percentage: %dx, setting to default 50%%\n",
+- info->textureSize);
+- info->textureSize = 50;
++ info->dri->textureSize);
++ info->dri->textureSize = 50;
+ }
+ }
+ }
+@@ -3356,19 +3391,19 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+
+ #if defined(XF86DRI) && defined(USE_XAA)
+ if (!info->useEXA && hasDRI) {
+- info->textureSize = -1;
++ info->dri->textureSize = -1;
+ if (xf86GetOptValInteger(info->Options, OPTION_FBTEX_PERCENT,
+- &(info->textureSize))) {
+- if (info->textureSize < 0 || info->textureSize > 100) {
++ &(info->dri->textureSize))) {
++ if (info->dri->textureSize < 0 || info->dri->textureSize > 100) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Illegal texture memory percentage: %dx, using default behaviour\n",
+- info->textureSize);
+- info->textureSize = -1;
++ info->dri->textureSize);
++ info->dri->textureSize = -1;
+ }
+ }
+ if (!RADEONSetupMemXAA_DRI(scrnIndex, pScreen))
+ return FALSE;
+- pScrn->fbOffset = info->frontOffset;
++ pScrn->fbOffset = info->dri->frontOffset;
+ }
+ #endif
+
+@@ -3377,8 +3412,9 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+ return FALSE;
+ #endif
+
+- info->dst_pitch_offset = (((pScrn->displayWidth * info->CurrentLayout.pixel_bytes / 64)
+- << 22) | ((info->fbLocation + pScrn->fbOffset) >> 10));
++ info->accel_state->dst_pitch_offset =
++ (((pScrn->displayWidth * info->CurrentLayout.pixel_bytes / 64)
++ << 22) | ((info->fbLocation + pScrn->fbOffset) >> 10));
+
+ /* Setup DRI after visuals have been established, but before fbScreenInit is
+ * called. fbScreenInit will eventually call the driver's InitGLXVisuals
+@@ -3408,18 +3444,18 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+ }
+
+ /* Tell DRI about new memory map */
+- if (info->directRenderingEnabled && info->newMemoryMap) {
++ if (info->directRenderingEnabled && info->dri->newMemoryMap) {
+ if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_NEW_MEMMAP, 1) < 0) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "[drm] failed to enable new memory map\n");
+ RADEONDRICloseScreen(pScreen);
+- info->directRenderingEnabled = FALSE;
++ info->directRenderingEnabled = FALSE;
+ }
+ }
+ #endif
+ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+ "Initializing fb layer\n");
+-
++
+ if (info->r600_shadow_fb) {
+ info->fb_shadow = xcalloc(1,
+ pScrn->displayWidth * pScrn->virtualY *
+@@ -3473,18 +3509,16 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+ else if (strcmp(s, "BGR") == 0) subPixelOrder = SubPixelHorizontalBGR;
+ else if (strcmp(s, "NONE") == 0) subPixelOrder = SubPixelNone;
+ PictureSetSubpixelOrder (pScreen, subPixelOrder);
+- }
++ }
+ #endif
+
+ pScrn->vtSema = TRUE;
+
+- /* xf86CrtcRotate() accesses pScrn->pScreen */
+- pScrn->pScreen = pScreen;
+-
+- if (!xf86SetDesiredModes (pScrn))
+- return FALSE;
+-
+- RADEONSaveScreen(pScreen, SCREEN_SAVER_ON);
++ /* restore the memory map here otherwise we may get a hang when
++ * initializing the drm below
++ */
++ RADEONInitMemMapRegisters(pScrn, info->ModeReg, info);
++ RADEONRestoreMemMapRegisters(pScrn, info->ModeReg);
+
+ /* Backing store setup */
+ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+@@ -3495,14 +3529,14 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+ /* DRI finalisation */
+ #ifdef XF86DRI
+ if (info->directRenderingEnabled && info->cardType==CARD_PCIE &&
+- info->pKernelDRMVersion->version_minor >= 19)
++ info->dri->pKernelDRMVersion->version_minor >= 19)
+ {
+- if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_LOCATION, info->pciGartOffset) < 0)
++ if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_LOCATION, info->dri->pciGartOffset) < 0)
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "[drm] failed set pci gart location\n");
+
+- if (info->pKernelDRMVersion->version_minor >= 26) {
+- if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_TABLE_SIZE, info->pciGartSize) < 0)
++ if (info->dri->pKernelDRMVersion->version_minor >= 26) {
++ if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_TABLE_SIZE, info->dri->pciGartSize) < 0)
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "[drm] failed set pci gart table size\n");
+ }
+@@ -3519,10 +3553,6 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+ */
+ RADEONAdjustMemMapRegisters(pScrn, info->ModeReg);
+
+- if ((info->DispPriority == 1) && (info->cardType==CARD_AGP)) {
+- /* we need to re-calculate bandwidth because of AGPMode difference. */
+- RADEONInitDispBandwidth(pScrn);
+- }
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Direct rendering enabled\n");
+
+ /* we might already be in tiled mode, tell drm about it */
+@@ -3620,6 +3650,10 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+ }
+ }
+
++ /* set the modes with desired rotation, etc. */
++ if (!xf86SetDesiredModes (pScrn))
++ return FALSE;
++
+ /* Provide SaveScreen & wrap BlockHandler and CloseScreen */
+ /* Wrap CloseScreen */
+ info->CloseScreen = pScreen->CloseScreen;
+@@ -3910,7 +3944,7 @@ static void RADEONAdjustMemMapRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save)
+ else
+ info->fbLocation = (info->mc_fb_location & 0xffff) << 16;
+
+- info->dst_pitch_offset =
++ info->accel_state->dst_pitch_offset =
+ (((pScrn->displayWidth * info->CurrentLayout.pixel_bytes / 64)
+ << 22) | ((info->fbLocation + pScrn->fbOffset) >> 10));
+ RADEONInitMemMapRegisters(pScrn, save, info);
+@@ -3920,14 +3954,14 @@ static void RADEONAdjustMemMapRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save)
+ #ifdef USE_EXA
+ if (info->accelDFS)
+ {
+- drmRadeonGetParam gp;
++ drm_radeon_getparam_t gp;
+ int gart_base;
+
+ memset(&gp, 0, sizeof(gp));
+ gp.param = RADEON_PARAM_GART_BASE;
+ gp.value = &gart_base;
+
+- if (drmCommandWriteRead(info->drmFD, DRM_RADEON_GETPARAM, &gp,
++ if (drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_GETPARAM, &gp,
+ sizeof(gp)) < 0) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Failed to determine GART area MC location, not using "
+@@ -4011,35 +4045,35 @@ void RADEONChangeSurfaces(ScrnInfoPtr pScrn)
+ }
+ #ifdef XF86DRI
+ if (info->directRenderingInited) {
+- drmRadeonSurfaceFree drmsurffree;
+- drmRadeonSurfaceAlloc drmsurfalloc;
++ drm_radeon_surface_free_t drmsurffree;
++ drm_radeon_surface_alloc_t drmsurfalloc;
+ int retvalue;
+- int depthCpp = (info->depthBits - 8) / 4;
++ int depthCpp = (info->dri->depthBits - 8) / 4;
+ int depth_width_bytes = pScrn->displayWidth * depthCpp;
+ int depthBufferSize = ((((pScrn->virtualY + 15) & ~15) * depth_width_bytes
+ + RADEON_BUFFER_ALIGN) & ~RADEON_BUFFER_ALIGN);
+ unsigned int depth_pattern;
+
+- drmsurffree.address = info->frontOffset;
+- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE,
++ drmsurffree.address = info->dri->frontOffset;
++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE,
+ &drmsurffree, sizeof(drmsurffree));
+
+ if (!((info->ChipFamily == CHIP_FAMILY_RV100) ||
+ (info->ChipFamily == CHIP_FAMILY_RS100) ||
+ (info->ChipFamily == CHIP_FAMILY_RS200))) {
+- drmsurffree.address = info->depthOffset;
+- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE,
++ drmsurffree.address = info->dri->depthOffset;
++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE,
+ &drmsurffree, sizeof(drmsurffree));
+ }
+
+- if (!info->noBackBuffer) {
+- drmsurffree.address = info->backOffset;
+- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE,
++ if (!info->dri->noBackBuffer) {
++ drmsurffree.address = info->dri->backOffset;
++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE,
+ &drmsurffree, sizeof(drmsurffree));
+ }
+
+ drmsurfalloc.size = bufferSize;
+- drmsurfalloc.address = info->frontOffset;
++ drmsurfalloc.address = info->dri->frontOffset;
+ drmsurfalloc.flags = swap_pattern;
+
+ if (info->tilingEnabled) {
+@@ -4048,15 +4082,15 @@ void RADEONChangeSurfaces(ScrnInfoPtr pScrn)
+ else
+ drmsurfalloc.flags |= (width_bytes / 16) | color_pattern;
+ }
+- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC,
++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC,
+ &drmsurfalloc, sizeof(drmsurfalloc));
+ if (retvalue < 0)
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "drm: could not allocate surface for front buffer!\n");
+
+- if ((info->have3DWindows) && (!info->noBackBuffer)) {
+- drmsurfalloc.address = info->backOffset;
+- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC,
++ if ((info->dri->have3DWindows) && (!info->dri->noBackBuffer)) {
++ drmsurfalloc.address = info->dri->backOffset;
++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC,
+ &drmsurfalloc, sizeof(drmsurfalloc));
+ if (retvalue < 0)
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+@@ -4081,18 +4115,18 @@ void RADEONChangeSurfaces(ScrnInfoPtr pScrn)
+ }
+
+ /* rv100 and probably the derivative igps don't have depth tiling on all the time? */
+- if (info->have3DWindows &&
++ if (info->dri->have3DWindows &&
+ (!((info->ChipFamily == CHIP_FAMILY_RV100) ||
+ (info->ChipFamily == CHIP_FAMILY_RS100) ||
+ (info->ChipFamily == CHIP_FAMILY_RS200)))) {
+- drmRadeonSurfaceAlloc drmsurfalloc;
++ drm_radeon_surface_alloc_t drmsurfalloc;
+ drmsurfalloc.size = depthBufferSize;
+- drmsurfalloc.address = info->depthOffset;
++ drmsurfalloc.address = info->dri->depthOffset;
+ if (IS_R300_VARIANT || IS_AVIVO_VARIANT)
+ drmsurfalloc.flags = swap_pattern | (depth_width_bytes / 8) | depth_pattern;
+ else
+ drmsurfalloc.flags = swap_pattern | (depth_width_bytes / 16) | depth_pattern;
+- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC,
++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC,
+ &drmsurfalloc, sizeof(drmsurfalloc));
+ if (retvalue < 0)
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+@@ -4178,6 +4212,7 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
+
+ state->crtc_master_en = INREG(AVIVO_DC_CRTC_MASTER_EN);
+ state->crtc_tv_control = INREG(AVIVO_DC_CRTC_TV_CONTROL);
++ state->dc_lb_memory_split = INREG(AVIVO_DC_LB_MEMORY_SPLIT);
+
+ state->pll1.ref_div_src = INREG(AVIVO_EXT1_PPLL_REF_DIV_SRC);
+ state->pll1.ref_div = INREG(AVIVO_EXT1_PPLL_REF_DIV);
+@@ -4233,8 +4268,10 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
+ state->grph1.x_end = INREG(AVIVO_D1GRPH_X_END);
+ state->grph1.y_end = INREG(AVIVO_D1GRPH_Y_END);
+
++ state->grph1.desktop_height = INREG(AVIVO_D1MODE_DESKTOP_HEIGHT);
+ state->grph1.viewport_start = INREG(AVIVO_D1MODE_VIEWPORT_START);
+ state->grph1.viewport_size = INREG(AVIVO_D1MODE_VIEWPORT_SIZE);
++ state->grph1.mode_data_format = INREG(AVIVO_D1MODE_DATA_FORMAT);
+
+ state->crtc2.pll_source = INREG(AVIVO_PCLK_CRTC2_CNTL);
+
+@@ -4272,8 +4309,10 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
+ state->grph2.x_end = INREG(AVIVO_D2GRPH_X_END);
+ state->grph2.y_end = INREG(AVIVO_D2GRPH_Y_END);
+
++ state->grph2.desktop_height = INREG(AVIVO_D2MODE_DESKTOP_HEIGHT);
+ state->grph2.viewport_start = INREG(AVIVO_D2MODE_VIEWPORT_START);
+ state->grph2.viewport_size = INREG(AVIVO_D2MODE_VIEWPORT_SIZE);
++ state->grph2.mode_data_format = INREG(AVIVO_D2MODE_DATA_FORMAT);
+
+ if (IS_DCE3_VARIANT) {
+ /* save DVOA regs */
+@@ -4477,14 +4516,71 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
+ struct avivo_state *state = &restore->avivo;
+ int i, j;
+
+- // OUTMC(pScrn, AVIVO_MC_MEMORY_MAP, state->mc_memory_map);
+- // OUTREG(AVIVO_VGA_MEMORY_BASE, state->vga_memory_base);
+- // OUTREG(AVIVO_VGA_FB_START, state->vga_fb_start);
++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "avivo_restore !\n");
++
++ /* Disable VGA control for now.. maybe needs to be changed */
++ OUTREG(AVIVO_D1VGA_CONTROL, 0);
++ OUTREG(AVIVO_D2VGA_CONTROL, 0);
++
++ /* Disable CRTCs */
++ OUTREG(AVIVO_D1CRTC_CONTROL,
++ (INREG(AVIVO_D1CRTC_CONTROL) & ~0x300) | 0x01000000);
++ OUTREG(AVIVO_D2CRTC_CONTROL,
++ (INREG(AVIVO_D2CRTC_CONTROL) & ~0x300) | 0x01000000);
++ OUTREG(AVIVO_D1CRTC_CONTROL,
++ INREG(AVIVO_D1CRTC_CONTROL) & ~0x1);
++ OUTREG(AVIVO_D2CRTC_CONTROL,
++ INREG(AVIVO_D2CRTC_CONTROL) & ~0x1);
++ OUTREG(AVIVO_D1CRTC_CONTROL,
++ INREG(AVIVO_D1CRTC_CONTROL) | 0x100);
++ OUTREG(AVIVO_D2CRTC_CONTROL,
++ INREG(AVIVO_D2CRTC_CONTROL) | 0x100);
++
++ /* Lock graph registers */
++ OUTREG(AVIVO_D1GRPH_UPDATE, AVIVO_D1GRPH_UPDATE_LOCK);
++ OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS, state->grph1.prim_surf_addr);
++ OUTREG(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS, state->grph1.sec_surf_addr);
++ OUTREG(AVIVO_D1GRPH_CONTROL, state->grph1.control);
++ OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_X, state->grph1.x_offset);
++ OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_Y, state->grph1.y_offset);
++ OUTREG(AVIVO_D1GRPH_X_START, state->grph1.x_start);
++ OUTREG(AVIVO_D1GRPH_Y_START, state->grph1.y_start);
++ OUTREG(AVIVO_D1GRPH_X_END, state->grph1.x_end);
++ OUTREG(AVIVO_D1GRPH_Y_END, state->grph1.y_end);
++ OUTREG(AVIVO_D1GRPH_PITCH, state->grph1.pitch);
++ OUTREG(AVIVO_D1GRPH_ENABLE, state->grph1.enable);
++ OUTREG(AVIVO_D1GRPH_UPDATE, 0);
++
++ OUTREG(AVIVO_D2GRPH_UPDATE, AVIVO_D1GRPH_UPDATE_LOCK);
++ OUTREG(AVIVO_D2GRPH_PRIMARY_SURFACE_ADDRESS, state->grph2.prim_surf_addr);
++ OUTREG(AVIVO_D2GRPH_SECONDARY_SURFACE_ADDRESS, state->grph2.sec_surf_addr);
++ OUTREG(AVIVO_D2GRPH_CONTROL, state->grph2.control);
++ OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_X, state->grph2.x_offset);
++ OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_Y, state->grph2.y_offset);
++ OUTREG(AVIVO_D2GRPH_X_START, state->grph2.x_start);
++ OUTREG(AVIVO_D2GRPH_Y_START, state->grph2.y_start);
++ OUTREG(AVIVO_D2GRPH_X_END, state->grph2.x_end);
++ OUTREG(AVIVO_D2GRPH_Y_END, state->grph2.y_end);
++ OUTREG(AVIVO_D2GRPH_PITCH, state->grph2.pitch);
++ OUTREG(AVIVO_D2GRPH_ENABLE, state->grph2.enable);
++ OUTREG(AVIVO_D2GRPH_UPDATE, 0);
+
++ /* Whack some mode regs too */
++ OUTREG(AVIVO_D1SCL_UPDATE, AVIVO_D1SCL_UPDATE_LOCK);
++ OUTREG(AVIVO_D1MODE_DESKTOP_HEIGHT, state->grph1.desktop_height);
++ OUTREG(AVIVO_D1MODE_VIEWPORT_START, state->grph1.viewport_start);
++ OUTREG(AVIVO_D1MODE_VIEWPORT_SIZE, state->grph1.viewport_size);
++ OUTREG(AVIVO_D1MODE_DATA_FORMAT, state->grph1.mode_data_format);
++ OUTREG(AVIVO_D1SCL_UPDATE, 0);
+
+- OUTREG(AVIVO_DC_CRTC_MASTER_EN, state->crtc_master_en);
+- OUTREG(AVIVO_DC_CRTC_TV_CONTROL, state->crtc_tv_control);
++ OUTREG(AVIVO_D2SCL_UPDATE, AVIVO_D1SCL_UPDATE_LOCK);
++ OUTREG(AVIVO_D2MODE_DESKTOP_HEIGHT, state->grph2.desktop_height);
++ OUTREG(AVIVO_D2MODE_VIEWPORT_START, state->grph2.viewport_start);
++ OUTREG(AVIVO_D2MODE_VIEWPORT_SIZE, state->grph2.viewport_size);
++ OUTREG(AVIVO_D2MODE_DATA_FORMAT, state->grph2.mode_data_format);
++ OUTREG(AVIVO_D2SCL_UPDATE, 0);
+
++ /* Set the PLL */
+ OUTREG(AVIVO_EXT1_PPLL_REF_DIV_SRC, state->pll1.ref_div_src);
+ OUTREG(AVIVO_EXT1_PPLL_REF_DIV, state->pll1.ref_div);
+ OUTREG(AVIVO_EXT1_PPLL_FB_DIV, state->pll1.fb_div);
+@@ -4504,7 +4600,9 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
+ OUTREG(AVIVO_P2PLL_INT_SS_CNTL, state->pll2.int_ss_cntl);
+
+ OUTREG(AVIVO_PCLK_CRTC1_CNTL, state->crtc1.pll_source);
++ OUTREG(AVIVO_PCLK_CRTC2_CNTL, state->crtc2.pll_source);
+
++ /* Set the CRTC */
+ OUTREG(AVIVO_D1CRTC_H_TOTAL, state->crtc1.h_total);
+ OUTREG(AVIVO_D1CRTC_H_BLANK_START_END, state->crtc1.h_blank_start_end);
+ OUTREG(AVIVO_D1CRTC_H_SYNC_A, state->crtc1.h_sync_a);
+@@ -4519,29 +4617,12 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
+ OUTREG(AVIVO_D1CRTC_V_SYNC_B, state->crtc1.v_sync_b);
+ OUTREG(AVIVO_D1CRTC_V_SYNC_B_CNTL, state->crtc1.v_sync_b_cntl);
+
+- OUTREG(AVIVO_D1CRTC_CONTROL, state->crtc1.control);
+- OUTREG(AVIVO_D1CRTC_BLANK_CONTROL, state->crtc1.blank_control);
+ OUTREG(AVIVO_D1CRTC_INTERLACE_CONTROL, state->crtc1.interlace_control);
+ OUTREG(AVIVO_D1CRTC_STEREO_CONTROL, state->crtc1.stereo_control);
+
+ OUTREG(AVIVO_D1CUR_CONTROL, state->crtc1.cursor_control);
+
+- OUTREG(AVIVO_D1GRPH_ENABLE, state->grph1.enable);
+- OUTREG(AVIVO_D1GRPH_CONTROL, state->grph1.control);
+- OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS, state->grph1.prim_surf_addr);
+- OUTREG(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS, state->grph1.sec_surf_addr);
+- OUTREG(AVIVO_D1GRPH_PITCH, state->grph1.pitch);
+- OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_X, state->grph1.x_offset);
+- OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_Y, state->grph1.y_offset);
+- OUTREG(AVIVO_D1GRPH_X_START, state->grph1.x_start);
+- OUTREG(AVIVO_D1GRPH_Y_START, state->grph1.y_start);
+- OUTREG(AVIVO_D1GRPH_X_END, state->grph1.x_end);
+- OUTREG(AVIVO_D1GRPH_Y_END, state->grph1.y_end);
+-
+- OUTREG(AVIVO_D1MODE_VIEWPORT_START, state->grph1.viewport_start);
+- OUTREG(AVIVO_D1MODE_VIEWPORT_SIZE, state->grph1.viewport_size);
+-
+- OUTREG(AVIVO_PCLK_CRTC2_CNTL, state->crtc2.pll_source);
++ /* XXX Fix scaler */
+
+ OUTREG(AVIVO_D2CRTC_H_TOTAL, state->crtc2.h_total);
+ OUTREG(AVIVO_D2CRTC_H_BLANK_START_END, state->crtc2.h_blank_start_end);
+@@ -4557,29 +4638,11 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
+ OUTREG(AVIVO_D2CRTC_V_SYNC_B, state->crtc2.v_sync_b);
+ OUTREG(AVIVO_D2CRTC_V_SYNC_B_CNTL, state->crtc2.v_sync_b_cntl);
+
+- OUTREG(AVIVO_D2CRTC_CONTROL, state->crtc2.control);
+- OUTREG(AVIVO_D2CRTC_BLANK_CONTROL, state->crtc2.blank_control);
+ OUTREG(AVIVO_D2CRTC_INTERLACE_CONTROL, state->crtc2.interlace_control);
+ OUTREG(AVIVO_D2CRTC_STEREO_CONTROL, state->crtc2.stereo_control);
+
+ OUTREG(AVIVO_D2CUR_CONTROL, state->crtc2.cursor_control);
+
+- OUTREG(AVIVO_D2GRPH_ENABLE, state->grph2.enable);
+- OUTREG(AVIVO_D2GRPH_CONTROL, state->grph2.control);
+- OUTREG(AVIVO_D2GRPH_PRIMARY_SURFACE_ADDRESS, state->grph2.prim_surf_addr);
+- OUTREG(AVIVO_D2GRPH_SECONDARY_SURFACE_ADDRESS, state->grph2.sec_surf_addr);
+- OUTREG(AVIVO_D2GRPH_PITCH, state->grph2.pitch);
+- OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_X, state->grph2.x_offset);
+- OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_Y, state->grph2.y_offset);
+- OUTREG(AVIVO_D2GRPH_X_START, state->grph2.x_start);
+- OUTREG(AVIVO_D2GRPH_Y_START, state->grph2.y_start);
+- OUTREG(AVIVO_D2GRPH_X_END, state->grph2.x_end);
+- OUTREG(AVIVO_D2GRPH_Y_END, state->grph2.y_end);
+-
+- OUTREG(AVIVO_D2MODE_VIEWPORT_START, state->grph2.viewport_start);
+- OUTREG(AVIVO_D2MODE_VIEWPORT_SIZE, state->grph2.viewport_size);
+-
+-
+ if (IS_DCE3_VARIANT) {
+ /* DVOA regs */
+ OUTREG(0x7080, state->dvoa[0]);
+@@ -4699,7 +4762,7 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
+ }
+
+ j = 0;
+- /* DAC regs */
++ /* DAC regs */ /* -- MIGHT NEED ORDERING FIX & DELAYS -- */
+ for (i = 0x7800; i <= 0x782c; i += 4) {
+ OUTREG(i, state->daca[j]);
+ OUTREG((i + 0x200), state->dacb[j]);
+@@ -4766,8 +4829,31 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
+ OUTREG(0x6e30, state->dxscl[6]);
+ OUTREG(0x6e34, state->dxscl[7]);
+
++ /* Enable CRTCs */
++ if (state->crtc1.control & 1) {
++ OUTREG(AVIVO_D1CRTC_CONTROL, 0x01000101);
++ INREG(AVIVO_D1CRTC_CONTROL);
++ OUTREG(AVIVO_D1CRTC_CONTROL, 0x00010101);
++ }
++ if (state->crtc2.control & 1) {
++ OUTREG(AVIVO_D2CRTC_CONTROL, 0x01000101);
++ INREG(AVIVO_D2CRTC_CONTROL);
++ OUTREG(AVIVO_D2CRTC_CONTROL, 0x00010101);
++ }
++
++ /* Where should that go ? */
++ OUTREG(AVIVO_DC_CRTC_TV_CONTROL, state->crtc_tv_control);
++ OUTREG(AVIVO_DC_LB_MEMORY_SPLIT, state->dc_lb_memory_split);
++
++ /* Need fixing too ? */
++ OUTREG(AVIVO_D1CRTC_BLANK_CONTROL, state->crtc1.blank_control);
++ OUTREG(AVIVO_D2CRTC_BLANK_CONTROL, state->crtc2.blank_control);
++
++ /* Dbl check */
+ OUTREG(AVIVO_D1VGA_CONTROL, state->vga1_cntl);
+ OUTREG(AVIVO_D2VGA_CONTROL, state->vga2_cntl);
++
++ /* Should only enable outputs here */
+ }
+
+ static void avivo_restore_vga_regs(ScrnInfoPtr pScrn, RADEONSavePtr restore)
+@@ -5045,7 +5131,7 @@ Bool RADEONSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+ Bool tilingOld = info->tilingEnabled;
+ Bool ret;
+ #ifdef XF86DRI
+- Bool CPStarted = info->CPStarted;
++ Bool CPStarted = info->cp->CPStarted;
+
+ if (CPStarted) {
+ DRILock(pScrn->pScreen, 0);
+@@ -5060,7 +5146,7 @@ Bool RADEONSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+ info->tilingEnabled = (mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE;
+ #ifdef XF86DRI
+ if (info->directRenderingEnabled && (info->tilingEnabled != tilingOld)) {
+- RADEONSAREAPrivPtr pSAREAPriv;
++ drm_radeon_sarea_t *pSAREAPriv;
+ if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_SWITCH_TILING, (info->tilingEnabled ? 1 : 0)) < 0)
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "[drm] failed changing tiling status\n");
+@@ -5170,7 +5256,7 @@ void RADEONDoAdjustFrame(ScrnInfoPtr pScrn, int x, int y, Bool crtc2)
+ unsigned char *RADEONMMIO = info->MMIO;
+ int Base, reg, regcntl, crtcoffsetcntl, xytilereg, crtcxytile = 0;
+ #ifdef XF86DRI
+- RADEONSAREAPrivPtr pSAREAPriv;
++ drm_radeon_sarea_t *pSAREAPriv;
+ XF86DRISAREAPtr pSAREA;
+ #endif
+
+@@ -5209,7 +5295,7 @@ void RADEONDoAdjustFrame(ScrnInfoPtr pScrn, int x, int y, Bool crtc2)
+ #if 0
+ /* try to get rid of flickering when scrolling at least for 2d */
+ #ifdef XF86DRI
+- if (!info->have3DWindows)
++ if (!info->dri->have3DWindows)
+ #endif
+ crtcoffsetcntl &= ~RADEON_CRTC_OFFSET_FLIP_CNTL;
+ #endif
+@@ -5266,7 +5352,7 @@ void RADEONDoAdjustFrame(ScrnInfoPtr pScrn, int x, int y, Bool crtc2)
+ }
+
+ if (pSAREAPriv->pfCurrentPage == 1) {
+- Base += info->backOffset - info->frontOffset;
++ Base += info->dri->backOffset - info->dri->frontOffset;
+ }
+ }
+ #endif
+@@ -5290,7 +5376,7 @@ void RADEONAdjustFrame(int scrnIndex, int x, int y, int flags)
+ xf86CrtcPtr crtc = output->crtc;
+
+ #ifdef XF86DRI
+- if (info->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0);
++ if (info->cp->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0);
+ #endif
+
+ if (info->accelOn)
+@@ -5307,7 +5393,7 @@ void RADEONAdjustFrame(int scrnIndex, int x, int y, int flags)
+
+
+ #ifdef XF86DRI
+- if (info->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen);
++ if (info->cp->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen);
+ #endif
+ }
+
+@@ -5318,26 +5404,18 @@ Bool RADEONEnterVT(int scrnIndex, int flags)
+ {
+ ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- unsigned char *RADEONMMIO = info->MMIO;
+- uint32_t mem_size;
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+ int i;
+
+ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+ "RADEONEnterVT\n");
+
+- if (info->ChipFamily >= CHIP_FAMILY_R600)
+- mem_size = INREG(R600_CONFIG_MEMSIZE);
+- else
+- mem_size = INREG(RADEON_CONFIG_MEMSIZE);
+-
+- if (mem_size == 0) { /* Softboot V_BIOS */
++ if (!radeon_card_posted(pScrn)) { /* Softboot V_BIOS */
+ if (info->IsAtomBios) {
+ rhdAtomASICInit(info->atomBIOS);
+ } else {
+ xf86Int10InfoPtr pInt;
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+- "zero MEMSIZE, probably at D3cold. Re-POSTing via int10.\n");
++
+ pInt = xf86InitInt10 (info->pEnt->index);
+ if (pInt) {
+ pInt->num = 0xe6;
+@@ -5382,10 +5460,10 @@ Bool RADEONEnterVT(int scrnIndex, int flags)
+ #ifdef XF86DRI
+ if (info->directRenderingEnabled) {
+ if (info->cardType == CARD_PCIE &&
+- info->pKernelDRMVersion->version_minor >= 19 &&
++ info->dri->pKernelDRMVersion->version_minor >= 19 &&
+ info->FbSecureSize) {
+ /* we need to backup the PCIE GART TABLE from fb memory */
+- memcpy(info->FB + info->pciGartOffset, info->pciGartBackup, info->pciGartSize);
++ memcpy(info->FB + info->dri->pciGartOffset, info->dri->pciGartBackup, info->dri->pciGartSize);
+ }
+
+ /* get the DRI back into shape after resume */
+@@ -5433,18 +5511,18 @@ void RADEONLeaveVT(int scrnIndex, int flags)
+ RADEONCP_STOP(pScrn, info);
+
+ if (info->cardType == CARD_PCIE &&
+- info->pKernelDRMVersion->version_minor >= 19 &&
++ info->dri->pKernelDRMVersion->version_minor >= 19 &&
+ info->FbSecureSize) {
+ /* we need to backup the PCIE GART TABLE from fb memory */
+- memcpy(info->pciGartBackup, (info->FB + info->pciGartOffset), info->pciGartSize);
++ memcpy(info->dri->pciGartBackup, (info->FB + info->dri->pciGartOffset), info->dri->pciGartSize);
+ }
+
+ /* Make sure 3D clients will re-upload textures to video RAM */
+- if (info->textureSize) {
+- RADEONSAREAPrivPtr pSAREAPriv =
+- (RADEONSAREAPrivPtr)DRIGetSAREAPrivate(pScrn->pScreen);
+- drmTextureRegionPtr list = pSAREAPriv->texList[0];
+- int age = ++pSAREAPriv->texAge[0];
++ if (info->dri->textureSize) {
++ drm_radeon_sarea_t *pSAREAPriv =
++ (drm_radeon_sarea_t*)DRIGetSAREAPrivate(pScrn->pScreen);
++ struct drm_tex_region *list = pSAREAPriv->tex_list[0];
++ int age = ++pSAREAPriv->tex_age[0];
+
+ i = 0;
+
+@@ -5501,12 +5579,12 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen)
+
+ #ifdef XF86DRI
+ #ifdef DAMAGE
+- if (info->pDamage) {
++ if (info->dri && info->dri->pDamage) {
+ PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen);
+
+- DamageUnregister(&pPix->drawable, info->pDamage);
+- DamageDestroy(info->pDamage);
+- info->pDamage = NULL;
++ DamageUnregister(&pPix->drawable, info->dri->pDamage);
++ DamageDestroy(info->dri->pDamage);
++ info->dri->pDamage = NULL;
+ }
+ #endif
+
+@@ -5514,9 +5592,9 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen)
+ #endif
+
+ #ifdef USE_XAA
+- if(!info->useEXA && info->RenderTex) {
+- xf86FreeOffscreenLinear(info->RenderTex);
+- info->RenderTex = NULL;
++ if(!info->useEXA && info->accel_state->RenderTex) {
++ xf86FreeOffscreenLinear(info->accel_state->RenderTex);
++ info->accel_state->RenderTex = NULL;
+ }
+ #endif /* USE_XAA */
+
+@@ -5527,21 +5605,21 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen)
+ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+ "Disposing accel...\n");
+ #ifdef USE_EXA
+- if (info->exa) {
++ if (info->accel_state->exa) {
+ exaDriverFini(pScreen);
+- xfree(info->exa);
+- info->exa = NULL;
++ xfree(info->accel_state->exa);
++ info->accel_state->exa = NULL;
+ }
+ #endif /* USE_EXA */
+ #ifdef USE_XAA
+ if (!info->useEXA) {
+- if (info->accel)
+- XAADestroyInfoRec(info->accel);
+- info->accel = NULL;
++ if (info->accel_state->accel)
++ XAADestroyInfoRec(info->accel_state->accel);
++ info->accel_state->accel = NULL;
+
+- if (info->scratch_save)
+- xfree(info->scratch_save);
+- info->scratch_save = NULL;
++ if (info->accel_state->scratch_save)
++ xfree(info->accel_state->scratch_save);
++ info->accel_state->scratch_save = NULL;
+ }
+ #endif /* USE_XAA */
+
+diff --git a/src/radeon_drm.h b/src/radeon_drm.h
+new file mode 100644
+index 0000000..66cefb7
+--- /dev/null
++++ b/src/radeon_drm.h
+@@ -0,0 +1,756 @@
++/* radeon_drm.h -- Public header for the radeon driver -*- linux-c -*-
++ *
++ * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas.
++ * Copyright 2000 VA Linux Systems, Inc., Fremont, California.
++ * Copyright 2002 Tungsten Graphics, 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 NONINFRINGEMENT. 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.
++ *
++ * Authors:
++ * Kevin E. Martin <martin@valinux.com>
++ * Gareth Hughes <gareth@valinux.com>
++ * Keith Whitwell <keith@tungstengraphics.com>
++ */
++
++#ifndef __RADEON_DRM_H__
++#define __RADEON_DRM_H__
++
++/* WARNING: If you change any of these defines, make sure to change the
++ * defines in the X server file (radeon_sarea.h)
++ */
++#ifndef __RADEON_SAREA_DEFINES__
++#define __RADEON_SAREA_DEFINES__
++
++/* Old style state flags, required for sarea interface (1.1 and 1.2
++ * clears) and 1.2 drm_vertex2 ioctl.
++ */
++#define RADEON_UPLOAD_CONTEXT 0x00000001
++#define RADEON_UPLOAD_VERTFMT 0x00000002
++#define RADEON_UPLOAD_LINE 0x00000004
++#define RADEON_UPLOAD_BUMPMAP 0x00000008
++#define RADEON_UPLOAD_MASKS 0x00000010
++#define RADEON_UPLOAD_VIEWPORT 0x00000020
++#define RADEON_UPLOAD_SETUP 0x00000040
++#define RADEON_UPLOAD_TCL 0x00000080
++#define RADEON_UPLOAD_MISC 0x00000100
++#define RADEON_UPLOAD_TEX0 0x00000200
++#define RADEON_UPLOAD_TEX1 0x00000400
++#define RADEON_UPLOAD_TEX2 0x00000800
++#define RADEON_UPLOAD_TEX0IMAGES 0x00001000
++#define RADEON_UPLOAD_TEX1IMAGES 0x00002000
++#define RADEON_UPLOAD_TEX2IMAGES 0x00004000
++#define RADEON_UPLOAD_CLIPRECTS 0x00008000 /* handled client-side */
++#define RADEON_REQUIRE_QUIESCENCE 0x00010000
++#define RADEON_UPLOAD_ZBIAS 0x00020000 /* version 1.2 and newer */
++#define RADEON_UPLOAD_ALL 0x003effff
++#define RADEON_UPLOAD_CONTEXT_ALL 0x003e01ff
++
++/* New style per-packet identifiers for use in cmd_buffer ioctl with
++ * the RADEON_EMIT_PACKET command. Comments relate new packets to old
++ * state bits and the packet size:
++ */
++#define RADEON_EMIT_PP_MISC 0 /* context/7 */
++#define RADEON_EMIT_PP_CNTL 1 /* context/3 */
++#define RADEON_EMIT_RB3D_COLORPITCH 2 /* context/1 */
++#define RADEON_EMIT_RE_LINE_PATTERN 3 /* line/2 */
++#define RADEON_EMIT_SE_LINE_WIDTH 4 /* line/1 */
++#define RADEON_EMIT_PP_LUM_MATRIX 5 /* bumpmap/1 */
++#define RADEON_EMIT_PP_ROT_MATRIX_0 6 /* bumpmap/2 */
++#define RADEON_EMIT_RB3D_STENCILREFMASK 7 /* masks/3 */
++#define RADEON_EMIT_SE_VPORT_XSCALE 8 /* viewport/6 */
++#define RADEON_EMIT_SE_CNTL 9 /* setup/2 */
++#define RADEON_EMIT_SE_CNTL_STATUS 10 /* setup/1 */
++#define RADEON_EMIT_RE_MISC 11 /* misc/1 */
++#define RADEON_EMIT_PP_TXFILTER_0 12 /* tex0/6 */
++#define RADEON_EMIT_PP_BORDER_COLOR_0 13 /* tex0/1 */
++#define RADEON_EMIT_PP_TXFILTER_1 14 /* tex1/6 */
++#define RADEON_EMIT_PP_BORDER_COLOR_1 15 /* tex1/1 */
++#define RADEON_EMIT_PP_TXFILTER_2 16 /* tex2/6 */
++#define RADEON_EMIT_PP_BORDER_COLOR_2 17 /* tex2/1 */
++#define RADEON_EMIT_SE_ZBIAS_FACTOR 18 /* zbias/2 */
++#define RADEON_EMIT_SE_TCL_OUTPUT_VTX_FMT 19 /* tcl/11 */
++#define RADEON_EMIT_SE_TCL_MATERIAL_EMMISSIVE_RED 20 /* material/17 */
++#define R200_EMIT_PP_TXCBLEND_0 21 /* tex0/4 */
++#define R200_EMIT_PP_TXCBLEND_1 22 /* tex1/4 */
++#define R200_EMIT_PP_TXCBLEND_2 23 /* tex2/4 */
++#define R200_EMIT_PP_TXCBLEND_3 24 /* tex3/4 */
++#define R200_EMIT_PP_TXCBLEND_4 25 /* tex4/4 */
++#define R200_EMIT_PP_TXCBLEND_5 26 /* tex5/4 */
++#define R200_EMIT_PP_TXCBLEND_6 27 /* /4 */
++#define R200_EMIT_PP_TXCBLEND_7 28 /* /4 */
++#define R200_EMIT_TCL_LIGHT_MODEL_CTL_0 29 /* tcl/7 */
++#define R200_EMIT_TFACTOR_0 30 /* tf/7 */
++#define R200_EMIT_VTX_FMT_0 31 /* vtx/5 */
++#define R200_EMIT_VAP_CTL 32 /* vap/1 */
++#define R200_EMIT_MATRIX_SELECT_0 33 /* msl/5 */
++#define R200_EMIT_TEX_PROC_CTL_2 34 /* tcg/5 */
++#define R200_EMIT_TCL_UCP_VERT_BLEND_CTL 35 /* tcl/1 */
++#define R200_EMIT_PP_TXFILTER_0 36 /* tex0/6 */
++#define R200_EMIT_PP_TXFILTER_1 37 /* tex1/6 */
++#define R200_EMIT_PP_TXFILTER_2 38 /* tex2/6 */
++#define R200_EMIT_PP_TXFILTER_3 39 /* tex3/6 */
++#define R200_EMIT_PP_TXFILTER_4 40 /* tex4/6 */
++#define R200_EMIT_PP_TXFILTER_5 41 /* tex5/6 */
++#define R200_EMIT_PP_TXOFFSET_0 42 /* tex0/1 */
++#define R200_EMIT_PP_TXOFFSET_1 43 /* tex1/1 */
++#define R200_EMIT_PP_TXOFFSET_2 44 /* tex2/1 */
++#define R200_EMIT_PP_TXOFFSET_3 45 /* tex3/1 */
++#define R200_EMIT_PP_TXOFFSET_4 46 /* tex4/1 */
++#define R200_EMIT_PP_TXOFFSET_5 47 /* tex5/1 */
++#define R200_EMIT_VTE_CNTL 48 /* vte/1 */
++#define R200_EMIT_OUTPUT_VTX_COMP_SEL 49 /* vtx/1 */
++#define R200_EMIT_PP_TAM_DEBUG3 50 /* tam/1 */
++#define R200_EMIT_PP_CNTL_X 51 /* cst/1 */
++#define R200_EMIT_RB3D_DEPTHXY_OFFSET 52 /* cst/1 */
++#define R200_EMIT_RE_AUX_SCISSOR_CNTL 53 /* cst/1 */
++#define R200_EMIT_RE_SCISSOR_TL_0 54 /* cst/2 */
++#define R200_EMIT_RE_SCISSOR_TL_1 55 /* cst/2 */
++#define R200_EMIT_RE_SCISSOR_TL_2 56 /* cst/2 */
++#define R200_EMIT_SE_VAP_CNTL_STATUS 57 /* cst/1 */
++#define R200_EMIT_SE_VTX_STATE_CNTL 58 /* cst/1 */
++#define R200_EMIT_RE_POINTSIZE 59 /* cst/1 */
++#define R200_EMIT_TCL_INPUT_VTX_VECTOR_ADDR_0 60 /* cst/4 */
++#define R200_EMIT_PP_CUBIC_FACES_0 61
++#define R200_EMIT_PP_CUBIC_OFFSETS_0 62
++#define R200_EMIT_PP_CUBIC_FACES_1 63
++#define R200_EMIT_PP_CUBIC_OFFSETS_1 64
++#define R200_EMIT_PP_CUBIC_FACES_2 65
++#define R200_EMIT_PP_CUBIC_OFFSETS_2 66
++#define R200_EMIT_PP_CUBIC_FACES_3 67
++#define R200_EMIT_PP_CUBIC_OFFSETS_3 68
++#define R200_EMIT_PP_CUBIC_FACES_4 69
++#define R200_EMIT_PP_CUBIC_OFFSETS_4 70
++#define R200_EMIT_PP_CUBIC_FACES_5 71
++#define R200_EMIT_PP_CUBIC_OFFSETS_5 72
++#define RADEON_EMIT_PP_TEX_SIZE_0 73
++#define RADEON_EMIT_PP_TEX_SIZE_1 74
++#define RADEON_EMIT_PP_TEX_SIZE_2 75
++#define R200_EMIT_RB3D_BLENDCOLOR 76
++#define R200_EMIT_TCL_POINT_SPRITE_CNTL 77
++#define RADEON_EMIT_PP_CUBIC_FACES_0 78
++#define RADEON_EMIT_PP_CUBIC_OFFSETS_T0 79
++#define RADEON_EMIT_PP_CUBIC_FACES_1 80
++#define RADEON_EMIT_PP_CUBIC_OFFSETS_T1 81
++#define RADEON_EMIT_PP_CUBIC_FACES_2 82
++#define RADEON_EMIT_PP_CUBIC_OFFSETS_T2 83
++#define R200_EMIT_PP_TRI_PERF_CNTL 84
++#define R200_EMIT_PP_AFS_0 85
++#define R200_EMIT_PP_AFS_1 86
++#define R200_EMIT_ATF_TFACTOR 87
++#define R200_EMIT_PP_TXCTLALL_0 88
++#define R200_EMIT_PP_TXCTLALL_1 89
++#define R200_EMIT_PP_TXCTLALL_2 90
++#define R200_EMIT_PP_TXCTLALL_3 91
++#define R200_EMIT_PP_TXCTLALL_4 92
++#define R200_EMIT_PP_TXCTLALL_5 93
++#define R200_EMIT_VAP_PVS_CNTL 94
++#define RADEON_MAX_STATE_PACKETS 95
++
++/* Commands understood by cmd_buffer ioctl. More can be added but
++ * obviously these can't be removed or changed:
++ */
++#define RADEON_CMD_PACKET 1 /* emit one of the register packets above */
++#define RADEON_CMD_SCALARS 2 /* emit scalar data */
++#define RADEON_CMD_VECTORS 3 /* emit vector data */
++#define RADEON_CMD_DMA_DISCARD 4 /* discard current dma buf */
++#define RADEON_CMD_PACKET3 5 /* emit hw packet */
++#define RADEON_CMD_PACKET3_CLIP 6 /* emit hw packet wrapped in cliprects */
++#define RADEON_CMD_SCALARS2 7 /* r200 stopgap */
++#define RADEON_CMD_WAIT 8 /* emit hw wait commands -- note:
++ * doesn't make the cpu wait, just
++ * the graphics hardware */
++#define RADEON_CMD_VECLINEAR 9 /* another r200 stopgap */
++
++typedef union {
++ int i;
++ struct {
++ unsigned char cmd_type, pad0, pad1, pad2;
++ } header;
++ struct {
++ unsigned char cmd_type, packet_id, pad0, pad1;
++ } packet;
++ struct {
++ unsigned char cmd_type, offset, stride, count;
++ } scalars;
++ struct {
++ unsigned char cmd_type, offset, stride, count;
++ } vectors;
++ struct {
++ unsigned char cmd_type, addr_lo, addr_hi, count;
++ } veclinear;
++ struct {
++ unsigned char cmd_type, buf_idx, pad0, pad1;
++ } dma;
++ struct {
++ unsigned char cmd_type, flags, pad0, pad1;
++ } wait;
++} drm_radeon_cmd_header_t;
++
++#define RADEON_WAIT_2D 0x1
++#define RADEON_WAIT_3D 0x2
++
++/* Allowed parameters for R300_CMD_PACKET3
++ */
++#define R300_CMD_PACKET3_CLEAR 0
++#define R300_CMD_PACKET3_RAW 1
++
++/* Commands understood by cmd_buffer ioctl for R300.
++ * The interface has not been stabilized, so some of these may be removed
++ * and eventually reordered before stabilization.
++ */
++#define R300_CMD_PACKET0 1
++#define R300_CMD_VPU 2 /* emit vertex program upload */
++#define R300_CMD_PACKET3 3 /* emit a packet3 */
++#define R300_CMD_END3D 4 /* emit sequence ending 3d rendering */
++#define R300_CMD_CP_DELAY 5
++#define R300_CMD_DMA_DISCARD 6
++#define R300_CMD_WAIT 7
++# define R300_WAIT_2D 0x1
++# define R300_WAIT_3D 0x2
++/* these two defines are DOING IT WRONG - however
++ * we have userspace which relies on using these.
++ * The wait interface is backwards compat new
++ * code should use the NEW_WAIT defines below
++ * THESE ARE NOT BIT FIELDS
++ */
++# define R300_WAIT_2D_CLEAN 0x3
++# define R300_WAIT_3D_CLEAN 0x4
++
++# define R300_NEW_WAIT_2D_3D 0x3
++# define R300_NEW_WAIT_2D_2D_CLEAN 0x4
++# define R300_NEW_WAIT_3D_3D_CLEAN 0x6
++# define R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN 0x8
++
++#define R300_CMD_SCRATCH 8
++#define R300_CMD_R500FP 9
++
++typedef union {
++ unsigned int u;
++ struct {
++ unsigned char cmd_type, pad0, pad1, pad2;
++ } header;
++ struct {
++ unsigned char cmd_type, count, reglo, reghi;
++ } packet0;
++ struct {
++ unsigned char cmd_type, count, adrlo, adrhi;
++ } vpu;
++ struct {
++ unsigned char cmd_type, packet, pad0, pad1;
++ } packet3;
++ struct {
++ unsigned char cmd_type, packet;
++ unsigned short count; /* amount of packet2 to emit */
++ } delay;
++ struct {
++ unsigned char cmd_type, buf_idx, pad0, pad1;
++ } dma;
++ struct {
++ unsigned char cmd_type, flags, pad0, pad1;
++ } wait;
++ struct {
++ unsigned char cmd_type, reg, n_bufs, flags;
++ } scratch;
++ struct {
++ unsigned char cmd_type, count, adrlo, adrhi_flags;
++ } r500fp;
++} drm_r300_cmd_header_t;
++
++#define RADEON_FRONT 0x1
++#define RADEON_BACK 0x2
++#define RADEON_DEPTH 0x4
++#define RADEON_STENCIL 0x8
++#define RADEON_CLEAR_FASTZ 0x80000000
++#define RADEON_USE_HIERZ 0x40000000
++#define RADEON_USE_COMP_ZBUF 0x20000000
++
++#define R500FP_CONSTANT_TYPE (1 << 1)
++#define R500FP_CONSTANT_CLAMP (1 << 2)
++
++/* Primitive types
++ */
++#define RADEON_POINTS 0x1
++#define RADEON_LINES 0x2
++#define RADEON_LINE_STRIP 0x3
++#define RADEON_TRIANGLES 0x4
++#define RADEON_TRIANGLE_FAN 0x5
++#define RADEON_TRIANGLE_STRIP 0x6
++
++/* Vertex/indirect buffer size
++ */
++#define RADEON_BUFFER_SIZE 65536
++
++/* Byte offsets for indirect buffer data
++ */
++#define RADEON_INDEX_PRIM_OFFSET 20
++
++#define RADEON_SCRATCH_REG_OFFSET 32
++#define R600_SCRATCH_REG_OFFSET 256
++
++#define RADEON_NR_SAREA_CLIPRECTS 12
++
++/* There are 2 heaps (local/GART). Each region within a heap is a
++ * minimum of 64k, and there are at most 64 of them per heap.
++ */
++#define RADEON_LOCAL_TEX_HEAP 0
++#define RADEON_GART_TEX_HEAP 1
++#define RADEON_NR_TEX_HEAPS 2
++#define RADEON_NR_TEX_REGIONS 64
++#define RADEON_LOG_TEX_GRANULARITY 16
++
++#define RADEON_MAX_TEXTURE_LEVELS 12
++#define RADEON_MAX_TEXTURE_UNITS 3
++
++#define RADEON_MAX_SURFACES 8
++
++/* Blits have strict offset rules. All blit offset must be aligned on
++ * a 1K-byte boundary.
++ */
++#define RADEON_OFFSET_SHIFT 10
++#define RADEON_OFFSET_ALIGN (1 << RADEON_OFFSET_SHIFT)
++#define RADEON_OFFSET_MASK (RADEON_OFFSET_ALIGN - 1)
++
++#endif /* __RADEON_SAREA_DEFINES__ */
++
++typedef struct {
++ unsigned int red;
++ unsigned int green;
++ unsigned int blue;
++ unsigned int alpha;
++} radeon_color_regs_t;
++
++typedef struct {
++ /* Context state */
++ unsigned int pp_misc; /* 0x1c14 */
++ unsigned int pp_fog_color;
++ unsigned int re_solid_color;
++ unsigned int rb3d_blendcntl;
++ unsigned int rb3d_depthoffset;
++ unsigned int rb3d_depthpitch;
++ unsigned int rb3d_zstencilcntl;
++
++ unsigned int pp_cntl; /* 0x1c38 */
++ unsigned int rb3d_cntl;
++ unsigned int rb3d_coloroffset;
++ unsigned int re_width_height;
++ unsigned int rb3d_colorpitch;
++ unsigned int se_cntl;
++
++ /* Vertex format state */
++ unsigned int se_coord_fmt; /* 0x1c50 */
++
++ /* Line state */
++ unsigned int re_line_pattern; /* 0x1cd0 */
++ unsigned int re_line_state;
++
++ unsigned int se_line_width; /* 0x1db8 */
++
++ /* Bumpmap state */
++ unsigned int pp_lum_matrix; /* 0x1d00 */
++
++ unsigned int pp_rot_matrix_0; /* 0x1d58 */
++ unsigned int pp_rot_matrix_1;
++
++ /* Mask state */
++ unsigned int rb3d_stencilrefmask; /* 0x1d7c */
++ unsigned int rb3d_ropcntl;
++ unsigned int rb3d_planemask;
++
++ /* Viewport state */
++ unsigned int se_vport_xscale; /* 0x1d98 */
++ unsigned int se_vport_xoffset;
++ unsigned int se_vport_yscale;
++ unsigned int se_vport_yoffset;
++ unsigned int se_vport_zscale;
++ unsigned int se_vport_zoffset;
++
++ /* Setup state */
++ unsigned int se_cntl_status; /* 0x2140 */
++
++ /* Misc state */
++ unsigned int re_top_left; /* 0x26c0 */
++ unsigned int re_misc;
++} drm_radeon_context_regs_t;
++
++typedef struct {
++ /* Zbias state */
++ unsigned int se_zbias_factor; /* 0x1dac */
++ unsigned int se_zbias_constant;
++} drm_radeon_context2_regs_t;
++
++/* Setup registers for each texture unit
++ */
++typedef struct {
++ unsigned int pp_txfilter;
++ unsigned int pp_txformat;
++ unsigned int pp_txoffset;
++ unsigned int pp_txcblend;
++ unsigned int pp_txablend;
++ unsigned int pp_tfactor;
++ unsigned int pp_border_color;
++} drm_radeon_texture_regs_t;
++
++typedef struct {
++ unsigned int start;
++ unsigned int finish;
++ unsigned int prim:8;
++ unsigned int stateidx:8;
++ unsigned int numverts:16; /* overloaded as offset/64 for elt prims */
++ unsigned int vc_format; /* vertex format */
++} drm_radeon_prim_t;
++
++typedef struct {
++ drm_radeon_context_regs_t context;
++ drm_radeon_texture_regs_t tex[RADEON_MAX_TEXTURE_UNITS];
++ drm_radeon_context2_regs_t context2;
++ unsigned int dirty;
++} drm_radeon_state_t;
++
++typedef struct {
++ /* The channel for communication of state information to the
++ * kernel on firing a vertex buffer with either of the
++ * obsoleted vertex/index ioctls.
++ */
++ drm_radeon_context_regs_t context_state;
++ drm_radeon_texture_regs_t tex_state[RADEON_MAX_TEXTURE_UNITS];
++ unsigned int dirty;
++ unsigned int vertsize;
++ unsigned int vc_format;
++
++ /* The current cliprects, or a subset thereof.
++ */
++ struct drm_clip_rect boxes[RADEON_NR_SAREA_CLIPRECTS];
++ unsigned int nbox;
++
++ /* Counters for client-side throttling of rendering clients.
++ */
++ unsigned int last_frame;
++ unsigned int last_dispatch;
++ unsigned int last_clear;
++
++ struct drm_tex_region tex_list[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS +
++ 1];
++ unsigned int tex_age[RADEON_NR_TEX_HEAPS];
++ int ctx_owner;
++ int pfState; /* number of 3d windows (0,1,2ormore) */
++ int pfCurrentPage; /* which buffer is being displayed? */
++ int crtc2_base; /* CRTC2 frame offset */
++ int tiling_enabled; /* set by drm, read by 2d + 3d clients */
++} drm_radeon_sarea_t;
++
++/* WARNING: If you change any of these defines, make sure to change the
++ * defines in the Xserver file (xf86drmRadeon.h)
++ *
++ * KW: actually it's illegal to change any of this (backwards compatibility).
++ */
++
++/* Radeon specific ioctls
++ * The device specific ioctl range is 0x40 to 0x79.
++ */
++#define DRM_RADEON_CP_INIT 0x00
++#define DRM_RADEON_CP_START 0x01
++#define DRM_RADEON_CP_STOP 0x02
++#define DRM_RADEON_CP_RESET 0x03
++#define DRM_RADEON_CP_IDLE 0x04
++#define DRM_RADEON_RESET 0x05
++#define DRM_RADEON_FULLSCREEN 0x06
++#define DRM_RADEON_SWAP 0x07
++#define DRM_RADEON_CLEAR 0x08
++#define DRM_RADEON_VERTEX 0x09
++#define DRM_RADEON_INDICES 0x0A
++#define DRM_RADEON_NOT_USED
++#define DRM_RADEON_STIPPLE 0x0C
++#define DRM_RADEON_INDIRECT 0x0D
++#define DRM_RADEON_TEXTURE 0x0E
++#define DRM_RADEON_VERTEX2 0x0F
++#define DRM_RADEON_CMDBUF 0x10
++#define DRM_RADEON_GETPARAM 0x11
++#define DRM_RADEON_FLIP 0x12
++#define DRM_RADEON_ALLOC 0x13
++#define DRM_RADEON_FREE 0x14
++#define DRM_RADEON_INIT_HEAP 0x15
++#define DRM_RADEON_IRQ_EMIT 0x16
++#define DRM_RADEON_IRQ_WAIT 0x17
++#define DRM_RADEON_CP_RESUME 0x18
++#define DRM_RADEON_SETPARAM 0x19
++#define DRM_RADEON_SURF_ALLOC 0x1a
++#define DRM_RADEON_SURF_FREE 0x1b
++
++#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t)
++#define DRM_IOCTL_RADEON_CP_START DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_START)
++#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t)
++#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_RESET)
++#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_IDLE)
++#define DRM_IOCTL_RADEON_RESET DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_RESET)
++#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_FULLSCREEN, drm_radeon_fullscreen_t)
++#define DRM_IOCTL_RADEON_SWAP DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_SWAP)
++#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CLEAR, drm_radeon_clear_t)
++#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_VERTEX, drm_radeon_vertex_t)
++#define DRM_IOCTL_RADEON_INDICES DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_INDICES, drm_radeon_indices_t)
++#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_STIPPLE, drm_radeon_stipple_t)
++#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INDIRECT, drm_radeon_indirect_t)
++#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_TEXTURE, drm_radeon_texture_t)
++#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_VERTEX2, drm_radeon_vertex2_t)
++#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CMDBUF, drm_radeon_cmd_buffer_t)
++#define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GETPARAM, drm_radeon_getparam_t)
++#define DRM_IOCTL_RADEON_FLIP DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_FLIP)
++#define DRM_IOCTL_RADEON_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_ALLOC, drm_radeon_mem_alloc_t)
++#define DRM_IOCTL_RADEON_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_FREE, drm_radeon_mem_free_t)
++#define DRM_IOCTL_RADEON_INIT_HEAP DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_INIT_HEAP, drm_radeon_mem_init_heap_t)
++#define DRM_IOCTL_RADEON_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_IRQ_EMIT, drm_radeon_irq_emit_t)
++#define DRM_IOCTL_RADEON_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_IRQ_WAIT, drm_radeon_irq_wait_t)
++#define DRM_IOCTL_RADEON_CP_RESUME DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_RESUME)
++#define DRM_IOCTL_RADEON_SETPARAM DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SETPARAM, drm_radeon_setparam_t)
++#define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t)
++#define DRM_IOCTL_RADEON_SURF_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t)
++
++typedef struct drm_radeon_init {
++ enum {
++ RADEON_INIT_CP = 0x01,
++ RADEON_CLEANUP_CP = 0x02,
++ RADEON_INIT_R200_CP = 0x03,
++ RADEON_INIT_R300_CP = 0x04,
++ RADEON_INIT_R600_CP = 0x05,
++ } func;
++ unsigned long sarea_priv_offset;
++ int is_pci; /* for overriding only */
++ int cp_mode;
++ int gart_size;
++ int ring_size;
++ int usec_timeout;
++
++ unsigned int fb_bpp;
++ unsigned int front_offset, front_pitch;
++ unsigned int back_offset, back_pitch;
++ unsigned int depth_bpp;
++ unsigned int depth_offset, depth_pitch;
++
++ /* DEPRECATED commented out below to allow for -Werror build */
++ unsigned long fb_offset /*DEPRECATED*/; /* deprecated, driver asks hardware */
++ unsigned long mmio_offset /*DEPRECATED*/; /* deprecated, driver asks hardware */
++ unsigned long ring_offset;
++ unsigned long ring_rptr_offset;
++ unsigned long buffers_offset;
++ unsigned long gart_textures_offset;
++} drm_radeon_init_t;
++
++typedef struct drm_radeon_cp_stop {
++ int flush;
++ int idle;
++} drm_radeon_cp_stop_t;
++
++typedef struct drm_radeon_fullscreen {
++ enum {
++ RADEON_INIT_FULLSCREEN = 0x01,
++ RADEON_CLEANUP_FULLSCREEN = 0x02
++ } func;
++} drm_radeon_fullscreen_t;
++
++#define CLEAR_X1 0
++#define CLEAR_Y1 1
++#define CLEAR_X2 2
++#define CLEAR_Y2 3
++#define CLEAR_DEPTH 4
++
++typedef union drm_radeon_clear_rect {
++ float f[5];
++ unsigned int ui[5];
++} drm_radeon_clear_rect_t;
++
++typedef struct drm_radeon_clear {
++ unsigned int flags;
++ unsigned int clear_color;
++ unsigned int clear_depth;
++ unsigned int color_mask;
++ unsigned int depth_mask; /* misnamed field: should be stencil */
++ drm_radeon_clear_rect_t __user *depth_boxes;
++} drm_radeon_clear_t;
++
++typedef struct drm_radeon_vertex {
++ int prim;
++ int idx; /* Index of vertex buffer */
++ int count; /* Number of vertices in buffer */
++ int discard; /* Client finished with buffer? */
++} drm_radeon_vertex_t;
++
++typedef struct drm_radeon_indices {
++ int prim;
++ int idx;
++ int start;
++ int end;
++ int discard; /* Client finished with buffer? */
++} drm_radeon_indices_t;
++
++/* v1.2 - obsoletes drm_radeon_vertex and drm_radeon_indices
++ * - allows multiple primitives and state changes in a single ioctl
++ * - supports driver change to emit native primitives
++ */
++typedef struct drm_radeon_vertex2 {
++ int idx; /* Index of vertex buffer */
++ int discard; /* Client finished with buffer? */
++ int nr_states;
++ drm_radeon_state_t __user *state;
++ int nr_prims;
++ drm_radeon_prim_t __user *prim;
++} drm_radeon_vertex2_t;
++
++/* v1.3 - obsoletes drm_radeon_vertex2
++ * - allows arbitarily large cliprect list
++ * - allows updating of tcl packet, vector and scalar state
++ * - allows memory-efficient description of state updates
++ * - allows state to be emitted without a primitive
++ * (for clears, ctx switches)
++ * - allows more than one dma buffer to be referenced per ioctl
++ * - supports tcl driver
++ * - may be extended in future versions with new cmd types, packets
++ */
++typedef struct drm_radeon_cmd_buffer {
++ int bufsz;
++ char __user *buf;
++ int nbox;
++ struct drm_clip_rect __user *boxes;
++} drm_radeon_cmd_buffer_t;
++
++typedef struct drm_radeon_tex_image {
++ unsigned int x, y; /* Blit coordinates */
++ unsigned int width, height;
++ const void __user *data;
++} drm_radeon_tex_image_t;
++
++typedef struct drm_radeon_texture {
++ unsigned int offset;
++ int pitch;
++ int format;
++ int width; /* Texture image coordinates */
++ int height;
++ drm_radeon_tex_image_t __user *image;
++} drm_radeon_texture_t;
++
++typedef struct drm_radeon_stipple {
++ unsigned int __user *mask;
++} drm_radeon_stipple_t;
++
++typedef struct drm_radeon_indirect {
++ int idx;
++ int start;
++ int end;
++ int discard;
++} drm_radeon_indirect_t;
++
++#define RADEON_INDIRECT_DISCARD (1 << 0)
++#define RADEON_INDIRECT_NOFLUSH (1 << 1)
++
++/* enum for card type parameters */
++#define RADEON_CARD_PCI 0
++#define RADEON_CARD_AGP 1
++#define RADEON_CARD_PCIE 2
++
++/* 1.3: An ioctl to get parameters that aren't available to the 3d
++ * client any other way.
++ */
++#define RADEON_PARAM_GART_BUFFER_OFFSET 1 /* card offset of 1st GART buffer */
++#define RADEON_PARAM_LAST_FRAME 2
++#define RADEON_PARAM_LAST_DISPATCH 3
++#define RADEON_PARAM_LAST_CLEAR 4
++/* Added with DRM version 1.6. */
++#define RADEON_PARAM_IRQ_NR 5
++#define RADEON_PARAM_GART_BASE 6 /* card offset of GART base */
++/* Added with DRM version 1.8. */
++#define RADEON_PARAM_REGISTER_HANDLE 7 /* for drmMap() */
++#define RADEON_PARAM_STATUS_HANDLE 8
++#define RADEON_PARAM_SAREA_HANDLE 9
++#define RADEON_PARAM_GART_TEX_HANDLE 10
++#define RADEON_PARAM_SCRATCH_OFFSET 11
++#define RADEON_PARAM_CARD_TYPE 12
++#define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */
++#define RADEON_PARAM_FB_LOCATION 14 /* FB location */
++#define RADEON_PARAM_NUM_GB_PIPES 15 /* num GB pipes */
++
++typedef struct drm_radeon_getparam {
++ int param;
++ void __user *value;
++} drm_radeon_getparam_t;
++
++/* 1.6: Set up a memory manager for regions of shared memory:
++ */
++#define RADEON_MEM_REGION_GART 1
++#define RADEON_MEM_REGION_FB 2
++
++typedef struct drm_radeon_mem_alloc {
++ int region;
++ int alignment;
++ int size;
++ int __user *region_offset; /* offset from start of fb or GART */
++} drm_radeon_mem_alloc_t;
++
++typedef struct drm_radeon_mem_free {
++ int region;
++ int region_offset;
++} drm_radeon_mem_free_t;
++
++typedef struct drm_radeon_mem_init_heap {
++ int region;
++ int size;
++ int start;
++} drm_radeon_mem_init_heap_t;
++
++/* 1.6: Userspace can request & wait on irq's:
++ */
++typedef struct drm_radeon_irq_emit {
++ int __user *irq_seq;
++} drm_radeon_irq_emit_t;
++
++typedef struct drm_radeon_irq_wait {
++ int irq_seq;
++} drm_radeon_irq_wait_t;
++
++/* 1.10: Clients tell the DRM where they think the framebuffer is located in
++ * the card's address space, via a new generic ioctl to set parameters
++ */
++
++typedef struct drm_radeon_setparam {
++ unsigned int param;
++ int64_t value;
++} drm_radeon_setparam_t;
++
++#define RADEON_SETPARAM_FB_LOCATION 1 /* determined framebuffer location */
++#define RADEON_SETPARAM_SWITCH_TILING 2 /* enable/disable color tiling */
++#define RADEON_SETPARAM_PCIGART_LOCATION 3 /* PCI Gart Location */
++
++#define RADEON_SETPARAM_NEW_MEMMAP 4 /* Use new memory map */
++#define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5 /* PCI GART Table Size */
++#define RADEON_SETPARAM_VBLANK_CRTC 6 /* VBLANK CRTC */
++/* 1.14: Clients can allocate/free a surface
++ */
++typedef struct drm_radeon_surface_alloc {
++ unsigned int address;
++ unsigned int size;
++ unsigned int flags;
++} drm_radeon_surface_alloc_t;
++
++typedef struct drm_radeon_surface_free {
++ unsigned int address;
++} drm_radeon_surface_free_t;
++
++#define DRM_RADEON_VBLANK_CRTC1 1
++#define DRM_RADEON_VBLANK_CRTC2 2
++
++#endif
+diff --git a/src/radeon_exa.c b/src/radeon_exa.c
+index f461f3c..0f86fdd 100644
+--- a/src/radeon_exa.c
++++ b/src/radeon_exa.c
+@@ -36,14 +36,11 @@
+ #include "radeon.h"
+ #include "radeon_reg.h"
+ #ifdef XF86DRI
+-#include "radeon_dri.h"
++#include "radeon_drm.h"
+ #endif
+ #include "radeon_macros.h"
+ #include "radeon_probe.h"
+ #include "radeon_version.h"
+-#ifdef XF86DRI
+-#include "radeon_sarea.h"
+-#endif
+
+ #include "xf86.h"
+
+@@ -164,10 +161,10 @@ static Bool RADEONGetOffsetPitch(PixmapPtr pPix, int bpp, uint32_t *pitch_offset
+ {
+ RINFO_FROM_SCREEN(pPix->drawable.pScreen);
+
+- if (pitch > 16320 || pitch % info->exa->pixmapPitchAlign != 0)
++ if (pitch > 16320 || pitch % info->accel_state->exa->pixmapPitchAlign != 0)
+ RADEON_FALLBACK(("Bad pitch 0x%08x\n", pitch));
+
+- if (offset % info->exa->pixmapOffsetAlign != 0)
++ if (offset % info->accel_state->exa->pixmapOffsetAlign != 0)
+ RADEON_FALLBACK(("Bad offset 0x%08x\n", offset));
+
+ pitch = pitch >> 6;
+@@ -237,14 +234,14 @@ static Bool RADEONPrepareAccess(PixmapPtr pPix, int index)
+ }
+ #if defined(XF86DRI)
+ if (info->directRenderingEnabled && info->allowColorTiling) {
+- drmRadeonSurfaceAlloc drmsurfalloc;
++ struct drm_radeon_surface_alloc drmsurfalloc;
+ int rc;
+
+ drmsurfalloc.address = offset;
+ drmsurfalloc.size = size;
+ drmsurfalloc.flags = flags | 1; /* bogus pitch to please DRM */
+
+- rc = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC,
++ rc = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC,
+ &drmsurfalloc, sizeof(drmsurfalloc));
+ if (rc < 0) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+@@ -280,10 +277,10 @@ static void RADEONFinishAccess(PixmapPtr pPix, int index)
+ return;
+ #if defined(XF86DRI)
+ if (info->directRenderingEnabled && info->allowColorTiling) {
+- drmRadeonSurfaceFree drmsurffree;
++ struct drm_radeon_surface_free drmsurffree;
+
+ drmsurffree.address = offset;
+- drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE,
++ drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE,
+ &drmsurffree, sizeof(drmsurffree));
+ swapper_surfaces[index] = 0;
+ return;
+@@ -302,7 +299,7 @@ static void RADEONFinishAccess(PixmapPtr pPix, int index)
+ do { \
+ uint32_t wait_until = 0; \
+ BEGIN_ACCEL(1); \
+- switch (info->engineMode) { \
++ switch (info->accel_state->engineMode) { \
+ case EXA_ENGINEMODE_UNKNOWN: \
+ wait_until |= RADEON_WAIT_HOST_IDLECLEAN | RADEON_WAIT_2D_IDLECLEAN; \
+ case EXA_ENGINEMODE_3D: \
+@@ -312,14 +309,14 @@ do { \
+ } \
+ OUT_ACCEL_REG(RADEON_WAIT_UNTIL, wait_until); \
+ FINISH_ACCEL(); \
+- info->engineMode = EXA_ENGINEMODE_2D; \
++ info->accel_state->engineMode = EXA_ENGINEMODE_2D; \
+ } while (0);
+
+ #define RADEON_SWITCH_TO_3D() \
+ do { \
+ uint32_t wait_until = 0; \
+ BEGIN_ACCEL(1); \
+- switch (info->engineMode) { \
++ switch (info->accel_state->engineMode) { \
+ case EXA_ENGINEMODE_UNKNOWN: \
+ wait_until |= RADEON_WAIT_HOST_IDLECLEAN | RADEON_WAIT_3D_IDLECLEAN; \
+ case EXA_ENGINEMODE_2D: \
+@@ -329,7 +326,7 @@ do { \
+ } \
+ OUT_ACCEL_REG(RADEON_WAIT_UNTIL, wait_until); \
+ FINISH_ACCEL(); \
+- info->engineMode = EXA_ENGINEMODE_3D; \
++ info->accel_state->engineMode = EXA_ENGINEMODE_3D; \
+ } while (0);
+
+ #define ENTER_DRAW(x) TRACE
+@@ -352,6 +349,7 @@ do { \
+ #undef ACCEL_PREAMBLE
+ #undef BEGIN_ACCEL
+ #undef OUT_ACCEL_REG
++#undef OUT_ACCEL_REG_F
+ #undef FINISH_ACCEL
+
+ #ifdef XF86DRI
+@@ -371,6 +369,13 @@ do { \
+ #endif
+ #include "radeon_exa_funcs.c"
+
++#undef ACCEL_CP
++#undef ACCEL_PREAMBLE
++#undef BEGIN_ACCEL
++#undef OUT_ACCEL_REG
++#undef FINISH_ACCEL
++#undef OUT_RING_F
++
+ #endif /* XF86DRI */
+
+ /*
+@@ -386,12 +391,12 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen)
+ int screen_size;
+ int byteStride = pScrn->displayWidth * cpp;
+
+- if (info->exa != NULL) {
++ if (info->accel_state->exa != NULL) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "Memory map already initialized\n");
+ return FALSE;
+ }
+- info->exa = exaDriverAlloc();
+- if (info->exa == NULL)
++ info->accel_state->exa = exaDriverAlloc();
++ if (info->accel_state->exa == NULL)
+ return FALSE;
+
+ /* Need to adjust screen size for 16 line tiles, and then make it align to.
+@@ -402,53 +407,52 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen)
+ else
+ screen_size = pScrn->virtualY * byteStride;
+
+- info->exa->memoryBase = info->FB;
+- info->exa->memorySize = info->FbMapSize - info->FbSecureSize;
+- info->exa->offScreenBase = screen_size;
++ info->accel_state->exa->memoryBase = info->FB;
++ info->accel_state->exa->memorySize = info->FbMapSize - info->FbSecureSize;
++ info->accel_state->exa->offScreenBase = screen_size;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Allocating from a screen of %ld kb\n",
+- info->exa->memorySize / 1024);
+-
++ info->accel_state->exa->memorySize / 1024);
+
+ /* Reserve static area for hardware cursor */
+ if (!xf86ReturnOptValBool(info->Options, OPTION_SW_CURSOR, FALSE)) {
+- int cursor_size = 64 * 4 * 64;
+- int c;
+-
+- for (c = 0; c < xf86_config->num_crtc; c++) {
+- xf86CrtcPtr crtc = xf86_config->crtc[c];
+- RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+-
+- radeon_crtc->cursor_offset = info->exa->offScreenBase;
+- info->exa->offScreenBase += cursor_size;
+-
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Will use %d kb for hardware cursor %d at offset 0x%08x\n",
+- (cursor_size * xf86_config->num_crtc) / 1024,
+- c,
+- (unsigned int)radeon_crtc->cursor_offset);
+- }
+-
+-
++ int cursor_size = 64 * 4 * 64;
++ int align = IS_AVIVO_VARIANT ? 4096 : 256;
++ int c;
++
++ for (c = 0; c < xf86_config->num_crtc; c++) {
++ xf86CrtcPtr crtc = xf86_config->crtc[c];
++ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
++
++ radeon_crtc->cursor_offset =
++ RADEON_ALIGN(info->accel_state->exa->offScreenBase, align);
++ info->accel_state->exa->offScreenBase = radeon_crtc->cursor_offset + cursor_size;
++
++ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++ "Will use %d kb for hardware cursor %d at offset 0x%08x\n",
++ (cursor_size * xf86_config->num_crtc) / 1024,
++ c,
++ (unsigned int)radeon_crtc->cursor_offset);
++ }
+ }
+
+ #if defined(XF86DRI)
+ if (info->directRenderingEnabled) {
+- int depthCpp = (info->depthBits - 8) / 4, l, next, depth_size;
++ int depthCpp = (info->dri->depthBits - 8) / 4, l, next, depth_size;
+
+- info->frontOffset = 0;
+- info->frontPitch = pScrn->displayWidth;
++ info->dri->frontOffset = 0;
++ info->dri->frontPitch = pScrn->displayWidth;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Will use %d kb for front buffer at offset 0x%08x\n",
+- screen_size / 1024, info->frontOffset);
++ screen_size / 1024, info->dri->frontOffset);
+ RADEONDRIAllocatePCIGARTTable(pScreen);
+
+ if (info->cardType==CARD_PCIE)
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Will use %d kb for PCI GART at offset 0x%08x\n",
+- info->pciGartSize / 1024,
+- (int)info->pciGartOffset);
++ info->dri->pciGartSize / 1024,
++ (int)info->dri->pciGartOffset);
+
+ /* Reserve a static area for the back buffer the same size as the
+ * visible screen. XXX: This would be better initialized in ati_dri.c
+@@ -456,49 +460,49 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen)
+ * don't last through VT switches, while the kernel's understanding of
+ * offscreen locations does.
+ */
+- info->backPitch = pScrn->displayWidth;
+- next = RADEON_ALIGN(info->exa->offScreenBase, RADEON_BUFFER_ALIGN);
+- if (!info->noBackBuffer &&
+- next + screen_size <= info->exa->memorySize)
++ info->dri->backPitch = pScrn->displayWidth;
++ next = RADEON_ALIGN(info->accel_state->exa->offScreenBase, RADEON_BUFFER_ALIGN);
++ if (!info->dri->noBackBuffer &&
++ next + screen_size <= info->accel_state->exa->memorySize)
+ {
+- info->backOffset = next;
+- info->exa->offScreenBase = next + screen_size;
++ info->dri->backOffset = next;
++ info->accel_state->exa->offScreenBase = next + screen_size;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Will use %d kb for back buffer at offset 0x%08x\n",
+- screen_size / 1024, info->backOffset);
++ screen_size / 1024, info->dri->backOffset);
+ }
+
+ /* Reserve the static depth buffer, and adjust pitch and height to
+ * handle tiling.
+ */
+- info->depthPitch = RADEON_ALIGN(pScrn->displayWidth, 32);
+- depth_size = RADEON_ALIGN(pScrn->virtualY, 16) * info->depthPitch * depthCpp;
+- next = RADEON_ALIGN(info->exa->offScreenBase, RADEON_BUFFER_ALIGN);
+- if (next + depth_size <= info->exa->memorySize)
++ info->dri->depthPitch = RADEON_ALIGN(pScrn->displayWidth, 32);
++ depth_size = RADEON_ALIGN(pScrn->virtualY, 16) * info->dri->depthPitch * depthCpp;
++ next = RADEON_ALIGN(info->accel_state->exa->offScreenBase, RADEON_BUFFER_ALIGN);
++ if (next + depth_size <= info->accel_state->exa->memorySize)
+ {
+- info->depthOffset = next;
+- info->exa->offScreenBase = next + depth_size;
++ info->dri->depthOffset = next;
++ info->accel_state->exa->offScreenBase = next + depth_size;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Will use %d kb for depth buffer at offset 0x%08x\n",
+- depth_size / 1024, info->depthOffset);
++ depth_size / 1024, info->dri->depthOffset);
+ }
+
+- info->textureSize *= (info->exa->memorySize -
+- info->exa->offScreenBase) / 100;
++ info->dri->textureSize *= (info->accel_state->exa->memorySize -
++ info->accel_state->exa->offScreenBase) / 100;
+
+- l = RADEONLog2(info->textureSize / RADEON_NR_TEX_REGIONS);
++ l = RADEONLog2(info->dri->textureSize / RADEON_NR_TEX_REGIONS);
+ if (l < RADEON_LOG_TEX_GRANULARITY)
+ l = RADEON_LOG_TEX_GRANULARITY;
+- info->textureSize = (info->textureSize >> l) << l;
+- if (info->textureSize >= 512 * 1024) {
+- info->textureOffset = info->exa->offScreenBase;
+- info->exa->offScreenBase += info->textureSize;
++ info->dri->textureSize = (info->dri->textureSize >> l) << l;
++ if (info->dri->textureSize >= 512 * 1024) {
++ info->dri->textureOffset = info->accel_state->exa->offScreenBase;
++ info->accel_state->exa->offScreenBase += info->dri->textureSize;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Will use %d kb for textures at offset 0x%08x\n",
+- info->textureSize / 1024, info->textureOffset);
++ info->dri->textureSize / 1024, info->dri->textureOffset);
+ } else {
+ /* Minimum texture size is for 2 256x256x32bpp textures */
+- info->textureSize = 0;
++ info->dri->textureSize = 0;
+ }
+ } else
+ #endif /* XF86DRI */
+@@ -508,8 +512,8 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen)
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Will use %ld kb for X Server offscreen at offset 0x%08lx\n",
+- (info->exa->memorySize - info->exa->offScreenBase) /
+- 1024, info->exa->offScreenBase);
++ (info->accel_state->exa->memorySize - info->accel_state->exa->offScreenBase) /
++ 1024, info->accel_state->exa->offScreenBase);
+
+ return TRUE;
+ }
+diff --git a/src/radeon_exa_funcs.c b/src/radeon_exa_funcs.c
+index 56de23e..62224d0 100644
+--- a/src/radeon_exa_funcs.c
++++ b/src/radeon_exa_funcs.c
+@@ -65,7 +65,7 @@ FUNC_NAME(RADEONMarkSync)(ScreenPtr pScreen)
+
+ TRACE;
+
+- return ++info->exaSyncMarker;
++ return ++info->accel_state->exaSyncMarker;
+ }
+
+ static void
+@@ -76,12 +76,12 @@ FUNC_NAME(RADEONSync)(ScreenPtr pScreen, int marker)
+
+ TRACE;
+
+- if (info->exaMarkerSynced != marker) {
++ if (info->accel_state->exaMarkerSynced != marker) {
+ FUNC_NAME(RADEONWaitForIdle)(pScrn);
+- info->exaMarkerSynced = marker;
++ info->accel_state->exaMarkerSynced = marker;
+ }
+
+- RADEONPTR(pScrn)->engineMode = EXA_ENGINEMODE_UNKNOWN;
++ RADEONPTR(pScrn)->accel_state->engineMode = EXA_ENGINEMODE_UNKNOWN;
+ }
+
+ static Bool
+@@ -172,8 +172,8 @@ FUNC_NAME(RADEONDoPrepareCopy)(ScrnInfoPtr pScrn, uint32_t src_pitch_offset,
+ RADEON_GMC_CLR_CMP_CNTL_DIS);
+ OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask);
+ OUT_ACCEL_REG(RADEON_DP_CNTL,
+- ((info->xdir >= 0 ? RADEON_DST_X_LEFT_TO_RIGHT : 0) |
+- (info->ydir >= 0 ? RADEON_DST_Y_TOP_TO_BOTTOM : 0)));
++ ((info->accel_state->xdir >= 0 ? RADEON_DST_X_LEFT_TO_RIGHT : 0) |
++ (info->accel_state->ydir >= 0 ? RADEON_DST_Y_TOP_TO_BOTTOM : 0)));
+ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, dst_pitch_offset);
+ OUT_ACCEL_REG(RADEON_SRC_PITCH_OFFSET, src_pitch_offset);
+ FINISH_ACCEL();
+@@ -190,8 +190,8 @@ FUNC_NAME(RADEONPrepareCopy)(PixmapPtr pSrc, PixmapPtr pDst,
+
+ TRACE;
+
+- info->xdir = xdir;
+- info->ydir = ydir;
++ info->accel_state->xdir = xdir;
++ info->accel_state->ydir = ydir;
+
+ if (pDst->drawable.bitsPerPixel == 24)
+ RADEON_FALLBACK(("24bpp unsupported"));
+@@ -219,11 +219,11 @@ FUNC_NAME(RADEONCopy)(PixmapPtr pDst,
+
+ TRACE;
+
+- if (info->xdir < 0) {
++ if (info->accel_state->xdir < 0) {
+ srcX += w - 1;
+ dstX += w - 1;
+ }
+- if (info->ydir < 0) {
++ if (info->accel_state->ydir < 0) {
+ srcY += h - 1;
+ dstY += h - 1;
+ }
+@@ -401,9 +401,9 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h,
+ int swap = RADEON_HOST_DATA_SWAP_NONE, wpass = w * bpp / 8;
+ int hpass = min(h, scratch->total/2 / scratch_pitch);
+ uint32_t scratch_pitch_offset = scratch_pitch << 16
+- | (info->gartLocation + info->bufStart
++ | (info->gartLocation + info->dri->bufStart
+ + scratch->idx * scratch->total) >> 10;
+- drmRadeonIndirect indirect;
++ drm_radeon_indirect_t indirect;
+ ACCEL_PREAMBLE();
+
+ RADEON_SWITCH_TO_2D();
+@@ -450,7 +450,7 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h,
+ * we'd really need is a way to reliably wait for the host interface
+ * to be done with pushing the data to the host.
+ */
+- while ((drmCommandNone(info->drmFD, DRM_RADEON_CP_IDLE) == -EBUSY)
++ while ((drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_IDLE) == -EBUSY)
+ && (i++ < RADEON_TIMEOUT))
+ ;
+
+@@ -473,10 +473,10 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h,
+ indirect.start = indirect.end = 0;
+ indirect.discard = 1;
+
+- drmCommandWriteRead(info->drmFD, DRM_RADEON_INDIRECT,
+- &indirect, sizeof(drmRadeonIndirect));
++ drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_INDIRECT,
++ &indirect, sizeof(drm_radeon_indirect_t));
+
+- info->exaMarkerSynced = info->exaSyncMarker;
++ info->accel_state->exaMarkerSynced = info->accel_state->exaSyncMarker;
+
+ return TRUE;
+ }
+@@ -522,35 +522,35 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen)
+ {
+ RINFO_FROM_SCREEN(pScreen);
+
+- if (info->exa == NULL) {
++ if (info->accel_state->exa == NULL) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "Memory map not set up\n");
+ return FALSE;
+ }
+
+- info->exa->exa_major = EXA_VERSION_MAJOR;
+- info->exa->exa_minor = EXA_VERSION_MINOR;
++ info->accel_state->exa->exa_major = EXA_VERSION_MAJOR;
++ info->accel_state->exa->exa_minor = EXA_VERSION_MINOR;
+
+- info->exa->PrepareSolid = FUNC_NAME(RADEONPrepareSolid);
+- info->exa->Solid = FUNC_NAME(RADEONSolid);
+- info->exa->DoneSolid = FUNC_NAME(RADEONDoneSolid);
++ info->accel_state->exa->PrepareSolid = FUNC_NAME(RADEONPrepareSolid);
++ info->accel_state->exa->Solid = FUNC_NAME(RADEONSolid);
++ info->accel_state->exa->DoneSolid = FUNC_NAME(RADEONDoneSolid);
+
+- info->exa->PrepareCopy = FUNC_NAME(RADEONPrepareCopy);
+- info->exa->Copy = FUNC_NAME(RADEONCopy);
+- info->exa->DoneCopy = FUNC_NAME(RADEONDoneCopy);
++ info->accel_state->exa->PrepareCopy = FUNC_NAME(RADEONPrepareCopy);
++ info->accel_state->exa->Copy = FUNC_NAME(RADEONCopy);
++ info->accel_state->exa->DoneCopy = FUNC_NAME(RADEONDoneCopy);
+
+- info->exa->MarkSync = FUNC_NAME(RADEONMarkSync);
+- info->exa->WaitMarker = FUNC_NAME(RADEONSync);
+- info->exa->UploadToScreen = FUNC_NAME(RADEONUploadToScreen);
+- info->exa->DownloadFromScreen = FUNC_NAME(RADEONDownloadFromScreen);
++ info->accel_state->exa->MarkSync = FUNC_NAME(RADEONMarkSync);
++ info->accel_state->exa->WaitMarker = FUNC_NAME(RADEONSync);
++ info->accel_state->exa->UploadToScreen = FUNC_NAME(RADEONUploadToScreen);
++ info->accel_state->exa->DownloadFromScreen = FUNC_NAME(RADEONDownloadFromScreen);
+
+ #if X_BYTE_ORDER == X_BIG_ENDIAN
+- info->exa->PrepareAccess = RADEONPrepareAccess;
+- info->exa->FinishAccess = RADEONFinishAccess;
++ info->accel_state->exa->PrepareAccess = RADEONPrepareAccess;
++ info->accel_state->exa->FinishAccess = RADEONFinishAccess;
+ #endif /* X_BYTE_ORDER == X_BIG_ENDIAN */
+
+- info->exa->flags = EXA_OFFSCREEN_PIXMAPS;
+- info->exa->pixmapOffsetAlign = RADEON_BUFFER_ALIGN + 1;
+- info->exa->pixmapPitchAlign = 64;
++ info->accel_state->exa->flags = EXA_OFFSCREEN_PIXMAPS;
++ info->accel_state->exa->pixmapOffsetAlign = RADEON_BUFFER_ALIGN + 1;
++ info->accel_state->exa->pixmapPitchAlign = 64;
+
+ #ifdef RENDER
+ if (info->RenderAccel) {
+@@ -565,11 +565,11 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen)
+ ) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration "
+ "enabled for R300/R400/R500 type cards.\n");
+- info->exa->CheckComposite = R300CheckComposite;
+- info->exa->PrepareComposite =
++ info->accel_state->exa->CheckComposite = R300CheckComposite;
++ info->accel_state->exa->PrepareComposite =
+ FUNC_NAME(R300PrepareComposite);
+- info->exa->Composite = FUNC_NAME(RadeonComposite);
+- info->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite);
++ info->accel_state->exa->Composite = FUNC_NAME(RadeonComposite);
++ info->accel_state->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite);
+ } else
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "EXA Composite requires CP on R5xx/IGP\n");
+ } else if ((info->ChipFamily == CHIP_FAMILY_RV250) ||
+@@ -578,19 +578,19 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen)
+ (info->ChipFamily == CHIP_FAMILY_R200)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration "
+ "enabled for R200 type cards.\n");
+- info->exa->CheckComposite = R200CheckComposite;
+- info->exa->PrepareComposite =
++ info->accel_state->exa->CheckComposite = R200CheckComposite;
++ info->accel_state->exa->PrepareComposite =
+ FUNC_NAME(R200PrepareComposite);
+- info->exa->Composite = FUNC_NAME(RadeonComposite);
+- info->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite);
++ info->accel_state->exa->Composite = FUNC_NAME(RadeonComposite);
++ info->accel_state->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite);
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration "
+ "enabled for R100 type cards.\n");
+- info->exa->CheckComposite = R100CheckComposite;
+- info->exa->PrepareComposite =
++ info->accel_state->exa->CheckComposite = R100CheckComposite;
++ info->accel_state->exa->PrepareComposite =
+ FUNC_NAME(R100PrepareComposite);
+- info->exa->Composite = FUNC_NAME(RadeonComposite);
+- info->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite);
++ info->accel_state->exa->Composite = FUNC_NAME(RadeonComposite);
++ info->accel_state->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite);
+ }
+ }
+ #endif
+@@ -598,17 +598,17 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen)
+ #if EXA_VERSION_MAJOR > 2 || (EXA_VERSION_MAJOR == 2 && EXA_VERSION_MINOR >= 3)
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Setting EXA maxPitchBytes\n");
+
+- info->exa->maxPitchBytes = 16320;
+- info->exa->maxX = 8192;
++ info->accel_state->exa->maxPitchBytes = 16320;
++ info->accel_state->exa->maxX = 8192;
+ #else
+- info->exa->maxX = 16320 / 4;
++ info->accel_state->exa->maxX = 16320 / 4;
+ #endif
+- info->exa->maxY = 8192;
++ info->accel_state->exa->maxY = 8192;
+
+ RADEONEngineInit(pScrn);
+
+- if (!exaDriverInit(pScreen, info->exa)) {
+- xfree(info->exa);
++ if (!exaDriverInit(pScreen, info->accel_state->exa)) {
++ xfree(info->accel_state->exa);
+ return FALSE;
+ }
+ exaMarkSync(pScreen);
+diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
+index 4736e4f..97199ae 100644
+--- a/src/radeon_exa_render.c
++++ b/src/radeon_exa_render.c
+@@ -56,15 +56,6 @@
+
+ /* Only include the following (generic) bits once. */
+ #ifdef ONLY_ONCE
+-static Bool is_transform[2];
+-static PictTransform *transform[2];
+-static Bool has_mask;
+-/* Whether we are tiling horizontally and vertically */
+-static Bool need_src_tile_x;
+-static Bool need_src_tile_y;
+-/* Size of tiles ... set to 65536x65536 if not tiling in that direction */
+-static Bool src_tile_width;
+-static Bool src_tile_height;
+
+ struct blendinfo {
+ Bool dst_alpha;
+@@ -287,8 +278,10 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict,
+ Bool canTile1d,
+ Bool needMatchingPitch)
+ {
+- need_src_tile_x = need_src_tile_y = FALSE;
+- src_tile_width = src_tile_height = 65536; /* "infinite" */
++ RINFO_FROM_SCREEN(pPix->drawable.pScreen);
++
++ info->accel_state->need_src_tile_x = info->accel_state->need_src_tile_y = FALSE;
++ info->accel_state->src_tile_width = info->accel_state->src_tile_height = 65536; /* "infinite" */
+
+ if (pPict->repeat) {
+ Bool badPitch = needMatchingPitch && !RADEONPitchMatches(pPix);
+@@ -301,17 +294,19 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict,
+ RADEON_FALLBACK(("Width %d and pitch %u not compatible for repeat\n",
+ w, (unsigned)exaGetPixmapPitch(pPix)));
+ } else {
+- need_src_tile_x = (w & (w - 1)) != 0 || badPitch;
+- need_src_tile_y = (h & (h - 1)) != 0;
++ info->accel_state->need_src_tile_x = (w & (w - 1)) != 0 || badPitch;
++ info->accel_state->need_src_tile_y = (h & (h - 1)) != 0;
+
+ if (!canTile1d)
+- need_src_tile_x = need_src_tile_y = need_src_tile_x || need_src_tile_y;
++ info->accel_state->need_src_tile_x =
++ info->accel_state->need_src_tile_y =
++ info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y;
+ }
+
+- if (need_src_tile_x)
+- src_tile_width = w;
+- if (need_src_tile_y)
+- src_tile_height = h;
++ if (info->accel_state->need_src_tile_x)
++ info->accel_state->src_tile_width = w;
++ if (info->accel_state->need_src_tile_y)
++ info->accel_state->src_tile_height = h;
+ }
+
+ return TRUE;
+@@ -357,7 +352,8 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+ uint32_t txfilter, txformat, txoffset, txpitch;
+ int w = pPict->pDrawable->width;
+ int h = pPict->pDrawable->height;
+- Bool repeat = pPict->repeat && !(unit == 0 && (need_src_tile_x || need_src_tile_y));
++ Bool repeat = pPict->repeat &&
++ !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y));
+ int i;
+ ACCEL_PREAMBLE();
+
+@@ -389,8 +385,8 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+ txformat |= RADEON_TXFORMAT_NON_POWER2;
+ txformat |= unit << 24; /* RADEON_TXFORMAT_ST_ROUTE_STQX */
+
+- info->texW[unit] = 1;
+- info->texH[unit] = 1;
++ info->accel_state->texW[unit] = 1;
++ info->accel_state->texH[unit] = 1;
+
+ switch (pPict->filter) {
+ case PictFilterNearest:
+@@ -427,10 +423,10 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+ FINISH_ACCEL();
+
+ if (pPict->transform != 0) {
+- is_transform[unit] = TRUE;
+- transform[unit] = pPict->transform;
++ info->accel_state->is_transform[unit] = TRUE;
++ info->accel_state->transform[unit] = pPict->transform;
+ } else {
+- is_transform[unit] = FALSE;
++ info->accel_state->is_transform[unit] = FALSE;
+ }
+
+ return TRUE;
+@@ -531,16 +527,16 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op,
+
+ TRACE;
+
+- if (!info->XInited3D)
++ if (!info->accel_state->XInited3D)
+ RADEONInit3DEngine(pScrn);
+
+ if (!RADEONGetDestFormat(pDstPicture, &dst_format))
+ return FALSE;
+
+ if (pMask)
+- has_mask = TRUE;
++ info->accel_state->has_mask = TRUE;
+ else
+- has_mask = FALSE;
++ info->accel_state->has_mask = FALSE;
+
+ pixel_shift = pDst->drawable.bitsPerPixel >> 4;
+
+@@ -569,7 +565,7 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op,
+ return FALSE;
+ pp_cntl |= RADEON_TEX_1_ENABLE;
+ } else {
+- is_transform[1] = FALSE;
++ info->accel_state->is_transform[1] = FALSE;
+ }
+
+ RADEON_SWITCH_TO_3D();
+@@ -670,7 +666,8 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+ uint32_t txfilter, txformat, txoffset, txpitch;
+ int w = pPict->pDrawable->width;
+ int h = pPict->pDrawable->height;
+- Bool repeat = pPict->repeat && !(unit == 0 && (need_src_tile_x || need_src_tile_y));
++ Bool repeat = pPict->repeat &&
++ !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y));
+ int i;
+ ACCEL_PREAMBLE();
+
+@@ -702,8 +699,8 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+ txformat |= R200_TXFORMAT_NON_POWER2;
+ txformat |= unit << R200_TXFORMAT_ST_ROUTE_SHIFT;
+
+- info->texW[unit] = w;
+- info->texH[unit] = h;
++ info->accel_state->texW[unit] = w;
++ info->accel_state->texH[unit] = h;
+
+ switch (pPict->filter) {
+ case PictFilterNearest:
+@@ -742,10 +739,10 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+ FINISH_ACCEL();
+
+ if (pPict->transform != 0) {
+- is_transform[unit] = TRUE;
+- transform[unit] = pPict->transform;
++ info->accel_state->is_transform[unit] = TRUE;
++ info->accel_state->transform[unit] = pPict->transform;
+ } else {
+- is_transform[unit] = FALSE;
++ info->accel_state->is_transform[unit] = FALSE;
+ }
+
+ return TRUE;
+@@ -830,16 +827,16 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture,
+
+ TRACE;
+
+- if (!info->XInited3D)
++ if (!info->accel_state->XInited3D)
+ RADEONInit3DEngine(pScrn);
+
+ if (!RADEONGetDestFormat(pDstPicture, &dst_format))
+ return FALSE;
+
+ if (pMask)
+- has_mask = TRUE;
++ info->accel_state->has_mask = TRUE;
+ else
+- has_mask = FALSE;
++ info->accel_state->has_mask = FALSE;
+
+ pixel_shift = pDst->drawable.bitsPerPixel >> 4;
+
+@@ -866,7 +863,7 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture,
+ return FALSE;
+ pp_cntl |= RADEON_TEX_1_ENABLE;
+ } else {
+- is_transform[1] = FALSE;
++ info->accel_state->is_transform[1] = FALSE;
+ }
+
+ RADEON_SWITCH_TO_3D();
+@@ -1045,15 +1042,15 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+ */
+ txformat0 |= R300_TXPITCH_EN;
+
+- info->texW[unit] = w;
+- info->texH[unit] = h;
++ info->accel_state->texW[unit] = w;
++ info->accel_state->texH[unit] = h;
+
+- if (pPict->repeat && !(unit == 0 && need_src_tile_x))
++ if (pPict->repeat && !(unit == 0 && info->accel_state->need_src_tile_x))
+ txfilter = R300_TX_CLAMP_S(R300_TX_CLAMP_WRAP);
+ else
+ txfilter = R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_GL);
+
+- if (pPict->repeat && !(unit == 0 && need_src_tile_y))
++ if (pPict->repeat && !(unit == 0 && info->accel_state->need_src_tile_y))
+ txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP);
+ else
+ txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL);
+@@ -1083,10 +1080,10 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+ FINISH_ACCEL();
+
+ if (pPict->transform != 0) {
+- is_transform[unit] = TRUE;
+- transform[unit] = pPict->transform;
++ info->accel_state->is_transform[unit] = TRUE;
++ info->accel_state->transform[unit] = pPict->transform;
+ } else {
+- is_transform[unit] = FALSE;
++ info->accel_state->is_transform[unit] = FALSE;
+ }
+
+ return TRUE;
+@@ -1191,16 +1188,16 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+
+ TRACE;
+
+- if (!info->XInited3D)
++ if (!info->accel_state->XInited3D)
+ RADEONInit3DEngine(pScrn);
+
+ if (!R300GetDestFormat(pDstPicture, &dst_format))
+ return FALSE;
+
+ if (pMask)
+- has_mask = TRUE;
++ info->accel_state->has_mask = TRUE;
+ else
+- has_mask = FALSE;
++ info->accel_state->has_mask = FALSE;
+
+ pixel_shift = pDst->drawable.bitsPerPixel >> 4;
+
+@@ -1230,13 +1227,13 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+ return FALSE;
+ txenable |= R300_TEX_1_ENABLE;
+ } else {
+- is_transform[1] = FALSE;
++ info->accel_state->is_transform[1] = FALSE;
+ }
+
+ RADEON_SWITCH_TO_3D();
+
+ /* setup the VAP */
+- if (info->has_tcl) {
++ if (info->accel_state->has_tcl) {
+ if (pMask)
+ BEGIN_ACCEL(8);
+ else
+@@ -1296,7 +1293,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+ * - Xv
+ * Here we select the offset of the vertex program we want to use
+ */
+- if (info->has_tcl) {
++ if (info->accel_state->has_tcl) {
+ if (pMask) {
+ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_0,
+ ((0 << R300_PVS_FIRST_INST_SHIFT) |
+@@ -1419,7 +1416,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+
+
+ /* setup the rasterizer, load FS */
+- BEGIN_ACCEL(9);
++ BEGIN_ACCEL(10);
+ if (pMask) {
+ /* 4 components: 2 for tex0, 2 for tex1 */
+ OUT_ACCEL_REG(R300_RS_COUNT,
+@@ -1461,6 +1458,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+ R300_RGBA_OUT));
+ }
+
++ OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */
+ /* shader output swizzling */
+ OUT_ACCEL_REG(R300_US_OUT_FMT_0, output_fmt);
+
+@@ -1474,7 +1472,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+ * R300_ALU_RGB_OMASK - output components to write
+ * R300_ALU_RGB_TARGET_A - render target
+ */
+- OUT_ACCEL_REG(R300_US_ALU_RGB_ADDR_0,
++ OUT_ACCEL_REG(R300_US_ALU_RGB_ADDR(0),
+ (R300_ALU_RGB_ADDR0(0) |
+ R300_ALU_RGB_ADDR1(1) |
+ R300_ALU_RGB_ADDR2(0) |
+@@ -1486,7 +1484,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+ /* RGB inst
+ * ALU operation
+ */
+- OUT_ACCEL_REG(R300_US_ALU_RGB_INST_0,
++ OUT_ACCEL_REG(R300_US_ALU_RGB_INST(0),
+ (R300_ALU_RGB_SEL_A(src_color) |
+ R300_ALU_RGB_MOD_A(R300_ALU_RGB_MOD_NOP) |
+ R300_ALU_RGB_SEL_B(mask_color) |
+@@ -1503,7 +1501,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+ * R300_ALU_ALPHA_OMASK - output components to write
+ * R300_ALU_ALPHA_TARGET_A - render target
+ */
+- OUT_ACCEL_REG(R300_US_ALU_ALPHA_ADDR_0,
++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_ADDR(0),
+ (R300_ALU_ALPHA_ADDR0(0) |
+ R300_ALU_ALPHA_ADDR1(1) |
+ R300_ALU_ALPHA_ADDR2(0) |
+@@ -1514,7 +1512,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+ /* Alpha inst
+ * ALU operation
+ */
+- OUT_ACCEL_REG(R300_US_ALU_ALPHA_INST_0,
++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_INST(0),
+ (R300_ALU_ALPHA_SEL_A(src_alpha) |
+ R300_ALU_ALPHA_MOD_A(R300_ALU_ALPHA_MOD_NOP) |
+ R300_ALU_ALPHA_SEL_B(mask_alpha) |
+@@ -1633,7 +1631,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+ break;
+ }
+
+- BEGIN_ACCEL(6);
++ BEGIN_ACCEL(7);
+ if (pMask) {
+ /* 4 components: 2 for tex0, 2 for tex1 */
+ OUT_ACCEL_REG(R300_RS_COUNT,
+@@ -1662,12 +1660,13 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+ OUT_ACCEL_REG(R500_US_CODE_OFFSET, 0);
+ }
+
++ OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */
+ OUT_ACCEL_REG(R300_US_OUT_FMT_0, output_fmt);
+ FINISH_ACCEL();
+
+ if (pMask) {
+ BEGIN_ACCEL(19);
+- OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, 0);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0));
+ /* tex inst for src texture */
+ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX |
+ R500_INST_RGB_WMASK_R |
+@@ -1739,7 +1738,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
+ } else {
+ BEGIN_ACCEL(13);
+- OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, 0);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0));
+ /* tex inst for src texture */
+ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX |
+ R500_INST_TEX_SEM_WAIT |
+@@ -1936,20 +1935,20 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst,
+ maskBottomRight.x = IntToxFixed(maskX + w);
+ maskBottomRight.y = IntToxFixed(maskY + h);
+
+- if (is_transform[0]) {
+- transformPoint(transform[0], &srcTopLeft);
+- transformPoint(transform[0], &srcTopRight);
+- transformPoint(transform[0], &srcBottomLeft);
+- transformPoint(transform[0], &srcBottomRight);
++ if (info->accel_state->is_transform[0]) {
++ transformPoint(info->accel_state->transform[0], &srcTopLeft);
++ transformPoint(info->accel_state->transform[0], &srcTopRight);
++ transformPoint(info->accel_state->transform[0], &srcBottomLeft);
++ transformPoint(info->accel_state->transform[0], &srcBottomRight);
+ }
+- if (is_transform[1]) {
+- transformPoint(transform[1], &maskTopLeft);
+- transformPoint(transform[1], &maskTopRight);
+- transformPoint(transform[1], &maskBottomLeft);
+- transformPoint(transform[1], &maskBottomRight);
++ if (info->accel_state->is_transform[1]) {
++ transformPoint(info->accel_state->transform[1], &maskTopLeft);
++ transformPoint(info->accel_state->transform[1], &maskTopRight);
++ transformPoint(info->accel_state->transform[1], &maskBottomLeft);
++ transformPoint(info->accel_state->transform[1], &maskBottomRight);
+ }
+
+- if (has_mask)
++ if (info->accel_state->has_mask)
+ vtx_count = VTX_COUNT_MASK;
+ else
+ vtx_count = VTX_COUNT;
+@@ -1962,21 +1961,21 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst,
+
+ #ifdef ACCEL_CP
+ if (info->ChipFamily < CHIP_FAMILY_R200) {
+- BEGIN_RING(4 * vtx_count + 3);
++ BEGIN_RING(3 * vtx_count + 3);
+ OUT_RING(CP_PACKET3(RADEON_CP_PACKET3_3D_DRAW_IMMD,
+- 4 * vtx_count + 1));
+- if (has_mask)
++ 3 * vtx_count + 1));
++ if (info->accel_state->has_mask)
+ OUT_RING(RADEON_CP_VC_FRMT_XY |
+ RADEON_CP_VC_FRMT_ST0 |
+ RADEON_CP_VC_FRMT_ST1);
+ else
+ OUT_RING(RADEON_CP_VC_FRMT_XY |
+ RADEON_CP_VC_FRMT_ST0);
+- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN |
++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_RECT_LIST |
+ RADEON_CP_VC_CNTL_PRIM_WALK_RING |
+ RADEON_CP_VC_CNTL_MAOS_ENABLE |
+ RADEON_CP_VC_CNTL_VTX_FMT_RADEON_MODE |
+- (4 << RADEON_CP_VC_CNTL_NUM_SHIFT));
++ (3 << RADEON_CP_VC_CNTL_NUM_SHIFT));
+ } else {
+ if (IS_R300_3D || IS_R500_3D)
+ BEGIN_RING(4 * vtx_count + 4);
+@@ -1985,7 +1984,7 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst,
+
+ OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2,
+ 4 * vtx_count));
+- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN |
++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST |
+ RADEON_CP_VC_CNTL_PRIM_WALK_RING |
+ (4 << RADEON_CP_VC_CNTL_NUM_SHIFT));
+ }
+@@ -1993,43 +1992,49 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst,
+ #else /* ACCEL_CP */
+ if (IS_R300_3D || IS_R500_3D)
+ BEGIN_ACCEL(2 + vtx_count * 4);
++ else if (info->ChipFamily < CHIP_FAMILY_R200)
++ BEGIN_ACCEL(1 + vtx_count * 3);
+ else
+ BEGIN_ACCEL(1 + vtx_count * 4);
+
+- if (info->ChipFamily < CHIP_FAMILY_R200) {
+- OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_TRIANGLE_FAN |
++ if (info->ChipFamily < CHIP_FAMILY_R200)
++ OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_RECTANGLE_LIST |
+ RADEON_VF_PRIM_WALK_DATA |
+ RADEON_VF_RADEON_MODE |
+- 4 << RADEON_VF_NUM_VERTICES_SHIFT));
+- } else {
++ (3 << RADEON_VF_NUM_VERTICES_SHIFT)));
++ else
+ OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST |
+ RADEON_VF_PRIM_WALK_DATA |
+- 4 << RADEON_VF_NUM_VERTICES_SHIFT));
+- }
++ (4 << RADEON_VF_NUM_VERTICES_SHIFT)));
++
+ #endif
+
+- if (has_mask) {
+- VTX_OUT_MASK((float)dstX, (float)dstY,
+- xFixedToFloat(srcTopLeft.x) / info->texW[0], xFixedToFloat(srcTopLeft.y) / info->texH[0],
+- xFixedToFloat(maskTopLeft.x) / info->texW[1], xFixedToFloat(maskTopLeft.y) / info->texH[1]);
++ if (info->accel_state->has_mask) {
++ if (info->ChipFamily >= CHIP_FAMILY_R200) {
++ VTX_OUT_MASK((float)dstX, (float)dstY,
++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0],
++ xFixedToFloat(maskTopLeft.x) / info->accel_state->texW[1], xFixedToFloat(maskTopLeft.y) / info->accel_state->texH[1]);
++ }
+ VTX_OUT_MASK((float)dstX, (float)(dstY + h),
+- xFixedToFloat(srcBottomLeft.x) / info->texW[0], xFixedToFloat(srcBottomLeft.y) / info->texH[0],
+- xFixedToFloat(maskBottomLeft.x) / info->texW[1], xFixedToFloat(maskBottomLeft.y) / info->texH[1]);
++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0],
++ xFixedToFloat(maskBottomLeft.x) / info->accel_state->texW[1], xFixedToFloat(maskBottomLeft.y) / info->accel_state->texH[1]);
+ VTX_OUT_MASK((float)(dstX + w), (float)(dstY + h),
+- xFixedToFloat(srcBottomRight.x) / info->texW[0], xFixedToFloat(srcBottomRight.y) / info->texH[0],
+- xFixedToFloat(maskBottomRight.x) / info->texW[1], xFixedToFloat(maskBottomRight.y) / info->texH[1]);
++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0],
++ xFixedToFloat(maskBottomRight.x) / info->accel_state->texW[1], xFixedToFloat(maskBottomRight.y) / info->accel_state->texH[1]);
+ VTX_OUT_MASK((float)(dstX + w), (float)dstY,
+- xFixedToFloat(srcTopRight.x) / info->texW[0], xFixedToFloat(srcTopRight.y) / info->texH[0],
+- xFixedToFloat(maskTopRight.x) / info->texW[1], xFixedToFloat(maskTopRight.y) / info->texH[1]);
++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0],
++ xFixedToFloat(maskTopRight.x) / info->accel_state->texW[1], xFixedToFloat(maskTopRight.y) / info->accel_state->texH[1]);
+ } else {
+- VTX_OUT((float)dstX, (float)dstY,
+- xFixedToFloat(srcTopLeft.x) / info->texW[0], xFixedToFloat(srcTopLeft.y) / info->texH[0]);
++ if (info->ChipFamily >= CHIP_FAMILY_R200) {
++ VTX_OUT((float)dstX, (float)dstY,
++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0]);
++ }
+ VTX_OUT((float)dstX, (float)(dstY + h),
+- xFixedToFloat(srcBottomLeft.x) / info->texW[0], xFixedToFloat(srcBottomLeft.y) / info->texH[0]);
++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0]);
+ VTX_OUT((float)(dstX + w), (float)(dstY + h),
+- xFixedToFloat(srcBottomRight.x) / info->texW[0], xFixedToFloat(srcBottomRight.y) / info->texH[0]);
++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0]);
+ VTX_OUT((float)(dstX + w), (float)dstY,
+- xFixedToFloat(srcTopRight.x) / info->texW[0], xFixedToFloat(srcTopRight.y) / info->texH[0]);
++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0]);
+ }
+
+ if (IS_R300_3D || IS_R500_3D)
+@@ -2055,8 +2060,9 @@ static void FUNC_NAME(RadeonComposite)(PixmapPtr pDst,
+ {
+ int tileSrcY, tileMaskY, tileDstY;
+ int remainingHeight;
+-
+- if (!need_src_tile_x && !need_src_tile_y) {
++ RINFO_FROM_SCREEN(pDst->drawable.pScreen);
++
++ if (!info->accel_state->need_src_tile_x && !info->accel_state->need_src_tile_y) {
+ FUNC_NAME(RadeonCompositeTile)(pDst,
+ srcX, srcY,
+ maskX, maskY,
+@@ -2067,7 +2073,7 @@ static void FUNC_NAME(RadeonComposite)(PixmapPtr pDst,
+
+ /* Tiling logic borrowed from exaFillRegionTiled */
+
+- modulus(srcY, src_tile_height, tileSrcY);
++ modulus(srcY, info->accel_state->src_tile_height, tileSrcY);
+ tileMaskY = maskY;
+ tileDstY = dstY;
+
+@@ -2075,18 +2081,18 @@ static void FUNC_NAME(RadeonComposite)(PixmapPtr pDst,
+ while (remainingHeight > 0) {
+ int remainingWidth = width;
+ int tileSrcX, tileMaskX, tileDstX;
+- int h = src_tile_height - tileSrcY;
++ int h = info->accel_state->src_tile_height - tileSrcY;
+
+ if (h > remainingHeight)
+ h = remainingHeight;
+ remainingHeight -= h;
+
+- modulus(srcX, src_tile_width, tileSrcX);
++ modulus(srcX, info->accel_state->src_tile_width, tileSrcX);
+ tileMaskX = maskX;
+ tileDstX = dstX;
+
+ while (remainingWidth > 0) {
+- int w = src_tile_width - tileSrcX;
++ int w = info->accel_state->src_tile_width - tileSrcX;
+ if (w > remainingWidth)
+ w = remainingWidth;
+ remainingWidth -= w;
+diff --git a/src/radeon_legacy_memory.c b/src/radeon_legacy_memory.c
+new file mode 100644
+index 0000000..2a9ee94
+--- /dev/null
++++ b/src/radeon_legacy_memory.c
+@@ -0,0 +1,117 @@
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++/* Driver data structures */
++#include "radeon.h"
++
++/* Allocates memory, either by resizing the allocation pointed to by mem_struct,
++ * or by freeing mem_struct (if non-NULL) and allocating a new space. The size
++ * is measured in bytes, and the offset from the beginning of card space is
++ * returned.
++ */
++uint32_t
++radeon_legacy_allocate_memory(ScrnInfoPtr pScrn,
++ void **mem_struct,
++ int size,
++ int align)
++{
++ ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
++ RADEONInfoPtr info = RADEONPTR(pScrn);
++ uint32_t offset = 0;
++
++#ifdef USE_EXA
++ if (info->useEXA) {
++ ExaOffscreenArea *area = *mem_struct;
++
++ if (area != NULL) {
++ if (area->size >= size)
++ return area->offset;
++
++ exaOffscreenFree(pScreen, area);
++ }
++
++ area = exaOffscreenAlloc(pScreen, size, align, TRUE,
++ NULL, NULL);
++
++ *mem_struct = area;
++ if (area == NULL)
++ return 0;
++ offset = area->offset;
++ }
++#endif /* USE_EXA */
++#ifdef USE_XAA
++ if (!info->useEXA) {
++ FBLinearPtr linear = *mem_struct;
++ int cpp = info->CurrentLayout.bitsPerPixel / 8;
++
++ /* XAA allocates in units of pixels at the screen bpp, so adjust size
++ * appropriately.
++ */
++ size = (size + cpp - 1) / cpp;
++ align = (align + cpp - 1) / cpp;
++
++ if (linear) {
++ if(linear->size >= size)
++ return linear->offset * cpp;
++
++ if(xf86ResizeOffscreenLinear(linear, size))
++ return linear->offset * cpp;
++
++ xf86FreeOffscreenLinear(linear);
++ }
++
++ linear = xf86AllocateOffscreenLinear(pScreen, size, align,
++ NULL, NULL, NULL);
++ *mem_struct = linear;
++
++ if (!linear) {
++ int max_size;
++
++ xf86QueryLargestOffscreenLinear(pScreen, &max_size, align,
++ PRIORITY_EXTREME);
++
++ if (max_size < size)
++ return 0;
++
++ xf86PurgeUnlockedOffscreenAreas(pScreen);
++ linear = xf86AllocateOffscreenLinear(pScreen, size, align,
++ NULL, NULL, NULL);
++ *mem_struct = linear;
++ if (!linear)
++ return 0;
++ }
++ offset = linear->offset * cpp;
++ }
++#endif /* USE_XAA */
++
++ return offset;
++}
++
++void
++radeon_legacy_free_memory(ScrnInfoPtr pScrn,
++ void *mem_struct)
++{
++ ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
++ RADEONInfoPtr info = RADEONPTR(pScrn);
++
++#ifdef USE_EXA
++ if (info->useEXA) {
++ ExaOffscreenArea *area = mem_struct;
++
++ if (area != NULL)
++ exaOffscreenFree(pScreen, area);
++ area = NULL;
++ }
++#endif /* USE_EXA */
++#ifdef USE_XAA
++ if (!info->useEXA) {
++ FBLinearPtr linear = mem_struct;
++
++ if (linear != NULL)
++ xf86FreeOffscreenLinear(linear);
++ linear = NULL;
++ }
++#endif /* USE_XAA */
++}
+diff --git a/src/radeon_macros.h b/src/radeon_macros.h
+index afe442e..f19bc3e 100644
+--- a/src/radeon_macros.h
++++ b/src/radeon_macros.h
+@@ -51,32 +51,6 @@
+
+ #include "compiler.h"
+
+-#if HAVE_BYTESWAP_H
+-#include <byteswap.h>
+-#elif defined(USE_SYS_ENDIAN_H)
+-#include <sys/endian.h>
+-#else
+-#define bswap_16(value) \
+- ((((value) & 0xff) << 8) | ((value) >> 8))
+-
+-#define bswap_32(value) \
+- (((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \
+- (uint32_t)bswap_16((uint16_t)((value) >> 16)))
+-
+-#define bswap_64(value) \
+- (((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \
+- << 32) | \
+- (uint64_t)bswap_32((uint32_t)((value) >> 32)))
+-#endif
+-
+-#if X_BYTE_ORDER == X_BIG_ENDIAN
+-#define le32_to_cpu(x) bswap_32(x)
+-#define le16_to_cpu(x) bswap_16(x)
+-#else
+-#define le32_to_cpu(x) (x)
+-#define le16_to_cpu(x) (x)
+-#endif
+-
+ #define RADEON_BIOS8(v) (info->VBIOS[v])
+ #define RADEON_BIOS16(v) (info->VBIOS[v] | \
+ (info->VBIOS[(v) + 1] << 8))
+diff --git a/src/radeon_output.c b/src/radeon_output.c
+index 7b89d66..8c794fb 100644
+--- a/src/radeon_output.c
++++ b/src/radeon_output.c
+@@ -173,9 +173,6 @@ static const uint32_t default_tvdac_adj [CHIP_FAMILY_LAST] =
+
+ static void RADEONUpdatePanelSize(xf86OutputPtr output);
+ static void RADEONGetTMDSInfoFromTable(xf86OutputPtr output);
+-#define AVIVO_I2C_DISABLE 0
+-#define AVIVO_I2C_ENABLE 1
+-static Bool AVIVOI2CDoLock(xf86OutputPtr output, int lock_state);
+
+ extern void atombios_output_mode_set(xf86OutputPtr output,
+ DisplayModePtr mode,
+@@ -183,6 +180,8 @@ extern void atombios_output_mode_set(xf86OutputPtr output,
+ extern void atombios_output_dpms(xf86OutputPtr output, int mode);
+ extern RADEONMonitorType atombios_dac_detect(ScrnInfoPtr pScrn, xf86OutputPtr output);
+ extern int atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode);
++extern AtomBiosResult
++atombios_lock_crtc(atomBiosHandlePtr atomBIOS, int crtc, int lock);
+ static void
+ radeon_bios_output_dpms(xf86OutputPtr output, int mode);
+ static void
+@@ -213,88 +212,6 @@ void RADEONPrintPortMap(ScrnInfoPtr pScrn)
+
+ }
+
+-static xf86MonPtr
+-radeon_do_ddc(xf86OutputPtr output)
+-{
+- RADEONInfoPtr info = RADEONPTR(output->scrn);
+- unsigned char *RADEONMMIO = info->MMIO;
+- uint32_t DDCReg;
+- xf86MonPtr MonInfo = NULL;
+- RADEONOutputPrivatePtr radeon_output = output->driver_private;
+- int i, j;
+-
+- if (radeon_output->pI2CBus) {
+- DDCReg = radeon_output->ddc_i2c.mask_clk_reg;
+-
+- if (IS_AVIVO_VARIANT) {
+- AVIVOI2CDoLock(output, AVIVO_I2C_ENABLE);
+- MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus);
+- AVIVOI2CDoLock(output, AVIVO_I2C_DISABLE);
+- } else if ((DDCReg == RADEON_LCD_GPIO_MASK) || (DDCReg == RADEON_MDGPIO_EN_REG)) {
+- MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus);
+- } else {
+- OUTREG(DDCReg, INREG(DDCReg) &
+- (uint32_t)~(RADEON_GPIO_A_0 | RADEON_GPIO_A_1));
+-
+- /* For some old monitors (like Compaq Presario FP500), we need
+- * following process to initialize/stop DDC
+- */
+- OUTREG(DDCReg, INREG(DDCReg) & ~(RADEON_GPIO_EN_1));
+- for (j = 0; j < 3; j++) {
+- OUTREG(DDCReg,
+- INREG(DDCReg) & ~(RADEON_GPIO_EN_0));
+- usleep(13000);
+-
+- OUTREG(DDCReg,
+- INREG(DDCReg) & ~(RADEON_GPIO_EN_1));
+- for (i = 0; i < 10; i++) {
+- usleep(15000);
+- if (INREG(DDCReg) & RADEON_GPIO_Y_1)
+- break;
+- }
+- if (i == 10) continue;
+-
+- usleep(15000);
+-
+- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0);
+- usleep(15000);
+-
+- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1);
+- usleep(15000);
+- OUTREG(DDCReg,
+- INREG(DDCReg) & ~(RADEON_GPIO_EN_0));
+- usleep(15000);
+-
+- MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus);
+-
+- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1);
+- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0);
+- usleep(15000);
+- OUTREG(DDCReg,
+- INREG(DDCReg) & ~(RADEON_GPIO_EN_1));
+- for (i = 0; i < 5; i++) {
+- usleep(15000);
+- if (INREG(DDCReg) & RADEON_GPIO_Y_1)
+- break;
+- }
+- usleep(15000);
+- OUTREG(DDCReg,
+- INREG(DDCReg) & ~(RADEON_GPIO_EN_0));
+- usleep(15000);
+-
+- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1);
+- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0);
+- usleep(15000);
+- if (MonInfo) break;
+- }
+- OUTREG(DDCReg, INREG(DDCReg) &
+- ~(RADEON_GPIO_EN_0 | RADEON_GPIO_EN_1));
+- }
+- }
+-
+- return MonInfo;
+-}
+-
+ static RADEONMonitorType
+ radeon_ddc_connected(xf86OutputPtr output)
+ {
+@@ -304,8 +221,20 @@ radeon_ddc_connected(xf86OutputPtr output)
+ xf86MonPtr MonInfo = NULL;
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
+
+- if (radeon_output->pI2CBus)
+- MonInfo = radeon_do_ddc(output);
++ if (radeon_output->pI2CBus) {
++ /* RV410 RADEON_GPIO_VGA_DDC seems to only work via hw i2c
++ * We may want to extend this to other cases if the need arises...
++ */
++ if ((info->ChipFamily == CHIP_FAMILY_RV410) &&
++ (radeon_output->ddc_i2c.mask_clk_reg == RADEON_GPIO_VGA_DDC) &&
++ info->IsAtomBios)
++ MonInfo = radeon_atom_get_edid(output);
++ else {
++ RADEONI2CDoLock(output, TRUE);
++ MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus);
++ RADEONI2CDoLock(output, FALSE);
++ }
++ }
+ if (MonInfo) {
+ if (!xf86ReturnOptValBool(info->Options, OPTION_IGNORE_EDID, FALSE))
+ xf86OutputSetEDID(output, MonInfo);
+@@ -317,13 +246,14 @@ radeon_ddc_connected(xf86OutputPtr output)
+ MonType = MT_DFP;
+ else if (radeon_output->type == OUTPUT_DP)
+ MonType = MT_DFP;
+- else if (radeon_output->type == OUTPUT_DVI_I && (MonInfo->rawData[0x14] & 0x80)) /* if it's digital and DVI */
++ else if (radeon_output->type == OUTPUT_DVI_I &&
++ (MonInfo->rawData[0x14] & 0x80)) /* if it's digital and DVI */
+ MonType = MT_DFP;
+ else
+ MonType = MT_CRT;
+ } else
+ MonType = MT_NONE;
+-
++
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Output: %s, Detected Monitor Type: %d\n", output->name, MonType);
+
+@@ -537,7 +467,7 @@ radeon_mode_fixup(xf86OutputPtr output, DisplayModePtr mode,
+ if (IS_AVIVO_VARIANT) {
+ /* set to the panel's native mode */
+ adjusted_mode->HDisplay = radeon_output->PanelXRes;
+- adjusted_mode->HDisplay = radeon_output->PanelYRes;
++ adjusted_mode->VDisplay = radeon_output->PanelYRes;
+ adjusted_mode->HTotal = radeon_output->PanelXRes + radeon_output->HBlank;
+ adjusted_mode->HSyncStart = radeon_output->PanelXRes + radeon_output->HOverPlus;
+ adjusted_mode->HSyncEnd = adjusted_mode->HSyncStart + radeon_output->HSyncWidth;
+@@ -580,12 +510,20 @@ radeon_mode_fixup(xf86OutputPtr output, DisplayModePtr mode,
+ }
+ }
+
++ if (IS_AVIVO_VARIANT) {
++ /* hw bug */
++ if ((mode->Flags & V_INTERLACE)
++ && (mode->CrtcVSyncStart < (mode->CrtcVDisplay + 2)))
++ adjusted_mode->CrtcVSyncStart = adjusted_mode->CrtcVDisplay + 2;
++ }
++
+ return TRUE;
+ }
+
+ static void
+ radeon_mode_prepare(xf86OutputPtr output)
+ {
++ RADEONInfoPtr info = RADEONPTR(output->scrn);
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (output->scrn);
+ int o;
+
+@@ -595,9 +533,12 @@ radeon_mode_prepare(xf86OutputPtr output)
+ continue;
+ else if (loop_output->crtc) {
+ xf86CrtcPtr other_crtc = loop_output->crtc;
++ RADEONCrtcPrivatePtr other_radeon_crtc = other_crtc->driver_private;
+ if (other_crtc->enabled) {
+- radeon_dpms(loop_output, DPMSModeOff);
+ radeon_crtc_dpms(other_crtc, DPMSModeOff);
++ if (IS_AVIVO_VARIANT)
++ atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 1);
++ radeon_dpms(loop_output, DPMSModeOff);
+ }
+ }
+ }
+@@ -625,6 +566,7 @@ radeon_mode_set(xf86OutputPtr output, DisplayModePtr mode,
+ static void
+ radeon_mode_commit(xf86OutputPtr output)
+ {
++ RADEONInfoPtr info = RADEONPTR(output->scrn);
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (output->scrn);
+ int o;
+
+@@ -634,9 +576,12 @@ radeon_mode_commit(xf86OutputPtr output)
+ continue;
+ else if (loop_output->crtc) {
+ xf86CrtcPtr other_crtc = loop_output->crtc;
++ RADEONCrtcPrivatePtr other_radeon_crtc = other_crtc->driver_private;
+ if (other_crtc->enabled) {
+- radeon_dpms(loop_output, DPMSModeOn);
+ radeon_crtc_dpms(other_crtc, DPMSModeOn);
++ if (IS_AVIVO_VARIANT)
++ atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 0);
++ radeon_dpms(loop_output, DPMSModeOn);
+ }
+ }
+ }
+@@ -1201,8 +1146,7 @@ radeon_create_resources(xf86OutputPtr output)
+ }
+ }
+
+- 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 */
+@@ -1214,7 +1158,7 @@ radeon_create_resources(xf86OutputPtr output)
+ "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,
+@@ -1682,8 +1626,8 @@ Bool AVIVOI2CReset(ScrnInfoPtr pScrn)
+ }
+ #endif
+
+-static
+-Bool AVIVOI2CDoLock(xf86OutputPtr output, int lock_state)
++Bool
++RADEONI2CDoLock(xf86OutputPtr output, int lock_state)
+ {
+ ScrnInfoPtr pScrn = output->scrn;
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+@@ -1692,19 +1636,29 @@ Bool AVIVOI2CDoLock(xf86OutputPtr output, int lock_state)
+ unsigned char *RADEONMMIO = info->MMIO;
+ uint32_t temp;
+
++ if (lock_state) {
++ temp = INREG(pRADEONI2CBus->a_clk_reg);
++ temp &= ~(pRADEONI2CBus->a_clk_mask);
++ OUTREG(pRADEONI2CBus->a_clk_reg, temp);
++
++ temp = INREG(pRADEONI2CBus->a_data_reg);
++ temp &= ~(pRADEONI2CBus->a_data_mask);
++ OUTREG(pRADEONI2CBus->a_data_reg, temp);
++ }
++
+ temp = INREG(pRADEONI2CBus->mask_clk_reg);
+- if (lock_state == AVIVO_I2C_ENABLE)
+- temp |= (pRADEONI2CBus->put_clk_mask);
++ if (lock_state)
++ temp |= (pRADEONI2CBus->mask_clk_mask);
+ else
+- temp &= ~(pRADEONI2CBus->put_clk_mask);
++ temp &= ~(pRADEONI2CBus->mask_clk_mask);
+ OUTREG(pRADEONI2CBus->mask_clk_reg, temp);
+ temp = INREG(pRADEONI2CBus->mask_clk_reg);
+
+ temp = INREG(pRADEONI2CBus->mask_data_reg);
+- if (lock_state == AVIVO_I2C_ENABLE)
+- temp |= (pRADEONI2CBus->put_data_mask);
++ if (lock_state)
++ temp |= (pRADEONI2CBus->mask_data_mask);
+ else
+- temp &= ~(pRADEONI2CBus->put_data_mask);
++ temp &= ~(pRADEONI2CBus->mask_data_mask);
+ OUTREG(pRADEONI2CBus->mask_data_reg, temp);
+ temp = INREG(pRADEONI2CBus->mask_data_reg);
+
+@@ -1786,8 +1740,12 @@ legacy_setup_i2c_bus(int ddc_line)
+ {
+ RADEONI2CBusRec i2c;
+
+- i2c.mask_clk_mask = RADEON_GPIO_EN_1 | RADEON_GPIO_Y_1;
+- i2c.mask_data_mask = RADEON_GPIO_EN_0 | RADEON_GPIO_Y_0;
++ i2c.hw_line = 0;
++ i2c.hw_capable = FALSE;
++ i2c.mask_clk_mask = RADEON_GPIO_EN_1;
++ i2c.mask_data_mask = RADEON_GPIO_EN_0;
++ i2c.a_clk_mask = RADEON_GPIO_A_1;
++ i2c.a_data_mask = RADEON_GPIO_A_0;
+ i2c.put_clk_mask = RADEON_GPIO_EN_1;
+ i2c.put_data_mask = RADEON_GPIO_EN_0;
+ i2c.get_clk_mask = RADEON_GPIO_Y_1;
+@@ -1796,6 +1754,8 @@ legacy_setup_i2c_bus(int ddc_line)
+ (ddc_line == RADEON_MDGPIO_EN_REG)) {
+ i2c.mask_clk_reg = ddc_line;
+ i2c.mask_data_reg = ddc_line;
++ i2c.a_clk_reg = ddc_line;
++ i2c.a_data_reg = ddc_line;
+ i2c.put_clk_reg = ddc_line;
+ i2c.put_data_reg = ddc_line;
+ i2c.get_clk_reg = ddc_line + 4;
+@@ -1803,6 +1763,8 @@ legacy_setup_i2c_bus(int ddc_line)
+ } else {
+ i2c.mask_clk_reg = ddc_line;
+ i2c.mask_data_reg = ddc_line;
++ i2c.a_clk_reg = ddc_line;
++ i2c.a_data_reg = ddc_line;
+ i2c.put_clk_reg = ddc_line;
+ i2c.put_data_reg = ddc_line;
+ i2c.get_clk_reg = ddc_line;
+@@ -1822,6 +1784,8 @@ atom_setup_i2c_bus(int ddc_line)
+ {
+ RADEONI2CBusRec i2c;
+
++ i2c.hw_line = 0;
++ i2c.hw_capable = FALSE;
+ if (ddc_line == AVIVO_GPIO_0) {
+ i2c.put_clk_mask = (1 << 19);
+ i2c.put_data_mask = (1 << 18);
+@@ -1829,6 +1793,8 @@ atom_setup_i2c_bus(int ddc_line)
+ i2c.get_data_mask = (1 << 18);
+ i2c.mask_clk_mask = (1 << 19);
+ i2c.mask_data_mask = (1 << 18);
++ i2c.a_clk_mask = (1 << 19);
++ i2c.a_data_mask = (1 << 18);
+ } else {
+ i2c.put_clk_mask = (1 << 0);
+ i2c.put_data_mask = (1 << 8);
+@@ -1836,9 +1802,13 @@ atom_setup_i2c_bus(int ddc_line)
+ i2c.get_data_mask = (1 << 8);
+ i2c.mask_clk_mask = (1 << 0);
+ i2c.mask_data_mask = (1 << 8);
++ i2c.a_clk_mask = (1 << 0);
++ i2c.a_data_mask = (1 << 8);
+ }
+ i2c.mask_clk_reg = ddc_line;
+ i2c.mask_data_reg = ddc_line;
++ i2c.a_clk_reg = ddc_line + 0x4;
++ i2c.a_data_reg = ddc_line + 0x4;
+ i2c.put_clk_reg = ddc_line + 0x8;
+ i2c.put_data_reg = ddc_line + 0x8;
+ i2c.get_clk_reg = ddc_line + 0xc;
+@@ -2301,13 +2271,13 @@ static Bool RADEONSetupAppleConnectors(ScrnInfoPtr pScrn)
+ info->BiosConnector[0].ddc_i2c = legacy_setup_i2c_bus(RADEON_GPIO_DVI_DDC);
+ info->BiosConnector[0].DACType = DAC_NONE;
+ info->BiosConnector[0].TMDSType = TMDS_NONE;
+- info->BiosConnector[0].ConnectorType = CONNECTOR_VGA;
++ info->BiosConnector[0].ConnectorType = CONNECTOR_LVDS;
+ info->BiosConnector[0].valid = TRUE;
+
+ info->BiosConnector[1].ddc_i2c = legacy_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
+ info->BiosConnector[1].DACType = DAC_PRIMARY;
+- info->BiosConnector[1].TMDSType = TMDS_INT;
+- info->BiosConnector[1].ConnectorType = CONNECTOR_DVI_I;
++ info->BiosConnector[1].TMDSType = TMDS_NONE;
++ info->BiosConnector[1].ConnectorType = CONNECTOR_VGA;
+ info->BiosConnector[1].valid = TRUE;
+
+ info->BiosConnector[2].ConnectorType = CONNECTOR_STV;
+@@ -2677,7 +2647,6 @@ Bool RADEONSetupConnectors(ScrnInfoPtr pScrn)
+ {
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+- RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
+ xf86OutputPtr output;
+ char *optstr;
+ int i = 0;
+@@ -2742,13 +2711,6 @@ Bool RADEONSetupConnectors(ScrnInfoPtr pScrn)
+ RADEONSetupGenericConnectors(pScrn);
+ }
+
+- if (!pRADEONEnt->HasCRTC2) {
+- for (i = 0; i < RADEON_MAX_BIOS_CONNECTOR; i++) {
+- if (info->BiosConnector[i].ConnectorType == CONNECTOR_VGA)
+- info->BiosConnector[i].DACType = DAC_PRIMARY;
+- }
+- }
+-
+ /* parse connector table option */
+ optstr = (char *)xf86GetOptValString(info->Options, OPTION_CONNECTORTABLE);
+
+diff --git a/src/radeon_pci_chipset_gen.h b/src/radeon_pci_chipset_gen.h
+index 39adb5e..ff1801f 100644
+--- a/src/radeon_pci_chipset_gen.h
++++ b/src/radeon_pci_chipset_gen.h
+@@ -1,6 +1,7 @@
+ /* This file is autogenerated please do not edit */
+ PciChipsets RADEONPciChipsets[] = {
+ { PCI_CHIP_RV380_3150, PCI_CHIP_RV380_3150, RES_SHARED_VGA },
++ { PCI_CHIP_RV380_3151, PCI_CHIP_RV380_3151, RES_SHARED_VGA },
+ { PCI_CHIP_RV380_3152, PCI_CHIP_RV380_3152, RES_SHARED_VGA },
+ { PCI_CHIP_RV380_3154, PCI_CHIP_RV380_3154, RES_SHARED_VGA },
+ { PCI_CHIP_RV380_3E50, PCI_CHIP_RV380_3E50, RES_SHARED_VGA },
+@@ -250,6 +251,9 @@ PciChipsets RADEONPciChipsets[] = {
+ { PCI_CHIP_R600_940A, PCI_CHIP_R600_940A, RES_SHARED_VGA },
+ { PCI_CHIP_R600_940B, PCI_CHIP_R600_940B, RES_SHARED_VGA },
+ { PCI_CHIP_R600_940F, PCI_CHIP_R600_940F, RES_SHARED_VGA },
++ { PCI_CHIP_RV770_9440, PCI_CHIP_RV770_9440, RES_SHARED_VGA },
++ { PCI_CHIP_RV770_9441, PCI_CHIP_RV770_9441, RES_SHARED_VGA },
++ { PCI_CHIP_RV770_9442, PCI_CHIP_RV770_9442, RES_SHARED_VGA },
+ { PCI_CHIP_RV610_94C0, PCI_CHIP_RV610_94C0, RES_SHARED_VGA },
+ { PCI_CHIP_RV610_94C1, PCI_CHIP_RV610_94C1, RES_SHARED_VGA },
+ { PCI_CHIP_RV610_94C3, PCI_CHIP_RV610_94C3, RES_SHARED_VGA },
+@@ -267,6 +271,7 @@ PciChipsets RADEONPciChipsets[] = {
+ { PCI_CHIP_RV670_9507, PCI_CHIP_RV670_9507, RES_SHARED_VGA },
+ { PCI_CHIP_RV670_950F, PCI_CHIP_RV670_950F, RES_SHARED_VGA },
+ { PCI_CHIP_RV670_9511, PCI_CHIP_RV670_9511, RES_SHARED_VGA },
++ { PCI_CHIP_RV670_9515, PCI_CHIP_RV670_9515, RES_SHARED_VGA },
+ { PCI_CHIP_RV630_9580, PCI_CHIP_RV630_9580, RES_SHARED_VGA },
+ { PCI_CHIP_RV630_9581, PCI_CHIP_RV630_9581, RES_SHARED_VGA },
+ { PCI_CHIP_RV630_9583, PCI_CHIP_RV630_9583, RES_SHARED_VGA },
+diff --git a/src/radeon_pci_device_match_gen.h b/src/radeon_pci_device_match_gen.h
+index d81cbe3..d650f9f 100644
+--- a/src/radeon_pci_device_match_gen.h
++++ b/src/radeon_pci_device_match_gen.h
+@@ -1,6 +1,7 @@
+ /* This file is autogenerated please do not edit */
+ static const struct pci_id_match radeon_device_match[] = {
+ ATI_DEVICE_MATCH( PCI_CHIP_RV380_3150, 0 ),
++ ATI_DEVICE_MATCH( PCI_CHIP_RV380_3151, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_RV380_3152, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_RV380_3154, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_RV380_3E50, 0 ),
+@@ -250,6 +251,9 @@ static const struct pci_id_match radeon_device_match[] = {
+ ATI_DEVICE_MATCH( PCI_CHIP_R600_940A, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_R600_940B, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_R600_940F, 0 ),
++ ATI_DEVICE_MATCH( PCI_CHIP_RV770_9440, 0 ),
++ ATI_DEVICE_MATCH( PCI_CHIP_RV770_9441, 0 ),
++ ATI_DEVICE_MATCH( PCI_CHIP_RV770_9442, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_RV610_94C0, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_RV610_94C1, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_RV610_94C3, 0 ),
+@@ -267,6 +271,7 @@ static const struct pci_id_match radeon_device_match[] = {
+ ATI_DEVICE_MATCH( PCI_CHIP_RV670_9507, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_RV670_950F, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_RV670_9511, 0 ),
++ ATI_DEVICE_MATCH( PCI_CHIP_RV670_9515, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_RV630_9580, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_RV630_9581, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_RV630_9583, 0 ),
+diff --git a/src/radeon_probe.h b/src/radeon_probe.h
+index 24af52b..c14241e 100644
+--- a/src/radeon_probe.h
++++ b/src/radeon_probe.h
+@@ -166,6 +166,8 @@ typedef struct
+ Bool valid;
+ uint32_t mask_clk_reg;
+ uint32_t mask_data_reg;
++ uint32_t a_clk_reg;
++ uint32_t a_data_reg;
+ uint32_t put_clk_reg;
+ uint32_t put_data_reg;
+ uint32_t get_clk_reg;
+@@ -176,15 +178,15 @@ typedef struct
+ uint32_t put_data_mask;
+ uint32_t get_clk_mask;
+ uint32_t get_data_mask;
++ uint32_t a_clk_mask;
++ uint32_t a_data_mask;
++ int hw_line;
++ Bool hw_capable;
+ } RADEONI2CBusRec, *RADEONI2CBusPtr;
+
+ typedef struct _RADEONCrtcPrivateRec {
+-#ifdef USE_XAA
+- FBLinearPtr rotate_mem_xaa;
+-#endif
+-#ifdef USE_EXA
+- ExaOffscreenArea *rotate_mem_exa;
+-#endif
++ void *crtc_rotate_mem;
++ void *cursor_mem;
+ int crtc_id;
+ int binding;
+ uint32_t cursor_offset;
+@@ -235,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 */
+@@ -310,8 +314,10 @@ struct avivo_grph_state {
+ uint32_t x_end;
+ uint32_t y_end;
+
++ uint32_t desktop_height;
+ uint32_t viewport_start;
+ uint32_t viewport_size;
++ uint32_t mode_data_format;
+ };
+
+ struct avivo_state
+@@ -326,6 +332,7 @@ struct avivo_state
+
+ uint32_t crtc_master_en;
+ uint32_t crtc_tv_control;
++ uint32_t dc_lb_memory_split;
+
+ struct avivo_pll_state pll1;
+ struct avivo_pll_state pll2;
+diff --git a/src/radeon_reg.h b/src/radeon_reg.h
+index 59e2f12..19f9869 100644
+--- a/src/radeon_reg.h
++++ b/src/radeon_reg.h
+@@ -1032,6 +1032,10 @@
+ #define RADEON_OV0_BASE_ADDR 0x43c
+ #define RADEON_NB_TOM 0x15c
+ #define R300_MC_INIT_MISC_LAT_TIMER 0x180
++# define R300_MC_DISP0R_INIT_LAT_SHIFT 8
++# define R300_MC_DISP0R_INIT_LAT_MASK 0xf
++# define R300_MC_DISP1R_INIT_LAT_SHIFT 12
++# define R300_MC_DISP1R_INIT_LAT_MASK 0xf
+ #define RADEON_MCLK_CNTL 0x0012 /* PLL */
+ # define RADEON_FORCEON_MCLKA (1 << 16)
+ # define RADEON_FORCEON_MCLKB (1 << 17)
+@@ -3185,6 +3189,7 @@
+ #define RADEON_CP_VC_CNTL_PRIM_TYPE_RECT_LIST 0x00000008
+ #define RADEON_CP_VC_CNTL_PRIM_TYPE_3VRT_POINT_LIST 0x00000009
+ #define RADEON_CP_VC_CNTL_PRIM_TYPE_3VRT_LINE_LIST 0x0000000a
++#define RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST 0x0000000d
+ #define RADEON_CP_VC_CNTL_PRIM_WALK_IND 0x00000010
+ #define RADEON_CP_VC_CNTL_PRIM_WALK_LIST 0x00000020
+ #define RADEON_CP_VC_CNTL_PRIM_WALK_RING 0x00000030
+@@ -3418,6 +3423,7 @@
+ #define RS690_MC_AGP_LOCATION 0x101
+ #define RS690_MC_AGP_BASE 0x102
+ #define RS690_MC_AGP_BASE_2 0x103
++#define RS690_MC_INIT_MISC_LAT_TIMER 0x104
+ #define RS690_MC_STATUS 0x90
+ #define RS690_MC_STATUS_IDLE (1 << 0)
+
+@@ -3431,12 +3437,13 @@
+ #define RS600_MC_STATUS 0x0
+ #define RS600_MC_STATUS_IDLE (1 << 0)
+
+-#define AVIVO_MC_INDEX 0x0070
+-#define R520_MC_STATUS 0x00
+-#define R520_MC_STATUS_IDLE (1<<1)
+-#define RV515_MC_STATUS 0x08
+-#define RV515_MC_STATUS_IDLE (1<<4)
+-#define AVIVO_MC_DATA 0x0074
++#define AVIVO_MC_INDEX 0x0070
++#define R520_MC_STATUS 0x00
++# define R520_MC_STATUS_IDLE (1 << 1)
++#define RV515_MC_STATUS 0x08
++# define RV515_MC_STATUS_IDLE (1 << 4)
++#define RV515_MC_INIT_MISC_LAT_TIMER 0x09
++#define AVIVO_MC_DATA 0x0074
+
+ #define RV515_MC_FB_LOCATION 0x1
+ #define RV515_MC_AGP_LOCATION 0x2
+@@ -3598,8 +3605,20 @@
+ #define AVIVO_DC_LUTA_WHITE_OFFSET_GREEN 0x64d4
+ #define AVIVO_DC_LUTA_WHITE_OFFSET_RED 0x64d8
+
+-
+-#define AVIVO_D1MODE_DESKTOP_HEIGHT 0x652C
++#define AVIVO_DC_LB_MEMORY_SPLIT 0x6520
++# define AVIVO_DC_LB_MEMORY_SPLIT_MASK 0x3
++# define AVIVO_DC_LB_MEMORY_SPLIT_SHIFT 0
++# define AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF 0
++# define AVIVO_DC_LB_MEMORY_SPLIT_D1_3Q_D2_1Q 1
++# define AVIVO_DC_LB_MEMORY_SPLIT_D1_ONLY 2
++# define AVIVO_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q 3
++# define AVIVO_DC_LB_MEMORY_SPLIT_SHIFT_MODE (1 << 2)
++# define AVIVO_DC_LB_DISP1_END_ADR_SHIFT 4
++# define AVIVO_DC_LB_DISP1_END_ADR_MASK 0x7ff
++
++#define AVIVO_D1MODE_DATA_FORMAT 0x6528
++# define AVIVO_D1MODE_INTERLEAVE_EN (1 << 0)
++#define AVIVO_D1MODE_DESKTOP_HEIGHT 0x652c
+ #define AVIVO_D1MODE_VIEWPORT_START 0x6580
+ #define AVIVO_D1MODE_VIEWPORT_SIZE 0x6584
+ #define AVIVO_D1MODE_EXT_OVERSCAN_LEFT_RIGHT 0x6588
+@@ -3651,6 +3670,8 @@
+ #define AVIVO_D2CUR_SIZE 0x6c10
+ #define AVIVO_D2CUR_POSITION 0x6c14
+
++#define AVIVO_D2MODE_DATA_FORMAT 0x6d28
++#define AVIVO_D2MODE_DESKTOP_HEIGHT 0x6d2c
+ #define AVIVO_D2MODE_VIEWPORT_START 0x6d80
+ #define AVIVO_D2MODE_VIEWPORT_SIZE 0x6d84
+ #define AVIVO_D2MODE_EXT_OVERSCAN_LEFT_RIGHT 0x6d88
+@@ -3658,6 +3679,7 @@
+
+ #define AVIVO_D2SCL_SCALER_ENABLE 0x6d90
+ #define AVIVO_D2SCL_SCALER_TAP_CONTROL 0x6d94
++#define AVIVO_D2SCL_UPDATE 0x6dcc
+
+ #define AVIVO_DDIA_BIT_DEPTH_CONTROL 0x7214
+
+@@ -3918,6 +3940,8 @@
+ #define R600_MC_VM_SYSTEM_APERTURE_HIGH_ADDR 0x2194
+ #define R600_MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR 0x2198
+
++#define R700_MC_VM_FB_LOCATION 0x2024
++
+ #define R600_HDP_NONSURFACE_BASE 0x2c04
+
+ #define R600_BUS_CNTL 0x5420
+@@ -4234,7 +4258,7 @@
+ #define R300_PVS_SRC_ADDR_SEL(x) (x << 29)
+ #define R300_PVS_SRC_ADDR_MODE_1 (1 << 31)
+
+-#define R300_VAP_PVS_FLOW_CNTL_OPC 0x22DC
++#define R300_VAP_PVS_FLOW_CNTL_OPC 0x22dc
+ #define R300_VAP_OUT_VTX_FMT_0 0x2090
+ # define R300_VTX_POS_PRESENT (1 << 0)
+ # define R300_VTX_COLOR_0_PRESENT (1 << 1)
+@@ -4322,6 +4346,7 @@
+
+ #define R300_TX_INVALTAGS 0x4100
+ #define R300_TX_FILTER0_0 0x4400
++#define R300_TX_FILTER0_1 0x4404
+ # define R300_TX_CLAMP_S(x) (x << 0)
+ # define R300_TX_CLAMP_T(x) (x << 3)
+ # define R300_TX_CLAMP_R(x) (x << 6)
+@@ -4339,7 +4364,9 @@
+ # define R300_TX_MIN_FILTER_LINEAR (2 << 11)
+ # define R300_TX_ID_SHIFT 28
+ #define R300_TX_FILTER1_0 0x4440
++#define R300_TX_FILTER1_1 0x4444
+ #define R300_TX_FORMAT0_0 0x4480
++#define R300_TX_FORMAT0_1 0x4484
+ # define R300_TXWIDTH_SHIFT 0
+ # define R300_TXHEIGHT_SHIFT 11
+ # define R300_NUM_LEVELS_SHIFT 26
+@@ -4347,6 +4374,7 @@
+ # define R300_TXPROJECTED (1 << 30)
+ # define R300_TXPITCH_EN (1 << 31)
+ #define R300_TX_FORMAT1_0 0x44c0
++#define R300_TX_FORMAT1_1 0x44c4
+ # define R300_TX_FORMAT_X8 0x0
+ # define R300_TX_FORMAT_X16 0x1
+ # define R300_TX_FORMAT_Y4X4 0x2
+@@ -4420,10 +4448,12 @@
+ # define R300_TX_FORMAT_SWAP_YUV (1 << 24)
+
+ #define R300_TX_FORMAT2_0 0x4500
++#define R300_TX_FORMAT2_1 0x4504
+ # define R500_TXWIDTH_11 (1 << 15)
+ # define R500_TXHEIGHT_11 (1 << 16)
+
+ #define R300_TX_OFFSET_0 0x4540
++#define R300_TX_OFFSET_1 0x4544
+ # define R300_ENDIAN_SWAP_16_BIT (1 << 0)
+ # define R300_ENDIAN_SWAP_32_BIT (2 << 0)
+ # define R300_ENDIAN_SWAP_HALF_DWORD (3 << 0)
+@@ -4500,6 +4530,7 @@
+ #define R300_US_TEX_INST_0 0x4620
+ #define R300_US_TEX_INST_1 0x4624
+ #define R300_US_TEX_INST_2 0x4628
++#define R300_US_TEX_INST(x) (R300_US_TEX_INST_0 + (x)*4)
+ # define R300_TEX_SRC_ADDR(x) (x << 0)
+ # define R300_TEX_DST_ADDR(x) (x << 6)
+ # define R300_TEX_ID(x) (x << 11)
+@@ -4512,11 +4543,13 @@
+ #define R300_US_ALU_RGB_ADDR_0 0x46c0
+ #define R300_US_ALU_RGB_ADDR_1 0x46c4
+ #define R300_US_ALU_RGB_ADDR_2 0x46c8
++#define R300_US_ALU_RGB_ADDR(x) (R300_US_ALU_RGB_ADDR_0 + (x)*4)
+ /* for ADDR0-2, values 0-31 specify a location in the pixel stack,
+ values 32-63 specify a constant */
+ # define R300_ALU_RGB_ADDR0(x) (x << 0)
+ # define R300_ALU_RGB_ADDR1(x) (x << 6)
+ # define R300_ALU_RGB_ADDR2(x) (x << 12)
++# define R300_ALU_RGB_CONST(x) ((x) | (1 << 5))
+ /* ADDRD - where on the pixel stack the result of this instruction
+ will be written */
+ # define R300_ALU_RGB_ADDRD(x) (x << 18)
+@@ -4526,6 +4559,7 @@
+ # define R300_ALU_RGB_MASK_R 1
+ # define R300_ALU_RGB_MASK_G 2
+ # define R300_ALU_RGB_MASK_B 4
++# define R300_ALU_RGB_MASK_RGB 7
+ # define R300_ALU_RGB_TARGET_A (0 << 29)
+ # define R300_ALU_RGB_TARGET_B (1 << 29)
+ # define R300_ALU_RGB_TARGET_C (2 << 29)
+@@ -4533,6 +4567,7 @@
+ #define R300_US_ALU_RGB_INST_0 0x48c0
+ #define R300_US_ALU_RGB_INST_1 0x48c4
+ #define R300_US_ALU_RGB_INST_2 0x48c8
++#define R300_US_ALU_RGB_INST(x) (R300_US_ALU_RGB_INST_0 + (x)*4)
+ # define R300_ALU_RGB_SEL_A(x) (x << 0)
+ # define R300_ALU_RGB_SRC0_RGB 0
+ # define R300_ALU_RGB_SRC0_RRR 1
+@@ -4604,11 +4639,13 @@
+ #define R300_US_ALU_ALPHA_ADDR_0 0x47c0
+ #define R300_US_ALU_ALPHA_ADDR_1 0x47c4
+ #define R300_US_ALU_ALPHA_ADDR_2 0x47c8
++#define R300_US_ALU_ALPHA_ADDR(x) (R300_US_ALU_ALPHA_ADDR_0 + (x)*4)
+ /* for ADDR0-2, values 0-31 specify a location in the pixel stack,
+ values 32-63 specify a constant */
+ # define R300_ALU_ALPHA_ADDR0(x) (x << 0)
+ # define R300_ALU_ALPHA_ADDR1(x) (x << 6)
+ # define R300_ALU_ALPHA_ADDR2(x) (x << 12)
++# define R300_ALU_ALPHA_CONST(x) ((x) | (1 << 5))
+ /* ADDRD - where on the pixel stack the result of this instruction
+ will be written */
+ # define R300_ALU_ALPHA_ADDRD(x) (x << 18)
+@@ -4624,6 +4661,7 @@
+ #define R300_US_ALU_ALPHA_INST_0 0x49c0
+ #define R300_US_ALU_ALPHA_INST_1 0x49c4
+ #define R300_US_ALU_ALPHA_INST_2 0x49c8
++#define R300_US_ALU_ALPHA_INST(x) (R300_US_ALU_ALPHA_INST_0 + (x)*4)
+ # define R300_ALU_ALPHA_SEL_A(x) (x << 0)
+ # define R300_ALU_ALPHA_SRC0_R 0
+ # define R300_ALU_ALPHA_SRC0_G 1
+@@ -4680,6 +4718,15 @@
+ # define R300_ALU_ALPHA_OMOD_DIV_8 6
+ # define R300_ALU_ALPHA_CLAMP (1 << 30)
+
++#define R300_US_ALU_CONST_R_0 0x4c00
++#define R300_US_ALU_CONST_R(x) (R300_US_ALU_CONST_R_0 + (x)*16)
++#define R300_US_ALU_CONST_G_0 0x4c04
++#define R300_US_ALU_CONST_G(x) (R300_US_ALU_CONST_G_0 + (x)*16)
++#define R300_US_ALU_CONST_B_0 0x4c08
++#define R300_US_ALU_CONST_B(x) (R300_US_ALU_CONST_B_0 + (x)*16)
++#define R300_US_ALU_CONST_A_0 0x4c0c
++#define R300_US_ALU_CONST_A(x) (R300_US_ALU_CONST_A_0 + (x)*16)
++
+ #define R300_FG_DEPTH_SRC 0x4bd8
+ #define R300_FG_FOG_BLEND 0x4bc0
+ #define R300_FG_ALPHA_FUNC 0x4bd4
+@@ -4759,10 +4806,11 @@
+
+ /* R500 US has to be loaded through an index/data pair */
+ #define R500_GA_US_VECTOR_INDEX 0x4250
+-# define R500_US_VECTOR_INDEX(x) (x << 0)
+ # define R500_US_VECTOR_TYPE_INST (0 << 16)
+ # define R500_US_VECTOR_TYPE_CONST (1 << 16)
+ # define R500_US_VECTOR_CLAMP (1 << 17)
++# define R500_US_VECTOR_INST_INDEX(x) ((x) | R500_US_VECTOR_TYPE_INST)
++# define R500_US_VECTOR_CONST_INDEX(x) ((x) | R500_US_VECTOR_TYPE_CONST)
+ #define R500_GA_US_VECTOR_DATA 0x4254
+
+ /*
+diff --git a/src/radeon_render.c b/src/radeon_render.c
+index dbd5b79..6668fe0 100644
+--- a/src/radeon_render.c
++++ b/src/radeon_render.c
+@@ -268,7 +268,7 @@ RemoveLinear (FBLinearPtr linear)
+ {
+ RADEONInfoPtr info = (RADEONInfoPtr)(linear->devPrivate.ptr);
+
+- info->RenderTex = NULL;
++ info->accel_state->RenderTex = NULL;
+ }
+
+ static void
+@@ -276,13 +276,14 @@ RenderCallback (ScrnInfoPtr pScrn)
+ {
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+
+- if ((currentTime.milliseconds > info->RenderTimeout) && info->RenderTex) {
+- xf86FreeOffscreenLinear(info->RenderTex);
+- info->RenderTex = NULL;
++ if ((currentTime.milliseconds > info->accel_state->RenderTimeout) &&
++ info->accel_state->RenderTex) {
++ xf86FreeOffscreenLinear(info->accel_state->RenderTex);
++ info->accel_state->RenderTex = NULL;
+ }
+
+- if (!info->RenderTex)
+- info->RenderCallback = NULL;
++ if (!info->accel_state->RenderTex)
++ info->accel_state->RenderCallback = NULL;
+ }
+
+ static Bool
+@@ -293,30 +294,30 @@ AllocateLinear (
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ int cpp = info->CurrentLayout.bitsPerPixel / 8;
+
+- info->RenderTimeout = currentTime.milliseconds + 30000;
+- info->RenderCallback = RenderCallback;
++ info->accel_state->RenderTimeout = currentTime.milliseconds + 30000;
++ info->accel_state->RenderCallback = RenderCallback;
+
+ /* XAA allocates in units of pixels at the screen bpp, so adjust size
+ * appropriately.
+ */
+ sizeNeeded = (sizeNeeded + cpp - 1) / cpp;
+
+- if (info->RenderTex) {
+- if (info->RenderTex->size >= sizeNeeded)
++ if (info->accel_state->RenderTex) {
++ if (info->accel_state->RenderTex->size >= sizeNeeded)
+ return TRUE;
+ else {
+- if (xf86ResizeOffscreenLinear(info->RenderTex, sizeNeeded))
++ if (xf86ResizeOffscreenLinear(info->accel_state->RenderTex, sizeNeeded))
+ return TRUE;
+
+- xf86FreeOffscreenLinear(info->RenderTex);
+- info->RenderTex = NULL;
++ xf86FreeOffscreenLinear(info->accel_state->RenderTex);
++ info->accel_state->RenderTex = NULL;
+ }
+ }
+
+- info->RenderTex = xf86AllocateOffscreenLinear(pScrn->pScreen, sizeNeeded, 32,
+- NULL, RemoveLinear, info);
++ info->accel_state->RenderTex = xf86AllocateOffscreenLinear(pScrn->pScreen, sizeNeeded, 32,
++ NULL, RemoveLinear, info);
+
+- return (info->RenderTex != NULL);
++ return (info->accel_state->RenderTex != NULL);
+ }
+
+ #if X_BYTE_ORDER == X_BIG_ENDIAN
+@@ -435,7 +436,7 @@ static Bool FUNC_NAME(R100SetupTexture)(
+ txformat |= RADEON_TXFORMAT_NON_POWER2;
+ }
+
+- offset = info->RenderTex->offset * pScrn->bitsPerPixel / 8;
++ offset = info->accel_state->RenderTex->offset * pScrn->bitsPerPixel / 8;
+ dst = (uint8_t*)(info->FB + offset);
+
+ /* Upload texture to card. */
+@@ -459,8 +460,8 @@ static Bool FUNC_NAME(R100SetupTexture)(
+
+ #else
+
+- if (info->accel->NeedToSync)
+- info->accel->Sync(pScrn);
++ if (info->accel_state->accel->NeedToSync)
++ info->accel_state->accel->Sync(pScrn);
+
+ while (height--) {
+ memcpy(dst, src, width * tex_bytepp);
+@@ -514,7 +515,7 @@ FUNC_NAME(R100SetupForCPUToScreenAlphaTexture) (
+ if (blend_cntl == 0)
+ return FALSE;
+
+- if (!info->XInited3D)
++ if (!info->accel_state->XInited3D)
+ RADEONInit3DEngine(pScrn);
+
+ if (!FUNC_NAME(R100SetupTexture)(pScrn, maskFormat, alphaPtr, alphaPitch,
+@@ -565,7 +566,7 @@ FUNC_NAME(R100SetupForCPUToScreenTexture) (
+ if (blend_cntl == 0)
+ return FALSE;
+
+- if (!info->XInited3D)
++ if (!info->accel_state->XInited3D)
+ RADEONInit3DEngine(pScrn);
+
+ if (!FUNC_NAME(R100SetupTexture)(pScrn, srcFormat, texPtr, texPitch, width,
+@@ -772,10 +773,10 @@ static Bool FUNC_NAME(R200SetupTexture)(
+ txformat |= RADEON_TXFORMAT_NON_POWER2;
+ }
+
+- info->texW[0] = width;
+- info->texH[0] = height;
++ info->accel_state->texW[0] = width;
++ info->accel_state->texH[0] = height;
+
+- offset = info->RenderTex->offset * pScrn->bitsPerPixel / 8;
++ offset = info->accel_state->RenderTex->offset * pScrn->bitsPerPixel / 8;
+ dst = (uint8_t*)(info->FB + offset);
+
+ /* Upload texture to card. */
+@@ -799,8 +800,8 @@ static Bool FUNC_NAME(R200SetupTexture)(
+
+ #else
+
+- if (info->accel->NeedToSync)
+- info->accel->Sync(pScrn);
++ if (info->accel_state->accel->NeedToSync)
++ info->accel_state->accel->Sync(pScrn);
+
+ while (height--) {
+ memcpy(dst, src, width * tex_bytepp);
+@@ -855,7 +856,7 @@ FUNC_NAME(R200SetupForCPUToScreenAlphaTexture) (
+ if (blend_cntl == 0)
+ return FALSE;
+
+- if (!info->XInited3D)
++ if (!info->accel_state->XInited3D)
+ RADEONInit3DEngine(pScrn);
+
+ if (!FUNC_NAME(R200SetupTexture)(pScrn, maskFormat, alphaPtr, alphaPitch,
+@@ -907,7 +908,7 @@ FUNC_NAME(R200SetupForCPUToScreenTexture) (
+ if (blend_cntl == 0)
+ return FALSE;
+
+- if (!info->XInited3D)
++ if (!info->accel_state->XInited3D)
+ RADEONInit3DEngine(pScrn);
+
+ if (!FUNC_NAME(R200SetupTexture)(pScrn, srcFormat, texPtr, texPitch, width,
+@@ -974,10 +975,10 @@ FUNC_NAME(R200SubsequentCPUToScreenTexture) (
+
+ r = width + l;
+ b = height + t;
+- fl = (float)srcx / info->texW[0];
+- fr = (float)(srcx + width) / info->texW[0];
+- ft = (float)srcy / info->texH[0];
+- fb = (float)(srcy + height) / info->texH[0];
++ fl = (float)srcx / info->accel_state->texW[0];
++ fr = (float)(srcx + width) / info->accel_state->texW[0];
++ ft = (float)srcy / info->accel_state->texH[0];
++ fb = (float)(srcy + height) / info->accel_state->texH[0];
+
+ #ifdef ACCEL_CP
+ BEGIN_RING(24);
+diff --git a/src/radeon_sarea.h b/src/radeon_sarea.h
+deleted file mode 100644
+index 80333a4..0000000
+--- a/src/radeon_sarea.h
++++ /dev/null
+@@ -1,231 +0,0 @@
+-/*
+- * Copyright 2000 ATI Technologies Inc., Markham, Ontario,
+- * 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, 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.
+- */
+-
+-/*
+- * Authors:
+- * Kevin E. Martin <martin@xfree86.org>
+- * Gareth Hughes <gareth@valinux.com>
+- *
+- */
+-
+-#ifndef _RADEON_SAREA_H_
+-#define _RADEON_SAREA_H_
+-
+-/* WARNING: If you change any of these defines, make sure to change the
+- * defines in the kernel file (radeon_drm.h)
+- */
+-#ifndef __RADEON_SAREA_DEFINES__
+-#define __RADEON_SAREA_DEFINES__
+-
+-/* What needs to be changed for the current vertex buffer? */
+-#define RADEON_UPLOAD_CONTEXT 0x00000001
+-#define RADEON_UPLOAD_VERTFMT 0x00000002
+-#define RADEON_UPLOAD_LINE 0x00000004
+-#define RADEON_UPLOAD_BUMPMAP 0x00000008
+-#define RADEON_UPLOAD_MASKS 0x00000010
+-#define RADEON_UPLOAD_VIEWPORT 0x00000020
+-#define RADEON_UPLOAD_SETUP 0x00000040
+-#define RADEON_UPLOAD_TCL 0x00000080
+-#define RADEON_UPLOAD_MISC 0x00000100
+-#define RADEON_UPLOAD_TEX0 0x00000200
+-#define RADEON_UPLOAD_TEX1 0x00000400
+-#define RADEON_UPLOAD_TEX2 0x00000800
+-#define RADEON_UPLOAD_TEX0IMAGES 0x00001000
+-#define RADEON_UPLOAD_TEX1IMAGES 0x00002000
+-#define RADEON_UPLOAD_TEX2IMAGES 0x00004000
+-#define RADEON_UPLOAD_CLIPRECTS 0x00008000 /* handled client-side */
+-#define RADEON_REQUIRE_QUIESCENCE 0x00010000
+-#define RADEON_UPLOAD_ZBIAS 0x00020000
+-#define RADEON_UPLOAD_ALL 0x0002ffff
+-#define RADEON_UPLOAD_CONTEXT_ALL 0x000201ff
+-
+-#define RADEON_FRONT 0x1
+-#define RADEON_BACK 0x2
+-#define RADEON_DEPTH 0x4
+-#define RADEON_STENCIL 0x8
+-
+-/* Primitive types */
+-#define RADEON_POINTS 0x1
+-#define RADEON_LINES 0x2
+-#define RADEON_LINE_STRIP 0x3
+-#define RADEON_TRIANGLES 0x4
+-#define RADEON_TRIANGLE_FAN 0x5
+-#define RADEON_TRIANGLE_STRIP 0x6
+-#define RADEON_3VTX_POINTS 0x9
+-#define RADEON_3VTX_LINES 0xa
+-
+-/* Vertex/indirect buffer size */
+-#define RADEON_BUFFER_SIZE 65536
+-
+-/* Byte offsets for indirect buffer data */
+-#define RADEON_INDEX_PRIM_OFFSET 20
+-#define RADEON_HOSTDATA_BLIT_OFFSET 32
+-
+-#define RADEON_SCRATCH_REG_OFFSET 32
+-
+-/* Keep these small for testing */
+-#define RADEON_NR_SAREA_CLIPRECTS 12
+-
+-/* There are 2 heaps (local/GART). Each region within a heap is a
+- * minimum of 64k, and there are at most 64 of them per heap.
+- */
+-#define RADEON_CARD_HEAP 0
+-#define RADEON_GART_HEAP 1
+-#define RADEON_NR_TEX_HEAPS 2
+-#define RADEON_NR_TEX_REGIONS 64
+-#define RADEON_LOG_TEX_GRANULARITY 16
+-
+-#define RADEON_MAX_TEXTURE_LEVELS 12
+-#define RADEON_MAX_TEXTURE_UNITS 3
+-
+-/* Blits have strict offset rules. All blit offset must be aligned on
+- * a 1K-byte boundary.
+- */
+-#define RADEON_OFFSET_SHIFT 10
+-#define RADEON_OFFSET_ALIGN (1 << RADEON_OFFSET_SHIFT)
+-#define RADEON_OFFSET_MASK (RADEON_OFFSET_ALIGN - 1)
+-
+-#endif /* __RADEON_SAREA_DEFINES__ */
+-
+-typedef struct {
+- unsigned int red;
+- unsigned int green;
+- unsigned int blue;
+- unsigned int alpha;
+-} radeon_color_regs_t;
+-
+-typedef struct {
+- /* Context state */
+- unsigned int pp_misc;
+- unsigned int pp_fog_color;
+- unsigned int re_solid_color;
+- unsigned int rb3d_blendcntl;
+- unsigned int rb3d_depthoffset;
+- unsigned int rb3d_depthpitch;
+- unsigned int rb3d_zstencilcntl;
+-
+- unsigned int pp_cntl;
+- unsigned int rb3d_cntl;
+- unsigned int rb3d_coloroffset;
+- unsigned int re_width_height;
+- unsigned int rb3d_colorpitch;
+- unsigned int se_cntl;
+-
+- /* Vertex format state */
+- unsigned int se_coord_fmt;
+-
+- /* Line state */
+- unsigned int re_line_pattern;
+- unsigned int re_line_state;
+-
+- unsigned int se_line_width;
+-
+- /* Bumpmap state */
+- unsigned int pp_lum_matrix;
+-
+- unsigned int pp_rot_matrix_0;
+- unsigned int pp_rot_matrix_1;
+-
+- /* Mask state */
+- unsigned int rb3d_stencilrefmask;
+- unsigned int rb3d_ropcntl;
+- unsigned int rb3d_planemask;
+-
+- /* Viewport state */
+- unsigned int se_vport_xscale;
+- unsigned int se_vport_xoffset;
+- unsigned int se_vport_yscale;
+- unsigned int se_vport_yoffset;
+- unsigned int se_vport_zscale;
+- unsigned int se_vport_zoffset;
+-
+- /* Setup state */
+- unsigned int se_cntl_status;
+-
+- /* Misc state */
+- unsigned int re_top_left;
+- unsigned int re_misc;
+-} radeon_context_regs_t;
+-
+-/* Setup registers for each texture unit */
+-typedef struct {
+- unsigned int pp_txfilter;
+- unsigned int pp_txformat;
+- unsigned int pp_txoffset;
+- unsigned int pp_txcblend;
+- unsigned int pp_txablend;
+- unsigned int pp_tfactor;
+- unsigned int pp_border_color;
+-} radeon_texture_regs_t;
+-
+-typedef struct {
+- /* The channel for communication of state information to the kernel
+- * on firing a vertex buffer.
+- */
+- radeon_context_regs_t ContextState;
+- radeon_texture_regs_t TexState[RADEON_MAX_TEXTURE_UNITS];
+- unsigned int dirty;
+- unsigned int vertsize;
+- unsigned int vc_format;
+-
+- /* The current cliprects, or a subset thereof */
+- drm_clip_rect_t boxes[RADEON_NR_SAREA_CLIPRECTS];
+- unsigned int nbox;
+-
+- /* Counters for throttling of rendering clients */
+- unsigned int last_frame;
+- unsigned int last_dispatch;
+- unsigned int last_clear;
+-
+- /* Maintain an LRU of contiguous regions of texture space. If you
+- * think you own a region of texture memory, and it has an age
+- * different to the one you set, then you are mistaken and it has
+- * been stolen by another client. If global texAge hasn't changed,
+- * there is no need to walk the list.
+- *
+- * These regions can be used as a proxy for the fine-grained texture
+- * information of other clients - by maintaining them in the same
+- * lru which is used to age their own textures, clients have an
+- * approximate lru for the whole of global texture space, and can
+- * make informed decisions as to which areas to kick out. There is
+- * no need to choose whether to kick out your own texture or someone
+- * else's - simply eject them all in LRU order.
+- */
+- /* Last elt is sentinal */
+- drmTextureRegion texList[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS+1];
+- /* last time texture was uploaded */
+- unsigned int texAge[RADEON_NR_TEX_HEAPS];
+-
+- int ctxOwner; /* last context to upload state */
+- int pfAllowPageFlip; /* set by the 2d driver, read by the client */
+- int pfCurrentPage; /* set by kernel, read by others */
+- int crtc2_base; /* for pageflipping with CloneMode */
+- int tiling_enabled; /* set by drm, read by 2d + 3d clients */
+- } RADEONSAREAPriv, *RADEONSAREAPrivPtr;
+-
+-#endif
+diff --git a/src/radeon_textured_video.c b/src/radeon_textured_video.c
+index cfa349d..c185b46 100644
+--- a/src/radeon_textured_video.c
++++ b/src/radeon_textured_video.c
+@@ -81,33 +81,43 @@ static __inline__ uint32_t F_TO_DW(float val)
+ }
+
+ #define ACCEL_MMIO
+-#define VIDEO_PREAMBLE() unsigned char *RADEONMMIO = info->MMIO
+-#define BEGIN_VIDEO(n) RADEONWaitForFifo(pScrn, (n))
+-#define OUT_VIDEO_REG(reg, val) OUTREG(reg, val)
+-#define OUT_VIDEO_REG_F(reg, val) OUTREG(reg, F_TO_DW(val))
+-#define FINISH_VIDEO()
++#define ACCEL_PREAMBLE() unsigned char *RADEONMMIO = info->MMIO
++#define BEGIN_ACCEL(n) RADEONWaitForFifo(pScrn, (n))
++#define OUT_ACCEL_REG(reg, val) OUTREG(reg, val)
++#define OUT_ACCEL_REG_F(reg, val) OUTREG(reg, F_TO_DW(val))
++#define FINISH_ACCEL()
+
+ #include "radeon_textured_videofuncs.c"
+
+ #undef ACCEL_MMIO
+-#undef VIDEO_PREAMBLE
+-#undef BEGIN_VIDEO
+-#undef OUT_VIDEO_REG
+-#undef FINISH_VIDEO
++#undef ACCEL_PREAMBLE
++#undef BEGIN_ACCEL
++#undef OUT_ACCEL_REG
++#undef OUT_ACCEL_REG_F
++#undef FINISH_ACCEL
+
+ #ifdef XF86DRI
+
+ #define ACCEL_CP
+-#define VIDEO_PREAMBLE() \
++#define ACCEL_PREAMBLE() \
+ RING_LOCALS; \
+ RADEONCP_REFRESH(pScrn, info)
+-#define BEGIN_VIDEO(n) BEGIN_RING(2*(n))
+-#define OUT_VIDEO_REG(reg, val) OUT_RING_REG(reg, val)
+-#define FINISH_VIDEO() ADVANCE_RING()
+-#define OUT_VIDEO_RING_F(x) OUT_RING(F_TO_DW(x))
++#define BEGIN_ACCEL(n) BEGIN_RING(2*(n))
++#define OUT_ACCEL_REG(reg, val) OUT_RING_REG(reg, val)
++#define OUT_ACCEL_REG_F(reg, val) OUT_ACCEL_REG(reg, F_TO_DW(val))
++#define FINISH_ACCEL() ADVANCE_RING()
++#define OUT_RING_F(x) OUT_RING(F_TO_DW(x))
+
+ #include "radeon_textured_videofuncs.c"
+
++#undef ACCEL_CP
++#undef ACCEL_PREAMBLE
++#undef BEGIN_ACCEL
++#undef OUT_ACCEL_REG
++#undef OUT_ACCEL_REG_F
++#undef FINISH_ACCEL
++#undef OUT_RING_F
++
+ #endif /* XF86DRI */
+
+ static int
+@@ -187,18 +197,30 @@ RADEONPutImageTextured(ScrnInfoPtr pScrn,
+ dstPitch = (dstPitch + 15) & ~15;
+
+ if (pPriv->video_memory != NULL && size != pPriv->size) {
+- RADEONFreeMemory(pScrn, pPriv->video_memory);
++ radeon_legacy_free_memory(pScrn, pPriv->video_memory);
+ pPriv->video_memory = NULL;
+ }
+
+ if (pPriv->video_memory == NULL) {
+- pPriv->video_offset = RADEONAllocateMemory(pScrn,
+- &pPriv->video_memory,
+- size * 2);
++ pPriv->video_offset = radeon_legacy_allocate_memory(pScrn,
++ &pPriv->video_memory,
++ size * 2, 64);
+ if (pPriv->video_offset == 0)
+ return BadAlloc;
+ }
+
++ /* Bicubic filter loading */
++ if (!IS_R500_3D)
++ pPriv->bicubic_enabled = FALSE;
++ if (pPriv->bicubic_memory == NULL && pPriv->bicubic_enabled) {
++ pPriv->bicubic_offset = radeon_legacy_allocate_memory(pScrn,
++ &pPriv->bicubic_memory,
++ sizeof(bicubic_tex_512), 64);
++ pPriv->bicubic_src_offset = pPriv->bicubic_offset + info->fbLocation + pScrn->fbOffset;
++ if (pPriv->bicubic_offset == 0)
++ pPriv->bicubic_enabled = FALSE;
++ }
++
+ if (pDraw->type == DRAWABLE_WINDOW)
+ pPriv->pPixmap = (*pScreen->GetWindowPixmap)((WindowPtr)pDraw);
+ else
+@@ -267,6 +289,10 @@ RADEONPutImageTextured(ScrnInfoPtr pScrn,
+ break;
+ }
+
++ /* Upload bicubic filter tex */
++ if (pPriv->bicubic_enabled)
++ RADEONCopyData(pScrn, (uint8_t *)bicubic_tex_512, (uint8_t *)(info->FB + pPriv->bicubic_offset), 1024, 1024, 1, 512, 2);
++
+ /* update cliplist */
+ if (!REGION_EQUAL(pScrn->pScreen, &pPriv->clip, clipBoxes)) {
+ REGION_COPY(pScrn->pScreen, &pPriv->clip, clipBoxes);
+@@ -320,12 +346,16 @@ static XF86VideoFormatRec Formats[NUM_FORMATS] =
+ {15, TrueColor}, {16, TrueColor}, {24, TrueColor}
+ };
+
+-#define NUM_ATTRIBUTES 0
++#define NUM_ATTRIBUTES 1
+
+-static XF86AttributeRec Attributes[NUM_ATTRIBUTES] =
++static XF86AttributeRec Attributes[NUM_ATTRIBUTES+1] =
+ {
++ {XvSettable | XvGettable, 0, 1, "XV_BICUBIC"},
++ {0, 0, 0, NULL}
+ };
+
++static Atom xvBicubic;
++
+ #define NUM_IMAGES 4
+
+ static XF86ImageRec Images[NUM_IMAGES] =
+@@ -336,6 +366,44 @@ static XF86ImageRec Images[NUM_IMAGES] =
+ XVIMAGE_UYVY
+ };
+
++int
++RADEONGetTexPortAttribute(ScrnInfoPtr pScrn,
++ Atom attribute,
++ INT32 *value,
++ pointer data)
++{
++ RADEONInfoPtr info = RADEONPTR(pScrn);
++ RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data;
++
++ if (info->accelOn) RADEON_SYNC(info, pScrn);
++
++ if (attribute == xvBicubic)
++ *value = pPriv->bicubic_enabled ? 1 : 0;
++ else
++ return BadMatch;
++
++ return Success;
++}
++
++int
++RADEONSetTexPortAttribute(ScrnInfoPtr pScrn,
++ Atom attribute,
++ INT32 value,
++ pointer data)
++{
++ RADEONInfoPtr info = RADEONPTR(pScrn);
++ RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data;
++
++ RADEON_SYNC(info, pScrn);
++
++ if (attribute == xvBicubic)
++ pPriv->bicubic_enabled = ClipValue (value, 0, 1);
++ else
++ return BadMatch;
++
++ return Success;
++}
++
+ XF86VideoAdaptorPtr
+ RADEONSetupImageTexturedVideo(ScreenPtr pScreen)
+ {
+@@ -351,6 +419,8 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen)
+ if (adapt == NULL)
+ return NULL;
+
++ xvBicubic = MAKE_ATOM("XV_BICUBIC");
++
+ adapt->type = XvWindowMask | XvInputMask | XvImageMask;
+ adapt->flags = 0;
+ adapt->name = "Radeon Textured Video";
+@@ -367,8 +437,13 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen)
+ pPortPriv =
+ (RADEONPortPrivPtr)(&adapt->pPortPrivates[num_texture_ports]);
+
+- adapt->nAttributes = NUM_ATTRIBUTES;
+- adapt->pAttributes = Attributes;
++ if (IS_R500_3D) {
++ adapt->nAttributes = NUM_ATTRIBUTES;
++ adapt->pAttributes = Attributes;
++ } else {
++ adapt->nAttributes = 0;
++ adapt->pAttributes = NULL;
++ }
+ adapt->pImages = Images;
+ adapt->nImages = NUM_IMAGES;
+ adapt->PutVideo = NULL;
+@@ -376,8 +451,8 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen)
+ adapt->GetVideo = NULL;
+ adapt->GetStill = NULL;
+ adapt->StopVideo = RADEONStopVideo;
+- adapt->SetPortAttribute = RADEONSetPortAttribute;
+- adapt->GetPortAttribute = RADEONGetPortAttribute;
++ adapt->SetPortAttribute = RADEONSetTexPortAttribute;
++ adapt->GetPortAttribute = RADEONGetTexPortAttribute;
+ adapt->QueryBestSize = RADEONQueryBestSize;
+ adapt->PutImage = RADEONPutImageTextured;
+ adapt->ReputImage = NULL;
+@@ -390,6 +465,7 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen)
+ pPriv->videoStatus = 0;
+ pPriv->currentBuffer = 0;
+ pPriv->doubleBuffer = 0;
++ pPriv->bicubic_enabled = (info->ChipFamily >= CHIP_FAMILY_RV515);
+
+ /* gotta uninit this someplace, XXX: shouldn't be necessary for textured */
+ REGION_NULL(pScreen, &pPriv->clip);
+diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c
+index 277d9b2..c5ad0e1 100644
+--- a/src/radeon_textured_videofuncs.c
++++ b/src/radeon_textured_videofuncs.c
+@@ -45,26 +45,47 @@
+ #endif
+ #endif
+
++#define VTX_DWORD_COUNT_FILTER 6
+ #define VTX_DWORD_COUNT 4
+
+ #ifdef ACCEL_CP
+
++#define VTX_OUT_FILTER(_dstX, _dstY, _srcX, _srcY, _maskX, _maskY) \
++do { \
++ OUT_RING_F(_dstX); \
++ OUT_RING_F(_dstY); \
++ OUT_RING_F(_srcX); \
++ OUT_RING_F(_srcY); \
++ OUT_RING_F(_maskX); \
++ OUT_RING_F(_maskY); \
++} while (0)
++
+ #define VTX_OUT(_dstX, _dstY, _srcX, _srcY) \
+ do { \
+- OUT_VIDEO_RING_F(_dstX); \
+- OUT_VIDEO_RING_F(_dstY); \
+- OUT_VIDEO_RING_F(_srcX); \
+- OUT_VIDEO_RING_F(_srcY); \
++ OUT_RING_F(_dstX); \
++ OUT_RING_F(_dstY); \
++ OUT_RING_F(_srcX); \
++ OUT_RING_F(_srcY); \
+ } while (0)
+
+ #else /* ACCEL_CP */
+
++#define VTX_OUT_FILTER(_dstX, _dstY, _srcX, _srcY, _maskX, _maskY) \
++do { \
++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstX); \
++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstY); \
++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcX); \
++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcY); \
++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _maskX); \
++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _maskY); \
++} while (0)
++
+ #define VTX_OUT(_dstX, _dstY, _srcX, _srcY) \
+ do { \
+- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _dstX); \
+- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _dstY); \
+- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _srcX); \
+- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _srcY); \
++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstX); \
++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstY); \
++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcX); \
++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcY); \
+ } while (0)
+
+ #endif /* !ACCEL_CP */
+@@ -79,10 +100,10 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+ uint32_t dst_offset, dst_pitch, dst_format;
+ uint32_t txenable, colorpitch;
+ uint32_t blendcntl;
+- int dstxoff, dstyoff, pixel_shift;
++ int dstxoff, dstyoff, pixel_shift, vtx_count;
+ BoxPtr pBox = REGION_RECTS(&pPriv->clip);
+ int nBox = REGION_NUM_RECTS(&pPriv->clip);
+- VIDEO_PREAMBLE();
++ ACCEL_PREAMBLE();
+
+ pixel_shift = pPixmap->drawable.bitsPerPixel >> 4;
+
+@@ -106,22 +127,27 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+ dstyoff = 0;
+ #endif
+
+- if (!info->XInited3D)
++ if (!info->accel_state->XInited3D)
+ RADEONInit3DEngine(pScrn);
+
+ /* we can probably improve this */
+- BEGIN_VIDEO(2);
++ BEGIN_ACCEL(2);
+ if (IS_R300_3D || IS_R500_3D)
+- OUT_VIDEO_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D);
++ OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D);
+ else
+- OUT_VIDEO_REG(RADEON_RB3D_DSTCACHE_CTLSTAT, RADEON_RB3D_DC_FLUSH);
++ OUT_ACCEL_REG(RADEON_RB3D_DSTCACHE_CTLSTAT, RADEON_RB3D_DC_FLUSH);
+ /* We must wait for 3d to idle, in case source was just written as a dest. */
+- OUT_VIDEO_REG(RADEON_WAIT_UNTIL,
++ OUT_ACCEL_REG(RADEON_WAIT_UNTIL,
+ RADEON_WAIT_HOST_IDLECLEAN |
+ RADEON_WAIT_2D_IDLECLEAN |
+ RADEON_WAIT_3D_IDLECLEAN |
+ RADEON_WAIT_DMA_GUI_IDLE);
+- FINISH_VIDEO();
++ FINISH_ACCEL();
++
++ if (pPriv->bicubic_enabled)
++ vtx_count = VTX_DWORD_COUNT_FILTER;
++ else
++ vtx_count = VTX_DWORD_COUNT;
+
+ if (IS_R300_3D || IS_R500_3D) {
+ uint32_t output_fmt;
+@@ -160,16 +186,17 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+ txformat1 |= R300_TX_FORMAT_YUV_TO_RGB_CLAMP;
+
+ txformat0 = ((((pPriv->w - 1) & 0x7ff) << R300_TXWIDTH_SHIFT) |
+- (((pPriv->h - 1) & 0x7ff) << R300_TXHEIGHT_SHIFT));
+-
+- txformat0 |= R300_TXPITCH_EN;
++ (((pPriv->h - 1) & 0x7ff) << R300_TXHEIGHT_SHIFT) |
++ R300_TXPITCH_EN);
+
+- info->texW[0] = pPriv->w;
+- info->texH[0] = pPriv->h;
++ info->accel_state->texW[0] = pPriv->w;
++ info->accel_state->texH[0] = pPriv->h;
+
+ txfilter = (R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_LAST) |
+ R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_LAST) |
+- R300_TX_MAG_FILTER_LINEAR | R300_TX_MIN_FILTER_LINEAR);
++ R300_TX_MAG_FILTER_LINEAR |
++ R300_TX_MIN_FILTER_LINEAR |
++ (0 << R300_TX_ID_SHIFT));
+
+ /* pitch is in pixels */
+ txpitch = pPriv->src_pitch / 2;
+@@ -183,22 +210,58 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+
+ txoffset = pPriv->src_offset;
+
+- BEGIN_VIDEO(6);
+- OUT_VIDEO_REG(R300_TX_FILTER0_0, txfilter);
+- OUT_VIDEO_REG(R300_TX_FILTER1_0, 0);
+- OUT_VIDEO_REG(R300_TX_FORMAT0_0, txformat0);
+- OUT_VIDEO_REG(R300_TX_FORMAT1_0, txformat1);
+- OUT_VIDEO_REG(R300_TX_FORMAT2_0, txpitch);
+- OUT_VIDEO_REG(R300_TX_OFFSET_0, txoffset);
+- FINISH_VIDEO();
++ BEGIN_ACCEL(6);
++ OUT_ACCEL_REG(R300_TX_FILTER0_0, txfilter);
++ OUT_ACCEL_REG(R300_TX_FILTER1_0, 0);
++ OUT_ACCEL_REG(R300_TX_FORMAT0_0, txformat0);
++ OUT_ACCEL_REG(R300_TX_FORMAT1_0, txformat1);
++ OUT_ACCEL_REG(R300_TX_FORMAT2_0, txpitch);
++ OUT_ACCEL_REG(R300_TX_OFFSET_0, txoffset);
++ FINISH_ACCEL();
+
+ txenable = R300_TEX_0_ENABLE;
+
++ if (pPriv->bicubic_enabled) {
++ /* Size is 128x1 */
++ txformat0 = ((0x7f << R300_TXWIDTH_SHIFT) |
++ (0x0 << R300_TXHEIGHT_SHIFT) |
++ R300_TXPITCH_EN);
++ /* Format is 32-bit floats, 4bpp */
++ txformat1 = R300_EASY_TX_FORMAT(Z, Y, X, W, FL_R16G16B16A16);
++ /* Pitch is 127 (128-1) */
++ txpitch = 0x7f;
++ /* Tex filter */
++ txfilter = (R300_TX_CLAMP_S(R300_TX_CLAMP_WRAP) |
++ R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP) |
++ R300_TX_MIN_FILTER_NEAREST |
++ R300_TX_MAG_FILTER_NEAREST |
++ (1 << R300_TX_ID_SHIFT));
++
++ BEGIN_ACCEL(6);
++ OUT_ACCEL_REG(R300_TX_FILTER0_1, txfilter);
++ OUT_ACCEL_REG(R300_TX_FILTER1_1, 0);
++ OUT_ACCEL_REG(R300_TX_FORMAT0_1, txformat0);
++ OUT_ACCEL_REG(R300_TX_FORMAT1_1, txformat1);
++ OUT_ACCEL_REG(R300_TX_FORMAT2_1, txpitch);
++ OUT_ACCEL_REG(R300_TX_OFFSET_1, pPriv->bicubic_src_offset);
++ FINISH_ACCEL();
++
++ /* Enable tex 1 */
++ txenable |= R300_TEX_1_ENABLE;
++ }
++
+ /* setup the VAP */
+- if (info->has_tcl)
+- BEGIN_VIDEO(6);
+- else
+- BEGIN_VIDEO(4);
++ if (info->accel_state->has_tcl) {
++ if (pPriv->bicubic_enabled)
++ BEGIN_ACCEL(7);
++ else
++ BEGIN_ACCEL(6);
++ } else {
++ if (pPriv->bicubic_enabled)
++ BEGIN_ACCEL(5);
++ else
++ BEGIN_ACCEL(4);
++ }
+
+ /* These registers define the number, type, and location of data submitted
+ * to the PVS unit of GA input (when PVS is disabled)
+@@ -213,56 +276,90 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+ * Textures 0-7
+ * Fog
+ */
+- OUT_VIDEO_REG(R300_VAP_PROG_STREAM_CNTL_0,
+- ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_0_SHIFT) |
+- (0 << R300_SKIP_DWORDS_0_SHIFT) |
+- (0 << R300_DST_VEC_LOC_0_SHIFT) |
+- R300_SIGNED_0 |
+- (R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_1_SHIFT) |
+- (0 << R300_SKIP_DWORDS_1_SHIFT) |
+- (6 << R300_DST_VEC_LOC_1_SHIFT) |
+- R300_LAST_VEC_1 |
+- R300_SIGNED_1));
++ if (pPriv->bicubic_enabled) {
++ OUT_ACCEL_REG(R300_VAP_PROG_STREAM_CNTL_0,
++ ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_0_SHIFT) |
++ (0 << R300_SKIP_DWORDS_0_SHIFT) |
++ (0 << R300_DST_VEC_LOC_0_SHIFT) |
++ R300_SIGNED_0 |
++ (R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_1_SHIFT) |
++ (0 << R300_SKIP_DWORDS_1_SHIFT) |
++ (6 << R300_DST_VEC_LOC_1_SHIFT) |
++ R300_SIGNED_1));
++ OUT_ACCEL_REG(R300_VAP_PROG_STREAM_CNTL_1,
++ ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_2_SHIFT) |
++ (0 << R300_SKIP_DWORDS_2_SHIFT) |
++ (7 << R300_DST_VEC_LOC_2_SHIFT) |
++ R300_LAST_VEC_2 |
++ R300_SIGNED_2));
++ } else {
++ OUT_ACCEL_REG(R300_VAP_PROG_STREAM_CNTL_0,
++ ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_0_SHIFT) |
++ (0 << R300_SKIP_DWORDS_0_SHIFT) |
++ (0 << R300_DST_VEC_LOC_0_SHIFT) |
++ R300_SIGNED_0 |
++ (R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_1_SHIFT) |
++ (0 << R300_SKIP_DWORDS_1_SHIFT) |
++ (6 << R300_DST_VEC_LOC_1_SHIFT) |
++ R300_LAST_VEC_1 |
++ R300_SIGNED_1));
++ }
+
+ /* load the vertex shader
+ * We pre-load vertex programs in RADEONInit3DEngine():
++ * - exa mask/Xv bicubic
+ * - exa no mask
+- * - exa mask
+ * - Xv
+ * Here we select the offset of the vertex program we want to use
+ */
+- if (info->has_tcl) {
+- OUT_VIDEO_REG(R300_VAP_PVS_CODE_CNTL_0,
+- ((5 << R300_PVS_FIRST_INST_SHIFT) |
+- (6 << R300_PVS_XYZW_VALID_INST_SHIFT) |
+- (6 << R300_PVS_LAST_INST_SHIFT)));
+- OUT_VIDEO_REG(R300_VAP_PVS_CODE_CNTL_1,
+- (6 << R300_PVS_LAST_VTX_SRC_INST_SHIFT));
++ if (info->accel_state->has_tcl) {
++ if (pPriv->bicubic_enabled) {
++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_0,
++ ((0 << R300_PVS_FIRST_INST_SHIFT) |
++ (2 << R300_PVS_XYZW_VALID_INST_SHIFT) |
++ (2 << R300_PVS_LAST_INST_SHIFT)));
++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_1,
++ (2 << R300_PVS_LAST_VTX_SRC_INST_SHIFT));
++ } else {
++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_0,
++ ((5 << R300_PVS_FIRST_INST_SHIFT) |
++ (6 << R300_PVS_XYZW_VALID_INST_SHIFT) |
++ (6 << R300_PVS_LAST_INST_SHIFT)));
++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_1,
++ (6 << R300_PVS_LAST_VTX_SRC_INST_SHIFT));
++ }
+ }
+
+ /* Position and one set of 2 texture coordinates */
+- OUT_VIDEO_REG(R300_VAP_OUT_VTX_FMT_0, R300_VTX_POS_PRESENT);
+- OUT_VIDEO_REG(R300_VAP_OUT_VTX_FMT_1, (2 << R300_TEX_0_COMP_CNT_SHIFT));
+- OUT_VIDEO_REG(R300_US_OUT_FMT_0, output_fmt);
+- FINISH_VIDEO();
++ OUT_ACCEL_REG(R300_VAP_OUT_VTX_FMT_0, R300_VTX_POS_PRESENT);
++ if (pPriv->bicubic_enabled)
++ OUT_ACCEL_REG(R300_VAP_OUT_VTX_FMT_1, ((2 << R300_TEX_0_COMP_CNT_SHIFT) |
++ (2 << R300_TEX_1_COMP_CNT_SHIFT)));
++ else
++ OUT_ACCEL_REG(R300_VAP_OUT_VTX_FMT_1, (2 << R300_TEX_0_COMP_CNT_SHIFT));
++
++ OUT_ACCEL_REG(R300_US_OUT_FMT_0, output_fmt);
++ FINISH_ACCEL();
+
+ /* setup pixel shader */
+ if (IS_R300_3D) {
+- BEGIN_VIDEO(8);
++ BEGIN_ACCEL(9);
+ /* 2 components: 2 for tex0 */
+- OUT_VIDEO_REG(R300_RS_COUNT,
++ OUT_ACCEL_REG(R300_RS_COUNT,
+ ((2 << R300_RS_COUNT_IT_COUNT_SHIFT) |
+ R300_RS_COUNT_HIRES_EN));
+ /* R300_INST_COUNT_RS - highest RS instruction used */
+- OUT_VIDEO_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6));
++ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6));
+
+- OUT_VIDEO_REG(R300_US_CODE_OFFSET,
++ OUT_ACCEL_REG(R300_US_PIXSIZE, 0); /* highest temp used */
++
++ OUT_ACCEL_REG(R300_US_CODE_OFFSET,
+ (R300_ALU_CODE_OFFSET(0) |
+ R300_ALU_CODE_SIZE(1) |
+ R300_TEX_CODE_OFFSET(0) |
+ R300_TEX_CODE_SIZE(1)));
+
+- OUT_VIDEO_REG(R300_US_CODE_ADDR_3,
++ OUT_ACCEL_REG(R300_US_CODE_ADDR_3,
+ (R300_ALU_START(0) |
+ R300_ALU_SIZE(0) |
+ R300_TEX_START(0) |
+@@ -273,7 +370,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+
+ /* ALU inst */
+ /* RGB */
+- OUT_VIDEO_REG(R300_US_ALU_RGB_ADDR_0,
++ OUT_ACCEL_REG(R300_US_ALU_RGB_ADDR_0,
+ (R300_ALU_RGB_ADDR0(0) |
+ R300_ALU_RGB_ADDR1(0) |
+ R300_ALU_RGB_ADDR2(0) |
+@@ -282,7 +379,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+ R300_ALU_RGB_MASK_G |
+ R300_ALU_RGB_MASK_B)) |
+ R300_ALU_RGB_TARGET_A));
+- OUT_VIDEO_REG(R300_US_ALU_RGB_INST_0,
++ OUT_ACCEL_REG(R300_US_ALU_RGB_INST_0,
+ (R300_ALU_RGB_SEL_A(R300_ALU_RGB_SRC0_RGB) |
+ R300_ALU_RGB_MOD_A(R300_ALU_RGB_MOD_NOP) |
+ R300_ALU_RGB_SEL_B(R300_ALU_RGB_1_0) |
+@@ -293,7 +390,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+ R300_ALU_RGB_OMOD(R300_ALU_RGB_OMOD_NONE) |
+ R300_ALU_RGB_CLAMP));
+ /* Alpha */
+- OUT_VIDEO_REG(R300_US_ALU_ALPHA_ADDR_0,
++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_ADDR_0,
+ (R300_ALU_ALPHA_ADDR0(0) |
+ R300_ALU_ALPHA_ADDR1(0) |
+ R300_ALU_ALPHA_ADDR2(0) |
+@@ -301,7 +398,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+ R300_ALU_ALPHA_OMASK(R300_ALU_ALPHA_MASK_A) |
+ R300_ALU_ALPHA_TARGET_A |
+ R300_ALU_ALPHA_OMASK_W(R300_ALU_ALPHA_MASK_NONE)));
+- OUT_VIDEO_REG(R300_US_ALU_ALPHA_INST_0,
++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_INST_0,
+ (R300_ALU_ALPHA_SEL_A(R300_ALU_ALPHA_SRC0_A) |
+ R300_ALU_ALPHA_MOD_A(R300_ALU_ALPHA_MOD_NOP) |
+ R300_ALU_ALPHA_SEL_B(R300_ALU_ALPHA_1_0) |
+@@ -311,118 +408,591 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+ R300_ALU_ALPHA_OP(R300_ALU_ALPHA_OP_MAD) |
+ R300_ALU_ALPHA_OMOD(R300_ALU_ALPHA_OMOD_NONE) |
+ R300_ALU_ALPHA_CLAMP));
+- FINISH_VIDEO();
++ FINISH_ACCEL();
+ } else {
+- BEGIN_VIDEO(18);
+- /* 2 components: 2 for tex0 */
+- OUT_VIDEO_REG(R300_RS_COUNT,
+- ((2 << R300_RS_COUNT_IT_COUNT_SHIFT) |
+- R300_RS_COUNT_HIRES_EN));
+-
+- /* R300_INST_COUNT_RS - highest RS instruction used */
+- OUT_VIDEO_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6));
+-
+- OUT_VIDEO_REG(R500_US_CODE_ADDR, (R500_US_CODE_START_ADDR(0) |
+- R500_US_CODE_END_ADDR(1)));
+- OUT_VIDEO_REG(R500_US_CODE_RANGE, (R500_US_CODE_RANGE_ADDR(0) |
+- R500_US_CODE_RANGE_SIZE(1)));
+- OUT_VIDEO_REG(R500_US_CODE_OFFSET, 0);
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_INDEX, 0);
+-
+- /* tex inst */
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX |
+- R500_INST_TEX_SEM_WAIT |
+- R500_INST_RGB_WMASK_R |
+- R500_INST_RGB_WMASK_G |
+- R500_INST_RGB_WMASK_B |
+- R500_INST_ALPHA_WMASK |
+- R500_INST_RGB_CLAMP |
+- R500_INST_ALPHA_CLAMP));
+-
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) |
+- R500_TEX_INST_LD |
+- R500_TEX_SEM_ACQUIRE |
+- R500_TEX_IGNORE_UNCOVERED));
+-
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) |
+- R500_TEX_SRC_S_SWIZ_R |
+- R500_TEX_SRC_T_SWIZ_G |
+- R500_TEX_DST_ADDR(0) |
+- R500_TEX_DST_R_SWIZ_R |
+- R500_TEX_DST_G_SWIZ_G |
+- R500_TEX_DST_B_SWIZ_B |
+- R500_TEX_DST_A_SWIZ_A));
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_DX_ADDR(0) |
+- R500_DX_S_SWIZ_R |
+- R500_DX_T_SWIZ_R |
+- R500_DX_R_SWIZ_R |
+- R500_DX_Q_SWIZ_R |
+- R500_DY_ADDR(0) |
+- R500_DY_S_SWIZ_R |
+- R500_DY_T_SWIZ_R |
+- R500_DY_R_SWIZ_R |
+- R500_DY_Q_SWIZ_R));
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
+-
+- /* ALU inst */
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_OUT |
+- R500_INST_TEX_SEM_WAIT |
+- R500_INST_LAST |
+- R500_INST_RGB_OMASK_R |
+- R500_INST_RGB_OMASK_G |
+- R500_INST_RGB_OMASK_B |
+- R500_INST_ALPHA_OMASK |
+- R500_INST_RGB_CLAMP |
+- R500_INST_ALPHA_CLAMP));
+-
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) |
+- R500_RGB_ADDR1(0) |
+- R500_RGB_ADDR1_CONST |
+- R500_RGB_ADDR2(0) |
+- R500_RGB_ADDR2_CONST));
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) |
+- R500_ALPHA_ADDR1(0) |
+- R500_ALPHA_ADDR1_CONST |
+- R500_ALPHA_ADDR2(0) |
+- R500_ALPHA_ADDR2_CONST));
+-
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 |
+- R500_ALU_RGB_R_SWIZ_A_R |
+- R500_ALU_RGB_G_SWIZ_A_G |
+- R500_ALU_RGB_B_SWIZ_A_B |
+- R500_ALU_RGB_SEL_B_SRC0 |
+- R500_ALU_RGB_R_SWIZ_B_1 |
+- R500_ALU_RGB_B_SWIZ_B_1 |
+- R500_ALU_RGB_G_SWIZ_B_1));
+-
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_OP_MAD |
+- R500_ALPHA_SWIZ_A_A |
+- R500_ALPHA_SWIZ_B_1));
+-
+- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_OP_MAD |
+- R500_ALU_RGBA_R_SWIZ_0 |
+- R500_ALU_RGBA_G_SWIZ_0 |
+- R500_ALU_RGBA_B_SWIZ_0 |
+- R500_ALU_RGBA_A_SWIZ_0));
+- FINISH_VIDEO();
++ if (pPriv->bicubic_enabled) {
++ BEGIN_ACCEL(7);
++
++ /* 4 components: 2 for tex0 and 2 for tex1 */
++ OUT_ACCEL_REG(R300_RS_COUNT,
++ ((4 << R300_RS_COUNT_IT_COUNT_SHIFT) |
++ R300_RS_COUNT_HIRES_EN));
++
++ /* R300_INST_COUNT_RS - highest RS instruction used */
++ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(1) | R300_TX_OFFSET_RS(6));
++
++ /* Pixel stack frame size. */
++ OUT_ACCEL_REG(R300_US_PIXSIZE, 5);
++
++ /* FP length. */
++ OUT_ACCEL_REG(R500_US_CODE_ADDR, (R500_US_CODE_START_ADDR(0) |
++ R500_US_CODE_END_ADDR(13)));
++ OUT_ACCEL_REG(R500_US_CODE_RANGE, (R500_US_CODE_RANGE_ADDR(0) |
++ R500_US_CODE_RANGE_SIZE(13)));
++
++ /* Prepare for FP emission. */
++ OUT_ACCEL_REG(R500_US_CODE_OFFSET, 0);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0));
++ FINISH_ACCEL();
++
++ BEGIN_ACCEL(89);
++ /* Pixel shader.
++ * I've gone ahead and annotated each instruction, since this
++ * thing is MASSIVE. :3
++ * Note: In order to avoid buggies with temps and multiple
++ * inputs, all temps are offset by 2. temp0 -> register2. */
++
++ /* TEX temp2, input1.xxxx, tex1, 1D */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(1) |
++ R500_TEX_INST_LD |
++ R500_TEX_IGNORE_UNCOVERED));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(1) |
++ R500_TEX_SRC_S_SWIZ_R |
++ R500_TEX_SRC_T_SWIZ_R |
++ R500_TEX_SRC_R_SWIZ_R |
++ R500_TEX_SRC_Q_SWIZ_R |
++ R500_TEX_DST_ADDR(2) |
++ R500_TEX_DST_R_SWIZ_R |
++ R500_TEX_DST_G_SWIZ_G |
++ R500_TEX_DST_B_SWIZ_B |
++ R500_TEX_DST_A_SWIZ_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++
++ /* TEX temp5, input1.yyyy, tex1, 1D */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX |
++ R500_INST_TEX_SEM_WAIT |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(1) |
++ R500_TEX_INST_LD |
++ R500_TEX_SEM_ACQUIRE |
++ R500_TEX_IGNORE_UNCOVERED));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(1) |
++ R500_TEX_SRC_S_SWIZ_G |
++ R500_TEX_SRC_T_SWIZ_G |
++ R500_TEX_SRC_R_SWIZ_G |
++ R500_TEX_SRC_Q_SWIZ_G |
++ R500_TEX_DST_ADDR(5) |
++ R500_TEX_DST_R_SWIZ_R |
++ R500_TEX_DST_G_SWIZ_G |
++ R500_TEX_DST_B_SWIZ_B |
++ R500_TEX_DST_A_SWIZ_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++
++ /* MUL temp4, const0.x0x0, temp2.yyxx */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU |
++ R500_INST_TEX_SEM_WAIT |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) |
++ R500_RGB_ADDR0_CONST |
++ R500_RGB_ADDR1(2)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) |
++ R500_ALPHA_ADDR0_CONST |
++ R500_ALPHA_ADDR1(2)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 |
++ R500_ALU_RGB_R_SWIZ_A_R |
++ R500_ALU_RGB_G_SWIZ_A_0 |
++ R500_ALU_RGB_B_SWIZ_A_R |
++ R500_ALU_RGB_SEL_B_SRC1 |
++ R500_ALU_RGB_R_SWIZ_B_G |
++ R500_ALU_RGB_G_SWIZ_B_G |
++ R500_ALU_RGB_B_SWIZ_B_R));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(4) |
++ R500_ALPHA_OP_MAD |
++ R500_ALPHA_SEL_A_SRC0 |
++ R500_ALPHA_SWIZ_A_0 |
++ R500_ALPHA_SEL_B_SRC1 |
++ R500_ALPHA_SWIZ_B_R));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(4) |
++ R500_ALU_RGBA_OP_MAD |
++ R500_ALU_RGBA_R_SWIZ_0 |
++ R500_ALU_RGBA_G_SWIZ_0 |
++ R500_ALU_RGBA_B_SWIZ_0 |
++ R500_ALU_RGBA_A_SWIZ_0));
++
++ /* MAD temp3, const0.0y0y, temp5.xxxx, temp4 */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) |
++ R500_RGB_ADDR0_CONST |
++ R500_RGB_ADDR1(5) |
++ R500_RGB_ADDR2(4)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) |
++ R500_ALPHA_ADDR0_CONST |
++ R500_ALPHA_ADDR1(5) |
++ R500_ALPHA_ADDR2(4)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 |
++ R500_ALU_RGB_R_SWIZ_A_0 |
++ R500_ALU_RGB_G_SWIZ_A_G |
++ R500_ALU_RGB_B_SWIZ_A_0 |
++ R500_ALU_RGB_SEL_B_SRC1 |
++ R500_ALU_RGB_R_SWIZ_B_R |
++ R500_ALU_RGB_G_SWIZ_B_R |
++ R500_ALU_RGB_B_SWIZ_B_R));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(3) |
++ R500_ALPHA_OP_MAD |
++ R500_ALPHA_SEL_A_SRC0 |
++ R500_ALPHA_SWIZ_A_G |
++ R500_ALPHA_SEL_B_SRC1 |
++ R500_ALPHA_SWIZ_B_R));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(3) |
++ R500_ALU_RGBA_OP_MAD |
++ R500_ALU_RGBA_SEL_C_SRC2 |
++ R500_ALU_RGBA_R_SWIZ_R |
++ R500_ALU_RGBA_G_SWIZ_G |
++ R500_ALU_RGBA_B_SWIZ_B |
++ R500_ALU_RGBA_A_SWIZ_A));
++
++ /* ADD temp3, temp3, input0.xyxy */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR1(3) |
++ R500_RGB_ADDR2(0)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR1(3) |
++ R500_ALPHA_ADDR2(0)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_R_SWIZ_A_1 |
++ R500_ALU_RGB_G_SWIZ_A_1 |
++ R500_ALU_RGB_B_SWIZ_A_1 |
++ R500_ALU_RGB_SEL_B_SRC1 |
++ R500_ALU_RGB_R_SWIZ_B_R |
++ R500_ALU_RGB_G_SWIZ_B_G |
++ R500_ALU_RGB_B_SWIZ_B_B));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(3) |
++ R500_ALPHA_OP_MAD |
++ R500_ALPHA_SWIZ_A_1 |
++ R500_ALPHA_SEL_B_SRC1 |
++ R500_ALPHA_SWIZ_B_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(3) |
++ R500_ALU_RGBA_OP_MAD |
++ R500_ALU_RGBA_SEL_C_SRC2 |
++ R500_ALU_RGBA_R_SWIZ_R |
++ R500_ALU_RGBA_G_SWIZ_G |
++ R500_ALU_RGBA_B_SWIZ_R |
++ R500_ALU_RGBA_A_SWIZ_G));
++
++ /* TEX temp1, temp3.zwxy, tex0, 1D */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) |
++ R500_TEX_INST_LD |
++ R500_TEX_IGNORE_UNCOVERED));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(3) |
++ R500_TEX_SRC_S_SWIZ_B |
++ R500_TEX_SRC_T_SWIZ_A |
++ R500_TEX_SRC_R_SWIZ_R |
++ R500_TEX_SRC_Q_SWIZ_G |
++ R500_TEX_DST_ADDR(1) |
++ R500_TEX_DST_R_SWIZ_R |
++ R500_TEX_DST_G_SWIZ_G |
++ R500_TEX_DST_B_SWIZ_B |
++ R500_TEX_DST_A_SWIZ_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++
++ /* TEX temp3, temp3.xyzw, tex0, 1D */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX |
++ R500_INST_TEX_SEM_WAIT |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) |
++ R500_TEX_INST_LD |
++ R500_TEX_SEM_ACQUIRE |
++ R500_TEX_IGNORE_UNCOVERED));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(3) |
++ R500_TEX_SRC_S_SWIZ_R |
++ R500_TEX_SRC_T_SWIZ_G |
++ R500_TEX_SRC_R_SWIZ_B |
++ R500_TEX_SRC_Q_SWIZ_A |
++ R500_TEX_DST_ADDR(3) |
++ R500_TEX_DST_R_SWIZ_R |
++ R500_TEX_DST_G_SWIZ_G |
++ R500_TEX_DST_B_SWIZ_B |
++ R500_TEX_DST_A_SWIZ_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++
++ /* MAD temp4, const1.0y0y, temp5.yyyy, temp4 */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) |
++ R500_RGB_ADDR0_CONST |
++ R500_RGB_ADDR1(5) |
++ R500_RGB_ADDR2(4)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) |
++ R500_ALPHA_ADDR0_CONST |
++ R500_ALPHA_ADDR1(5) |
++ R500_ALPHA_ADDR2(4)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 |
++ R500_ALU_RGB_R_SWIZ_A_0 |
++ R500_ALU_RGB_G_SWIZ_A_G |
++ R500_ALU_RGB_B_SWIZ_A_0 |
++ R500_ALU_RGB_SEL_B_SRC1 |
++ R500_ALU_RGB_R_SWIZ_B_G |
++ R500_ALU_RGB_G_SWIZ_B_G |
++ R500_ALU_RGB_B_SWIZ_B_G));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(4) |
++ R500_ALPHA_OP_MAD |
++ R500_ALPHA_SEL_A_SRC0 |
++ R500_ALPHA_SWIZ_A_G |
++ R500_ALPHA_SEL_B_SRC1 |
++ R500_ALPHA_SWIZ_B_G));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(4) |
++ R500_ALU_RGBA_OP_MAD |
++ R500_ALU_RGBA_SEL_C_SRC2 |
++ R500_ALU_RGBA_R_SWIZ_R |
++ R500_ALU_RGBA_G_SWIZ_G |
++ R500_ALU_RGBA_B_SWIZ_B |
++ R500_ALU_RGBA_A_SWIZ_A));
++
++ /* ADD temp0, temp4, input0.xyxy */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR1(4) |
++ R500_RGB_ADDR2(0)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR1(4) |
++ R500_ALPHA_ADDR2(0)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_R_SWIZ_A_1 |
++ R500_ALU_RGB_G_SWIZ_A_1 |
++ R500_ALU_RGB_B_SWIZ_A_1 |
++ R500_ALU_RGB_SEL_B_SRC1 |
++ R500_ALU_RGB_R_SWIZ_B_R |
++ R500_ALU_RGB_G_SWIZ_B_G |
++ R500_ALU_RGB_B_SWIZ_B_B));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(0) |
++ R500_ALPHA_OP_MAD |
++ R500_ALPHA_SWIZ_A_1 |
++ R500_ALPHA_SEL_B_SRC1 |
++ R500_ALPHA_SWIZ_B_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(0) |
++ R500_ALU_RGBA_OP_MAD |
++ R500_ALU_RGBA_SEL_C_SRC2 |
++ R500_ALU_RGBA_R_SWIZ_R |
++ R500_ALU_RGBA_G_SWIZ_G |
++ R500_ALU_RGBA_B_SWIZ_R |
++ R500_ALU_RGBA_A_SWIZ_G));
++
++ /* TEX temp4, temp0.zwzw, tex0, 1D */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX |
++ R500_INST_TEX_SEM_WAIT |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) |
++ R500_TEX_INST_LD |
++ R500_TEX_IGNORE_UNCOVERED));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) |
++ R500_TEX_SRC_S_SWIZ_B |
++ R500_TEX_SRC_T_SWIZ_A |
++ R500_TEX_SRC_R_SWIZ_B |
++ R500_TEX_SRC_Q_SWIZ_A |
++ R500_TEX_DST_ADDR(4) |
++ R500_TEX_DST_R_SWIZ_R |
++ R500_TEX_DST_G_SWIZ_G |
++ R500_TEX_DST_B_SWIZ_B |
++ R500_TEX_DST_A_SWIZ_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++
++ /* TEX temp0, temp0.xyzw, tex0, 1D */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX |
++ R500_INST_TEX_SEM_WAIT |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) |
++ R500_TEX_INST_LD |
++ R500_TEX_SEM_ACQUIRE |
++ R500_TEX_IGNORE_UNCOVERED));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) |
++ R500_TEX_SRC_S_SWIZ_R |
++ R500_TEX_SRC_T_SWIZ_G |
++ R500_TEX_SRC_R_SWIZ_B |
++ R500_TEX_SRC_Q_SWIZ_A |
++ R500_TEX_DST_ADDR(0) |
++ R500_TEX_DST_R_SWIZ_R |
++ R500_TEX_DST_G_SWIZ_G |
++ R500_TEX_DST_B_SWIZ_B |
++ R500_TEX_DST_A_SWIZ_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++
++ /* LRP temp3, temp2.zzzz, temp1, temp3 ->
++ * - PRESUB temps, temp1 - temp3
++ * - MAD temp2.zzzz, temps, temp3 */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(3) |
++ R500_RGB_SRCP_OP_RGB1_MINUS_RGB0 |
++ R500_RGB_ADDR1(1) |
++ R500_RGB_ADDR2(2)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(3) |
++ R500_ALPHA_SRCP_OP_A1_MINUS_A0 |
++ R500_ALPHA_ADDR1(1) |
++ R500_ALPHA_ADDR2(2)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC2 |
++ R500_ALU_RGB_R_SWIZ_A_B |
++ R500_ALU_RGB_G_SWIZ_A_B |
++ R500_ALU_RGB_B_SWIZ_A_B |
++ R500_ALU_RGB_SEL_B_SRCP |
++ R500_ALU_RGB_R_SWIZ_B_R |
++ R500_ALU_RGB_G_SWIZ_B_G |
++ R500_ALU_RGB_B_SWIZ_B_B));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(3) |
++ R500_ALPHA_OP_MAD |
++ R500_ALPHA_SEL_A_SRC2 |
++ R500_ALPHA_SWIZ_A_B |
++ R500_ALPHA_SEL_B_SRCP |
++ R500_ALPHA_SWIZ_B_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(3) |
++ R500_ALU_RGBA_OP_MAD |
++ R500_ALU_RGBA_SEL_C_SRC0 |
++ R500_ALU_RGBA_R_SWIZ_R |
++ R500_ALU_RGBA_G_SWIZ_G |
++ R500_ALU_RGBA_B_SWIZ_B |
++ R500_ALU_RGBA_A_SWIZ_A));
++
++ /* LRP temp0, temp2.zzzz, temp4, temp0 ->
++ * - PRESUB temps, temp4 - temp1
++ * - MAD temp2.zzzz, temps, temp0 */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU |
++ R500_INST_TEX_SEM_WAIT |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) |
++ R500_RGB_SRCP_OP_RGB1_MINUS_RGB0 |
++ R500_RGB_ADDR1(4) |
++ R500_RGB_ADDR2(2)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) |
++ R500_ALPHA_SRCP_OP_A1_MINUS_A0 |
++ R500_ALPHA_ADDR1(4) |
++ R500_ALPHA_ADDR2(2)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC2 |
++ R500_ALU_RGB_R_SWIZ_A_B |
++ R500_ALU_RGB_G_SWIZ_A_B |
++ R500_ALU_RGB_B_SWIZ_A_B |
++ R500_ALU_RGB_SEL_B_SRCP |
++ R500_ALU_RGB_R_SWIZ_B_R |
++ R500_ALU_RGB_G_SWIZ_B_G |
++ R500_ALU_RGB_B_SWIZ_B_B));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(0) |
++ R500_ALPHA_OP_MAD |
++ R500_ALPHA_SEL_A_SRC2 |
++ R500_ALPHA_SWIZ_A_B |
++ R500_ALPHA_SEL_B_SRCP |
++ R500_ALPHA_SWIZ_B_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(0) |
++ R500_ALU_RGBA_OP_MAD |
++ R500_ALU_RGBA_SEL_C_SRC0 |
++ R500_ALU_RGBA_R_SWIZ_R |
++ R500_ALU_RGBA_G_SWIZ_G |
++ R500_ALU_RGBA_B_SWIZ_B |
++ R500_ALU_RGBA_A_SWIZ_A));
++
++ /* LRP output, temp5.zzzz, temp3, temp0 ->
++ * - PRESUB temps, temp3 - temp0
++ * - MAD temp5.zzzz, temps, temp0 */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_OUT |
++ R500_INST_LAST |
++ R500_INST_TEX_SEM_WAIT |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK |
++ R500_INST_RGB_OMASK_R |
++ R500_INST_RGB_OMASK_G |
++ R500_INST_RGB_OMASK_B |
++ R500_INST_ALPHA_OMASK));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) |
++ R500_RGB_SRCP_OP_RGB1_MINUS_RGB0 |
++ R500_RGB_ADDR1(3) |
++ R500_RGB_ADDR2(5)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) |
++ R500_ALPHA_SRCP_OP_A1_MINUS_A0 |
++ R500_ALPHA_ADDR1(3) |
++ R500_ALPHA_ADDR2(5)));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC2 |
++ R500_ALU_RGB_R_SWIZ_A_B |
++ R500_ALU_RGB_G_SWIZ_A_B |
++ R500_ALU_RGB_B_SWIZ_A_B |
++ R500_ALU_RGB_SEL_B_SRCP |
++ R500_ALU_RGB_R_SWIZ_B_R |
++ R500_ALU_RGB_G_SWIZ_B_G |
++ R500_ALU_RGB_B_SWIZ_B_B));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(0) |
++ R500_ALPHA_OP_MAD |
++ R500_ALPHA_SEL_A_SRC2 |
++ R500_ALPHA_SWIZ_A_B |
++ R500_ALPHA_SEL_B_SRCP |
++ R500_ALPHA_SWIZ_B_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(0) |
++ R500_ALU_RGBA_OP_MAD |
++ R500_ALU_RGBA_SEL_C_SRC0 |
++ R500_ALU_RGBA_R_SWIZ_R |
++ R500_ALU_RGBA_G_SWIZ_G |
++ R500_ALU_RGBA_B_SWIZ_B |
++ R500_ALU_RGBA_A_SWIZ_A));
++
++ /* Shader constants. */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_CONST_INDEX(0));
++
++ /* const0 = {1 / texture[0].width, 0, 0, 0} */
++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, (1.0/(float)pPriv->w));
++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, (1.0/(float)pPriv->h));
++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, 0x0);
++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, 0x0);
++
++ FINISH_ACCEL();
++
++ } else {
++ BEGIN_ACCEL(19);
++ /* 2 components: 2 for tex0 */
++ OUT_ACCEL_REG(R300_RS_COUNT,
++ ((2 << R300_RS_COUNT_IT_COUNT_SHIFT) |
++ R300_RS_COUNT_HIRES_EN));
++
++ /* R300_INST_COUNT_RS - highest RS instruction used */
++ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6));
++
++ /* Pixel stack frame size. */
++ OUT_ACCEL_REG(R300_US_PIXSIZE, 0); /* highest temp used */
++
++ /* FP length. */
++ OUT_ACCEL_REG(R500_US_CODE_ADDR, (R500_US_CODE_START_ADDR(0) |
++ R500_US_CODE_END_ADDR(1)));
++ OUT_ACCEL_REG(R500_US_CODE_RANGE, (R500_US_CODE_RANGE_ADDR(0) |
++ R500_US_CODE_RANGE_SIZE(1)));
++
++ /* Prepare for FP emission. */
++ OUT_ACCEL_REG(R500_US_CODE_OFFSET, 0);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0));
++
++ /* tex inst */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX |
++ R500_INST_TEX_SEM_WAIT |
++ R500_INST_RGB_WMASK_R |
++ R500_INST_RGB_WMASK_G |
++ R500_INST_RGB_WMASK_B |
++ R500_INST_ALPHA_WMASK |
++ R500_INST_RGB_CLAMP |
++ R500_INST_ALPHA_CLAMP));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) |
++ R500_TEX_INST_LD |
++ R500_TEX_SEM_ACQUIRE |
++ R500_TEX_IGNORE_UNCOVERED));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) |
++ R500_TEX_SRC_S_SWIZ_R |
++ R500_TEX_SRC_T_SWIZ_G |
++ R500_TEX_DST_ADDR(0) |
++ R500_TEX_DST_R_SWIZ_R |
++ R500_TEX_DST_G_SWIZ_G |
++ R500_TEX_DST_B_SWIZ_B |
++ R500_TEX_DST_A_SWIZ_A));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_DX_ADDR(0) |
++ R500_DX_S_SWIZ_R |
++ R500_DX_T_SWIZ_R |
++ R500_DX_R_SWIZ_R |
++ R500_DX_Q_SWIZ_R |
++ R500_DY_ADDR(0) |
++ R500_DY_S_SWIZ_R |
++ R500_DY_T_SWIZ_R |
++ R500_DY_R_SWIZ_R |
++ R500_DY_Q_SWIZ_R));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000);
++
++ /* ALU inst */
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_OUT |
++ R500_INST_TEX_SEM_WAIT |
++ R500_INST_LAST |
++ R500_INST_RGB_OMASK_R |
++ R500_INST_RGB_OMASK_G |
++ R500_INST_RGB_OMASK_B |
++ R500_INST_ALPHA_OMASK |
++ R500_INST_RGB_CLAMP |
++ R500_INST_ALPHA_CLAMP));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) |
++ R500_RGB_ADDR1(0) |
++ R500_RGB_ADDR1_CONST |
++ R500_RGB_ADDR2(0) |
++ R500_RGB_ADDR2_CONST));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) |
++ R500_ALPHA_ADDR1(0) |
++ R500_ALPHA_ADDR1_CONST |
++ R500_ALPHA_ADDR2(0) |
++ R500_ALPHA_ADDR2_CONST));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 |
++ R500_ALU_RGB_R_SWIZ_A_R |
++ R500_ALU_RGB_G_SWIZ_A_G |
++ R500_ALU_RGB_B_SWIZ_A_B |
++ R500_ALU_RGB_SEL_B_SRC0 |
++ R500_ALU_RGB_R_SWIZ_B_1 |
++ R500_ALU_RGB_B_SWIZ_B_1 |
++ R500_ALU_RGB_G_SWIZ_B_1));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_OP_MAD |
++ R500_ALPHA_SWIZ_A_A |
++ R500_ALPHA_SWIZ_B_1));
++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_OP_MAD |
++ R500_ALU_RGBA_R_SWIZ_0 |
++ R500_ALU_RGBA_G_SWIZ_0 |
++ R500_ALU_RGBA_B_SWIZ_0 |
++ R500_ALU_RGBA_A_SWIZ_0));
++ FINISH_ACCEL();
++ }
+ }
+
+- BEGIN_VIDEO(5);
+- OUT_VIDEO_REG(R300_TX_INVALTAGS, 0);
+- OUT_VIDEO_REG(R300_TX_ENABLE, txenable);
++ BEGIN_ACCEL(6);
++ OUT_ACCEL_REG(R300_TX_INVALTAGS, 0);
++ OUT_ACCEL_REG(R300_TX_ENABLE, txenable);
+
+- OUT_VIDEO_REG(R300_RB3D_COLOROFFSET0, dst_offset);
+- OUT_VIDEO_REG(R300_RB3D_COLORPITCH0, colorpitch);
++ OUT_ACCEL_REG(R300_RB3D_COLOROFFSET0, dst_offset);
++ OUT_ACCEL_REG(R300_RB3D_COLORPITCH0, colorpitch);
+
+ blendcntl = RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO;
+ /* no need to enable blending */
+- OUT_VIDEO_REG(R300_RB3D_BLENDCNTL, blendcntl);
+- FINISH_VIDEO();
++ OUT_ACCEL_REG(R300_RB3D_BLENDCNTL, blendcntl);
+
+- BEGIN_VIDEO(1);
+- OUT_VIDEO_REG(R300_VAP_VTX_SIZE, VTX_DWORD_COUNT);
+- FINISH_VIDEO();
++ OUT_ACCEL_REG(R300_VAP_VTX_SIZE, vtx_count);
++ FINISH_ACCEL();
+
+ } else {
+
+@@ -453,20 +1023,20 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+ if (RADEONTilingEnabled(pScrn, pPixmap))
+ colorpitch |= RADEON_COLOR_TILE_ENABLE;
+
+- BEGIN_VIDEO(5);
++ BEGIN_ACCEL(5);
+
+- OUT_VIDEO_REG(RADEON_PP_CNTL,
+- RADEON_TEX_0_ENABLE | RADEON_TEX_BLEND_0_ENABLE);
+- OUT_VIDEO_REG(RADEON_RB3D_CNTL,
+- dst_format | RADEON_ALPHA_BLEND_ENABLE);
+- OUT_VIDEO_REG(RADEON_RB3D_COLOROFFSET, dst_offset);
++ OUT_ACCEL_REG(RADEON_PP_CNTL,
++ RADEON_TEX_0_ENABLE | RADEON_TEX_BLEND_0_ENABLE);
++ OUT_ACCEL_REG(RADEON_RB3D_CNTL,
++ dst_format | RADEON_ALPHA_BLEND_ENABLE);
++ OUT_ACCEL_REG(RADEON_RB3D_COLOROFFSET, dst_offset);
+
+- OUT_VIDEO_REG(RADEON_RB3D_COLORPITCH, colorpitch);
++ OUT_ACCEL_REG(RADEON_RB3D_COLORPITCH, colorpitch);
+
+- OUT_VIDEO_REG(RADEON_RB3D_BLENDCNTL,
+- RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO);
++ OUT_ACCEL_REG(RADEON_RB3D_BLENDCNTL,
++ RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO);
+
+- FINISH_VIDEO();
++ FINISH_ACCEL();
+
+
+ if ((info->ChipFamily == CHIP_FAMILY_RV250) ||
+@@ -474,77 +1044,82 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+ (info->ChipFamily == CHIP_FAMILY_RS300) ||
+ (info->ChipFamily == CHIP_FAMILY_R200)) {
+
+- info->texW[0] = pPriv->w;
+- info->texH[0] = pPriv->h;
+-
+- BEGIN_VIDEO(12);
+-
+- OUT_VIDEO_REG(R200_SE_VTX_FMT_0, R200_VTX_XY);
+- OUT_VIDEO_REG(R200_SE_VTX_FMT_1,
+- (2 << R200_VTX_TEX0_COMP_CNT_SHIFT));
+-
+- OUT_VIDEO_REG(R200_PP_TXFILTER_0,
+- R200_MAG_FILTER_LINEAR |
+- R200_MIN_FILTER_LINEAR |
+- R200_YUV_TO_RGB);
+- OUT_VIDEO_REG(R200_PP_TXFORMAT_0, txformat);
+- OUT_VIDEO_REG(R200_PP_TXFORMAT_X_0, 0);
+- OUT_VIDEO_REG(R200_PP_TXSIZE_0,
+- (pPriv->w - 1) |
+- ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT));
+- OUT_VIDEO_REG(R200_PP_TXPITCH_0, pPriv->src_pitch - 32);
+-
+- OUT_VIDEO_REG(R200_PP_TXOFFSET_0, pPriv->src_offset);
+-
+- OUT_VIDEO_REG(R200_PP_TXCBLEND_0,
+- R200_TXC_ARG_A_ZERO |
+- R200_TXC_ARG_B_ZERO |
+- R200_TXC_ARG_C_R0_COLOR |
+- R200_TXC_OP_MADD);
+- OUT_VIDEO_REG(R200_PP_TXCBLEND2_0,
+- R200_TXC_CLAMP_0_1 | R200_TXC_OUTPUT_REG_R0);
+- OUT_VIDEO_REG(R200_PP_TXABLEND_0,
+- R200_TXA_ARG_A_ZERO |
+- R200_TXA_ARG_B_ZERO |
+- R200_TXA_ARG_C_R0_ALPHA |
+- R200_TXA_OP_MADD);
+- OUT_VIDEO_REG(R200_PP_TXABLEND2_0,
+- R200_TXA_CLAMP_0_1 | R200_TXA_OUTPUT_REG_R0);
+- FINISH_VIDEO();
++ info->accel_state->texW[0] = pPriv->w;
++ info->accel_state->texH[0] = pPriv->h;
++
++ BEGIN_ACCEL(12);
++
++ OUT_ACCEL_REG(R200_SE_VTX_FMT_0, R200_VTX_XY);
++ OUT_ACCEL_REG(R200_SE_VTX_FMT_1,
++ (2 << R200_VTX_TEX0_COMP_CNT_SHIFT));
++
++ OUT_ACCEL_REG(R200_PP_TXFILTER_0,
++ R200_MAG_FILTER_LINEAR |
++ R200_MIN_FILTER_LINEAR |
++ R200_CLAMP_S_CLAMP_LAST |
++ R200_CLAMP_T_CLAMP_LAST |
++ R200_YUV_TO_RGB);
++ OUT_ACCEL_REG(R200_PP_TXFORMAT_0, txformat);
++ OUT_ACCEL_REG(R200_PP_TXFORMAT_X_0, 0);
++ OUT_ACCEL_REG(R200_PP_TXSIZE_0,
++ (pPriv->w - 1) |
++ ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT));
++ OUT_ACCEL_REG(R200_PP_TXPITCH_0, pPriv->src_pitch - 32);
++
++ OUT_ACCEL_REG(R200_PP_TXOFFSET_0, pPriv->src_offset);
++
++ OUT_ACCEL_REG(R200_PP_TXCBLEND_0,
++ R200_TXC_ARG_A_ZERO |
++ R200_TXC_ARG_B_ZERO |
++ R200_TXC_ARG_C_R0_COLOR |
++ R200_TXC_OP_MADD);
++ OUT_ACCEL_REG(R200_PP_TXCBLEND2_0,
++ R200_TXC_CLAMP_0_1 | R200_TXC_OUTPUT_REG_R0);
++ OUT_ACCEL_REG(R200_PP_TXABLEND_0,
++ R200_TXA_ARG_A_ZERO |
++ R200_TXA_ARG_B_ZERO |
++ R200_TXA_ARG_C_R0_ALPHA |
++ R200_TXA_OP_MADD);
++ OUT_ACCEL_REG(R200_PP_TXABLEND2_0,
++ R200_TXA_CLAMP_0_1 | R200_TXA_OUTPUT_REG_R0);
++ FINISH_ACCEL();
+ } else {
+
+- info->texW[0] = 1;
+- info->texH[0] = 1;
+-
+- BEGIN_VIDEO(8);
+-
+- OUT_VIDEO_REG(RADEON_SE_VTX_FMT, RADEON_SE_VTX_FMT_XY |
+- RADEON_SE_VTX_FMT_ST0);
+-
+- OUT_VIDEO_REG(RADEON_PP_TXFILTER_0, RADEON_MAG_FILTER_LINEAR |
+- RADEON_MIN_FILTER_LINEAR |
+- RADEON_YUV_TO_RGB);
+- OUT_VIDEO_REG(RADEON_PP_TXFORMAT_0, txformat);
+- OUT_VIDEO_REG(RADEON_PP_TXOFFSET_0, pPriv->src_offset);
+- OUT_VIDEO_REG(RADEON_PP_TXCBLEND_0,
+- RADEON_COLOR_ARG_A_ZERO |
+- RADEON_COLOR_ARG_B_ZERO |
+- RADEON_COLOR_ARG_C_T0_COLOR |
+- RADEON_BLEND_CTL_ADD |
+- RADEON_CLAMP_TX);
+- OUT_VIDEO_REG(RADEON_PP_TXABLEND_0,
+- RADEON_ALPHA_ARG_A_ZERO |
+- RADEON_ALPHA_ARG_B_ZERO |
+- RADEON_ALPHA_ARG_C_T0_ALPHA |
+- RADEON_BLEND_CTL_ADD |
+- RADEON_CLAMP_TX);
+-
+- OUT_VIDEO_REG(RADEON_PP_TEX_SIZE_0,
+- (pPriv->w - 1) |
+- ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT));
+- OUT_VIDEO_REG(RADEON_PP_TEX_PITCH_0,
+- pPriv->src_pitch - 32);
+- FINISH_VIDEO();
++ info->accel_state->texW[0] = 1;
++ info->accel_state->texH[0] = 1;
++
++ BEGIN_ACCEL(8);
++
++ OUT_ACCEL_REG(RADEON_SE_VTX_FMT, (RADEON_SE_VTX_FMT_XY |
++ RADEON_SE_VTX_FMT_ST0));
++
++ OUT_ACCEL_REG(RADEON_PP_TXFILTER_0,
++ RADEON_MAG_FILTER_LINEAR |
++ RADEON_MIN_FILTER_LINEAR |
++ RADEON_CLAMP_S_CLAMP_LAST |
++ RADEON_CLAMP_T_CLAMP_LAST |
++ RADEON_YUV_TO_RGB);
++ OUT_ACCEL_REG(RADEON_PP_TXFORMAT_0, txformat);
++ OUT_ACCEL_REG(RADEON_PP_TXOFFSET_0, pPriv->src_offset);
++ OUT_ACCEL_REG(RADEON_PP_TXCBLEND_0,
++ RADEON_COLOR_ARG_A_ZERO |
++ RADEON_COLOR_ARG_B_ZERO |
++ RADEON_COLOR_ARG_C_T0_COLOR |
++ RADEON_BLEND_CTL_ADD |
++ RADEON_CLAMP_TX);
++ OUT_ACCEL_REG(RADEON_PP_TXABLEND_0,
++ RADEON_ALPHA_ARG_A_ZERO |
++ RADEON_ALPHA_ARG_B_ZERO |
++ RADEON_ALPHA_ARG_C_T0_ALPHA |
++ RADEON_BLEND_CTL_ADD |
++ RADEON_CLAMP_TX);
++
++ OUT_ACCEL_REG(RADEON_PP_TEX_SIZE_0,
++ (pPriv->w - 1) |
++ ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT));
++ OUT_ACCEL_REG(RADEON_PP_TEX_PITCH_0,
++ pPriv->src_pitch - 32);
++ FINISH_ACCEL();
+ }
+ }
+
+@@ -582,77 +1157,96 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
+
+ #ifdef ACCEL_CP
+ if (info->ChipFamily < CHIP_FAMILY_R200) {
+- BEGIN_RING(4 * VTX_DWORD_COUNT + 3);
++ BEGIN_RING(3 * vtx_count + 3);
+ OUT_RING(CP_PACKET3(RADEON_CP_PACKET3_3D_DRAW_IMMD,
+- 4 * VTX_DWORD_COUNT + 1));
++ 3 * vtx_count + 1));
+ OUT_RING(RADEON_CP_VC_FRMT_XY |
+ RADEON_CP_VC_FRMT_ST0);
+- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN |
++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_RECT_LIST |
+ RADEON_CP_VC_CNTL_PRIM_WALK_RING |
+ RADEON_CP_VC_CNTL_MAOS_ENABLE |
+ RADEON_CP_VC_CNTL_VTX_FMT_RADEON_MODE |
+- (4 << RADEON_CP_VC_CNTL_NUM_SHIFT));
++ (3 << RADEON_CP_VC_CNTL_NUM_SHIFT));
+ } else {
+ if (IS_R300_3D || IS_R500_3D)
+- BEGIN_RING(4 * VTX_DWORD_COUNT + 4);
++ BEGIN_RING(4 * vtx_count + 4);
+ else
+- BEGIN_RING(4 * VTX_DWORD_COUNT + 2);
++ BEGIN_RING(4 * vtx_count + 2);
+ OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2,
+- 4 * VTX_DWORD_COUNT));
+- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN |
++ 4 * vtx_count));
++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST |
+ RADEON_CP_VC_CNTL_PRIM_WALK_RING |
+ (4 << RADEON_CP_VC_CNTL_NUM_SHIFT));
+ }
+ #else /* ACCEL_CP */
+ if (IS_R300_3D || IS_R500_3D)
+- BEGIN_VIDEO(2 + VTX_DWORD_COUNT * 4);
++ BEGIN_ACCEL(2 + vtx_count * 4);
++ else if (info->ChipFamily < CHIP_FAMILY_R200)
++ BEGIN_ACCEL(1 + vtx_count * 3);
+ else
+- BEGIN_VIDEO(1 + VTX_DWORD_COUNT * 4);
++ BEGIN_ACCEL(1 + vtx_count * 4);
+
+- if (info->ChipFamily < CHIP_FAMILY_R200) {
+- OUT_VIDEO_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_TRIANGLE_FAN |
++ if (info->ChipFamily < CHIP_FAMILY_R200)
++ OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_RECTANGLE_LIST |
+ RADEON_VF_PRIM_WALK_DATA |
+ RADEON_VF_RADEON_MODE |
+- 4 << RADEON_VF_NUM_VERTICES_SHIFT));
+- } else {
+- OUT_VIDEO_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST |
++ (3 << RADEON_VF_NUM_VERTICES_SHIFT)));
++ else
++ OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST |
+ RADEON_VF_PRIM_WALK_DATA |
+- 4 << RADEON_VF_NUM_VERTICES_SHIFT));
+- }
+-#endif
++ (4 << RADEON_VF_NUM_VERTICES_SHIFT)));
+
+- VTX_OUT((float)dstX, (float)dstY,
+- xFixedToFloat(srcTopLeft.x) / info->texW[0], xFixedToFloat(srcTopLeft.y) / info->texH[0]);
+- VTX_OUT((float)dstX, (float)(dstY + dsth),
+- xFixedToFloat(srcBottomLeft.x) / info->texW[0], xFixedToFloat(srcBottomLeft.y) / info->texH[0]);
+- VTX_OUT((float)(dstX + dstw), (float)(dstY + dsth),
+- xFixedToFloat(srcBottomRight.x) / info->texW[0], xFixedToFloat(srcBottomRight.y) / info->texH[0]);
+- VTX_OUT((float)(dstX + dstw), (float)dstY,
+- xFixedToFloat(srcTopRight.x) / info->texW[0], xFixedToFloat(srcTopRight.y) / info->texH[0]);
++#endif
++ if (pPriv->bicubic_enabled) {
++ VTX_OUT_FILTER((float)dstX, (float)dstY,
++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0],
++ xFixedToFloat(srcTopLeft.x) + 0.5, xFixedToFloat(srcTopLeft.y) + 0.5);
++ VTX_OUT_FILTER((float)dstX, (float)(dstY + dsth),
++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0],
++ xFixedToFloat(srcBottomLeft.x) + 0.5, xFixedToFloat(srcBottomLeft.y) + 0.5);
++ VTX_OUT_FILTER((float)(dstX + dstw), (float)(dstY + dsth),
++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0],
++ xFixedToFloat(srcBottomRight.x) + 0.5, xFixedToFloat(srcBottomRight.y) + 0.5);
++ VTX_OUT_FILTER((float)(dstX + dstw), (float)dstY,
++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0],
++ xFixedToFloat(srcTopRight.x) + 0.5, xFixedToFloat(srcTopRight.y) + 0.5);
++ } else {
++ if (info->ChipFamily >= CHIP_FAMILY_R200) {
++ VTX_OUT((float)dstX, (float)dstY,
++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0]);
++ }
++ VTX_OUT((float)dstX, (float)(dstY + dsth),
++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0]);
++ VTX_OUT((float)(dstX + dstw), (float)(dstY + dsth),
++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0]);
++ VTX_OUT((float)(dstX + dstw), (float)dstY,
++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0]);
++ }
+
+ if (IS_R300_3D || IS_R500_3D)
+ /* flushing is pipelined, free/finish is not */
+- OUT_VIDEO_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D);
++ OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D);
+
+ #ifdef ACCEL_CP
+ ADVANCE_RING();
+ #else
+- FINISH_VIDEO();
++ FINISH_ACCEL();
+ #endif /* !ACCEL_CP */
+
+ pBox++;
+ }
+
+ if (IS_R300_3D || IS_R500_3D) {
+- BEGIN_VIDEO(2);
+- OUT_VIDEO_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_RB3D_DC_FLUSH_ALL);
++ BEGIN_ACCEL(2);
++ OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_RB3D_DC_FLUSH_ALL);
+ } else
+- BEGIN_VIDEO(1);
+- OUT_VIDEO_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN);
+- FINISH_VIDEO();
++ BEGIN_ACCEL(1);
++ OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN);
++ FINISH_ACCEL();
+
+ DamageDamageRegion(pPriv->pDraw, &pPriv->clip);
+ }
+
+ #undef VTX_OUT
++#undef VTX_OUT_FILTER
+ #undef FUNC_NAME
+diff --git a/src/radeon_tv.c b/src/radeon_tv.c
+index 90020b3..90d1ac9 100644
+--- a/src/radeon_tv.c
++++ b/src/radeon_tv.c
+@@ -140,7 +140,7 @@ static const uint16_t vert_timing_PAL[] =
+ **********************************************************************/
+ static const TVModeConstants availableTVModes[] =
+ {
+- {
++ { /* NTSC timing for 27 Mhz ref clk */
+ 800, /* horResolution */
+ 600, /* verResolution */
+ TV_STD_NTSC, /* standard */
+@@ -155,7 +155,7 @@ static const TVModeConstants availableTVModes[] =
+ 4, /* crtcPLL_postDiv */
+ 1022, /* pixToTV */
+ },
+- {
++ { /* PAL timing for 27 Mhz ref clk */
+ 800, /* horResolution */
+ 600, /* verResolution */
+ TV_STD_PAL, /* standard */
+@@ -169,7 +169,22 @@ static const TVModeConstants availableTVModes[] =
+ 231, /* crtcPLL_M */
+ 4, /* crtcPLL_postDiv */
+ 759, /* pixToTV */
+- }
++ },
++ { /* NTSC timing for 14 Mhz ref clk */
++ 800, /* horResolution */
++ 600, /* verResolution */
++ TV_STD_NTSC, /* standard */
++ 1018, /* horTotal */
++ 727, /* verTotal */
++ 813, /* horStart */
++ 840, /* horSyncStart */
++ 633, /* verSyncStart */
++ 630627, /* defRestart */
++ 347, /* crtcPLL_N */
++ 14, /* crtcPLL_M */
++ 8, /* crtcPLL_postDiv */
++ 1022, /* pixToTV */
++ },
+ };
+
+ #define N_AVAILABLE_MODES (sizeof(availableModes) / sizeof(availableModes[ 0 ]))
+@@ -582,6 +597,8 @@ static Bool RADEONInitTVRestarts(xf86OutputPtr output, RADEONSavePtr save,
+ DisplayModePtr mode)
+ {
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
++ RADEONInfoPtr info = RADEONPTR(output->scrn);
++ RADEONPLLPtr pll = &info->pll;
+ int restart;
+ unsigned hTotal;
+ unsigned vTotal;
+@@ -597,14 +614,21 @@ static Bool RADEONInitTVRestarts(xf86OutputPtr output, RADEONSavePtr save,
+ /* FIXME: need to revisit this when we add more modes */
+ if (radeon_output->tvStd == TV_STD_NTSC ||
+ radeon_output->tvStd == TV_STD_NTSC_J ||
+- radeon_output->tvStd == TV_STD_PAL_M)
+- constPtr = &availableTVModes[0];
+- else
+- constPtr = &availableTVModes[1];
++ radeon_output->tvStd == TV_STD_PAL_M) {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[0];
++ else
++ constPtr = &availableTVModes[2];
++ } else {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[1];
++ else
++ constPtr = &availableTVModes[1]; /* FIXME */
++ }
+
+ hTotal = constPtr->horTotal;
+ vTotal = constPtr->verTotal;
+-
++
+ if (radeon_output->tvStd == TV_STD_NTSC ||
+ radeon_output->tvStd == TV_STD_NTSC_J ||
+ radeon_output->tvStd == TV_STD_PAL_M ||
+@@ -696,6 +720,8 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save,
+ ScrnInfoPtr pScrn = output->scrn;
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
+ RADEONInfoPtr info = RADEONPTR(pScrn);
++ RADEONPLLPtr pll = &info->pll;
++ unsigned m, n, p;
+ unsigned i;
+ unsigned long vert_space, flicker_removal;
+ uint32_t tmp;
+@@ -703,14 +729,20 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save,
+ const uint16_t *hor_timing;
+ const uint16_t *vert_timing;
+
+-
+ /* FIXME: need to revisit this when we add more modes */
+ if (radeon_output->tvStd == TV_STD_NTSC ||
+ radeon_output->tvStd == TV_STD_NTSC_J ||
+- radeon_output->tvStd == TV_STD_PAL_M)
+- constPtr = &availableTVModes[0];
+- else
+- constPtr = &availableTVModes[1];
++ radeon_output->tvStd == TV_STD_PAL_M) {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[0];
++ else
++ constPtr = &availableTVModes[2];
++ } else {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[1];
++ else
++ constPtr = &availableTVModes[1]; /* FIXME */
++ }
+
+ save->tv_crc_cntl = 0;
+
+@@ -796,7 +828,10 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save,
+ save->tv_vscaler_cntl1 = RADEON_Y_W_EN;
+ save->tv_vscaler_cntl1 =
+ (save->tv_vscaler_cntl1 & 0xe3ff0000) | (vert_space * (1 << FRAC_BITS) / 10000);
+- save->tv_vscaler_cntl1 |= RADEON_RESTART_FIELD;
++
++ if (pll->reference_freq == 2700)
++ save->tv_vscaler_cntl1 |= RADEON_RESTART_FIELD;
++
+ if (constPtr->horResolution == 1024)
+ save->tv_vscaler_cntl1 |= (4 << RADEON_Y_DEL_W_SIG_SHIFT);
+ else
+@@ -873,18 +908,33 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save,
+ #endif
+
+ if (radeon_output->tvStd == TV_STD_NTSC ||
+- radeon_output->tvStd == TV_STD_NTSC_J)
+- save->tv_pll_cntl = (NTSC_TV_PLL_M & RADEON_TV_M0LO_MASK) |
+- (((NTSC_TV_PLL_M >> 8) & RADEON_TV_M0HI_MASK) << RADEON_TV_M0HI_SHIFT) |
+- ((NTSC_TV_PLL_N & RADEON_TV_N0LO_MASK) << RADEON_TV_N0LO_SHIFT) |
+- (((NTSC_TV_PLL_N >> 9) & RADEON_TV_N0HI_MASK) << RADEON_TV_N0HI_SHIFT) |
+- ((NTSC_TV_PLL_P & RADEON_TV_P_MASK) << RADEON_TV_P_SHIFT);
+- else
+- save->tv_pll_cntl = (PAL_TV_PLL_M & RADEON_TV_M0LO_MASK) |
+- (((PAL_TV_PLL_M >> 8) & RADEON_TV_M0HI_MASK) << RADEON_TV_M0HI_SHIFT) |
+- ((PAL_TV_PLL_N & RADEON_TV_N0LO_MASK) << RADEON_TV_N0LO_SHIFT) |
+- (((PAL_TV_PLL_N >> 9) & RADEON_TV_N0HI_MASK) << RADEON_TV_N0HI_SHIFT) |
+- ((PAL_TV_PLL_P & RADEON_TV_P_MASK) << RADEON_TV_P_SHIFT);
++ radeon_output->tvStd == TV_STD_NTSC_J) {
++ if (pll->reference_freq == 2700) {
++ m = NTSC_TV_PLL_M_27;
++ n = NTSC_TV_PLL_N_27;
++ p = NTSC_TV_PLL_P_27;
++ } else {
++ m = NTSC_TV_PLL_M_14;
++ n = NTSC_TV_PLL_N_14;
++ p = NTSC_TV_PLL_P_14;
++ }
++ } else {
++ if (pll->reference_freq == 2700) {
++ m = PAL_TV_PLL_M_27;
++ n = PAL_TV_PLL_N_27;
++ p = PAL_TV_PLL_P_27;
++ } else {
++ /* FIXME */
++ m = PAL_TV_PLL_M_27;
++ n = PAL_TV_PLL_N_27;
++ p = PAL_TV_PLL_P_27;
++ }
++ }
++ save->tv_pll_cntl = (m & RADEON_TV_M0LO_MASK) |
++ (((m >> 8) & RADEON_TV_M0HI_MASK) << RADEON_TV_M0HI_SHIFT) |
++ ((n & RADEON_TV_N0LO_MASK) << RADEON_TV_N0LO_SHIFT) |
++ (((n >> 9) & RADEON_TV_N0HI_MASK) << RADEON_TV_N0HI_SHIFT) |
++ ((p & RADEON_TV_P_MASK) << RADEON_TV_P_SHIFT);
+
+ save->tv_pll_cntl1 = (((4 & RADEON_TVPCP_MASK)<< RADEON_TVPCP_SHIFT) |
+ ((4 & RADEON_TVPVG_MASK) << RADEON_TVPVG_SHIFT) |
+@@ -999,14 +1049,23 @@ void RADEONAdjustCrtcRegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save,
+ {
+ const TVModeConstants *constPtr;
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
++ RADEONInfoPtr info = RADEONPTR(pScrn);
++ RADEONPLLPtr pll = &info->pll;
+
+ /* FIXME: need to revisit this when we add more modes */
+ if (radeon_output->tvStd == TV_STD_NTSC ||
+ radeon_output->tvStd == TV_STD_NTSC_J ||
+- radeon_output->tvStd == TV_STD_PAL_M)
+- constPtr = &availableTVModes[0];
+- else
+- constPtr = &availableTVModes[1];
++ radeon_output->tvStd == TV_STD_PAL_M) {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[0];
++ else
++ constPtr = &availableTVModes[2];
++ } else {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[1];
++ else
++ constPtr = &availableTVModes[1]; /* FIXME */
++ }
+
+ save->crtc_h_total_disp = (((constPtr->horResolution / 8) - 1) << RADEON_CRTC_H_DISP_SHIFT) |
+ (((constPtr->horTotal / 8) - 1) << RADEON_CRTC_H_TOTAL_SHIFT);
+@@ -1030,14 +1089,23 @@ void RADEONAdjustPLLRegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save,
+ unsigned postDiv;
+ const TVModeConstants *constPtr;
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
++ RADEONInfoPtr info = RADEONPTR(pScrn);
++ RADEONPLLPtr pll = &info->pll;
+
+ /* FIXME: need to revisit this when we add more modes */
+ if (radeon_output->tvStd == TV_STD_NTSC ||
+ radeon_output->tvStd == TV_STD_NTSC_J ||
+- radeon_output->tvStd == TV_STD_PAL_M)
+- constPtr = &availableTVModes[0];
+- else
+- constPtr = &availableTVModes[1];
++ radeon_output->tvStd == TV_STD_PAL_M) {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[0];
++ else
++ constPtr = &availableTVModes[2];
++ } else {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[1];
++ else
++ constPtr = &availableTVModes[1]; /* FIXME */
++ }
+
+ save->htotal_cntl = (constPtr->horTotal & 0x7 /*0xf*/) | RADEON_HTOT_CNTL_VGA_EN;
+
+@@ -1083,14 +1151,23 @@ void RADEONAdjustCrtc2RegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save,
+ {
+ const TVModeConstants *constPtr;
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
++ RADEONInfoPtr info = RADEONPTR(pScrn);
++ RADEONPLLPtr pll = &info->pll;
+
+ /* FIXME: need to revisit this when we add more modes */
+ if (radeon_output->tvStd == TV_STD_NTSC ||
+ radeon_output->tvStd == TV_STD_NTSC_J ||
+- radeon_output->tvStd == TV_STD_PAL_M)
+- constPtr = &availableTVModes[0];
+- else
+- constPtr = &availableTVModes[1];
++ radeon_output->tvStd == TV_STD_PAL_M) {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[0];
++ else
++ constPtr = &availableTVModes[2];
++ } else {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[1];
++ else
++ constPtr = &availableTVModes[1]; /* FIXME */
++ }
+
+ save->crtc2_h_total_disp = (((constPtr->horResolution / 8) - 1) << RADEON_CRTC_H_DISP_SHIFT) |
+ (((constPtr->horTotal / 8) - 1) << RADEON_CRTC_H_TOTAL_SHIFT);
+@@ -1114,14 +1191,23 @@ void RADEONAdjustPLL2RegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save,
+ unsigned postDiv;
+ const TVModeConstants *constPtr;
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
++ RADEONInfoPtr info = RADEONPTR(pScrn);
++ RADEONPLLPtr pll = &info->pll;
+
+ /* FIXME: need to revisit this when we add more modes */
+ if (radeon_output->tvStd == TV_STD_NTSC ||
+ radeon_output->tvStd == TV_STD_NTSC_J ||
+- radeon_output->tvStd == TV_STD_PAL_M)
+- constPtr = &availableTVModes[0];
+- else
+- constPtr = &availableTVModes[1];
++ radeon_output->tvStd == TV_STD_PAL_M) {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[0];
++ else
++ constPtr = &availableTVModes[2];
++ } else {
++ if (pll->reference_freq == 2700)
++ constPtr = &availableTVModes[1];
++ else
++ constPtr = &availableTVModes[1]; /* FIXME */
++ }
+
+ save->htotal_cntl2 = (constPtr->horTotal & 0x7); /* 0xf */
+
+diff --git a/src/radeon_tv.h b/src/radeon_tv.h
+index c4b7838..8d77a77 100644
+--- a/src/radeon_tv.h
++++ b/src/radeon_tv.h
+@@ -27,24 +27,31 @@
+ #define MAX_H_SIZE 5 /* Range: [-5..5], negative is smaller, positive is larger */
+
+ /* tv standard constants */
+-#define NTSC_TV_PLL_M 22
+-#define NTSC_TV_PLL_N 175
+-#define NTSC_TV_PLL_P 5
+ #define NTSC_TV_CLOCK_T 233
+ #define NTSC_TV_VFTOTAL 1
+ #define NTSC_TV_LINES_PER_FRAME 525
+ #define NTSC_TV_ZERO_H_SIZE 479166
+ #define NTSC_TV_H_SIZE_UNIT 9478
+
+-#define PAL_TV_PLL_M 113
+-#define PAL_TV_PLL_N 668
+-#define PAL_TV_PLL_P 3
+ #define PAL_TV_CLOCK_T 188
+ #define PAL_TV_VFTOTAL 3
+ #define PAL_TV_LINES_PER_FRAME 625
+ #define PAL_TV_ZERO_H_SIZE 473200
+ #define PAL_TV_H_SIZE_UNIT 9360
+
++/* tv pll setting for 27 mhz ref clk */
++#define NTSC_TV_PLL_M_27 22
++#define NTSC_TV_PLL_N_27 175
++#define NTSC_TV_PLL_P_27 5
++
++#define PAL_TV_PLL_M_27 113
++#define PAL_TV_PLL_N_27 668
++#define PAL_TV_PLL_P_27 3
++
++/* tv pll setting for 14 mhz ref clk */
++#define NTSC_TV_PLL_M_14 33
++#define NTSC_TV_PLL_N_14 693
++#define NTSC_TV_PLL_P_14 7
+
+ #define VERT_LEAD_IN_LINES 2
+ #define FRAC_BITS 0xe
+diff --git a/src/radeon_version.h b/src/radeon_version.h
+index ccc1367..5717ead 100644
+--- a/src/radeon_version.h
++++ b/src/radeon_version.h
+@@ -39,10 +39,9 @@
+ #define R200_DRIVER_NAME "r200"
+ #define R300_DRIVER_NAME "r300"
+
+-#define RADEON_VERSION_MAJOR 4
+-#define RADEON_VERSION_MAJOR_TILED 5
+-#define RADEON_VERSION_MINOR 3
+-#define RADEON_VERSION_PATCH 0
++#define RADEON_VERSION_MAJOR PACKAGE_VERSION_MAJOR
++#define RADEON_VERSION_MINOR PACKAGE_VERSION_MINOR
++#define RADEON_VERSION_PATCH PACKAGE_VERSION_PATCHLEVEL
+
+ #ifndef RADEON_VERSION_EXTRA
+ #define RADEON_VERSION_EXTRA ""
+diff --git a/src/radeon_video.c b/src/radeon_video.c
+index ac60166..6249cea 100644
+--- a/src/radeon_video.c
++++ b/src/radeon_video.c
+@@ -89,10 +89,6 @@ static void RADEON_MSP_SetEncoding(RADEONPortPrivPtr pPriv);
+ static void RADEON_TDA9885_SetEncoding(RADEONPortPrivPtr pPriv);
+ static void RADEON_FI1236_SetEncoding(RADEONPortPrivPtr pPriv);
+
+-
+-
+-#define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v))
+-
+ static Atom xvBrightness, xvColorKey, xvSaturation, xvDoubleBuffer;
+ static Atom xvRedIntensity, xvGreenIntensity, xvBlueIntensity;
+ static Atom xvContrast, xvHue, xvColor, xvAutopaintColorkey, xvSetDefaults;
+@@ -106,7 +102,6 @@ static Atom xvEncoding, xvFrequency, xvVolume, xvMute,
+
+ static Atom xvOvAlpha, xvGrAlpha, xvAlphaMode;
+
+-
+ #define GET_PORT_PRIVATE(pScrn) \
+ (RADEONPortPrivPtr)((RADEONPTR(pScrn))->adaptor->pPortPrivates[0].ptr)
+
+@@ -245,19 +240,6 @@ radeon_crtc_clip_video(ScrnInfoPtr pScrn,
+ #endif
+ }
+
+-#ifdef USE_EXA
+-static void
+-ATIVideoSave(ScreenPtr pScreen, ExaOffscreenArea *area)
+-{
+- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+- RADEONInfoPtr info = RADEONPTR(pScrn);
+- RADEONPortPrivPtr pPriv = info->adaptor->pPortPrivates[0].ptr;
+-
+- if (pPriv->video_memory == area)
+- pPriv->video_memory = NULL;
+-}
+-#endif /* USE_EXA */
+-
+ void RADEONInitVideo(ScreenPtr pScreen)
+ {
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+@@ -1632,13 +1614,12 @@ RADEONSetupImageVideo(ScreenPtr pScreen)
+
+ pPriv->textured = FALSE;
+
+- if(pPriv->theatre != NULL)
+- {
++ if(pPriv->theatre != NULL) {
+ /* video decoder is present, extend capabilities */
+ adapt->nEncodings = 13;
+ adapt->pEncodings = InputVideoEncodings;
+ adapt->type |= XvVideoMask;
+- adapt->nAttributes = NUM_DEC_ATTRIBUTES;
++ adapt->nAttributes = NUM_DEC_ATTRIBUTES;
+ adapt->PutVideo = RADEONPutVideo;
+ }
+
+@@ -1654,8 +1635,19 @@ RADEONStopVideo(ScrnInfoPtr pScrn, pointer data, Bool cleanup)
+ unsigned char *RADEONMMIO = info->MMIO;
+ RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data;
+
+- if (pPriv->textured)
+- return;
++ if (pPriv->textured) {
++ if (cleanup) {
++ if (pPriv->bicubic_memory != NULL) {
++ radeon_legacy_free_memory(pScrn, pPriv->bicubic_memory);
++ pPriv->bicubic_memory = NULL;
++ }
++ if (pPriv->video_memory != NULL) {
++ radeon_legacy_free_memory(pScrn, pPriv->video_memory);
++ pPriv->video_memory = NULL;
++ }
++ }
++ return;
++ }
+
+ REGION_EMPTY(pScrn->pScreen, &pPriv->clip);
+
+@@ -1675,7 +1667,7 @@ RADEONStopVideo(ScrnInfoPtr pScrn, pointer data, Bool cleanup)
+ if(pPriv->i2c != NULL) RADEON_board_setmisc(pPriv);
+ }
+ if (pPriv->video_memory != NULL) {
+- RADEONFreeMemory(pScrn, pPriv->video_memory);
++ radeon_legacy_free_memory(pScrn, pPriv->video_memory);
+ pPriv->video_memory = NULL;
+ }
+ pPriv->videoStatus = 0;
+@@ -1699,9 +1691,6 @@ RADEONSetPortAttribute(ScrnInfoPtr pScrn,
+ Bool setAlpha = FALSE;
+ unsigned char *RADEONMMIO = info->MMIO;
+
+- if (pPriv->textured)
+- return BadMatch;
+-
+ RADEON_SYNC(info, pScrn);
+
+ #define RTFSaturation(a) (1.0 + ((a)*1.0)/1000.0)
+@@ -1928,7 +1917,7 @@ RADEONSetPortAttribute(ScrnInfoPtr pScrn,
+ if(pPriv->fi1236!=NULL){
+ xf86_fi1236_dump_status(pPriv->fi1236);
+ }
+- }
++ }
+ else if(attribute == xvAdjustment)
+ {
+ pPriv->adjustment=value;
+@@ -1973,9 +1962,6 @@ RADEONGetPortAttribute(ScrnInfoPtr pScrn,
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data;
+
+- if (pPriv->textured)
+- return BadMatch;
+-
+ if (info->accelOn) RADEON_SYNC(info, pScrn);
+
+ if(attribute == xvAutopaintColorkey)
+@@ -2433,120 +2419,13 @@ RADEONCopyMungedData(
+ }
+ }
+
+-
+-/* Allocates memory, either by resizing the allocation pointed to by mem_struct,
+- * or by freeing mem_struct (if non-NULL) and allocating a new space. The size
+- * is measured in bytes, and the offset from the beginning of card space is
+- * returned.
+- */
+-uint32_t
+-RADEONAllocateMemory(
+- ScrnInfoPtr pScrn,
+- void **mem_struct,
+- int size
+-){
+- ScreenPtr pScreen;
+- RADEONInfoPtr info = RADEONPTR(pScrn);
+- int offset = 0;
+-
+- pScreen = screenInfo.screens[pScrn->scrnIndex];
+-#ifdef USE_EXA
+- if (info->useEXA) {
+- ExaOffscreenArea *area = *mem_struct;
+-
+- if (area != NULL) {
+- if (area->size >= size)
+- return area->offset;
+-
+- exaOffscreenFree(pScrn->pScreen, area);
+- }
+-
+- area = exaOffscreenAlloc(pScrn->pScreen, size, 64, TRUE, ATIVideoSave,
+- NULL);
+- *mem_struct = area;
+- if (area == NULL)
+- return 0;
+- offset = area->offset;
+- }
+-#endif /* USE_EXA */
+-#ifdef USE_XAA
+- if (!info->useEXA) {
+- FBLinearPtr linear = *mem_struct;
+- int cpp = info->CurrentLayout.bitsPerPixel / 8;
+-
+- /* XAA allocates in units of pixels at the screen bpp, so adjust size
+- * appropriately.
+- */
+- size = (size + cpp - 1) / cpp;
+-
+- if (linear) {
+- if(linear->size >= size)
+- return linear->offset * cpp;
+-
+- if(xf86ResizeOffscreenLinear(linear, size))
+- return linear->offset * cpp;
+-
+- xf86FreeOffscreenLinear(linear);
+- }
+-
+- linear = xf86AllocateOffscreenLinear(pScreen, size, 16,
+- NULL, NULL, NULL);
+- *mem_struct = linear;
+-
+- if (!linear) {
+- int max_size;
+-
+- xf86QueryLargestOffscreenLinear(pScreen, &max_size, 16,
+- PRIORITY_EXTREME);
+-
+- if(max_size < size)
+- return 0;
+-
+- xf86PurgeUnlockedOffscreenAreas(pScreen);
+- linear = xf86AllocateOffscreenLinear(pScreen, size, 16,
+- NULL, NULL, NULL);
+- *mem_struct = linear;
+- if (!linear)
+- return 0;
+- }
+- offset = linear->offset * cpp;
+- }
+-#endif /* USE_XAA */
+-
+- return offset;
+-}
+-
+-void
+-RADEONFreeMemory(
+- ScrnInfoPtr pScrn,
+- void *mem_struct
+-){
+- RADEONInfoPtr info = RADEONPTR(pScrn);
+-
+-#ifdef USE_EXA
+- if (info->useEXA) {
+- ExaOffscreenArea *area = mem_struct;
+-
+- if (area != NULL)
+- exaOffscreenFree(pScrn->pScreen, area);
+- }
+-#endif /* USE_EXA */
+-#ifdef USE_XAA
+- if (!info->useEXA) {
+- FBLinearPtr linear = mem_struct;
+-
+- if (linear != NULL)
+- xf86FreeOffscreenLinear(linear);
+- }
+-#endif /* USE_XAA */
+-}
+-
+ static void
+ RADEONDisplayVideo(
+ ScrnInfoPtr pScrn,
+ xf86CrtcPtr crtc,
+ RADEONPortPrivPtr pPriv,
+ int id,
++ int base_offset,
+ int offset1, int offset2,
+ int offset3, int offset4,
+ int offset5, int offset6,
+@@ -2715,6 +2594,20 @@ RADEONDisplayVideo(
+ }
+ #endif
+
++ /* Make the overlay base address as close to the buffers as possible to
++ * prevent the buffer offsets from exceeding the hardware limit of 128 MB.
++ * The base address must be aligned to a multiple of 4 MB.
++ */
++ base_offset = ((info->fbLocation + base_offset) & (~0 << 22)) -
++ info->fbLocation;
++
++ offset1 -= base_offset;
++ offset2 -= base_offset;
++ offset3 -= base_offset;
++ offset4 -= base_offset;
++ offset5 -= base_offset;
++ offset6 -= base_offset;
++
+ /* keep everything in 16.16 */
+
+ if (is_planar) {
+@@ -2846,6 +2739,12 @@ RADEONDisplayVideo(
+ src_w >>= 1;
+ OUTREG(RADEON_OV0_P2_X_START_END, (src_w + leftuv - 1) | (leftuv << 16));
+ OUTREG(RADEON_OV0_P3_X_START_END, (src_w + leftuv - 1) | (leftuv << 16));
++ if (info->ModeReg->ov0_base_addr != (info->fbLocation + base_offset)) {
++ ErrorF("Changing OV0_BASE_ADDR from 0x%08x to 0x%08x\n",
++ info->ModeReg->ov0_base_addr, info->fbLocation + base_offset);
++ info->ModeReg->ov0_base_addr = info->fbLocation + base_offset;
++ OUTREG(RADEON_OV0_BASE_ADDR, info->ModeReg->ov0_base_addr);
++ }
+ OUTREG(RADEON_OV0_VID_BUF0_BASE_ADRS, offset1);
+ OUTREG(RADEON_OV0_VID_BUF1_BASE_ADRS, offset2);
+ OUTREG(RADEON_OV0_VID_BUF2_BASE_ADRS, offset3);
+@@ -3038,9 +2937,9 @@ RADEONPutImage(
+ if (idconv == FOURCC_YV12 || id == FOURCC_I420) {
+ new_size += (dstPitch >> 1) * ((height + 1) & ~1);
+ }
+- pPriv->video_offset = RADEONAllocateMemory(pScrn, &pPriv->video_memory,
+- (pPriv->doubleBuffer ?
+- (new_size * 2) : new_size));
++ pPriv->video_offset = radeon_legacy_allocate_memory(pScrn, &pPriv->video_memory,
++ (pPriv->doubleBuffer ?
++ (new_size * 2) : new_size), 64);
+ if (pPriv->video_offset == 0)
+ return BadAlloc;
+
+@@ -3150,9 +3049,10 @@ RADEONPutImage(
+
+ /* FIXME: someone should look at these offsets, I don't think it makes sense how
+ they are handled throughout the source. */
+- RADEONDisplayVideo(pScrn, crtc, pPriv, idconv, offset, offset + d2line, offset + d3line,
+- offset, offset + d2line, offset + d3line, width, height, dstPitch,
+- xa, xb, ya, &dstBox, src_w, src_h, drw_w, drw_h, METHOD_BOB);
++ RADEONDisplayVideo(pScrn, crtc, pPriv, idconv, pPriv->video_offset, offset,
++ offset + d2line, offset + d3line, offset, offset + d2line,
++ offset + d3line, width, height, dstPitch, xa, xb, ya,
++ &dstBox, src_w, src_h, drw_w, drw_h, METHOD_BOB);
+
+ pPriv->videoStatus = CLIENT_VIDEO_ON;
+
+@@ -3233,7 +3133,7 @@ RADEONVideoTimerCallback(ScrnInfoPtr pScrn, Time now)
+ } else { /* FREE_TIMER */
+ if(pPriv->freeTime < now) {
+ if (pPriv->video_memory != NULL) {
+- RADEONFreeMemory(pScrn, pPriv->video_memory);
++ radeon_legacy_free_memory(pScrn, pPriv->video_memory);
+ pPriv->video_memory = NULL;
+ }
+ pPriv->videoStatus = 0;
+@@ -3268,7 +3168,7 @@ RADEONAllocateSurface(
+ pitch = ((w << 1) + 15) & ~15;
+ size = pitch * h;
+
+- offset = RADEONAllocateMemory(pScrn, &surface_memory, size);
++ offset = radeon_legacy_allocate_memory(pScrn, &surface_memory, size, 64);
+ if (offset == 0)
+ return BadAlloc;
+
+@@ -3276,18 +3176,18 @@ RADEONAllocateSurface(
+ surface->height = h;
+
+ if(!(surface->pitches = xalloc(sizeof(int)))) {
+- RADEONFreeMemory(pScrn, surface_memory);
++ radeon_legacy_free_memory(pScrn, surface_memory);
+ return BadAlloc;
+ }
+ if(!(surface->offsets = xalloc(sizeof(int)))) {
+ xfree(surface->pitches);
+- RADEONFreeMemory(pScrn, surface_memory);
++ radeon_legacy_free_memory(pScrn, surface_memory);
+ return BadAlloc;
+ }
+ if(!(pPriv = xalloc(sizeof(OffscreenPrivRec)))) {
+ xfree(surface->pitches);
+ xfree(surface->offsets);
+- RADEONFreeMemory(pScrn, surface_memory);
++ radeon_legacy_free_memory(pScrn, surface_memory);
+ return BadAlloc;
+ }
+
+@@ -3328,7 +3228,8 @@ RADEONFreeSurface(
+
+ if(pPriv->isOn)
+ RADEONStopSurface(surface);
+- RADEONFreeMemory(pScrn, pPriv->surface_memory);
++ radeon_legacy_free_memory(pScrn, pPriv->surface_memory);
++ pPriv->surface_memory = NULL;
+ xfree(surface->pitches);
+ xfree(surface->offsets);
+ xfree(surface->devPrivate.ptr);
+@@ -3417,8 +3318,9 @@ RADEONDisplaySurface(
+ surface->offsets[0], surface->offsets[0],
+ surface->offsets[0], surface->offsets[0],
+ surface->offsets[0], surface->offsets[0],
+- surface->width, surface->height, surface->pitches[0],
+- xa, xb, ya, &dstBox, src_w, src_h, drw_w, drw_h, METHOD_BOB);
++ surface->offsets[0], surface->width, surface->height,
++ surface->pitches[0], xa, xb, ya, &dstBox, src_w, src_h,
++ drw_w, drw_h, METHOD_BOB);
+
+ if (portPriv->autopaint_colorkey)
+ xf86XVFillKeyHelper(pScrn->pScreen, portPriv->colorKey, clipBoxes);
+@@ -3602,9 +3504,9 @@ RADEONPutVideo(
+ if (pPriv->capture_vbi_data)
+ alloc_size += 2 * 2 * vbi_line_width * 21;
+
+- pPriv->video_offset = RADEONAllocateMemory(pScrn, &pPriv->video_memory,
+- (pPriv->doubleBuffer ?
+- (new_size * 2) : new_size));
++ pPriv->video_offset = radeon_legacy_allocate_memory(pScrn, &pPriv->video_memory,
++ (pPriv->doubleBuffer ?
++ (new_size * 2) : new_size), 64);
+ if (pPriv->video_offset == 0)
+ return BadAlloc;
+
+@@ -3705,10 +3607,12 @@ RADEONPutVideo(
+ RADEONFillKeyHelper(pDraw, pPriv->colorKey, clipBoxes);
+ }
+
+- RADEONDisplayVideo(pScrn, crtc, pPriv, id, offset1+top*srcPitch, offset2+top*srcPitch,
+- offset3+top*srcPitch, offset4+top*srcPitch, offset1+top*srcPitch,
+- offset2+top*srcPitch, width, height, dstPitch*mult/2,
+- xa, xb, ya, &dstBox, src_w, src_h*mult/2, drw_w, drw_h, pPriv->overlay_deinterlacing_method);
++ RADEONDisplayVideo(pScrn, crtc, pPriv, id, pPriv->video_offset,
++ offset1+top*srcPitch, offset2+top*srcPitch,
++ offset3+top*srcPitch, offset4+top*srcPitch,
++ offset1+top*srcPitch, offset2+top*srcPitch, width, height,
++ dstPitch*mult/2, xa, xb, ya, &dstBox, src_w, src_h*mult/2,
++ drw_w, drw_h, pPriv->overlay_deinterlacing_method);
+
+ RADEONWaitForFifo(pScrn, 1);
+ OUTREG(RADEON_OV0_REG_LOAD_CNTL, RADEON_REG_LD_CTL_LOCK);
+diff --git a/src/radeon_video.h b/src/radeon_video.h
+index 096de37..11b8029 100644
+--- a/src/radeon_video.h
++++ b/src/radeon_video.h
+@@ -13,6 +13,10 @@
+
+ #include "xf86Crtc.h"
+
++#include "bicubic_table.h"
++
++#define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v))
++
+ /* Xvideo port struct */
+ typedef struct {
+ uint32_t transform_index;
+@@ -37,7 +41,7 @@ typedef struct {
+ uint32_t radeon_N;
+ uint32_t i2c_status;
+ uint32_t i2c_cntl;
+-
++
+ FI1236Ptr fi1236;
+ uint8_t tuner_type;
+ MSP3430Ptr msp3430;
+@@ -46,7 +50,7 @@ typedef struct {
+
+ /* VIP bus and devices */
+ GENERIC_BUS_Ptr VIP;
+- TheatrePtr theatre;
++ TheatrePtr theatre;
+
+ Bool video_stream_active;
+ int encoding;
+@@ -56,7 +60,7 @@ typedef struct {
+ int sap_channel;
+ int v;
+ uint32_t adjustment; /* general purpose variable */
+-
++
+ #define METHOD_BOB 0
+ #define METHOD_SINGLE 1
+ #define METHOD_WEAVE 2
+@@ -82,13 +86,16 @@ typedef struct {
+ xf86CrtcPtr desired_crtc;
+
+ int size;
+-#ifdef USE_EXA
+- ExaOffscreenArea *off_screen;
+-#endif
+
+ void *video_memory;
+ int video_offset;
+
++ /* bicubic filtering */
++ void *bicubic_memory;
++ int bicubic_offset;
++ Bool bicubic_enabled;
++ uint32_t bicubic_src_offset;
++
+ Atom device_id, location_id, instance_id;
+
+ /* textured video */
+@@ -106,18 +113,12 @@ typedef struct {
+ int drw_x, drw_y;
+ } RADEONPortPrivRec, *RADEONPortPrivPtr;
+
+-
+ void RADEONInitI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
+ void RADEONResetI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
+
+ void RADEONVIP_init(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
+ void RADEONVIP_reset(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
+
+-uint32_t
+-RADEONAllocateMemory(ScrnInfoPtr pScrn, void **mem_struct, int size);
+-void
+-RADEONFreeMemory(ScrnInfoPtr pScrn, void *mem_struct);
+-
+ int RADEONSetPortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
+ int RADEONGetPortAttribute(ScrnInfoPtr, Atom ,INT32 *, pointer);
+ void RADEONStopVideo(ScrnInfoPtr, pointer, Bool);
diff --git a/abs/core-testing/xf86-video-ati/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-ati/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/xf86-video-ati/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/xf86-video-chips/PKGBUILD b/abs/core-testing/xf86-video-chips/PKGBUILD
index 60161c3..f63366d 100644
--- a/abs/core-testing/xf86-video-chips/PKGBUILD
+++ b/abs/core-testing/xf86-video-chips/PKGBUILD
@@ -1,22 +1,23 @@
-# $Id: PKGBUILD 3258 2008-06-21 18:34:07Z jgc $
+# $Id: PKGBUILD 22287 2008-12-25 17:17:00Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-chips
-pkgver=1.2.0
+pkgver=1.2.1
pkgrel=1
pkgdesc="X.org Chips and Technologies video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=(glibc)
-makedepends=('pkgconfig' 'xorg-server>=1.4.0.90')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('2f2643fca6335f18024bffa6c4e0c12f')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
-md5sums=('0fec6bee65383790485d917247a61629')
diff --git a/abs/core-testing/xf86-video-cirrus/PKGBUILD b/abs/core-testing/xf86-video-cirrus/PKGBUILD
index 02aecfc..4527182 100644
--- a/abs/core-testing/xf86-video-cirrus/PKGBUILD
+++ b/abs/core-testing/xf86-video-cirrus/PKGBUILD
@@ -1,14 +1,15 @@
-# $Id: PKGBUILD 3247 2008-06-21 18:15:30Z jgc $
+# $Id: PKGBUILD 11420 2008-08-31 15:22:15Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-cirrus
pkgver=1.2.1
-pkgrel=1
+pkgrel=2
pkgdesc="X.org Cirrus Logic video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4.2')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
+conflicts=('xorg-server<1.4.99.906')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
diff --git a/abs/core-testing/xf86-video-dummy/PKGBUILD b/abs/core-testing/xf86-video-dummy/PKGBUILD
index 51763f6..b060c9c 100644
--- a/abs/core-testing/xf86-video-dummy/PKGBUILD
+++ b/abs/core-testing/xf86-video-dummy/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11419 2008-08-31 15:22:13Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-dummy
-pkgver=0.2.0
-pkgrel=4
+pkgver=0.3.0
+pkgrel=1
pkgdesc="X.org dummy video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
+conflicts=('xorg-server<1.4.99.906')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('22b7cc20a33443cbd218bd2521850cfe')
+md5sums=('3d96297556846bee02a74166ffb5d052')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-video-fbdev/PKGBUILD b/abs/core-testing/xf86-video-fbdev/PKGBUILD
index c5d835c..05bcbca 100644
--- a/abs/core-testing/xf86-video-fbdev/PKGBUILD
+++ b/abs/core-testing/xf86-video-fbdev/PKGBUILD
@@ -1,23 +1,26 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11425 2008-08-31 15:24:08Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-fbdev
-pkgver=0.3.1
-pkgrel=4
+pkgver=0.4.0
+pkgrel=1
pkgdesc="X.org framebuffer video driver"
arch=(i686 x86_64)
+license=('custom')
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
+conflicts=('xorg-server<1.4.99.906')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('9ae810c6c6c3c9713a67866fe794d4ff')
+md5sums=('6572b39fec77b8e6de1c858a93992924')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
}
diff --git a/abs/core-testing/xf86-video-glint/PKGBUILD b/abs/core-testing/xf86-video-glint/PKGBUILD
index 15c0dce..f52d528 100644
--- a/abs/core-testing/xf86-video-glint/PKGBUILD
+++ b/abs/core-testing/xf86-video-glint/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 22285 2008-12-25 17:13:14Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-glint
-pkgver=1.1.1
-pkgrel=5
+pkgver=1.2.2
+pkgrel=1
pkgdesc="X.org GLINT/Permedia video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.3.99.2' 'xf86driproto' 'mesa')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
options=('!libtool')
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('4295a46a75fa98470c6dfb0e1a4f7e9f')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
-md5sums=('2cf49f701024a145bd25aff9da11d479')
diff --git a/abs/core-testing/xf86-video-i128/PKGBUILD b/abs/core-testing/xf86-video-i128/PKGBUILD
index fcf2c06..2c98984 100644
--- a/abs/core-testing/xf86-video-i128/PKGBUILD
+++ b/abs/core-testing/xf86-video-i128/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11431 2008-08-31 15:26:32Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-i128
-pkgver=1.2.1
-pkgrel=4
+pkgver=1.3.0
+pkgrel=1
pkgdesc="X.org Number 9 I128 video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.2.0')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
+conflicts=('xorg-server<1.4.99.906')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('aff4922d2f02bad7e0d8649358edbcee')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
-md5sums=('d0080732eaa15059b0a953aa3522185a')
diff --git a/abs/core-testing/xf86-video-i740/PKGBUILD b/abs/core-testing/xf86-video-i740/PKGBUILD
index 9101847..3e0fd57 100644
--- a/abs/core-testing/xf86-video-i740/PKGBUILD
+++ b/abs/core-testing/xf86-video-i740/PKGBUILD
@@ -1,23 +1,22 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11440 2008-08-31 15:37:53Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-i740
-pkgver=1.1.0
-pkgrel=4
+pkgver=1.2.0
+pkgrel=1
pkgdesc="X.org Intel i740 video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('57302e225060a7286ae1a970c87a589b')
+md5sums=('d0e5a805c546b29b1dd3b55a68d16dc4')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-video-intel/20_thinkpad_g40_quirk.patch b/abs/core-testing/xf86-video-intel/20_thinkpad_g40_quirk.patch
new file mode 100644
index 0000000..c2c72a7
--- /dev/null
+++ b/abs/core-testing/xf86-video-intel/20_thinkpad_g40_quirk.patch
@@ -0,0 +1,18 @@
+diff -Nurp xserver-xorg-video-intel-2.3.1-patched/src/i830_quirks.c xserver-xorg-video-intel-2.3.1-working/src/i830_quirks.c
+--- xserver-xorg-video-intel-2.3.1-patched/src/i830_quirks.c 2008-06-20 00:05:23.000000000 -0700
++++ xserver-xorg-video-intel-2.3.1-working/src/i830_quirks.c 2008-06-20 00:20:19.000000000 -0700
+@@ -266,9 +266,13 @@ static i830_quirk i830_quirk_list[] = {
+ /* HP Compaq 6730s has no TV output */
+ { PCI_CHIP_IGD_GM, 0x103c, 0x30e8, quirk_ignore_tv },
+
++ /* Thinkpad G40 needs pipe A force quirk (See LP: #240457) */
++ { PCI_CHIP_I855_GM, 0x1014, 0x0543, quirk_pipea_force },
+ /* Thinkpad R31 needs pipe A force quirk */
+ { PCI_CHIP_I830_M, 0x1014, 0x0505, quirk_pipea_force },
+- /* Dell Latitude D400 needs pipe A force quirk (LP: #228519) */
++ /* Dell Latitude C400 needs pipe A force quirk (See LP: #216490) */
++ { PCI_CHIP_I855_GM, 0x1028, 0x00c8, quirk_pipea_force },
++ /* Dell Latitude D400 needs pipe A force quirk (See LP: #228519) */
+ { PCI_CHIP_I855_GM, 0x1028, 0x0139, quirk_pipea_force },
+ /* Dell Latitude D500 needs pipe A force quirk */
+ { PCI_CHIP_I855_GM, 0x1028, 0x0152, quirk_pipea_force },
diff --git a/abs/core-testing/xf86-video-intel/21_quirk_lenovo.patch b/abs/core-testing/xf86-video-intel/21_quirk_lenovo.patch
new file mode 100644
index 0000000..8479a40
--- /dev/null
+++ b/abs/core-testing/xf86-video-intel/21_quirk_lenovo.patch
@@ -0,0 +1,12 @@
+diff -Nurp xserver-xorg-video-intel-2.3.2-1ubuntu2-patched/src/i830_quirks.c xserver-xorg-video-intel-2.3.2-1ubuntu2-working/src/i830_quirks.c
+--- xserver-xorg-video-intel-2.3.2-1ubuntu2-patched/src/i830_quirks.c 2008-06-26 20:21:14.000000000 -0700
++++ xserver-xorg-video-intel-2.3.2-1ubuntu2-working/src/i830_quirks.c 2008-06-26 20:30:23.000000000 -0700
+@@ -242,6 +242,8 @@ static i830_quirk i830_quirk_list[] = {
+
+ /* Lenovo Napa TV (use dmi)*/
+ { PCI_CHIP_I945_GM, 0x17aa, SUBSYS_ANY, quirk_lenovo_tv_dmi },
++ /* Lenovo T60/R60 needs pipe A force quirk (See LP: #243405) */
++ { PCI_CHIP_I945_GM, 0x17aa, 0x201a, quirk_pipea_force },
+ /* Lenovo T61 has no TV output */
+ { PCI_CHIP_I965_GM, 0x17aa, 0x20b5, quirk_ignore_tv },
+ /* Lenovo 3000 v200 */
diff --git a/abs/core-testing/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch b/abs/core-testing/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch
new file mode 100644
index 0000000..d82923f
--- /dev/null
+++ b/abs/core-testing/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch
@@ -0,0 +1,13 @@
+diff -Nurp xserver-xorg-video-intel-2.4.1-patched/src/i830_quirks.c xserver-xorg-video-intel-2.4.1-working/src/i830_quirks.c
+--- xserver-xorg-video-intel-2.4.1-patched/src/i830_quirks.c 2008-09-08 20:12:28.000000000 -0700
++++ xserver-xorg-video-intel-2.4.1-working/src/i830_quirks.c 2008-09-08 21:02:53.000000000 -0700
+@@ -312,6 +317,9 @@ static i830_quirk i830_quirk_list[] = {
+ /* Sony vaio VGN-SZ4MN (See LP: #212163) */
+ { PCI_CHIP_I830_M, 0x104d, 0x81e6, quirk_pipea_force },
+
++ /* Quanta Gigabyte W251U (See LP: #244242) */
++ { PCI_CHIP_I945_GM, 0x152d, 0x0755, quirk_pipea_force },
++
+ /* Ordi Enduro UW31 (See LP: #152416) */
+ { PCI_CHIP_I945_GM, 0x1584, 0x9900, quirk_ignore_tv },
+
diff --git a/abs/core-testing/xf86-video-intel/25_quirk_nc6110.patch b/abs/core-testing/xf86-video-intel/25_quirk_nc6110.patch
new file mode 100644
index 0000000..a6db410
--- /dev/null
+++ b/abs/core-testing/xf86-video-intel/25_quirk_nc6110.patch
@@ -0,0 +1,13 @@
+diff --git a/src/i830_quirks.c b/src/i830_quirks.c
+index 089e458..09b7c53 100644
+--- a/src/i830_quirks.c
++++ b/src/i830_quirks.c
+@@ -278,6 +278,8 @@ static i830_quirk i830_quirk_list[] = {
+ /* Samsung Q45 has no TV output */
+ { PCI_CHIP_I965_GM, 0x144d, 0xc510, quirk_ignore_tv },
+
++ /* HP Compaq nx6110 has no TV output */
++ { PCI_CHIP_I915_GM, 0x103c, 0x099c, quirk_ignore_tv },
+ /* HP Compaq 6730s has no TV output */
+ { PCI_CHIP_GM45_GM, 0x103c, 0x30e8, quirk_ignore_tv },
+
diff --git a/abs/core-testing/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch b/abs/core-testing/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch
new file mode 100644
index 0000000..d74b809
--- /dev/null
+++ b/abs/core-testing/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch
@@ -0,0 +1,63 @@
+diff -Nurp patched/src/bios_reader/bios_reader.c working/src/bios_reader/bios_reader.c
+--- patched/src/bios_reader/bios_reader.c 2008-10-16 14:06:07.000000000 -0700
++++ working/src/bios_reader/bios_reader.c 2008-10-16 14:25:07.000000000 -0700
+@@ -180,6 +180,19 @@ static void dump_lvds_options(void *data
+ printf("\tPFIT mode: %d\n", options->pfit_mode);
+ }
+
++static void dump_lvds_ptr_data(void *data, unsigned char *base)
++{
++ struct bdb_lvds_lfp_data_ptrs *ptrs = data;
++
++ struct lvds_fp_timing *fp_timing =
++ (struct lvds_fp_timing *)(base + ptrs->ptr[panel_type].fp_timing_offset);
++
++ printf("LVDS timing pointer data:\n");
++
++ printf("\tpanel type %02i: %dx%d\n", panel_type, fp_timing->x_res,
++ fp_timing->y_res);
++}
++
+ static void dump_lvds_data(void *data, unsigned char *base)
+ {
+ struct bdb_lvds_lfp_data *lvds_data = data;
+@@ -274,6 +287,8 @@ int main(int argc, char **argv)
+ dump_general_definitions(find_section(bdb, BDB_GENERAL_DEFINITIONS));
+ dump_lvds_options(find_section(bdb, BDB_LVDS_OPTIONS));
+ dump_lvds_data(find_section(bdb, BDB_LVDS_LFP_DATA), bdb);
++ dump_lvds_ptr_data(find_section(bdb, BDB_LVDS_LFP_DATA_PTRS),
++ (unsigned char *)bdb);
+
+ return 0;
+ }
+diff -Nurp patched/src/i830_bios.c working/src/i830_bios.c
+--- patched/src/i830_bios.c 2008-10-16 14:06:07.000000000 -0700
++++ working/src/i830_bios.c 2008-10-16 14:27:15.000000000 -0700
+@@ -89,7 +89,8 @@ parse_panel_data(I830Ptr pI830, struct b
+ {
+ struct bdb_lvds_options *lvds_options;
+ struct bdb_lvds_lfp_data *lvds_lfp_data;
+- struct bdb_lvds_lfp_data_entry *entry;
++ struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs;
++ int timing_offset;
+ DisplayModePtr fixed_mode;
+ unsigned char *timing_ptr;
+
+@@ -104,12 +105,13 @@ parse_panel_data(I830Ptr pI830, struct b
+ if (lvds_options->panel_type == 0xff)
+ return;
+
+- lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA);
+- if (!lvds_lfp_data)
++ lvds_lfp_data_ptrs = find_section(bdb, BDB_LVDS_LFP_DATA_PTRS);
++ if (!lvds_lfp_data_ptrs)
+ return;
+
+- entry = &lvds_lfp_data->data[lvds_options->panel_type];
+- timing_ptr = (unsigned char *)&entry->dvo_timing;
++ timing_offset =
++ lvds_lfp_data_ptrs->ptr[lvds_options->panel_type].dvo_timing_offset;
++ timing_ptr = (unsigned char *)bdb + timing_offset;
+
+ fixed_mode = xnfalloc(sizeof(DisplayModeRec));
+ memset(fixed_mode, 0, sizeof(*fixed_mode));
diff --git a/abs/core-testing/xf86-video-intel/27_disable_fbc_on_965.patch b/abs/core-testing/xf86-video-intel/27_disable_fbc_on_965.patch
new file mode 100644
index 0000000..cc881b9
--- /dev/null
+++ b/abs/core-testing/xf86-video-intel/27_disable_fbc_on_965.patch
@@ -0,0 +1,18 @@
+diff --git a/src/i830.h b/src/i830.h
+index 5b78236..89f19d2 100644
+--- a/src/i830.h
++++ b/src/i830.h
+@@ -950,6 +950,13 @@ static inline int i830_fb_compression_supported(I830Ptr pI830)
+ */
+ if (!pI830->tiling || (IS_I965G(pI830) && pI830->accel <= ACCEL_XAA))
+ return FALSE;
++ /* We have not gotten FBC to work consistently on 965GM. Our best
++ * working theory right now is that FBC simply isn't reliable on
++ * that device. See this bug report for more details:
++ * https://bugs.freedesktop.org/show_bug.cgi?id=16257
++ */
++ if (IS_I965GM(pI830))
++ return FALSE;
+ return TRUE;
+ }
+
diff --git a/abs/core-testing/xf86-video-intel/PKGBUILD b/abs/core-testing/xf86-video-intel/PKGBUILD
index 106ec41..3530b90 100644
--- a/abs/core-testing/xf86-video-intel/PKGBUILD
+++ b/abs/core-testing/xf86-video-intel/PKGBUILD
@@ -1,25 +1,43 @@
-# $Id: PKGBUILD 3246 2008-06-21 18:13:57Z jgc $
+# $Id: PKGBUILD 19083 2008-11-14 21:09:00Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-intel
-pkgver=2.3.2
+pkgver=2.4.3
pkgrel=1
-pkgdesc="X.org Intel i810/i830/i915 video drivers"
+pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('intel-dri' 'libdrm')
-makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'xorg-util-macros' 'xf86driproto>=2.0.4' 'glproto>=1.4.9' 'mesa>=7.0.3')
-
-options=('!libtool')
+depends=('intel-dri>=7.2' 'libpciaccess>=0.10.5' 'libdrm>=2.3.1')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'xf86driproto>=2.0.4' 'glproto>=1.4.9' 'mesa>=7.2' 'libdrm=2.3.1')
+conflicts=('xorg-server<1.5.3' 'xf86-video-i810')
+replaces=('xf86-video-i810')
+options=('!libtool' 'force')
groups=('xorg-video-drivers')
-source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('fef32ffc428d9d565ab10b338ce17855')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ 20_thinkpad_g40_quirk.patch
+ 21_quirk_lenovo.patch
+ 23_quirks_studiohybrid_eeepc_and_w251u.patch
+ 25_quirk_nc6110.patch
+ 26_i830-use-lfp-data-ptrs.patch
+ 27_disable_fbc_on_965.patch)
+md5sums=('a664819288b98a37f77ab6ae1e14c9d9'
+ '68a362a168ffa4f37d9f722f43855468'
+ '2d617364ac2e47ca366901d0b849b1a1'
+ '3d0f8e593e8eac3000154feb6b0f45b8'
+ '3deb800906e6845e8576d4e9d0f22b12'
+ 'cb7ee7a68858c038020e0cd991143d8e'
+ 'd215e428585c6e55aefd9f525ebfbe7b')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/20_thinkpad_g40_quirk.patch" || return 1
+ patch -Np1 -i "${srcdir}/21_quirk_lenovo.patch" || return 1
+ patch -Np1 -i "${srcdir}/23_quirks_studiohybrid_eeepc_and_w251u.patch" || return 1
+ patch -Np1 -i "${srcdir}/25_quirk_nc6110.patch" || return 1
+ patch -Np1 -i "${srcdir}/26_i830-use-lfp-data-ptrs.patch" || return 1
+ patch -Np1 -i "${srcdir}/27_disable_fbc_on_965.patch" || return 1
./configure --prefix=/usr \
--enable-dri || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
- rm -f ${startdir}/pkg/usr/lib/xorg/modules/drivers/i810_drv.so
- rm -f ${startdir}/pkg/usr/share/man/man4/i810.4*
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/xf86-video-mach64/PKGBUILD b/abs/core-testing/xf86-video-mach64/PKGBUILD
new file mode 100644
index 0000000..ed91461
--- /dev/null
+++ b/abs/core-testing/xf86-video-mach64/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 13016 2008-09-25 18:54:26Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=xf86-video-mach64
+pkgver=6.8.0
+pkgrel=2
+_mesaver="7.2"
+pkgdesc="X.org mach64 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+depends=('libdrm>=2.3.1' 'libgl>=7.2')
+makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'mesa>=7.2' 'dri2proto'
+ 'glproto>=1.4.9' 'xf86driproto' 'diffutils')
+conflicts=('xorg-server<1.5.1')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2
+ mesa-7.1-link-shared.patch)
+md5sums=('6081b8fa50c689d51f85c2fbaf93867e'
+ '04d379292e023df0b0266825cb0dbde5'
+ 'f0baa948d9810f268413111ee439d24b')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --enable-dri || return 1
+ make || return 1
+ make DESTDIR=${startdir}/pkg install || return 1
+
+ cd ${srcdir}/Mesa-${_mesaver}
+ patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=mach64 \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glu \
+ --disable-glut \
+ --disable-glw || return 1
+ make || return 1
+ cd src/mesa/drivers/dri || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so
+ rm -rf ${pkgdir}/usr/include
+ rm -rf ${pkgdir}/usr/lib/pkgconfig
+}
diff --git a/abs/core-testing/xf86-video-mach64/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-mach64/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/xf86-video-mach64/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/xf86-video-mga/PKGBUILD b/abs/core-testing/xf86-video-mga/PKGBUILD
index 1d07b1f..5681868 100644
--- a/abs/core-testing/xf86-video-mga/PKGBUILD
+++ b/abs/core-testing/xf86-video-mga/PKGBUILD
@@ -1,22 +1,25 @@
-# $Id: PKGBUILD 4390 2008-07-06 20:07:05Z jgc $
+# $Id: PKGBUILD 13014 2008-09-25 18:53:21Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-mga
pkgver=1.4.9
-pkgrel=1
+pkgrel=3
pkgdesc="X.org mga video driver"
-mesaver="7.0.3"
+_mesaver="7.2"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('libdrm' 'expat>=2.0')
-makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'imake' 'mesa>=7.0.3' \
+depends=('libgl>=7.2' 'expat>=2.0.1')
+makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'imake' 'mesa>=7.2'
'xf86driproto' 'glproto>=1.4.9')
+conflicts=('xorg-server<1.5.1')
options=('!libtool' 'force')
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
- http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.bz2)
+ http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2
+ mesa-7.1-link-shared.patch)
md5sums=('11066b84b949cd04300ec819c9c51532'
- 'e6e6379d7793af40a6bc3ce1bace572e')
+ '04d379292e023df0b0266825cb0dbde5'
+ 'f0baa948d9810f268413111ee439d24b')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
@@ -24,26 +27,22 @@ build() {
--enable-dri || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
-
- cd ${startdir}/src/Mesa-${mesaver}/configs
-
- CONFIG="linux-dri-x86"
- [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64"
- echo "EXTRA_LIB_PATH =" >> ${CONFIG}
- echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG}
- echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG}
- echo "USING_EGL = 0" >> ${CONFIG}
- echo "PROGRAM_DIRS =" >> ${CONFIG}
- echo "MKDEP = makedepend" >> ${CONFIG}
- echo "DRI_DIRS = mga" >> ${CONFIG}
- echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG}
- echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG}
-
- ln -s ${CONFIG} current
- cd ${startdir}/src/Mesa-${mesaver}/src/mesa
- make linux-solo || return 1
- cd drivers/dri
- make DESTDIR=${startdir}/pkg install || return 1
+ cd ${srcdir}/Mesa-${_mesaver}
+ patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=mga \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glu \
+ --disable-glut \
+ --disable-glw || return 1
+ make || return 1
+ cd src/mesa/drivers/dri || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so
+ rm -rf ${pkgdir}/usr/include
+ rm -rf ${pkgdir}/usr/lib/pkgconfig
}
diff --git a/abs/core-testing/xf86-video-mga/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-mga/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/xf86-video-mga/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/xf86-video-neomagic/PKGBUILD b/abs/core-testing/xf86-video-neomagic/PKGBUILD
index cbe614d..7d47807 100644
--- a/abs/core-testing/xf86-video-neomagic/PKGBUILD
+++ b/abs/core-testing/xf86-video-neomagic/PKGBUILD
@@ -1,22 +1,23 @@
-# $Id: PKGBUILD 3245 2008-06-21 18:12:45Z jgc $
+# $Id: PKGBUILD 22283 2008-12-25 17:06:50Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-neomagic
-pkgver=1.2.1
+pkgver=1.2.2
pkgrel=1
pkgdesc="X.org neomagic video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4.2')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('a72f57fca4f4dff9a2c82eb1fe7456f4')
+md5sums=('896864e1a2d7333c16333a24eac17d00')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/xf86-video-nv/PKGBUILD b/abs/core-testing/xf86-video-nv/PKGBUILD
index ad4b2ee..7c74343 100644
--- a/abs/core-testing/xf86-video-nv/PKGBUILD
+++ b/abs/core-testing/xf86-video-nv/PKGBUILD
@@ -1,26 +1,28 @@
-# $Id: PKGBUILD 1904 2008-05-22 18:19:19Z jgc $
+# $Id: PKGBUILD 11446 2008-08-31 15:40:39Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
+
pkgname=xf86-video-nv
-pkgver=2.1.9
+pkgver=2.1.12
pkgrel=1
pkgdesc="X.org nv video driver"
arch=(i686 x86_64)
+license=('custom')
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4.0.90')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
+conflicts=('xorg-server<1.4.99.906')
options=('!libtool')
-license=('custom')
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('c6b7e52fa18455c22eb040b8d2575ce5')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
- install -m644 -D ${startdir}/src/${pkgname}-${pkgver}/COPYING \
- ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
}
+md5sums=('42f12a36d7afc26c817e8e8f5c8b7274')
diff --git a/abs/core-testing/xf86-video-openchrome/LICENSE.txt b/abs/core-testing/xf86-video-openchrome/LICENSE.txt
new file mode 100644
index 0000000..dff1dc3
--- /dev/null
+++ b/abs/core-testing/xf86-video-openchrome/LICENSE.txt
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2005-2007 The Openchrome Project [openchrome.org]
+ * Copyright 2004-2006 Luc Verhaegen.
+ * Copyright 2004-2005 The Unichrome Project [unichrome.sf.net]
+ * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
+ * Copyright 2001-2003 S3 Graphics, Inc. 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, sub license,
+ * 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
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
diff --git a/abs/core-testing/xf86-video-openchrome/PKGBUILD b/abs/core-testing/xf86-video-openchrome/PKGBUILD
new file mode 100644
index 0000000..235dba8
--- /dev/null
+++ b/abs/core-testing/xf86-video-openchrome/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 11506 2008-08-31 18:01:45Z jgc $
+# Contributor: Paul Mattal <paul@mattal.com>
+# Maintainer: Juergen Hoetzel <juergen@hoetzel.info>
+
+pkgname=xf86-video-openchrome
+pkgver=0.2.903
+pkgrel=1
+pkgdesc="X.Org Openchrome drivers"
+arch=(i686 x86_64)
+license=('custom')
+url="http://www.openchrome.org"
+depends=('unichrome-dri>=7.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906' 'xf86driproto' 'xorg-util-macros' 'libxvmc' 'glproto' 'mesa>=7.1')
+replaces=('openchrome' 'xf86-video-via')
+options=('!libtool' 'force' '!makeflags')
+conflicts=('xf86-video-via' 'xf86-video-unichrome' 'openchrome' 'xorg-server<1.4.99.906')
+source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.gz
+ LICENSE.txt)
+md5sums=('bcb3ba67e89824c132790c3a0365c6a5'
+ 'addb3cf2671f4cf7e91156952de1627f')
+
+build() {
+ cd ${startdir}/src/${pkgname}-$pkgver || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${startdir}/pkg install || return 1
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 ${srcdir}/LICENSE.txt ${pkgdir}/usr/share/licenses/${pkgname}/COPYING || return 1
+}
diff --git a/abs/core-testing/xf86-video-r128/PKGBUILD b/abs/core-testing/xf86-video-r128/PKGBUILD
new file mode 100644
index 0000000..9339f9a
--- /dev/null
+++ b/abs/core-testing/xf86-video-r128/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 13012 2008-09-25 18:50:04Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=xf86-video-r128
+pkgver=6.8.0
+pkgrel=2
+_mesaver="7.2"
+pkgdesc="X.org ati Rage128 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+depends=('libdrm>=2.3.1' 'libgl>=7.2')
+makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'imake' 'mesa>=7.2'
+ 'glproto>=1.4.9' 'xf86driproto' 'diffutils')
+conflicts=('xorg-server<1.5.1')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2
+ mesa-7.1-link-shared.patch)
+md5sums=('007bec0c6b07d9d3aeca4da18e561efb'
+ '04d379292e023df0b0266825cb0dbde5'
+ 'f0baa948d9810f268413111ee439d24b')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --enable-dri || return 1
+ make || return 1
+ make DESTDIR=${startdir}/pkg install || return 1
+
+ cd ${srcdir}/Mesa-${_mesaver}
+ patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=r128 \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glu \
+ --disable-glut \
+ --disable-glw || return 1
+ make || return 1
+ cd src/mesa/drivers/dri || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so
+ rm -rf ${pkgdir}/usr/include
+ rm -rf ${pkgdir}/usr/lib/pkgconfig
+}
diff --git a/abs/core-testing/xf86-video-r128/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-r128/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/xf86-video-r128/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/xf86-video-radeonhd/PKGBUILD b/abs/core-testing/xf86-video-radeonhd/PKGBUILD
index 7173afd..ce29874 100644
--- a/abs/core-testing/xf86-video-radeonhd/PKGBUILD
+++ b/abs/core-testing/xf86-video-radeonhd/PKGBUILD
@@ -1,26 +1,27 @@
-# $Id: PKGBUILD 861 2008-04-23 21:44:36Z juergen $
+# $Id: PKGBUILD 22422 2008-12-26 19:30:38Z jgc $
# Maintainer: <juergen@archlinux.org>
pkgname=xf86-video-radeonhd
-pkgver=1.2.1
+pkgver=1.2.4
pkgrel=1
pkgdesc="Experimental Radeon HD video driver for r500 and r600 ATI cards"
arch=(i686 x86_64)
url="http://wiki.x.org/wiki/radeonhd"
license=('custom')
-depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server' 'diffutils')
+depends=('glibc' 'ati-dri>=7.2' 'libdrm' 'libpciaccess')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'diffutils')
+conflicts=('xorg-server<1.5.3')
options=('!libtool')
conflicts=('xf86-video-radeonhd-git')
replaces=('xf86-video-radeonhd-git')
groups=('xorg-video-drivers')
-source=(ftp://ftp.freedesktop.org/pub/individual/driver/$pkgname-$pkgver.tar.bz2)
-md5sums=('9db15e1f1f891f514ca72dd9a3cc360a')
+source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('3c9cfffe7e3d795dde59ea0eef7361b1')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
- make DESTDIR=${startdir}/pkg install || return 1
- install -m644 -D ${startdir}/src/${pkgname}-${pkgver}/COPYING \
- ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE || return 1
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
}
diff --git a/abs/core-testing/xf86-video-rendition/PKGBUILD b/abs/core-testing/xf86-video-rendition/PKGBUILD
index 20fba5f..6bb78d2 100644
--- a/abs/core-testing/xf86-video-rendition/PKGBUILD
+++ b/abs/core-testing/xf86-video-rendition/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11462 2008-08-31 15:55:46Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-rendition
-pkgver=4.1.3
-pkgrel=4
+pkgver=4.2.0
+pkgrel=1
pkgdesc="X.org Rendition video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.2.0')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
+conflicts=('xorg-server<1.4.99.906')
options=('!libtool')
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('7c03de3804d4c4f6ff59f74050d24b2b')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
-md5sums=('a8b97feccb32184820d5856fe78d34db')
diff --git a/abs/core-testing/xf86-video-s3/PKGBUILD b/abs/core-testing/xf86-video-s3/PKGBUILD
index c7aefc2..f294fe9 100644
--- a/abs/core-testing/xf86-video-s3/PKGBUILD
+++ b/abs/core-testing/xf86-video-s3/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 22275 2008-12-25 16:57:57Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-s3
-pkgver=0.5.0
-pkgrel=4
+pkgver=0.6.1
+pkgrel=1
pkgdesc="X.org S3 video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.2.0')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
options=('!libtool')
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('a5f1f2f93a50e56bd3aeed009c407337')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
-md5sums=('d95ab6445cab477f39adfbbc81006f67')
diff --git a/abs/core-testing/xf86-video-s3virge/PKGBUILD b/abs/core-testing/xf86-video-s3virge/PKGBUILD
index 4a27540..18391fb 100644
--- a/abs/core-testing/xf86-video-s3virge/PKGBUILD
+++ b/abs/core-testing/xf86-video-s3virge/PKGBUILD
@@ -1,49 +1,24 @@
-# $Id: PKGBUILD 3244 2008-06-21 18:11:55Z jgc $
+# $Id: PKGBUILD 22269 2008-12-25 16:53:28Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-s3virge
-pkgver=1.10.1
+pkgver=1.10.2
pkgrel=1
pkgdesc="X.org S3 Virge video driver"
-mesaver="7.0.3"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('expat>=2.0' 'libdrm')
-makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'imake' 'mesa>=7.0.3')
+depends=('glibc')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
options=(!libtool)
groups=('xorg-video-drivers')
-source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
- http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.bz2)
-md5sums=('4a293047e988d4ea1e9e96d3b5793f43'
- 'e6e6379d7793af40a6bc3ce1bace572e')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('69784e4964d75487d81be4eae3d467dd')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr \
- --enable-dri || return 1
+ --disable-dri || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
-
-
- cd ${startdir}/src/Mesa-${mesaver}/configs
-
- CONFIG="linux-dri-x86"
- [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64"
- echo "EXTRA_LIB_PATH =" >> ${CONFIG}
- echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG}
- echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG}
- echo "USING_EGL = 0" >> ${CONFIG}
- echo "PROGRAM_DIRS =" >> ${CONFIG}
- echo "MKDEP = makedepend" >> ${CONFIG}
- echo "DRI_DIRS = s3v" >> ${CONFIG}
- echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG}
- echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG}
-
- ln -s ${CONFIG} current
- cd ${startdir}/src/Mesa-${mesaver}/src/mesa
- make linux-solo || return 1
- cd drivers/dri
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/xf86-video-savage/PKGBUILD b/abs/core-testing/xf86-video-savage/PKGBUILD
index 99e5324..0cdb7c7 100644
--- a/abs/core-testing/xf86-video-savage/PKGBUILD
+++ b/abs/core-testing/xf86-video-savage/PKGBUILD
@@ -1,21 +1,24 @@
-# $Id: PKGBUILD 3243 2008-06-21 18:08:53Z jgc $
+# $Id: PKGBUILD 13010 2008-09-25 18:47:39Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-savage
pkgver=2.2.1
-pkgrel=1
+pkgrel=2
pkgdesc="X.org savage video driver"
-mesaver="7.0.3"
+_mesaver="7.2"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('libdrm>=2.3.0' 'expat>=2.0')
-makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'imake' 'mesa>=7.0.3' 'xf86driproto' 'glproto>=1.4.9')
+depends=('libgl>=7.2')
+makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'imake' 'mesa>=7.2' 'xf86driproto' 'glproto>=1.4.9')
+conflicts=('xorg-server<1.5.1')
options=(!libtool)
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
- http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.bz2)
+ http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2
+ mesa-7.1-link-shared.patch)
md5sums=('62b8aba48b54eaefeae87df502bf219c'
- 'e6e6379d7793af40a6bc3ce1bace572e')
+ '04d379292e023df0b0266825cb0dbde5'
+ 'f0baa948d9810f268413111ee439d24b')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
@@ -24,26 +27,22 @@ build() {
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
- cd ${startdir}/src/Mesa-${mesaver}
-
- cd configs
- CONFIG="linux-dri-x86"
- [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64"
- echo "EXTRA_LIB_PATH =" >> ${CONFIG}
- echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG}
- echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG}
- echo "USING_EGL = 0" >> ${CONFIG}
- echo "PROGRAM_DIRS =" >> ${CONFIG}
- echo "MKDEP = makedepend" >> ${CONFIG}
- echo "DRI_DIRS = savage" >> ${CONFIG}
- echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG}
- echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG}
-
- ln -s ${CONFIG} current
- cd ${startdir}/src/Mesa-${mesaver}/src/mesa
- make linux-solo || return 1
- cd drivers/dri
- make DESTDIR=${startdir}/pkg install || return 1
+ cd ${startdir}/src/Mesa-${_mesaver}
+ patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=savage \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glu \
+ --disable-glut \
+ --disable-glw || return 1
+ make || return 1
+ cd src/mesa/drivers/dri || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ rm -rf ${pkgdir}/usr/lib/pkgconfig
+ rm -rf ${pkgdir}/usr/include
+ rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so
}
diff --git a/abs/core-testing/xf86-video-savage/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-savage/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/xf86-video-savage/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/xf86-video-siliconmotion/PKGBUILD b/abs/core-testing/xf86-video-siliconmotion/PKGBUILD
index 0e785ed..3518f94 100644
--- a/abs/core-testing/xf86-video-siliconmotion/PKGBUILD
+++ b/abs/core-testing/xf86-video-siliconmotion/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 23018 2009-01-01 16:25:18Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-siliconmotion
-pkgver=1.5.1
-pkgrel=4
+pkgver=1.7.0
+pkgrel=1
pkgdesc="X.org siliconmotion video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.2.0')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
options=('!libtool')
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('f9acffba89d8be200f91bab3d1df80da')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
-md5sums=('ee35d7714ce44a2b5ac7ad7b7b7dd75a')
diff --git a/abs/core-testing/xf86-video-sis/PKGBUILD b/abs/core-testing/xf86-video-sis/PKGBUILD
index 02c519d..dfb0625 100644
--- a/abs/core-testing/xf86-video-sis/PKGBUILD
+++ b/abs/core-testing/xf86-video-sis/PKGBUILD
@@ -1,48 +1,48 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 22281 2008-12-25 17:05:24Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-sis
-pkgver=0.9.4
-pkgrel=3
+pkgver=0.10.1
+pkgrel=1
pkgdesc="X.org SiS video driver"
-mesaver="7.0.4"
+_mesaver="7.2"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('libdrm>=2.3.0' 'expat>=2.0')
-makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'imake' 'xf86driproto' 'mesa>=7.0.3rc1' 'glproto>=1.4.9')
+depends=('libgl>=7.2')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'xf86driproto' 'mesa>=7.1' 'glproto>=1.4.9')
+conflicts=('xorg-server<1.5.1')
options=('!libtool')
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
- http://voxel.dl.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.gz)
-md5sums=('43f12cabf770b06170cdd1cdaafdc50f'
- '909afa3a01ae31478d363837681415ac')
+ http://downloads.sourceforge.net/mesa3d/MesaLib-${_mesaver}.tar.bz2
+ mesa-7.1-link-shared.patch)
+md5sums=('9f57c2f5ccbd8340db32da1c74083771'
+ '04d379292e023df0b0266825cb0dbde5'
+ 'f0baa948d9810f268413111ee439d24b')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr \
--enable-dri || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
- cd ${startdir}/src/Mesa-${mesaver}/configs
-
- CONFIG="linux-dri-x86"
- [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64"
- echo "EXTRA_LIB_PATH =" >> ${CONFIG}
- echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG}
- echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG}
- echo "USING_EGL = 0" >> ${CONFIG}
- echo "PROGRAM_DIRS =" >> ${CONFIG}
- echo "MKDEP = makedepend" >> ${CONFIG}
- echo "DRI_DIRS = sis" >> ${CONFIG}
- echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG}
- echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG}
-
- ln -s ${CONFIG} current
- cd ${startdir}/src/Mesa-${mesaver}/src/mesa
- make linux-solo || return 1
- cd drivers/dri
- make DESTDIR=${startdir}/pkg install || return 1
+ cd "${srcdir}/Mesa-${_mesaver}"
+ patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=sis \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glu \
+ --disable-glut \
+ --disable-glw || return 1
+ make || return 1
+ cd src/mesa/drivers/dri || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ rm -rf "${pkgdir}/usr/lib/pkgconfig"
+ rm -rf "${pkgdir}/usr/include"
+ rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so"
}
diff --git a/abs/core-testing/xf86-video-sis/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-sis/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/xf86-video-sis/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/xf86-video-sisusb/PKGBUILD b/abs/core-testing/xf86-video-sisusb/PKGBUILD
index 43992ab..0d205b1 100644
--- a/abs/core-testing/xf86-video-sisusb/PKGBUILD
+++ b/abs/core-testing/xf86-video-sisusb/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11481 2008-08-31 16:45:57Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-sisusb
-pkgver=0.8.1
-pkgrel=4
+pkgver=0.9.0
+pkgrel=1
pkgdesc="X.org SiS USB video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
+conflicts=('xorg-server<1.4.99.906')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('cbd669507e4aa35e468905f09b546333')
+md5sums=('7b1f5465f423a859f306f4f1d6306a1b')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-video-tdfx/PKGBUILD b/abs/core-testing/xf86-video-tdfx/PKGBUILD
index 82a75af..0f62948 100644
--- a/abs/core-testing/xf86-video-tdfx/PKGBUILD
+++ b/abs/core-testing/xf86-video-tdfx/PKGBUILD
@@ -1,49 +1,48 @@
-# $Id: PKGBUILD 3259 2008-06-21 18:34:20Z jgc $
+# $Id: PKGBUILD 22277 2008-12-25 17:00:41Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-tdfx
-pkgver=1.4.0
+pkgver=1.4.1
pkgrel=1
pkgdesc="X.org tdfx video driver"
-_mesaver="7.0.3"
+_mesaver="7.2"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('expat>=2.0' 'libdrm>=2.3.0')
-makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'imake' 'mesa>=7.0.3')
+depends=('libgl>=7.2')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'mesa>=7.2')
+conflicts=('xorg-server<1.5.3')
options=(!libtool)
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
- http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2)
+ http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2
+ mesa-7.1-link-shared.patch)
+md5sums=('59acf2a4f721f9b7abbd121748467b16'
+ '04d379292e023df0b0266825cb0dbde5'
+ 'f0baa948d9810f268413111ee439d24b')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr \
--enable-dri || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
- cd ${startdir}/src/Mesa-${_mesaver}
- cd configs
-
- CONFIG="linux-dri-x86"
- [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64"
- echo "EXTRA_LIB_PATH =" >> ${CONFIG}
- echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG}
- echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG}
- echo "USING_EGL = 0" >> ${CONFIG}
- echo "PROGRAM_DIRS =" >> ${CONFIG}
- echo "MKDEP = makedepend" >> ${CONFIG}
- echo "DRI_DIRS = tdfx" >> ${CONFIG}
- echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG}
- echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG}
-
- ln -s ${CONFIG} current
- cd ${startdir}/src/Mesa-${_mesaver}/src/mesa
- make linux-solo || return 1
- cd drivers/dri
- make DESTDIR=${startdir}/pkg install || return 1
+ cd "${srcdir}/Mesa-${_mesaver}"
+ patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=tdfx \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glu \
+ --disable-glut \
+ --disable-glw || return 1
+ make || return 1
+ cd src/mesa/drivers/dri || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ rm -rf "${pkgdir}/usr/lib/pkgconfig"
+ rm -rf "${pkgdir}/usr/include"
+ rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so"
}
-md5sums=('b13132f24683ef759bfb0c1db5096496'
- 'e6e6379d7793af40a6bc3ce1bace572e')
diff --git a/abs/core-testing/xf86-video-tdfx/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-tdfx/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/xf86-video-tdfx/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/xf86-video-trident/PKGBUILD b/abs/core-testing/xf86-video-trident/PKGBUILD
index 5616e12..874f185 100644
--- a/abs/core-testing/xf86-video-trident/PKGBUILD
+++ b/abs/core-testing/xf86-video-trident/PKGBUILD
@@ -1,49 +1,49 @@
-# $Id: PKGBUILD 3257 2008-06-21 18:32:30Z jgc $
+# $Id: PKGBUILD 22291 2008-12-25 17:22:27Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-trident
-pkgver=1.3.0
-pkgrel=2
+pkgver=1.3.1
+pkgrel=1
pkgdesc="X.org Trident video driver"
-_mesaver="7.0.3"
+_mesaver="7.2"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('libdrm>=2.3.0' 'expat>=2.0')
-makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'imake' 'mesa>=7.0.3' 'xf86driproto')
+depends=('libgl>=7.2')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'mesa>=7.2' 'xf86driproto')
+conflicts=('xorg-server<1.5.3')
groups=('xorg-video-drivers')
options=(!libtool)
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
- http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2)
+ http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2
+ mesa-7.1-link-shared.patch)
+md5sums=('9f280bef235426394013cb5e1854b823'
+ '04d379292e023df0b0266825cb0dbde5'
+ 'f0baa948d9810f268413111ee439d24b')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr \
--enable-dri || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
- cd ${startdir}/src/Mesa-${_mesaver}
- cd configs
-
- CONFIG="linux-dri-x86"
- [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64"
- echo "EXTRA_LIB_PATH =" >> ${CONFIG}
- echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG}
- echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG}
- echo "USING_EGL = 0" >> ${CONFIG}
- echo "PROGRAM_DIRS =" >> ${CONFIG}
- echo "MKDEP = makedepend" >> ${CONFIG}
- echo "DRI_DIRS = trident" >> ${CONFIG}
- echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG}
- echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG}
- echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG}
-
- ln -s ${CONFIG} current
- cd ${startdir}/src/Mesa-${_mesaver}/src/mesa
- make linux-solo || return 1
- cd drivers/dri
- make DESTDIR=${startdir}/pkg install || return 1
+ cd "${srcdir}/Mesa-${_mesaver}"
+ cd ${srcdir}/Mesa-${pkgver}
+ patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --with-dri-drivers=trident \
+ --enable-glx-tls \
+ --disable-ttm-api \
+ --with-driver=dri \
+ --enable-xcb \
+ --disable-glu \
+ --disable-glut \
+ --disable-glw || return 1
+ make || return 1
+ cd src/mesa/drivers/dri || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ rm -rf "${pkgdir}/usr/lib/pkgconfig"
+ rm -rf "${pkgdir}/usr/include"
+ rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so"
}
-md5sums=('e89799579d0cf3858362bd751469e0bf'
- 'e6e6379d7793af40a6bc3ce1bace572e')
diff --git a/abs/core-testing/xf86-video-trident/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-trident/mesa-7.1-link-shared.patch
new file mode 100644
index 0000000..7fdbf14
--- /dev/null
+++ b/abs/core-testing/xf86-video-trident/mesa-7.1-link-shared.patch
@@ -0,0 +1,102 @@
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000
+@@ -6,12 +6,17 @@ include $(TOP)/configs/current
+
+
+
+-default: $(TOP)/$(LIB_DIR) subdirs
++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs
+
+
+ $(TOP)/$(LIB_DIR):
+ -mkdir $(TOP)/$(LIB_DIR)
+
++libdricore.so:
++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc
++
++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so
++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR)
+
+ subdirs:
+ @for dir in $(DRI_DIRS) ; do \
+@@ -31,12 +36,14 @@ dri.pc: dri.pc.in
+ $(pcedit) $< > $@
+
+
+-install: dri.pc
++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so
+ @for dir in $(DRI_DIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal
+@@ -52,5 +59,6 @@ clean:
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so
+ -rm -f common/*.o
+ -rm -f *.pc
+diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template
+--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000
+@@ -1,6 +1,6 @@
+ # -*-makefile-*-
+
+-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so
+
+ COMMON_SOURCES = \
+ ../common/utils.c \
+@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO
+
+ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
+ $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS)
++ $(OBJECTS) $(WINOBJ) \
++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \
++ $(DRI_LIB_DEPS)
+
+
+ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
+diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S
+--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000
++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000
+@@ -77,7 +77,6 @@
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+ _generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX
+ */
+
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+ _generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+- .hidden _generic_read_RGBA_span_RGB565_MMX
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+ _generic_read_RGBA_span_RGB565_MMX:
diff --git a/abs/core-testing/xf86-video-tseng/PKGBUILD b/abs/core-testing/xf86-video-tseng/PKGBUILD
index 6863c46..f5909d7 100644
--- a/abs/core-testing/xf86-video-tseng/PKGBUILD
+++ b/abs/core-testing/xf86-video-tseng/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 22279 2008-12-25 17:02:55Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-tseng
-pkgver=1.1.1
-pkgrel=4
+pkgver=1.2.1
+pkgrel=1
pkgdesc="X.org tseng video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.2.0')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('2f687eddae5dafa5dcc05116561e267c')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
-md5sums=('488aa9c3ec7a95e6589afa4b50bec8b4')
diff --git a/abs/core-testing/xf86-video-unichrome/PKGBUILD b/abs/core-testing/xf86-video-unichrome/PKGBUILD
index 2f618ca..7f3bc57 100644
--- a/abs/core-testing/xf86-video-unichrome/PKGBUILD
+++ b/abs/core-testing/xf86-video-unichrome/PKGBUILD
@@ -1,26 +1,23 @@
-# $Id: PKGBUILD 3256 2008-06-21 18:31:47Z jgc $
+# $Id: PKGBUILD 22301 2008-12-25 18:28:12Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-unichrome
-pkgver=0.2.6
-pkgrel=8
+pkgver=0.2.7
+pkgrel=0.1
+_gitversion=1464eb9ecb178163af0e85443c3e591755c8c320
pkgdesc="Unichrome video drivers for X.Org"
arch=(i686 x86_64)
url="http://unichrome.sf.net/"
-depends=('unichrome-dri>=7.0.3')
-makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'xorg-util-macros' 'xf86driproto' \
- 'glproto' 'mesa>=7.0.3' 'autoconf' 'automake' 'libtool')
+depends=('unichrome-dri>=7.2')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'xorg-util-macros' 'xf86driproto' 'glproto' 'mesa>=7.2' 'autoconf' 'automake' 'libtool')
options=('!libtool')
-conflicts=('xf86-video-via' 'openchrome')
-groups=('xorg-video-drivers')
-source=(http://downloads.sf.net/unichrome/${pkgname}-${pkgver}.tar.gz
- fix-defines.patch)
-md5sums=('fd81a739ae8145bb9729fa9665ef426c' '84142497ed91048bb2d0d082ce8a0229')
+conflicts=('xf86-video-via' 'openchrome' 'xf86-video-openchrome' 'xorg-server<1.5.3')
+source=(http://cgit.freedesktop.org/~libv/${pkgname}/snapshot/${pkgname}-${_gitversion}.tar.bz2)
+md5sums=('dfef1e3b9ed24d50938ea5ee6f708457')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- patch -Np1 -i ${startdir}/src/fix-defines.patch || return 1
+ cd "${srcdir}/${pkgname}-${_gitversion}"
./autogen.sh --prefix=/usr \
--enable-dri
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/xf86-video-v4l/PKGBUILD b/abs/core-testing/xf86-video-v4l/PKGBUILD
index dc8ba80..518e267 100644
--- a/abs/core-testing/xf86-video-v4l/PKGBUILD
+++ b/abs/core-testing/xf86-video-v4l/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11496 2008-08-31 16:52:37Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-v4l
-pkgver=0.1.1
-pkgrel=4
+pkgver=0.2.0
+pkgrel=1
pkgdesc="X.org v4l video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
+conflicts=('xorg-server<1.4.99.906')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('69339c38eba2cebc357d67e7a755d734')
+md5sums=('2251ae2a0a905764941cd7b098e85ad1')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
diff --git a/abs/core-testing/xf86-video-vesa/PKGBUILD b/abs/core-testing/xf86-video-vesa/PKGBUILD
index ed4acc7..bbccb88 100644
--- a/abs/core-testing/xf86-video-vesa/PKGBUILD
+++ b/abs/core-testing/xf86-video-vesa/PKGBUILD
@@ -1,21 +1,20 @@
-# $Id: PKGBUILD 5566 2008-07-18 20:48:52Z jgc $
+# $Id: PKGBUILD 22267 2008-12-25 16:51:23Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-vesa
-pkgver=1.3.0
-pkgrel=6
+pkgver=2.1.0
+pkgrel=1
pkgdesc="X.org vesa video driver"
arch=(i686 x86_64)
license=('custom')
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4.2')
+makedepends=('pkgconfig' 'xorg-server>=1.5.3')
+conflicts=('xorg-server<1.5.3')
groups=('xorg' 'xorg-video-drivers')
-options=('!libtool' 'force')
-source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
- COPYING)
-md5sums=('4a307852f3b4850e436a41dab2a73676'
- 'e5418e7a75e21268637984e70265e146')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('d813269613b4d63ff6dbfbfbd104cc84')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
@@ -23,5 +22,5 @@ build() {
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
install -d -m755 ${pkgdir}/usr/share/licenses/${pkgname}
- install -m644 ${srcdir}/COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
+ install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
}
diff --git a/abs/core-testing/xf86-video-vga/PKGBUILD b/abs/core-testing/xf86-video-vga/PKGBUILD
index 1ac84a7..034c440 100644
--- a/abs/core-testing/xf86-video-vga/PKGBUILD
+++ b/abs/core-testing/xf86-video-vga/PKGBUILD
@@ -1,23 +1,29 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 15043 2008-10-12 12:14:52Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-vga
pkgver=4.1.0
-pkgrel=4
+pkgrel=6
pkgdesc="X.org VGA 16 color video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.1.1')
-groups=('xorg-video-drivers')
+makedepends=('pkgconfig' 'xorg-server>=1.5.2')
+conflicts=('xorg-server<1.5.2')
options=('!libtool')
-source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('b93e5fe9757db779a75cd3ce97b9613d')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ pciaccess.patch)
+md5sums=('b93e5fe9757db779a75cd3ce97b9613d'
+ 'fe3a45179f51fb86215f6fd2b5ac0747')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/pciaccess.patch" || return 1
+ libtoolize --force || return 1
+ aclocal || return 1
+ autoconf || return 1
+ automake || return 1
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/core-testing/xf86-video-vga/pciaccess.patch b/abs/core-testing/xf86-video-vga/pciaccess.patch
new file mode 100644
index 0000000..141701f
--- /dev/null
+++ b/abs/core-testing/xf86-video-vga/pciaccess.patch
@@ -0,0 +1,371 @@
+From: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br>
+Date: Fri, 18 Jul 2008 21:27:26 +0000 (-0300)
+Subject: Add libpciaccess and remove xf1bpp and xf4bpp support.
+X-Git-Url: http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-vga.git;a=commitdiff;h=97e2d12548921d92b6dc2dcce8abee48f25981d2
+
+Add libpciaccess and remove xf1bpp and xf4bpp support.
+
+ The driver is not fully functional, starts at 320x200, but may require
+running something like vbetool post before starting the X Server, and does
+not restore console as usually linux consoles use vesafb, but should work
+correctly if console is in a "standard vga mode".
+---
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -57,6 +57,22 @@ PKG_CHECK_MODULES(XORG, [xorg-server >=
+ sdkdir=$(pkg-config --variable=sdkdir xorg-server)
+
+ # Checks for libraries.
++SAVE_CPPFLAGS="$CPPFLAGS"
++CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
++AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
++ [XSERVER_LIBPCIACCESS=yes], [XSERVER_LIBPCIACCESS=no],
++ [#include "xorg-server.h"])
++AC_CHECK_HEADER(xf1bpp.h,[AC_DEFINE(HAVE_XF1BPP, 1, [Have 1bpp support])],[])
++AC_CHECK_HEADER(xf4bpp.h,[AC_DEFINE(HAVE_XF4BPP, 1, [Have 4bpp support])],[])
++CPPFLAGS="$SAVE_CPPFLAGS"
++
++if test "x$XSERVER_LIBPCIACCESS" = xyes; then
++ PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
++ XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
++fi
++AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
++
++# Checks for libraries.
+
+ # Checks for header files.
+ AC_HEADER_STDC
+--- a/src/generic.c
++++ b/src/generic.c
+@@ -50,8 +50,13 @@
+
+ #include "fb.h"
+
++#if HAVE_XF4BPP
+ #include "xf4bpp.h"
++#endif
++
++#if HAVE_XF1BPP
+ #include "xf1bpp.h"
++#endif
+
+ #include "shadowfb.h"
+
+@@ -62,6 +67,10 @@
+ #include "xf86Resources.h"
+ #include "xf86int10.h"
+
++#ifdef XSERVER_LIBPCIACCESS
++#include <pciaccess.h>
++#endif
++
+ /* Some systems #define VGA for their own purposes */
+ #undef VGA
+
+@@ -79,10 +88,31 @@
+ #define CLOCK_TOLERANCE 2000 /* Clock matching tolerance (2MHz) */
+ #endif
+
++/*
++ * This structure is used to wrap the screen's CloseScreen vector.
++ */
++typedef struct _GenericRec
++{
++ Bool ShadowFB;
++ Bool KGAUniversal;
++ CARD8 * ShadowPtr;
++ CARD32 ShadowPitch;
++ CloseScreenProcPtr CloseScreen;
++ OptionInfoPtr Options;
++#ifdef XSERVER_LIBPCIACCESS
++ struct pci_device *pciInfo;
++#endif
++} GenericRec, *GenericPtr;
++
++
+ /* Forward definitions */
+ static const OptionInfoRec *GenericAvailableOptions(int chipid, int busid);
+ static void GenericIdentify(int);
+ static Bool GenericProbe(DriverPtr, int);
++#ifdef XSERVER_LIBPCIACCESS
++static Bool GenericPciProbe(DriverPtr drv, int entity_num,
++ struct pci_device *dev, intptr_t match_data);
++#endif
+ static Bool GenericPreInit(ScrnInfoPtr, int);
+ static Bool GenericScreenInit(int, ScreenPtr, int, char **);
+ static Bool GenericSwitchMode(int, DisplayModePtr, int);
+@@ -97,6 +127,24 @@ static Bool GenericMapMe
+
+ static ModeStatus GenericValidMode(int, DisplayModePtr, Bool, int);
+
++static GenericPtr GenericGetRec(ScrnInfoPtr pScreenInfo);
++
++enum GenericTypes
++{
++ CHIP_VGA_GENERIC
++};
++
++#ifdef XSERVER_LIBPCIACCESS
++static const struct pci_id_match generic_device_match[] = {
++ {
++ PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
++ 0x00030000, 0x00ffffff, CHIP_VGA_GENERIC
++ },
++
++ { 0, 0, 0 },
++};
++#endif
++
+ /* The root of all evil... */
+ _X_EXPORT DriverRec VGA =
+ {
+@@ -106,7 +154,13 @@ _X_EXPORT DriverRec VGA =
+ GenericProbe,
+ GenericAvailableOptions,
+ NULL,
+- 0
++ 0,
++ NULL,
++
++#ifdef XSERVER_LIBPCIACCESS
++ generic_device_match,
++ GenericPciProbe
++#endif
+ };
+
+ typedef enum
+@@ -146,8 +200,12 @@ static const char *vgahwSymbols[] =
+ #ifdef XFree86LOADER
+ static const char *miscfbSymbols[] =
+ {
++#if HAVE_XF1BPP
+ "xf1bppScreenInit",
++#endif
++#if HAVE_XF4BPP
+ "xf4bppScreenInit",
++#endif
+ NULL
+ };
+ #endif
+@@ -210,7 +268,13 @@ GenericSetup(pointer Module, pointer Opt
+ if (!Initialised)
+ {
+ Initialised = TRUE;
+- xf86AddDriver(&VGA, Module, 0);
++ xf86AddDriver(&VGA, Module,
++#ifdef XSERVER_LIBPCIACCESS
++ HaveDriverFuncs
++#else
++ 0
++#endif
++ );
+ LoaderRefSymLists(vgahwSymbols, miscfbSymbols, fbSymbols,
+ shadowfbSymbols, int10Symbols, NULL);
+ return (pointer)TRUE;
+@@ -224,11 +288,6 @@ GenericSetup(pointer Module, pointer Opt
+ #endif
+
+
+-enum GenericTypes
+-{
+- CHIP_VGA_GENERIC
+-};
+-
+ /* Supported chipsets */
+ static SymTabRec GenericChipsets[] =
+ {
+@@ -236,11 +295,13 @@ static SymTabRec GenericChipsets[] =
+ {-1, NULL}
+ };
+
++#ifndef XSERVER_LIBPCIACCESS
+ static PciChipsets GenericPCIchipsets[] =
+ {
+ {CHIP_VGA_GENERIC, PCI_CHIP_VGA, RES_SHARED_VGA},
+ {-1, -1, RES_UNDEFINED},
+ };
++#endif
+
+ static IsaChipsets GenericISAchipsets[] =
+ {
+@@ -267,6 +328,37 @@ GenericAvailableOptions(int chipid, int
+ * do a minimal probe for supported hardware.
+ */
+
++#ifdef XSERVER_LIBPCIACCESS
++static Bool
++GenericPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev,
++ intptr_t match_data)
++{
++ ScrnInfoPtr pScrn;
++
++ pScrn = xf86ConfigPciEntity(NULL, 0, entity_num, NULL,
++ NULL, NULL, NULL, NULL, NULL);
++ if (pScrn != NULL) {
++ GenericPtr pGeneric = GenericGetRec(pScrn);
++
++ pScrn->driverVersion = VGA_VERSION_CURRENT;
++ pScrn->driverName = VGA_DRIVER_NAME;
++ pScrn->name = VGA_NAME;
++ pScrn->Probe = GenericProbe;
++ pScrn->PreInit = GenericPreInit;
++ pScrn->ScreenInit = GenericScreenInit;
++ pScrn->SwitchMode = GenericSwitchMode;
++ pScrn->AdjustFrame = GenericAdjustFrame;
++ pScrn->EnterVT = GenericEnterVT;
++ pScrn->LeaveVT = GenericLeaveVT;
++ pScrn->FreeScreen = GenericFreeScreen;
++
++ pGeneric->pciInfo = dev;
++ }
++
++ return (pScrn != NULL);
++}
++#endif
++
+ static Bool
+ GenericProbe(DriverPtr drv, int flags)
+ {
+@@ -283,6 +375,7 @@ GenericProbe(DriverPtr drv, int flags)
+ if ((numDevSections = xf86MatchDevice(VGA_NAME, &devSections)) <= 0)
+ return FALSE;
+
++#ifndef XSERVER_LIBPCIACCESS
+ /* PCI BUS */
+ if (xf86GetPciVideoInfo())
+ {
+@@ -324,6 +417,7 @@ GenericProbe(DriverPtr drv, int flags)
+ xfree(usedChips);
+ }
+ }
++#endif
+
+ /* Isa Bus */
+ numUsed = xf86MatchIsaInstances(VGA_NAME, GenericChipsets,
+@@ -391,20 +485,6 @@ VGAFindIsaDevice(GDevPtr dev)
+ return (int)CHIP_VGA_GENERIC;
+ }
+
+-/*
+- * This structure is used to wrap the screen's CloseScreen vector.
+- */
+-typedef struct _GenericRec
+-{
+- Bool ShadowFB;
+- Bool KGAUniversal;
+- CARD8 * ShadowPtr;
+- CARD32 ShadowPitch;
+- CloseScreenProcPtr CloseScreen;
+- OptionInfoPtr Options;
+-} GenericRec, *GenericPtr;
+-
+-
+ static GenericPtr
+ GenericGetRec(ScrnInfoPtr pScreenInfo)
+ {
+@@ -509,8 +589,14 @@ GenericPreInit(ScrnInfoPtr pScreenInfo,
+
+ switch (pScreenInfo->depth)
+ {
+- case 1: Module = "xf1bpp"; Sym = "xf1bppScreenInit"; break;
+- case 4: Module = "xf4bpp"; Sym = "xf4bppScreenInit"; break;
++ case 1:
++#if HAVE_XF1BPP
++ Module = "xf1bpp"; Sym = "xf1bppScreenInit"; break;
++#endif
++ case 4:
++#if HAVE_XF4BPP
++ Module = "xf4bpp"; Sym = "xf4bppScreenInit"; break;
++#endif
+ case 8: Module = "fb"; break;
+
+ default:
+@@ -673,6 +759,8 @@ GenericPreInit(ScrnInfoPtr pScreenInfo,
+ /* Set display resolution */
+ xf86SetDpi(pScreenInfo, 0, 0);
+
++
++#if HAVE_XF1BPP && HAVE_XF4BPP
+ if (xf86ReturnOptValBool(pGenericPriv->Options, OPTION_SHADOW_FB, FALSE))
+ {
+ pGenericPriv->ShadowFB = TRUE;
+@@ -688,7 +776,7 @@ GenericPreInit(ScrnInfoPtr pScreenInfo,
+ "Enabling universal \"KGA\" treatment.\n");
+ }
+
+-#ifdef SPECIAL_FB_BYTE_ACCESS
++# ifdef SPECIAL_FB_BYTE_ACCESS
+ if (!pGenericPriv->ShadowFB && (pScreenInfo->depth == 4))
+ {
+ xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO,
+@@ -696,8 +784,13 @@ GenericPreInit(ScrnInfoPtr pScreenInfo,
+ " ShadowFB enabled.\n");
+ pGenericPriv->ShadowFB = TRUE;
+ }
++# endif
++
++#else
++ pGenericPriv->ShadowFB = TRUE;
+ #endif
+
++
+ if (pGenericPriv->ShadowFB)
+ {
+ pScreenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
+@@ -1378,6 +1471,7 @@ GenericScreenInit(int scrnIndex, ScreenP
+ #endif
+ ShadowFBInit(pScreen, GenericRefreshArea1bpp);
+ }
++#if HAVE_XF1BPP
+ else
+ {
+ Inited = xf1bppScreenInit(pScreen, pvgaHW->Base,
+@@ -1386,6 +1480,7 @@ GenericScreenInit(int scrnIndex, ScreenP
+ pScreenInfo->xDpi, pScreenInfo->yDpi,
+ pScreenInfo->displayWidth);
+ }
++#endif
+ break;
+ case 4:
+ if (pGenericPriv->ShadowFB)
+@@ -1410,6 +1505,7 @@ GenericScreenInit(int scrnIndex, ScreenP
+ #endif
+ ShadowFBInit(pScreen, GenericRefreshArea4bpp);
+ }
++#if HAVE_XF4BPP
+ else
+ {
+ Inited = xf4bppScreenInit(pScreen, pvgaHW->Base,
+@@ -1418,6 +1514,7 @@ GenericScreenInit(int scrnIndex, ScreenP
+ pScreenInfo->xDpi, pScreenInfo->yDpi,
+ pScreenInfo->displayWidth);
+ }
++#endif
+ break;
+ case 8:
+ Inited = fbScreenInit(pScreen, pvgaHW->Base,
+@@ -1579,6 +1676,9 @@ GenericMapMem(ScrnInfoPtr scrp)
+ {
+ vgaHWPtr hwp = VGAHWPTR(scrp);
+ int scr_index = scrp->scrnIndex;
++#ifdef XSERVER_LIBPCIACCESS
++ GenericPtr pPriv = GenericGetRec(scrp);
++#endif
+
+ if (hwp->Base)
+ return TRUE;
+@@ -1589,7 +1689,12 @@ GenericMapMem(ScrnInfoPtr scrp)
+ if (hwp->MapPhys == 0)
+ hwp->MapPhys = VGA_DEFAULT_PHYS_ADDR;
+
+- hwp->Base = xf86MapDomainMemory(scr_index, VIDMEM_MMIO, hwp->Tag,
++ hwp->Base = xf86MapDomainMemory(scr_index, VIDMEM_MMIO,
++#ifdef XSERVER_LIBPCIACCESS
++ pPriv->pciInfo,
++#else
++ hwp->Tag,
++#endif
+ hwp->MapPhys, hwp->MapSize);
+ return hwp->Base != NULL;
+ }
diff --git a/abs/core-testing/xf86-video-vmware/PKGBUILD b/abs/core-testing/xf86-video-vmware/PKGBUILD
index 5992099..f259c2e 100644
--- a/abs/core-testing/xf86-video-vmware/PKGBUILD
+++ b/abs/core-testing/xf86-video-vmware/PKGBUILD
@@ -1,18 +1,19 @@
-# $Id: PKGBUILD 3242 2008-06-21 18:06:18Z jgc $
+# $Id: PKGBUILD 11487 2008-08-31 16:48:39Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-vmware
-pkgver=10.16.2
+pkgver=10.16.5
pkgrel=1
pkgdesc="X.org vmware video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'randrproto' 'renderproto' 'xextproto' 'xineramaproto' 'videoproto')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906' 'randrproto' 'renderproto' 'xextproto' 'xineramaproto' 'videoproto')
+conflicts=('xorg-server<1.4.99.906')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('d79b660e1effb86628930e5c01989216')
+md5sums=('6d78c82ea7c2bb0fcb587d7bb4e8f60a')
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
diff --git a/abs/core-testing/xf86-video-voodoo/PKGBUILD b/abs/core-testing/xf86-video-voodoo/PKGBUILD
index bbbc518..d35e2ac 100644
--- a/abs/core-testing/xf86-video-voodoo/PKGBUILD
+++ b/abs/core-testing/xf86-video-voodoo/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 11484 2008-08-31 16:48:17Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-voodoo
-pkgver=1.1.1
-pkgrel=4
+pkgver=1.2.0
+pkgrel=1
pkgdesc="X.org voodoo video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('glibc')
-makedepends=('pkgconfig' 'xorg-server>=1.2.0')
+makedepends=('pkgconfig' 'xorg-server>=1.4.99.906')
+conflicts=('xorg-server<1.4.99.906')
groups=('xorg-video-drivers')
options=('!libtool')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
build() {
cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --build=${CHOST} --host=${CHOST}
+ ./configure --prefix=/usr || return 1
make || return 1
make DESTDIR=${startdir}/pkg install || return 1
}
-md5sums=('bc878e795688b49a595b355482d27174')
+md5sums=('7c681d9b57f5e1f798263fc1a9d99245')
diff --git a/abs/core-testing/xkeyboard-config/PKGBUILD b/abs/core-testing/xkeyboard-config/PKGBUILD
index 5b26253..abac013 100644
--- a/abs/core-testing/xkeyboard-config/PKGBUILD
+++ b/abs/core-testing/xkeyboard-config/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 7542 2008-08-02 21:31:59Z jgc $
-# Maintainer: Alexander Baldeck <kth5@archlinux.org>
+# $Id: PKGBUILD 22425 2008-12-26 19:55:49Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xkeyboard-config
-pkgver=1.3
-pkgrel=1
+pkgver=1.4
+pkgrel=2
pkgdesc="X keyboard configuration files"
arch=(i686 x86_64)
license=('custom')
@@ -12,19 +12,21 @@ makedepends=('perlxml' 'pkgconfig')
provides=('xkbdata')
replaces=('xkbdata')
conflicts=('xkbdata')
-source=(http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-${pkgver}.tar.bz2)
-md5sums=('d9e9f69f9c6ef5c5a8255cfbe6a57d51')
+source=(http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-${pkgver}.tar.bz2
+ fix-abnt2.patch)
+md5sums=('a9fe7efbc67a6966c4d4501f0cf88073' '5af20ec00a42a051cf0d7bcb572471df')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/fix-abnt2.patch" || return 1
./configure --prefix=/usr \
--with-xkb-base=/usr/share/X11/xkb \
--with-xkb-rules-symlink=xorg \
--enable-compat-rules=yes || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
- rm -f ${startdir}/pkg/usr/share/X11/xkb/compiled || return 1
- install -m755 -d ${startdir}/pkg/var/lib/xkb
- install -m755 -d ${startdir}/pkg/usr/share/licenses/${pkgname}
- install -m644 COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ rm -f "${pkgdir}/usr/share/X11/xkb/compiled" || return 1
+ install -m755 -d "${pkgdir}/var/lib/xkb"
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
}
diff --git a/abs/core-testing/xkeyboard-config/fix-abnt2.patch b/abs/core-testing/xkeyboard-config/fix-abnt2.patch
new file mode 100644
index 0000000..a451df8
--- /dev/null
+++ b/abs/core-testing/xkeyboard-config/fix-abnt2.patch
@@ -0,0 +1,20 @@
+From b67326a9b271332c5bef23115d9c4ac7e7b2e6d9 Mon Sep 17 00:00:00 2001
+From: Sergey V. Udaltsov<svu@gnome.org>
+Date: Wed, 26 Nov 2008 23:19:41 +0000
+Subject: fixed abnt2 keycodes, b.fd.o#18712
+
+---
+diff --git a/keycodes/evdev b/keycodes/evdev
+index 760e2d0..9da2cd5 100644
+--- a/keycodes/evdev
++++ b/keycodes/evdev
+@@ -311,6 +311,7 @@ xkb_keycodes "jp106" {
+ // For brazilian ABNT2 keyboard.
+ xkb_keycodes "abnt2" {
+ include "evdev(evdev)"
++ <KPPT> = 129;
+ };
+
+ // PC98
+--
+cgit v0.8.1-24-ge5fb
diff --git a/abs/core-testing/xorg-apps/PKGBUILD b/abs/core-testing/xorg-apps/PKGBUILD
index dae4b4e..adaccd2 100644
--- a/abs/core-testing/xorg-apps/PKGBUILD
+++ b/abs/core-testing/xorg-apps/PKGBUILD
@@ -1,22 +1,21 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 19081 2008-11-14 21:07:55Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xorg-apps
-pkgver=1.0.3
-pkgrel=3
+pkgver=7.4
+pkgrel=1
pkgdesc="Various X.Org applications"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=(libxcursor libxkbfile libpng libxft libfontenc libxaw)
makedepends=(pkgconfig xbitmaps)
-
source=(${url}/releases/individual/app/oclock-1.0.1.tar.bz2
${url}/releases/individual/app/luit-1.0.3.tar.bz2
- ${url}/releases/individual/app/xclock-1.0.2.tar.bz2
+ ${url}/releases/individual/app/xclock-1.0.3.tar.bz2
${url}/releases/individual/app/xpr-1.0.2.tar.bz2
- ${url}/releases/individual/app/xwd-1.0.1.tar.bz2
+ ${url}/releases/individual/app/xwd-1.0.2.tar.bz2
${url}/releases/individual/app/xwud-1.0.1.tar.bz2
- ${url}/releases/individual/app/x11perf-1.4.1.tar.bz2
+ ${url}/releases/individual/app/x11perf-1.5.tar.bz2
${url}/releases/individual/app/xbiff-1.0.1.tar.bz2
${url}/releases/individual/app/xclipboard-1.0.1.tar.bz2
${url}/releases/individual/app/xconsole-1.0.3.tar.bz2
@@ -26,14 +25,35 @@ source=(${url}/releases/individual/app/oclock-1.0.1.tar.bz2
${url}/releases/individual/app/xload-1.0.2.tar.bz2
${url}/releases/individual/app/xlogo-1.0.1.tar.bz2
${url}/releases/individual/app/xmag-1.0.2.tar.bz2
- ${url}/releases/individual/app/xmessage-1.0.1.tar.bz2
+ ${url}/releases/individual/app/xmessage-1.0.2.tar.bz2
${url}/releases/individual/app/xcalc-1.0.2.tar.bz2
- ${url}/releases/individual/app/xman-1.0.2.tar.bz2
- ${url}/releases/individual/app/xedit-1.0.2.tar.bz2
+ ${url}/releases/individual/app/xman-1.0.3.tar.bz2
+ ${url}/releases/individual/app/xedit-1.1.2.tar.bz2
${url}/releases/individual/app/xmh-1.0.1.tar.bz2)
+md5sums=('91f49547f9ed3cd0137c8b7c3183e360'
+ 'b01e4f71c20fc1c79ed727759c1df40c'
+ '2b1a3d030d87e62a591db8ee4c0072e6'
+ '6b3a6896081f628bf5a2c9129417c86f'
+ '0a6ef08a2ac08ad5c4dd1522eb3788a3'
+ '6e3c5d0297d88e890b6f5df31f73dd60'
+ '31283bfc3c78718ac1bd71e510d4e774'
+ '404f5add4537d22dd109c33e518a5190'
+ '2c6ecedb10dc51adbb64c95f22fd99c2'
+ '0e1a3110bebabecc2897d67a973526b0'
+ '6fc90896b8c786cb1a2100b4167f7874'
+ '033f14f7c4e30d1f4edbb22d5ef86883'
+ 'f66d76abb0f75514ca32272e23cca757'
+ 'b41ed6b4bcfc9897366c27a94d2bf150'
+ '4c5482552f38a7d42398a694cc9b2ee6'
+ '7c6a783e42c88360ac31d259a864a19d'
+ 'b4b561ef11fd184989a6062962e86748'
+ 'd31a99795b9668f047aa11bf36df6df0'
+ '3d3a4b310a65ccce82472ef83acbbf97'
+ '67193be728414d45a1922911e6437991'
+ '656bcbdd41818a8b5a9f7dba77a3eeba')
build() {
- cd ${startdir}/src
+ cd "${srcdir}"
for i in *; do
if [ -d "${i}" ]; then
pushd "${i}"
@@ -47,32 +67,11 @@ build() {
-i Makefile.* || return 1
;;
esac
- ./configure --prefix=/usr --disable-xprint \
+ ./configure --prefix=/usr --disable-xprint --mandir=/usr/share/man \
--with-localealiasfile=/usr/share/X11/locale/locale.alias
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
popd
fi
done
}
-md5sums=('91f49547f9ed3cd0137c8b7c3183e360'
- 'b01e4f71c20fc1c79ed727759c1df40c'
- '6b930326f71993fb54b7203902b387cd'
- '6b3a6896081f628bf5a2c9129417c86f'
- '911addfb7fa402217ddac63e5c1d97c7'
- '6e3c5d0297d88e890b6f5df31f73dd60'
- 'fd06c8b8e3572a0e14af65a49e0dd7d1'
- '404f5add4537d22dd109c33e518a5190'
- '2c6ecedb10dc51adbb64c95f22fd99c2'
- '0e1a3110bebabecc2897d67a973526b0'
- '6fc90896b8c786cb1a2100b4167f7874'
- '033f14f7c4e30d1f4edbb22d5ef86883'
- 'f66d76abb0f75514ca32272e23cca757'
- 'b41ed6b4bcfc9897366c27a94d2bf150'
- '4c5482552f38a7d42398a694cc9b2ee6'
- '7c6a783e42c88360ac31d259a864a19d'
- 'b3674c3a00a089764d86aa94e257ccec'
- 'd31a99795b9668f047aa11bf36df6df0'
- '855f2dbfa2aff58b8b9cd6a1c1120fad'
- 'c56160e93c24ddf17e69891ed50deb72'
- '656bcbdd41818a8b5a9f7dba77a3eeba')
diff --git a/abs/core-testing/xorg-server-utils/PKGBUILD b/abs/core-testing/xorg-server-utils/PKGBUILD
index eb30890..84b4d12 100644
--- a/abs/core-testing/xorg-server-utils/PKGBUILD
+++ b/abs/core-testing/xorg-server-utils/PKGBUILD
@@ -1,17 +1,15 @@
-# $Id: PKGBUILD 3241 2008-06-21 18:04:39Z jgc $
+# $Id: PKGBUILD 19183 2008-11-16 22:56:53Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xorg-server-utils
-pkgver=7.3
-pkgrel=1
+pkgver=7.4
+pkgrel=2
pkgdesc="X.Org utilities required by xorg-server"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('libxfontcache' 'libxi' 'liblbxutil' 'libxrandr>=1.2.1' 'libxxf86misc'
- 'libxaw' 'libxxf86vm' 'libxtrap' 'mcpp>=2.6' 'xtrans')
-makedepends=('pkgconfig' 'xbitmaps' 'xproxymngproto')
+depends=('libxfontcache' 'libxi' 'libxmu' 'libxxf86misc' 'libxrandr' 'libxxf86vm' 'mcpp>=2.6')
+makedepends=('pkgconfig' 'xbitmaps' 'bigreqsproto' 'xtrans')
source=(${url}/releases/individual/app/iceauth-1.0.2.tar.bz2
- ${url}/releases/individual/app/lbxproxy-1.0.1.tar.bz2
${url}/releases/individual/app/rgb-1.0.3.tar.bz2
${url}/releases/individual/app/sessreg-1.0.4.tar.bz2
${url}/releases/individual/app/xcmsdb-1.0.1.tar.bz2
@@ -24,13 +22,8 @@ source=(${url}/releases/individual/app/iceauth-1.0.2.tar.bz2
${url}/releases/individual/app/xrefresh-1.0.2.tar.bz2
${url}/releases/individual/app/xset-1.0.4.tar.bz2
${url}/releases/individual/app/xsetmode-1.0.0.tar.bz2
- ${url}/releases/individual/app/xsetpointer-1.0.1.tar.bz2
- ${url}/releases/individual/app/xsetroot-1.0.2.tar.bz2
- ${url}/releases/individual/app/xstdcmap-1.0.1.tar.bz2
- ${url}/releases/individual/app/xtrap-1.0.2.tar.bz2
- ${url}/releases/individual/app/xvidtune-1.0.1.tar.bz2)
+ ${url}/releases/individual/app/xsetroot-1.0.2.tar.bz2)
md5sums=('7ab8b64edf0212a9d9a3c8129901a450'
- '9d5045a5c76b1fe360221b967a5aa0e9'
'44ea16cc3104de6401bc74035f642357'
'839e968d7197b9563f0fd8a5a3aac2e3'
'8579d5f50ba7f0c4a5bf16b9670fea01'
@@ -43,11 +36,7 @@ md5sums=('7ab8b64edf0212a9d9a3c8129901a450'
'1228f890f86148e4e6ae22aa73118cbb'
'2f41fd983ba4d89419204854936025e2'
'd074e79d380b031d2f60e4cd56538c93'
- '9e5bcbeda4aaf02bfa095e41d30baee4'
- '9af7db9f3052aef0b11636720b3101dd'
- '86ab558441edfb86f853639e4290a754'
- '97a62a011a11f03b46d72851aa298fa8'
- 'e0744594f4e5969b20df28d897781318')
+ '9af7db9f3052aef0b11636720b3101dd')
build() {
cd ${startdir}/src
@@ -56,19 +45,14 @@ build() {
pushd "${i}"
case "${i}" in
xrdb*)
- ./configure --prefix=/usr --with-cpp=/usr/bin/mcpp\ -@old
- ;;
- lbxproxy*)
- sed -e 's|$(libdir)/X11/lbxproxy|$(datadir)/X11/libxproxy|g' \
- -i Makefile.* || return 1
- ./configure --prefix=/usr
+ ./configure --prefix=/usr --mandir=/usr/share/man --with-cpp=/usr/bin/mcpp\ -@old || return 1
;;
*)
- ./configure --prefix=/usr
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
;;
esac
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
popd
fi
done
diff --git a/abs/core-testing/xorg-server/001_fedora_extramodes.patch b/abs/core-testing/xorg-server/001_fedora_extramodes.patch
new file mode 100644
index 0000000..30743b8
--- /dev/null
+++ b/abs/core-testing/xorg-server/001_fedora_extramodes.patch
@@ -0,0 +1,85 @@
+From: Adam Jackson <ajax@redhat.com>
+Date: Sun, 28 Oct 2007 09:37:52 +0100
+Subject: [PATCH] Fedora extra modes list
+
+---
+Index: xorg-server/hw/xfree86/common/extramodes
+===================================================================
+--- xorg-server.orig/hw/xfree86/common/extramodes
++++ xorg-server/hw/xfree86/common/extramodes
+@@ -3,16 +3,75 @@
+ //
+ // $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $
+ //
++// NOTE: Please keep all video modes sorted in order of X res, then Y res for
++// ease of maintenance and readability.
+
+ # 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz
+ ModeLine "832x624" 57.284 832 864 928 1152 624 625 628 667 -Hsync -Vsync
+
++# 1152x864 @ 60.00 Hz (GTF) hsync: 53.70 kHz; pclk: 81.62 MHz
++Modeline "1152x864" 81.62 1152 1216 1336 1520 864 865 868 895 -HSync +Vsync
++
++# 1152x864 @ 70.00 Hz (GTF) hsync: 63.00 kHz; pclk: 96.77 MHz
++Modeline "1152x864" 96.77 1152 1224 1344 1536 864 865 868 900 -HSync +Vsync
++
++# 1152x864 @ 75.00 Hz (GTF) hsync: 67.65 kHz; pclk: 104.99 MHz
++Modeline "1152x864" 104.99 1152 1224 1352 1552 864 865 868 902 -HSync +Vsync
++
++# 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz
++Modeline "1152x864" 119.65 1152 1224 1352 1552 864 865 868 907 -HSync +Vsync
++
++# 1152x864 @ 85Hz (Red Hat custom modeline)
++ModeLine "1152x864" 121.5 1152 1216 1344 1568 864 865 868 911 +hsync -vsync
++
++# 1152x864 @ 100.00 Hz (GTF) hsync: 91.50 kHz; pclk: 143.47 MHz
++Modeline "1152x864" 143.47 1152 1232 1360 1568 864 865 868 915 -HSync +Vsync
++
++# 1360x768 59.96 Hz (CVT) hsync: 47.37 kHz; pclk: 72.00 MHz
++Modeline "1360x768" 72.00 1360 1408 1440 1520 768 771 781 790 +hsync -vsync
++
++# 1360x768 59.80 Hz (CVT) hsync: 47.72 kHz; pclk: 84.75 MHz
++Modeline "1360x768" 84.75 1360 1432 1568 1776 768 771 781 798 -hsync +vsync
++
+ # 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz
+ ModeLine "1400x1050" 122.0 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync
+
++# 1400x1050 @ 70.00 Hz (GTF) hsync: 76.51 kHz; pclk: 145.06 MHz
++Modeline "1400x1050" 145.06 1400 1496 1648 1896 1050 1051 1054 1093 -HSync +Vsync
++
+ # 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz
+ ModeLine "1400x1050" 155.8 1400 1464 1784 1912 1050 1052 1064 1090 +hsync +vsync
+
++# 1400x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 179.26 MHz
++Modeline "1400x1050" 179.26 1400 1504 1656 1912 1050 1051 1054 1103 -HSync +Vsync
++
++# 1440x900 @ 60.00 Hz (CVT) field rate 59.89 Hz; hsync: 55.93 kHz; pclk: 106.50 MHz
++Modeline "1440x900" 106.50 1440 1520 1672 1904 900 903 909 934 -HSync +Vsync
++
++# 1600x1024 for SGI 1600 SW
++ModeLine "1600x1024" 103.125 1600 1600 1656 1664 1024 1024 1029 1030 +Hsync +Vsync
++
++# 1680x1050 59.88 Hz (CVT 1.76MA-R) hsync: 64.67 kHz; pclk: 119.00 MHz
++Modeline "1680x1050" 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync
++
++# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
++Modeline "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
++
++# 1680x1050 69.88 Hz (CVT) hsync: 76.58 kHz; pclk: 174.00 MHz
++Modeline "1680x1050" 174.00 1680 1800 1976 2272 1050 1053 1059 1096 -hsync +vsync
++
++# 1680x1050 74.89 Hz (CVT 1.76MA) hsync: 82.31 kHz; pclk: 187.00 MHz
++Modeline "1680x1050" 187.00 1680 1800 1976 2272 1050 1053 1059 1099 -hsync +vsync
++
++# 1680x1050 84.94 Hz (CVT 1.76MA) hsync: 93.86 kHz; pclk: 214.75 MHz
++Modeline "1680x1050" 214.75 1680 1808 1984 2288 1050 1053 1059 1105 -hsync +vsync
++
++# 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz
++Modeline "1920x1080" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync
++
++# 1920x1200 59.95 Hz (CVT 2.30MA-R) hsync: 74.04 kHz; pclk: 154.00 MHz
++Modeline "1920x1200" 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync
++
+ # 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz
+ Modeline "1920x1440" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync
+
diff --git a/abs/core-testing/xorg-server/PKGBUILD b/abs/core-testing/xorg-server/PKGBUILD
index f9a3401..2dacf0b 100644
--- a/abs/core-testing/xorg-server/PKGBUILD
+++ b/abs/core-testing/xorg-server/PKGBUILD
@@ -1,42 +1,54 @@
+# $Id: PKGBUILD 21903 2008-12-17 20:32:54Z jgc $
+# Maintainer: Alexander Baldeck <kth5@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xorg-server
-pkgver=1.4.2
-pkgrel=2
-_mesaver=7.0.3
+pkgver=1.5.3
+pkgrel=4
pkgdesc="X.Org X servers"
arch=('i686' 'x86_64')
license=('custom')
url="http://xorg.freedesktop.org"
-depends=('libxkbui' 'ncurses' 'libxxf86misc' 'libxfont'
- 'libxaw' 'libxxf86vm' 'xcursor-themes'
- 'xkeyboard-config' 'xorg-server-utils' 'xorg-utils' 'libdrm>=2.3.0'
- 'xorg-fonts-misc' 'pixman>=0.10' 'xbitmaps')
-makedepends=('pkgconfig' 'xf86driproto' 'xcmiscproto' 'xtrans' 'bigreqsproto'
- 'xf86bigfontproto' 'resourceproto' 'evieext' 'damageproto>=1.1.0'
- 'compositeproto>=0.4' 'scrnsaverproto' 'libxres' 'xorg-util-macros'
- 'randrproto' 'glproto>=1.4.9' 'renderproto>=0.9.3' 'autoconf'
- 'automake' 'libtool' 'bison' 'flex' 'gcc' 'libxrender'
- 'libxfixes' 'quilt' 'mesa')
+depends=('libx11>=1.1.5' 'libxkbui>=1.0.2' 'libgl' 'libxfont>=1.3.3' 'openssl>=0.9.8h' 'libxxf86misc>=1.0.1' 'libpciaccess>=0.10.5' 'libxv>=1.0.4' 'libxaw>=1.0.4' 'pixman>=0.11.10' 'hal>=0.5.11' 'xcursor-themes' 'xkeyboard-config>=1.3' 'xorg-server-utils' 'xorg-utils' 'xorg-fonts-misc' 'xbitmaps' 'libdrm>=2.3.1' 'diffutils' 'xf86-input-evdev')
+makedepends=('glproto>=1.4.9' 'xf86driproto>=2.0.4' 'mesa>=7.2' 'randrproto>=1.2.2' 'renderproto>=0.9.3' 'scrnsaverproto>=1.1.0' 'fontsproto>=2.0.2' 'videoproto>=2.2.2' 'compositeproto>=0.4' 'trapproto>=3.4.3' 'resourceproto>=1.0.2' 'xineramaproto>=1.1.2' 'evieext>=1.0.2' 'libxkbfile>=1.0.5' 'libxmu>=1.0.4' 'libxpm>=3.5.7' 'libxxf86dga>=1.0.2' 'inputproto>=1.4.4' 'xcmiscproto>=1.1.2' 'bigreqsproto' 'libdrm=2.3.1' 'xtrans')
options=('!libtool')
provides=('x-server')
groups=('xorg')
install=xorg-server.install
source=(${url}/releases/individual/xserver/${pkgname}-${pkgver}.tar.bz2
- http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2
- ftp://ftp.archlinux.org/other/xorg-server/xorg-server-patches-1.4.2-1.tar.bz2)
-md5sums=('fa2915ae377f61c340a18ebef484b64b'
- 'e6e6379d7793af40a6bc3ce1bace572e'
- 'bc907d6d69b55b445c3046a4d7ecc8ef')
+ xserver-1.5-branch-4970d.patch
+ 001_fedora_extramodes.patch
+ xorg-redhat-die-ugly-pattern-die-die-die.patch
+ xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch
+ xserver-1.5.3-AEI-on-by-default.patch)
+md5sums=('308971036e25250e7fe3cccfd5a120f8'
+ '61f9bb524501247dce647b218ad14347'
+ '033427f2b406cba8dd6103ff374e7156'
+ '1a336eb22e27cbf443ec5a2ecddfa93c'
+ '7b03ba9b75d795e4f7fdfaa550d97159'
+ '63d1d61d217005db7c23c4a98fc3e7eb')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- quilt push -a || return 1
- libtoolize --force --copy || return 1
- aclocal || return 1
- autoconf || return 1
- automake --add-missing || return 1
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # Upstream commits from server-1.5 branch
+ patch -Np1 -i "${srcdir}/xserver-1.5-branch-4970d.patch" || return 1
+
+ # extramodes
+ patch -Np1 -i "${srcdir}/001_fedora_extramodes.patch" || return 1
+
+ # Get rid of the ugly pattern
+ patch -Np3 -i "${srcdir}/xorg-redhat-die-ugly-pattern-die-die-die.patch" || return 1
+
+ # Patch from Fedora to fix FS#12248
+ patch -Np1 -i "${srcdir}/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch" || return 1
+
+ # Upstream patch to fix evdev issues with >=2.1.0
+ patch -Np1 -i "${srcdir}/xserver-1.5.3-AEI-on-by-default.patch" || return 1
+
+ # Fix dbus config path
+ sed -i -e 's/\$(sysconfdir)/\/etc/' config/Makefile.* || return 1
+
./configure --prefix=/usr \
- --with-mesa-source=${startdir}/src/Mesa-${_mesaver} \
--enable-ipv6 \
--enable-dri \
--disable-dmx \
@@ -51,39 +63,43 @@ build() {
--enable-glx-tls \
--enable-xorgcfg \
--enable-kdrive \
+ --enable-install-setuid \
+ --enable-config-hal \
+ --enable-config-dbus \
--disable-xfbdev \
--disable-xfake \
--disable-xsdl \
--disable-kdrive-vesa \
- --enable-install-setuid \
+ --disable-dri2 \
--disable-xprint \
+ --disable-static \
--sysconfdir=/etc/X11 \
--localstatedir=/var \
--with-default-font-path=/usr/share/fonts/misc,/usr/share/fonts/100dpi:unscaled,/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/TTF,/usr/share/fonts/Type1 \
- --with-rgb-path=/usr/share/X11/rgb \
--with-xkb-path=/usr/share/X11/xkb \
- --with-xkb-output=/usr/share/X11/xkb/compiled \
- --with-dri-driver-path=/usr/lib/xorg/modules/dri \
- --disable-config-hal \
- --disable-static --enable-null-root-cursor
+ --with-xkb-output=/var/lib/xkb \
+ --with-dri-driver-path=/usr/lib/xorg/modules/dri || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
- install -m755 -d ${startdir}/pkg/etc/X11 || return 1
- install -m755 -d ${startdir}/pkg/var/lib || return 1
- mv ${startdir}/pkg/usr/share/X11/xkb/compiled ${startdir}/pkg/var/lib/xkb
- ln -sf /var/lib/xkb ${startdir}/pkg/usr/share/X11/xkb/compiled || return 1
+ rm -rf "${pkgdir}/var/log" || return 1
- cd ${startdir}/pkg/usr/lib/xorg/modules/extensions
- mv libGLcore.so libGLcore.xorg
- mv libglx.so libglx.xorg
+ install -m755 -d "${pkgdir}/etc/X11" || return 1
+ install -m755 -d "${pkgdir}/var/lib/xkb" || return 1
# No longer needed, but as nvidia-utils mangles these files,
# keep them like this so they can be restored
- mv ${startdir}/pkg/usr/lib/xorg/modules/libwfb.so \
- ${startdir}/pkg/usr/lib/xorg/modules/libwfb.so.1.4 || return 1
+ mv "${pkgdir}/usr/lib/xorg/modules/libwfb.so" \
+ "${pkgdir}/usr/lib/xorg/modules/libwfb.so.1.4" || return 1
+
+ # Needed for non-mesa drivers, libgl will restore it
+ mv "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so" \
+ "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.xorg" || return 1
+
+ mv "${pkgdir}/usr/lib/xorg/modules/extensions/libdri.so" \
+ "${pkgdir}/usr/lib/xorg/modules/extensions/libdri.xorg" || return 1
- install -m755 -d ${startdir}/pkg/usr/share/licenses/${pkgname}
- install -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
}
diff --git a/abs/core-testing/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch b/abs/core-testing/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch
new file mode 100644
index 0000000..4e782f1
--- /dev/null
+++ b/abs/core-testing/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch
@@ -0,0 +1,16 @@
+Remove the default root window grey stipple pattern, replacing it with
+blackness.
+
+--- xc/programs/Xserver/dix/window.c.die-ugly-pattern-die-die-die Tue Feb 12 16:33:04 2002
++++ xc/programs/Xserver/dix/window.c Tue Feb 12 16:45:32 2002
+@@ -119,8 +119,8 @@
+ *
+ ******/
+
+-static unsigned char _back_lsb[4] = {0x88, 0x22, 0x44, 0x11};
+-static unsigned char _back_msb[4] = {0x11, 0x44, 0x22, 0x88};
++static unsigned char _back_lsb[4] = {0x00, 0x00, 0x00, 0x00};
++static unsigned char _back_msb[4] = {0x00, 0x00, 0x00, 0x00};
+
+ int screenIsSaved = SCREEN_SAVER_OFF;
+
diff --git a/abs/core-testing/xorg-server/xorg-server.install b/abs/core-testing/xorg-server/xorg-server.install
index f7ff03a..c67438d 100644
--- a/abs/core-testing/xorg-server/xorg-server.install
+++ b/abs/core-testing/xorg-server/xorg-server.install
@@ -1,12 +1,33 @@
post_install() {
- rm -f /usr/lib/xorg/modules/libwfb.so
- ln -sf libwfb.so.1.4 /usr/lib/xorg/modules/libwfb.so
+ rm -f usr/lib/xorg/modules/libwfb.so
+ ln -sf libwfb.so.1.4 usr/lib/xorg/modules/libwfb.so
+
+ cmp usr/lib/xorg/modules/extensions/libdri.so usr/lib/xorg/modules/extensions/libglx.xorg >/dev/null 2>&1 && rm -f usr/lib/xorg/modules/extensions/libdri.so
+
+ # If the symlink is dead or non-existent, remove it and make a new one
+ if [ ! -e usr/lib/xorg/modules/extensions/libdri.so ]; then
+ rm -f usr/lib/xorg/modules/extensions/libdri.so
+ ln -sf libdri.xorg usr/lib/xorg/modules/extensions/libdri.so
+ fi
}
post_upgrade() {
+ if [ "`vercmp $2 1.4.99.906`" -lt 0 ]; then
+ cat << _EOF
+
+ Input device handling has changed in xorg-server 1.5.
+ Please read http://wiki.archlinux.org/index.php/Xorg_input_hotplugging.
+
+_EOF
+ fi
post_install
}
post_remove() {
rm -f /usr/lib/xorg/modules/libwfb.so
+
+ # If the symlink is dead, remove it
+ if [ ! -e usr/lib/xorg/modules/extensions/libdri.so ]; then
+ rm -f usr/lib/xorg/modules/extensions/libdri.so
+ fi
}
diff --git a/abs/core-testing/xorg-server/xserver-1.5-branch-4970d.patch b/abs/core-testing/xorg-server/xserver-1.5-branch-4970d.patch
new file mode 100644
index 0000000..23cdab0
--- /dev/null
+++ b/abs/core-testing/xorg-server/xserver-1.5-branch-4970d.patch
@@ -0,0 +1,246 @@
+diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/config/x11-input.fdi xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/config/x11-input.fdi
+--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/config/x11-input.fdi 2008-11-05 20:39:01.000000000 +0000
++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/config/x11-input.fdi 2008-12-16 19:19:00.000000000 +0000
+@@ -64,8 +64,8 @@
+ <merge key="input.x11_options.XkbRules" type="string">base</merge>
+
+ <!-- If we're using Linux, we use evdev by default (falling back to
+- keyboard otherwise). -->
+- <merge key="input.x11_driver" type="string">keyboard</merge>
++ kbd otherwise). -->
++ <merge key="input.x11_driver" type="string">kbd</merge>
+ <merge key="input.x11_options.XkbModel" type="string">pc105</merge>
+ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
+ string="Linux">
+diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/exa/exa_accel.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/exa/exa_accel.c
+--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/exa/exa_accel.c 2008-11-05 20:39:01.000000000 +0000
++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/exa/exa_accel.c 2008-12-16 19:19:00.000000000 +0000
+@@ -398,6 +398,10 @@
+ RegionPtr srcregion = NULL, dstregion = NULL;
+ xRectangle *rects;
+
++ /* avoid doing copy operations if no boxes */
++ if (nbox == 0)
++ return;
++
+ pSrcPixmap = exaGetDrawablePixmap (pSrcDrawable);
+ pDstPixmap = exaGetDrawablePixmap (pDstDrawable);
+
+diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/common/xf86Helper.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/common/xf86Helper.c
+--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/common/xf86Helper.c 2008-11-05 20:39:01.000000000 +0000
++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/common/xf86Helper.c 2008-12-16 19:19:00.000000000 +0000
+@@ -448,10 +448,6 @@
+ #define GLOBAL_DEFAULT_DEPTH 24
+ #endif
+
+-#ifndef GLOBAL_DEFAULT_FBBPP
+-#define GLOBAL_DEFAULT_FBBPP 32
+-#endif
+-
+ _X_EXPORT Bool
+ xf86SetDepthBpp(ScrnInfoPtr scrp, int depth, int dummy, int fbbpp,
+ int depth24flags)
+@@ -529,7 +525,6 @@
+ if (depth > 0)
+ scrp->depth = depth;
+ } else {
+- scrp->bitsPerPixel = GLOBAL_DEFAULT_FBBPP;
+ scrp->depth = GLOBAL_DEFAULT_DEPTH;
+ }
+ }
+diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/os-support/linux/int10/linux.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/os-support/linux/int10/linux.c
+--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/os-support/linux/int10/linux.c 2008-11-05 20:39:01.000000000 +0000
++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/os-support/linux/int10/linux.c 2008-12-16 19:19:00.000000000 +0000
+@@ -1,6 +1,6 @@
+ /*
+ * linux specific part of the int10 module
+- * Copyright 1999, 2000, 2001, 2002, 2003, 2004 Egbert Eich
++ * Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2008 Egbert Eich
+ */
+ #ifdef HAVE_XORG_CONFIG_H
+ #include <xorg-config.h>
+@@ -357,7 +357,10 @@
+ "shmat(low_mem) error: %s\n",strerror(errno));
+ return FALSE;
+ }
+-
++ if (mprotect((void*)0, V_RAM, PROT_READ|PROT_WRITE|PROT_EXEC) != 0)
++ xf86DrvMsg(pInt->scrnIndex, X_ERROR,
++ "Cannot set EXEC bit on low memory: %s\n", strerror(errno));
++
+ if (((linuxInt10Priv*)pInt->private)->highMem >= 0) {
+ addr = shmat(((linuxInt10Priv*)pInt->private)->highMem,
+ (char*)HIGH_MEM, 0);
+@@ -368,6 +371,11 @@
+ "shmget error: %s\n",strerror(errno));
+ return FALSE;
+ }
++ if (mprotect((void*)HIGH_MEM, HIGH_MEM_SIZE,
++ PROT_READ|PROT_WRITE|PROT_EXEC) != 0)
++ xf86DrvMsg(pInt->scrnIndex, X_ERROR,
++ "Cannot set EXEC bit on high memory: %s\n",
++ strerror(errno));
+ } else {
+ if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) {
+ if (mmap((void *)(V_BIOS), SYS_BIOS - V_BIOS,
+diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaa.h xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaa.h
+--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaa.h 2008-11-05 20:39:01.000000000 +0000
++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaa.h 2008-12-16 19:19:00.000000000 +0000
+@@ -2,6 +2,10 @@
+ #ifndef _XAA_H
+ #define _XAA_H
+
++#define XAA_VERSION_MAJOR 1
++#define XAA_VERSION_MINOR 2
++#define XAA_VERSION_RELEASE 1
++
+ /*
+
+ ******** OPERATION SPECIFIC FLAGS *********
+diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaaInitAccel.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaaInitAccel.c
+--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaaInitAccel.c 2008-11-05 20:39:01.000000000 +0000
++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaaInitAccel.c 2008-12-16 19:19:00.000000000 +0000
+@@ -103,7 +103,9 @@
+ MODINFOSTRING1,
+ MODINFOSTRING2,
+ XORG_VERSION_CURRENT,
+- 1, 2, 0,
++ XAA_VERSION_MAJOR,
++ XAA_VERSION_MINOR,
++ XAA_VERSION_RELEASE,
+ ABI_CLASS_VIDEODRV, /* requires the video driver ABI */
+ ABI_VIDEODRV_VERSION,
+ MOD_CLASS_NONE,
+diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaawrap.h xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaawrap.h
+--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaawrap.h 2008-11-05 20:39:01.000000000 +0000
++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaawrap.h 2008-12-16 19:19:00.000000000 +0000
+@@ -48,8 +48,8 @@
+ XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\
+ GCFuncs *oldFuncs = pGC->funcs;\
+ pGC->funcs = pGCPriv->wrapFuncs;\
+- pGC->ops = pGCPriv->wrapOps
+-
++ pGC->ops = pGCPriv->wrapOps; \
++ SYNC_CHECK(pGC)
+
+ #define XAA_PIXMAP_OP_EPILOGUE(pGC)\
+ pGCPriv->wrapOps = pGC->ops;\
+diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/mi/miinitext.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/mi/miinitext.c
+--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/mi/miinitext.c 2008-11-05 20:39:01.000000000 +0000
++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/mi/miinitext.c 2008-12-16 19:19:00.000000000 +0000
+@@ -661,7 +661,8 @@
+ #endif
+
+ #ifdef GLXEXT
+- GlxPushProvider(&__glXDRISWRastProvider);
++ if (serverGeneration == 1)
++ GlxPushProvider(&__glXDRISWRastProvider);
+ if (!noGlxExtension) GlxExtensionInit();
+ #endif
+ }
+diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/os/utils.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/os/utils.c
+--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/os/utils.c 2008-11-05 20:39:01.000000000 +0000
++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/os/utils.c 2008-12-16 19:19:00.000000000 +0000
+@@ -1702,7 +1702,7 @@
+ int pid;
+ } *pidlist;
+
+-void (*old_alarm)(int) = NULL; /* XXX horrible awful hack */
++OsSigHandlerPtr old_alarm = NULL; /* XXX horrible awful hack */
+
+ pointer
+ Popen(char *command, char *type)
+@@ -1726,7 +1726,7 @@
+ }
+
+ /* Ignore the smart scheduler while this is going on */
+- old_alarm = signal(SIGALRM, SIG_IGN);
++ old_alarm = OsSignal(SIGALRM, SIG_IGN);
+ if (old_alarm == SIG_ERR) {
+ perror("signal");
+ return NULL;
+@@ -1737,7 +1737,7 @@
+ close(pdes[0]);
+ close(pdes[1]);
+ xfree(cur);
+- if (signal(SIGALRM, old_alarm) == SIG_ERR)
++ if (OsSignal(SIGALRM, old_alarm) == SIG_ERR)
+ perror("signal");
+ return NULL;
+ case 0: /* child */
+@@ -1914,7 +1914,7 @@
+ /* allow EINTR again */
+ OsReleaseSignals ();
+
+- if (old_alarm && signal(SIGALRM, old_alarm) == SIG_ERR) {
++ if (old_alarm && OsSignal(SIGALRM, old_alarm) == SIG_ERR) {
+ perror("signal");
+ return -1;
+ }
+diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/xkb/xkbEvents.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/xkb/xkbEvents.c
+--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/xkb/xkbEvents.c 2008-11-05 20:39:01.000000000 +0000
++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/xkb/xkbEvents.c 2008-12-16 19:19:00.000000000 +0000
+@@ -109,7 +109,7 @@
+ register CARD16 changed,bState;
+
+ interest = kbd->xkb_interest;
+- if (!interest)
++ if (!interest || !kbd->key || !kbd->key->xkbInfo)
+ return;
+ xkbi = kbd->key->xkbInfo;
+ state= &xkbi->state;
+@@ -168,6 +168,9 @@
+ unsigned time = 0,initialized;
+ CARD16 changed;
+
++ if (!kbd->key || !kbd->key->xkbInfo)
++ return;
++
+ xkbi = kbd->key->xkbInfo;
+ initialized= 0;
+
+@@ -291,7 +294,7 @@
+ Time time = 0;
+
+ interest = kbd->xkb_interest;
+- if (!interest)
++ if (!interest || !kbd->key || !kbd->key->xkbInfo)
+ return;
+ xkbi = kbd->key->xkbInfo;
+
+@@ -401,6 +404,9 @@
+ Time time = 0;
+ XID winID = 0;
+
++ if (!kbd->key || !kbd->key->xkbInfo)
++ return;
++
+ xkbi = kbd->key->xkbInfo;
+
+ if ((force||(xkbi->desc->ctrls->enabled_ctrls&XkbAudibleBellMask))&&
+@@ -616,11 +622,12 @@
+ XkbInterestPtr interest;
+ Time time = 0;
+
+- xkbi = kbd->key->xkbInfo;
+ interest = kbd->xkb_interest;
+- if (!interest)
++ if (!interest || !kbd->key || !kbd->key->xkbInfo)
+ return;
+
++ xkbi = kbd->key->xkbInfo;
++
+ initialized = 0;
+ pEv->mods= xkbi->state.mods;
+ pEv->group= xkbi->state.group;
+@@ -996,6 +1003,10 @@
+ ClientPtr client = NULL;
+
+ found= False;
++
++ if (!dev->key || !dev->key->xkbInfo)
++ return found;
++
+ autoCtrls= autoValues= 0;
+ if ( dev->xkb_interest ) {
+ interest = dev->xkb_interest;
diff --git a/abs/core-testing/xorg-server/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch b/abs/core-testing/xorg-server/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch
new file mode 100644
index 0000000..2ac6095
--- /dev/null
+++ b/abs/core-testing/xorg-server/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch
@@ -0,0 +1,69 @@
+From 638cab7e1dc3711f7fb04155bcdabf4b8895cc5e Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon, 4 Aug 2008 17:08:36 +0930
+Subject: [PATCH] xfree86: force SwitchCoreKeyboard for evdev devices (updated).
+
+If an evdev keyboard device is added through the HAL mechanism, force a
+SwitchCoreKeyboard to load the evdev map into the VCK. This way, by the time a
+client starts the evdev keymap is already there, leading to less pain lateron.
+
+Works if:
+- all keyboards are hotplugged through HAL, and/or
+- the xorg.conf keyboard uses the kbd driver.
+
+Has no effect (i.e. busted keymaps) if:
+- an evdev keyboard device has been specified in the xorg.conf.
+- we don't have a device at startup and plug a device in after starting the
+ desktop environment.
+- if the device we use isn't the first one reported by HAL.
+
+If HAL isn't set up, this patch is a noop.
+---
+ hw/xfree86/common/xf86Xinput.c | 31 +++++++++++++++++++++++++++++++
+ 1 files changed, 31 insertions(+), 0 deletions(-)
+
+diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
+index 710e787..dacc3dc 100644
+--- a/hw/xfree86/common/xf86Xinput.c
++++ b/hw/xfree86/common/xf86Xinput.c
+@@ -423,6 +423,37 @@ NewInputDeviceRequest (InputOption *options, DeviceIntPtr *pdev)
+ (!is_auto || xf86Info.autoEnableDevices))
+ EnableDevice(dev);
+
++ /* XXX: The VCK always starts with built-in defaults for keymap. These
++ * defaults are different to the evdev ones. When the first key is hit on
++ * an extension device, the keymap is copied into the VCK's and any
++ * changes made at runtime to the VCK map are lost.
++ *
++ * Assumption: if we have at least one evdev keyboard device, we can
++ * ignore kbd devices. Force a SwitchCoreKeyboard so the VCK has the same
++ * keymap as we do.
++ *
++ * Next time we hit a key, we don't change the map over anymore (see
++ * SwitchCoreKeyboard), and live happily ever after.
++ * Until we have 2 physical keyboards. Or the first real keyboard isn't
++ * actually the one we use. Oh well.
++ *
++ */
++ if (dev->key)
++ {
++ InputInfoPtr info;
++
++ /* Search if there is one other keyboard that uses evdev. */
++ for (info = xf86InputDevs; info; info = info->next)
++ {
++ if (info != pInfo && info->dev && info->dev->key &&
++ (strcmp(info->drv->driverName, "evdev") == 0))
++ break;
++ }
++
++ if (!info)
++ SwitchCoreKeyboard(dev);
++ }
++
+ *pdev = dev;
+ return Success;
+
+--
+1.5.5.1
+
diff --git a/abs/core-testing/xorg-server/xserver-1.5.3-AEI-on-by-default.patch b/abs/core-testing/xorg-server/xserver-1.5.3-AEI-on-by-default.patch
new file mode 100644
index 0000000..d6cdf83
--- /dev/null
+++ b/abs/core-testing/xorg-server/xserver-1.5.3-AEI-on-by-default.patch
@@ -0,0 +1,108 @@
+From 15bf414daa83967fd1f24bd48bd01ea941c11ce2 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@redhat.com>
+Date: Thu, 13 Nov 2008 10:17:33 +1000
+Subject: [PATCH] xfree86: AllowEmptyInput is true by default - update the xf86Info defaults.
+
+Also set AutoAddDevices and AutoEnableDevices to their defaults.
+
+And in doing so, switch the rest of the defaults over to named intializers.
+
+Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
+(cherry picked from commit 0b56b44addc323a00eb7cd86240cb0dd4275bcf8)
+
+Conflicts:
+
+ hw/xfree86/common/xf86Globals.c
+---
+ hw/xfree86/common/xf86Globals.c | 69 ++++++++++++++++++++------------------
+ 1 files changed, 36 insertions(+), 33 deletions(-)
+
+diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c
+index f5babbc..a5edd82 100644
+--- a/hw/xfree86/common/xf86Globals.c
++++ b/hw/xfree86/common/xf86Globals.c
+@@ -95,45 +95,48 @@ InputInfoPtr xf86InputDevs = NULL;
+ /* Globals that video drivers may not access */
+
+ xf86InfoRec xf86Info = {
+- -1, /* consoleFd */
+- -1, /* vtno */
+- FALSE, /* vtSysreq */
+- SKWhenNeeded, /* ddxSpecialKeys */
+- NULL, /* pMouse */
++ .consoleFd = -1,
++ .vtno = -1,
++ .vtSysreq = FALSE,
++ .ddxSpecialKeys = SKWhenNeeded,
++ .pMouse = NULL,
+ #ifdef XINPUT
+- NULL, /* mouseLocal */
++ .mouseLocal = NULL,
+ #endif
+- -1, /* lastEventTime */
+- FALSE, /* vtRequestsPending */
+- FALSE, /* inputPending */
+- FALSE, /* dontVTSwitch */
+- FALSE, /* dontZap */
+- FALSE, /* dontZoom */
+- FALSE, /* notrapSignals */
+- FALSE, /* caughtSignal */
+- FALSE, /* sharedMonitor */
+- NULL, /* currentScreen */
++ .lastEventTime = -1,
++ .vtRequestsPending = FALSE,
++ .inputPending = FALSE,
++ .dontVTSwitch = FALSE,
++ .dontZap = FALSE,
++ .dontZoom = FALSE,
++ .notrapSignals = FALSE,
++ .caughtSignal = FALSE,
++ .sharedMonitor = FALSE,
++ .currentScreen = NULL,
+ #ifdef CSRG_BASED
+- -1, /* screenFd */
+- -1, /* consType */
++ .screenFd = -1,
++ .consType = -1,
+ #endif
+- FALSE, /* allowMouseOpenFail */
+- TRUE, /* vidModeEnabled */
+- FALSE, /* vidModeAllowNonLocal */
+- TRUE, /* miscModInDevEnabled */
+- FALSE, /* miscModInDevAllowNonLocal */
+- PCIOsConfig, /* pciFlags */
+- Pix24DontCare, /* pixmap24 */
+- X_DEFAULT, /* pix24From */
++ .allowMouseOpenFail = FALSE,
++ .vidModeEnabled = TRUE,
++ .vidModeAllowNonLocal = FALSE,
++ .miscModInDevEnabled = TRUE,
++ .miscModInDevAllowNonLocal = FALSE,
++ .pciFlags = PCIOsConfig,
++ .pixmap24 = Pix24DontCare,
++ .pix24From = X_DEFAULT,
+ #ifdef __i386__
+- FALSE, /* pc98 */
++ .pc98 = FALSE,
+ #endif
+- TRUE, /* pmFlag */
+- LogNone, /* syncLog */
+- 0, /* estimateSizesAggressively */
+- FALSE, /* kbdCustomKeycodes */
+- FALSE, /* disableRandR */
+- X_DEFAULT /* randRFrom */
++ .pmFlag = TRUE,
++ .log = LogNone,
++ .estimateSizesAggressively = 0,
++ .kbdCustomKeycodes = FALSE,
++ .disableRandR = FALSE,
++ .randRFrom = X_DEFAULT,
++ .allowEmptyInput = TRUE,
++ .autoAddDevices = TRUE,
++ .autoEnableDevices = TRUE
+ };
+ const char *xf86ConfigFile = NULL;
+ const char *xf86InputDeviceList = NULL;
+--
+1.6.0.3
+
diff --git a/abs/core-testing/xorg-util-macros/PKGBUILD b/abs/core-testing/xorg-util-macros/PKGBUILD
index 8388da6..af3786a 100644
--- a/abs/core-testing/xorg-util-macros/PKGBUILD
+++ b/abs/core-testing/xorg-util-macros/PKGBUILD
@@ -1,21 +1,21 @@
-# $Id: PKGBUILD 3239 2008-06-21 17:46:04Z jgc $
+# $Id: PKGBUILD 21902 2008-12-17 20:27:32Z jgc $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xorg-util-macros
-pkgver=1.1.6
+pkgver=1.2.1
pkgrel=1
pkgdesc="X.Org Autotools macros"
arch=(i686 x86_64)
license=('custom')
url="http://xorg.freedesktop.org/"
source=(${url}/releases/individual/util/util-macros-${pkgver}.tar.bz2)
-md5sums=('5b82bf7c25112f2ce7e2a3638a91a83c')
+md5sums=('dc7ddaf9bea8b341510efe4dac125af4')
build() {
- cd ${startdir}/src/util-macros-${pkgver}
+ cd "${srcdir}/util-macros-${pkgver}"
./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
- install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
- install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname} || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
}
diff --git a/abs/core-testing/xorg-utils/PKGBUILD b/abs/core-testing/xorg-utils/PKGBUILD
index 6fe2d0f..61a55ce 100644
--- a/abs/core-testing/xorg-utils/PKGBUILD
+++ b/abs/core-testing/xorg-utils/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 18574 2008-11-07 22:08:19Z jgc $
+# $Id: PKGBUILD 18946 2008-11-12 04:14:33Z eric $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xorg-utils
@@ -8,7 +8,7 @@ pkgdesc="Collection of client utilities used to query the X server"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('libxxf86dga' 'libxi' 'libxxf86misc' 'libxtst' 'libxinerama' 'libxv'
- 'libdmx' 'libxft' 'libxaw')
+ 'libdmx' 'libxft' 'libxaw>=1.0.5')
makedepends=('pkgconfig' 'mesa')
source=(${url}/releases/individual/app/xdpyinfo-1.0.3.tar.bz2
${url}/releases/individual/app/xdriinfo-1.0.2.tar.bz2
@@ -21,16 +21,11 @@ source=(${url}/releases/individual/app/xdpyinfo-1.0.3.tar.bz2
${url}/releases/individual/app/xprop-1.0.4.tar.bz2
${url}/releases/individual/app/xvinfo-1.0.2.tar.bz2
${url}/releases/individual/app/xwininfo-1.0.4.tar.bz2)
-md5sums=('b7cbab6cbcd12bf7ad65dbc12d86e104'
- 'a5ec51ed9f0a55dc3462d90d52ff899c'
- 'a9532c3d1683c99bb5df1895cb3a60b1'
- 'c72abd90f50ef459bc14b39ec9fcc7f8'
- '288fe4cf8a990e4e602aac16dd9109fb'
- '69adcda848479acc3b82b3928812d191'
- '44473b880d26bfbe8b3d4d72b183cba7'
- '28958248590ff60ecd70e8f590d977b7'
- '48aa8fd78802f477dcbf9ef0dfd9f783'
- 'e1e318436f49e2f0f3764593dadd9ad2'
+md5sums=('b7cbab6cbcd12bf7ad65dbc12d86e104' 'a5ec51ed9f0a55dc3462d90d52ff899c'\
+ 'a9532c3d1683c99bb5df1895cb3a60b1' 'c72abd90f50ef459bc14b39ec9fcc7f8'\
+ '288fe4cf8a990e4e602aac16dd9109fb' '69adcda848479acc3b82b3928812d191'\
+ '44473b880d26bfbe8b3d4d72b183cba7' '28958248590ff60ecd70e8f590d977b7'\
+ '48aa8fd78802f477dcbf9ef0dfd9f783' 'e1e318436f49e2f0f3764593dadd9ad2'\
'e2a9bf5ab7f2a0866700a3b49dd8c6bf')
build() {
@@ -38,7 +33,7 @@ build() {
for i in *; do
if [ -d "${i}" ]; then
pushd "${i}"
- ./configure --prefix=/usr || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
make || return 1
make DESTDIR="${pkgdir}" install || return 1
popd
diff --git a/abs/core-testing/xorg-xkb-utils/PKGBUILD b/abs/core-testing/xorg-xkb-utils/PKGBUILD
index 5bfac78..15ab306 100644
--- a/abs/core-testing/xorg-xkb-utils/PKGBUILD
+++ b/abs/core-testing/xorg-xkb-utils/PKGBUILD
@@ -1,33 +1,31 @@
-# $Id: PKGBUILD 4399 2008-07-06 20:26:41Z jgc $
+# $Id: PKGBUILD 18690 2008-11-08 17:01:43Z jgc $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=xorg-xkb-utils
-pkgver=7.3
+pkgver=7.4
pkgrel=1
pkgdesc="X.org keyboard utilities"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
-depends=('libxaw' 'libxkbfile')
+depends=('libxaw>=1.0.5' 'libxkbfile')
makedepends=(pkgconfig)
source=(${url}/releases/individual/app/xkbutils-1.0.1.tar.bz2
${url}/releases/individual/app/xkbcomp-1.0.5.tar.bz2
${url}/releases/individual/app/xkbevd-1.0.2.tar.bz2
- ${url}/releases/individual/app/xkbprint-1.0.1.tar.bz2
${url}/releases/individual/app/setxkbmap-1.0.4.tar.bz2)
md5sums=('84396a3dd75337caaae29d8fa5616fb1'
'6cc96c3e4ed5d9802fe717beac008f19'
'68f2a143716c23b566f8509d9498f516'
- 'b98ae2d8b21c545b7b322d0b302efefa'
'6fab3bb176be9e510c5613d054ef1ca4')
build() {
- cd ${startdir}/src
+ cd "${srcdir}"
for i in *; do
if [ -d "${i}" ]; then
pushd "${i}"
- ./configure --prefix=/usr
+ ./configure --prefix=/usr || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ make DESTDIR="${pkgdir}" install || return 1
popd
fi
done
diff --git a/abs/core-testing/xterm/PKGBUILD b/abs/core-testing/xterm/PKGBUILD
index ced251a..f3ac735 100644
--- a/abs/core-testing/xterm/PKGBUILD
+++ b/abs/core-testing/xterm/PKGBUILD
@@ -1,21 +1,22 @@
-# $Id: PKGBUILD 3697 2008-06-29 12:44:48Z jgc $
+# $Id: PKGBUILD 18684 2008-11-08 16:46:33Z jgc $
# ppc Maintainer: Alexander Baldeck <alexander@archlinux.org>
# i686 Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xterm
-pkgver=235
+pkgver=237
pkgrel=1
pkgdesc="X Terminal Emulator"
arch=(i686 x86_64)
url="http://invisible-island.net/xterm/"
-depends=('libxft' 'libxaw' 'ncurses' 'xorg-apps')
+depends=('libxft' 'libxaw>=1.0.5' 'ncurses' 'xorg-apps')
groups=('xorg')
source=(ftp://invisible-island.net/${pkgname}/${pkgname}-${pkgver}.tgz)
-md5sums=('5060cab9cef0ea09a24928f3c7fbde2b')
+md5sums=('6d5f9e124fd3e09487f47c66da8c7345')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr \
--libdir=/etc \
+ --mandir=/usr/share/man \
--with-app-defaults=/usr/share/X11/app-defaults/ \
--with-x \
--disable-full-tgetent \
@@ -38,6 +39,6 @@ build() {
--enable-mini-luit \
--enable-narrowproto || return 1
make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
- chmod 0755 ${startdir}/pkg/usr/bin/xterm || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ chmod 0755 "${pkgdir}/usr/bin/xterm" || return 1
}