ChangeLog                        |  181 ++++++++
 debian/changelog                 |    6 
 man/radeon.man                   |   10 
 src/AtomBios/includes/ObjectID.h |   36 +
 src/AtomBios/includes/atombios.h |  803 ++++++++++++++++++++++++++++++++-------
 src/Makefile.am                  |    2 
 src/atombios_crtc.c              |    2 
 src/atombios_output.c            |  203 ++++-----
 src/legacy_crtc.c                |    5 
 src/radeon.h                     |   16 
 src/radeon_atombios.c            |  168 +++++++-
 src/radeon_atombios.h            |    6 
 src/radeon_bios.c                |   29 -
 src/radeon_crtc.c                |    8 
 src/radeon_cursor.c              |    2 
 src/radeon_driver.c              |   28 -
 src/radeon_drm.h                 |    5 
 src/radeon_legacy_memory.c       |  117 +++++
 src/radeon_memory.c              |  118 -----
 src/radeon_output.c              |   24 -
 src/radeon_probe.h               |    6 
 src/radeon_textured_video.c      |   14 
 src/radeon_video.c               |   61 +-
 23 files changed, 1376 insertions(+), 474 deletions(-)

New commits:
commit 580c35f281ae127cbbaa276456b49ce194e2888c
Author: Brice Goglin <[EMAIL PROTECTED]>
Date:   Sun Oct 12 08:58:02 2008 +0200

    Prepare changelog for upload

diff --git a/debian/changelog b/debian/changelog
index 825cada..2716030 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,8 @@
-xserver-xorg-video-ati (1:6.9.0+git20081012.c0e6cb6d-1) UNRELEASED; urgency=low
+xserver-xorg-video-ati (1:6.9.0+git20081012.c0e6cb6d-1) experimental; 
urgency=low
 
   * Pull upstream snapshot, up to commit c0e6cb6d, closes: 500903.
 
- -- Brice Goglin <[EMAIL PROTECTED]>  Sun, 12 Oct 2008 08:57:19 +0200
+ -- Brice Goglin <[EMAIL PROTECTED]>  Sun, 12 Oct 2008 08:57:46 +0200
 
 xserver-xorg-video-ati (1:6.9.0+git20080826.a3cc1d7a-2) experimental; 
urgency=low
 

commit cc47943b566e9a1862c37a55773d78bd90ddcfa8
Author: Brice Goglin <[EMAIL PROTECTED]>
Date:   Sun Oct 12 08:57:42 2008 +0200

    Pull upstream snapshot, up to commit c0e6cb6d

diff --git a/ChangeLog b/ChangeLog
index e0ff591..b935b07 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,184 @@
+commit c0e6cb6d0eeef8f2ea60d840e1cd668fa92cd7f9
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Fri Oct 10 11:09:27 2008 -0400
+
+    Fix grey level dithering setup
+
+commit 9eb2b6cd28224f0cbbabf3df451696ae1a845b9c
+Author: Dave Airlie <[EMAIL PROTECTED]>
+Date:   Fri Oct 10 16:18:05 2008 +1000
+
+    radeon: hopefully fix plls for 30" monitors.
+    
+    Only do the HIGH trick on the DCE3 cards. Tested on rv610/630/770.
+
+commit 0975e007ec7933acf9cd8ad2f281313ef8d32ac9
+Author: Dave Airlie <[EMAIL PROTECTED]>
+Date:   Thu Oct 9 17:16:28 2008 +1100
+
+    radeon: rename radeon_memory to radeon_legacy_memory.
+    
+    This is a setup patch for the kms/memory management code.
+
+commit d744dc013cf5ca3141c0fdf55e36d713fe9f53ba
+Author: Adam Jackson <[EMAIL PROTECTED]>
+Date:   Wed Oct 8 15:50:25 2008 -0400
+
+    Fix connector table mapping for lvtma/kaleidoscope/uniphy.
+    
+    Fixes DPMS on LVDS.
+
+commit dc795ba66a8c0eb2c3fdb86bd42dfc17e0aa3b6e
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Tue Oct 7 12:32:47 2008 -0400
+
+    Fixups from last DFP/LCD refactor
+    
+    - fix DFP1 -> LCD1
+    - use _INDEX rather than _SUPPORT defs
+
+commit 4a9e8d9fe24278b56aef51677fd35289d01584a7
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Mon Oct 6 18:00:08 2008 -0400
+
+    set grey levels correctly for temporal dithering
+
+commit 5708624d1151877dd66a462d4a75fed6774604a7
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Mon Oct 6 15:11:56 2008 -0400
+
+    Turn coherent mode off by default on DVI
+
+commit a5c5ce96279d01eb519bfb92b94c06a58acb7f07
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Mon Oct 6 15:07:31 2008 -0400
+
+    Refactor atom LCD/DFP output setup
+    
+    Simplify the code, properly handle dithering, coherent mode, encoding, etc.
+    Should fix bug 17897.
+
+commit f9826a5694b7adb6920eb5bdf45d840d8fb14d53
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Fri Oct 3 15:24:12 2008 -0400
+
+    Add support for DDC via atom commands for RV410
+    
+    The atom calls use the hw i2c engine for DDC.  For some
+    reason, sw i2c doesn't seem to work on the VGA GPIO on
+    RV410 chips, so we use atom in that case.
+    
+    This fixes the longstanding VGA DDC problems on RV410/M26
+    chips.
+
+commit 23c17c0121d43c2fd11bb5cfbaa4b02abac2b16d
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Fri Oct 3 14:30:33 2008 -0400
+
+    man page updates
+    
+    Update render accel and page flipping information.
+    fixes bug 17887.
+
+commit 4ac6e499089aec3c79af5dbede5fe631b105ce3d
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Wed Oct 1 18:53:15 2008 -0400
+
+    proper fix for initial rotation
+    
+    The initial modeset was setting the MC regs, so just set them
+    rather than the full modeset.
+
+commit 346228b20c69a965c9e7d67157f42c1d36a5b6c3
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Wed Oct 1 14:38:27 2008 -0400
+
+    Workaround to make initial rotation work
+    
+    Acceleration needs to be initialized before setting the mode
+    for initial rotation to work.  Changing the order in RADEONScreenInit()
+    doesn't work because RADEONDRIKernelInit() hangs in the ioctl to
+    initialize the CP if the mode is not set prior (even if the heads
+    are turned off after setting the mode).  The workaround is to set the
+    modes twice, once before accel and once after.
+    
+    This needs to be looked into further.
+
+commit c359c2a31caf9f75b9fc6b6bcbc3e9dc1fe404ba
+Author: Michel Dänzer <[EMAIL PROTECTED]>
+Date:   Tue Sep 30 11:04:54 2008 +0200
+
+    Pass base offset into RADEONDisplayVideo() explicitly.
+    
+    This prevents the base offset from flipping back and forth if double 
buffering
+    is enabled and the two buffers start on different sides of a 4 MB boundary.
+    
+    Should fix http://bugs.freedesktop.org/show_bug.cgi?id=17254 ; please don't
+    reopen that bug report without attaching a log file captured after 
reproducing
+    the problem with this fix.
+
+commit ba21d5ae7fbbf5828c44c41655aff8b182453e2e
+Author: Michel Dänzer <[EMAIL PROTECTED]>
+Date:   Tue Sep 30 11:03:04 2008 +0200
+
+    Update GEN_INT_CNTL register value after calling DRM modeset ioctl.
+    
+    Fixes sync-to-vblank hangs after mode switch with DRM vblank-rework.
+
+commit 3110646daf05fa09faaa70066cc8c3db1bb07cec
+Author: Michel Dänzer <[EMAIL PROTECTED]>
+Date:   Sun Sep 14 11:46:36 2008 +0200
+
+    Fix -Werror build.
+
+commit d82f2938f69402c641a1c8362fdc513419b27659
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Fri Sep 26 13:51:24 2008 -0400
+
+    atombios updates from upstream
+
+commit d0d58b39e49c5ce00bc8bd12f721ad8c7f554b91
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Wed Sep 24 11:54:34 2008 -0400
+
+    radeon: Further pll adjustments
+
+commit d100a6af8f828eb94f8ba6e8a96c24389b5cf46f
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Fri Sep 19 14:04:59 2008 -0400
+
+    cleanup macbook quirk
+
+commit 1218e38c75351a20f7414ba6fcb3545689339442
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Fri Sep 19 13:52:07 2008 -0400
+
+    more macbook fixes
+
+commit 83e1f132965deadedda7a622184eb400cd4c120c
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Fri Sep 19 09:36:59 2008 -0400
+
+    Fix copy/paste error in the last commit
+    
+    DVI-D -> DVI-I
+
+commit 4af825f7b13cba8c3b204e72a07cab5009331240
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Fri Sep 19 00:29:20 2008 -0400
+
+    radeon: Add quirk for macbook
+    
+    - should fix bug 17625
+
+commit 38aa450fce6a91b35c191fd07112490a62cc29c6
+Author: Alex Deucher <[EMAIL PROTECTED]>
+Date:   Tue Aug 26 21:50:23 2008 -0400
+
+    fix some fallout from the common allocator
+    
+    should fix bug 17317
+
 commit a3cc1d7a421456186024c5c069e403d374a0f0b9
 Author: Dave Airlie <[EMAIL PROTECTED]>
 Date:   Tue Aug 26 08:03:20 2008 +1000
diff --git a/debian/changelog b/debian/changelog
index 8b2c1c4..825cada 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xserver-xorg-video-ati (1:6.9.0+git20081012.c0e6cb6d-1) UNRELEASED; urgency=low
+
+  * Pull upstream snapshot, up to commit c0e6cb6d, closes: 500903.
+
+ -- Brice Goglin <[EMAIL PROTECTED]>  Sun, 12 Oct 2008 08:57:19 +0200
+
 xserver-xorg-video-ati (1:6.9.0+git20080826.a3cc1d7a-2) experimental; 
urgency=low
 
   * Build against xserver 1.5.

commit c0e6cb6d0eeef8f2ea60d840e1cd668fa92cd7f9
Author: Alex Deucher <[EMAIL PROTECTED]>
Date:   Fri Oct 10 11:09:27 2008 -0400

    Fix grey level dithering setup

diff --git a/src/atombios_output.c b/src/atombios_output.c
index a770177..148a1da 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -346,7 +346,7 @@ atombios_output_digital_setup(xf86OutputPtr output, int 
device, DisplayModePtr m
                    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) == 4)
+                   if (((radeon_output->lvds_misc >> 2) & 0x3) == 2)
                        disp_data2.ucTemporal |= PANEL_ENCODER_TEMPORAL_LEVEL_4;
                }
            } else {

commit 9eb2b6cd28224f0cbbabf3df451696ae1a845b9c
Author: Dave Airlie <[EMAIL PROTECTED]>
Date:   Fri Oct 10 16:18:05 2008 +1000

    radeon: hopefully fix plls for 30" monitors.
    
    Only do the HIGH trick on the DCE3 cards. Tested on rv610/630/770.

diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c
index 3f2e113..4e2395f 100644
--- a/src/atombios_crtc.c
+++ b/src/atombios_crtc.c
@@ -224,7 +224,7 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr 
mode, int pll_flags)
     if (IS_AVIVO_VARIANT) {
        uint32_t temp;
 
-       if (mode->Clock > 200000) /* range limits??? */
+       if (IS_DCE3_VARIANT && mode->Clock > 200000) /* range limits??? */
            pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV;
        else
            pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV;

commit 0975e007ec7933acf9cd8ad2f281313ef8d32ac9
Author: Dave Airlie <[EMAIL PROTECTED]>
Date:   Thu Oct 9 17:16:28 2008 +1100

    radeon: rename radeon_memory to radeon_legacy_memory.
    
    This is a setup patch for the kms/memory management code.

diff --git a/src/Makefile.am b/src/Makefile.am
index c79b635..d65a3e4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -88,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_memory.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 \
diff --git a/src/radeon.h b/src/radeon.h
index aec8a25..f7ae1a8 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -1068,15 +1068,15 @@ extern void RADEONUpdateHVPosition(xf86OutputPtr 
output, DisplayModePtr mode);
 extern void RADEONInitVideo(ScreenPtr pScreen);
 extern void RADEONResetVideo(ScrnInfoPtr pScrn);
 
-/* radeon_memory.c */
+/* radeon_legacy_memory.c */
 extern uint32_t
-radeon_allocate_memory(ScrnInfoPtr pScrn,
-                      void **mem_struct,
-                      int size,
-                      int align);
+radeon_legacy_allocate_memory(ScrnInfoPtr pScrn,
+                             void **mem_struct,
+                             int size,
+                             int align);
 extern void
-radeon_free_memory(ScrnInfoPtr pScrn,
-                  void *mem_struct);
+radeon_legacy_free_memory(ScrnInfoPtr pScrn,
+                         void *mem_struct);
 
 #ifdef XF86DRI
 #  ifdef USE_XAA
diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c
index 99992fc..9040bae 100644
--- a/src/radeon_crtc.c
+++ b/src/radeon_crtc.c
@@ -418,7 +418,7 @@ radeon_crtc_shadow_allocate (xf86CrtcPtr crtc, int width, 
int height)
      * setter for offscreen area locking in EXA currently.  So, we just
      * allocate offscreen memory and fake up a pixmap header for it.
      */
-    rotate_offset = radeon_allocate_memory(pScrn, 
&radeon_crtc->crtc_rotate_mem, size, align);
+    rotate_offset = radeon_legacy_allocate_memory(pScrn, 
&radeon_crtc->crtc_rotate_mem, size, align);
     if (rotate_offset == 0)
        return NULL;
 
@@ -466,7 +466,7 @@ radeon_crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr 
rotate_pixmap, void *data
        FreeScratchPixmapHeader(rotate_pixmap);
 
     if (data) {
-       radeon_free_memory(pScrn, radeon_crtc->crtc_rotate_mem);
+       radeon_legacy_free_memory(pScrn, radeon_crtc->crtc_rotate_mem);
        radeon_crtc->crtc_rotate_mem = NULL;
     }
 
diff --git a/src/radeon_cursor.c b/src/radeon_cursor.c
index 22a33d6..08bfddf 100644
--- a/src/radeon_cursor.c
+++ b/src/radeon_cursor.c
@@ -341,7 +341,7 @@ Bool RADEONCursorInit(ScreenPtr pScreen)
            RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
 
            radeon_crtc->cursor_offset =
-               radeon_allocate_memory(pScrn, &radeon_crtc->cursor_mem, 
size_bytes, align);
+               radeon_legacy_allocate_memory(pScrn, &radeon_crtc->cursor_mem, 
size_bytes, align);
 
            if (radeon_crtc->cursor_offset == 0)
                return FALSE;
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_memory.c b/src/radeon_memory.c
deleted file mode 100644
index f965cb4..0000000
--- a/src/radeon_memory.c
+++ /dev/null
@@ -1,117 +0,0 @@
-
-#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_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_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_textured_video.c b/src/radeon_textured_video.c
index 4005df9..c185b46 100644
--- a/src/radeon_textured_video.c
+++ b/src/radeon_textured_video.c
@@ -197,14 +197,14 @@ RADEONPutImageTextured(ScrnInfoPtr pScrn,
        dstPitch = (dstPitch + 15) & ~15;
 
     if (pPriv->video_memory != NULL && size != pPriv->size) {
-       radeon_free_memory(pScrn, pPriv->video_memory);
+       radeon_legacy_free_memory(pScrn, pPriv->video_memory);
        pPriv->video_memory = NULL;
     }
 
     if (pPriv->video_memory == NULL) {
-       pPriv->video_offset = radeon_allocate_memory(pScrn,
-                                                    &pPriv->video_memory,
-                                                    size * 2, 64);
+       pPriv->video_offset = radeon_legacy_allocate_memory(pScrn,
+                                                           
&pPriv->video_memory,
+                                                           size * 2, 64);
        if (pPriv->video_offset == 0)
            return BadAlloc;
     }
@@ -213,9 +213,9 @@ RADEONPutImageTextured(ScrnInfoPtr pScrn,
     if (!IS_R500_3D)
        pPriv->bicubic_enabled = FALSE;
     if (pPriv->bicubic_memory == NULL && pPriv->bicubic_enabled) {
-       pPriv->bicubic_offset = radeon_allocate_memory(pScrn,
-                                                      &pPriv->bicubic_memory,
-                                                      sizeof(bicubic_tex_512), 
64);
+       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;
diff --git a/src/radeon_video.c b/src/radeon_video.c
index 47b0497..6249cea 100644
--- a/src/radeon_video.c
+++ b/src/radeon_video.c
@@ -1638,11 +1638,11 @@ RADEONStopVideo(ScrnInfoPtr pScrn, pointer data, Bool 
cleanup)
   if (pPriv->textured) {
       if (cleanup) {
          if (pPriv->bicubic_memory != NULL) {
-             radeon_free_memory(pScrn, pPriv->bicubic_memory);
+             radeon_legacy_free_memory(pScrn, pPriv->bicubic_memory);
              pPriv->bicubic_memory = NULL;
          }
          if (pPriv->video_memory != NULL) {
-             radeon_free_memory(pScrn, pPriv->video_memory);
+             radeon_legacy_free_memory(pScrn, pPriv->video_memory);
              pPriv->video_memory = NULL;
          }
       }
@@ -1667,7 +1667,7 @@ RADEONStopVideo(ScrnInfoPtr pScrn, pointer data, Bool 
cleanup)
         if(pPriv->i2c != NULL) RADEON_board_setmisc(pPriv);
      }
      if (pPriv->video_memory != NULL) {
-        radeon_free_memory(pScrn, pPriv->video_memory);
+        radeon_legacy_free_memory(pScrn, pPriv->video_memory);
         pPriv->video_memory = NULL;
      }
      pPriv->videoStatus = 0;
@@ -2937,9 +2937,9 @@ RADEONPutImage(
    if (idconv == FOURCC_YV12 || id == FOURCC_I420) {
       new_size += (dstPitch >> 1) * ((height + 1) & ~1);
    }
-   pPriv->video_offset = radeon_allocate_memory(pScrn, &pPriv->video_memory,
-                                               (pPriv->doubleBuffer ?
-                                                (new_size * 2) : new_size), 
64);
+   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;
 
@@ -3133,7 +3133,7 @@ RADEONVideoTimerCallback(ScrnInfoPtr pScrn, Time now)
        } else {  /* FREE_TIMER */
            if(pPriv->freeTime < now) {
                if (pPriv->video_memory != NULL) {
-                   radeon_free_memory(pScrn, pPriv->video_memory);
+                   radeon_legacy_free_memory(pScrn, pPriv->video_memory);
                    pPriv->video_memory = NULL;
                }
                pPriv->videoStatus = 0;
@@ -3168,7 +3168,7 @@ RADEONAllocateSurface(
     pitch = ((w << 1) + 15) & ~15;
     size = pitch * h;
 
-    offset = radeon_allocate_memory(pScrn, &surface_memory, size, 64);
+    offset = radeon_legacy_allocate_memory(pScrn, &surface_memory, size, 64);
     if (offset == 0)
        return BadAlloc;
 
@@ -3176,18 +3176,18 @@ RADEONAllocateSurface(
     surface->height = h;
 
     if(!(surface->pitches = xalloc(sizeof(int)))) {
-       radeon_free_memory(pScrn, surface_memory);
+       radeon_legacy_free_memory(pScrn, surface_memory);
        return BadAlloc;
     }
     if(!(surface->offsets = xalloc(sizeof(int)))) {
        xfree(surface->pitches);
-       radeon_free_memory(pScrn, surface_memory);
+       radeon_legacy_free_memory(pScrn, surface_memory);
        return BadAlloc;
     }
     if(!(pPriv = xalloc(sizeof(OffscreenPrivRec)))) {
        xfree(surface->pitches);
        xfree(surface->offsets);
-       radeon_free_memory(pScrn, surface_memory);
+       radeon_legacy_free_memory(pScrn, surface_memory);
        return BadAlloc;
     }
 
@@ -3228,7 +3228,7 @@ RADEONFreeSurface(
 
     if(pPriv->isOn)
        RADEONStopSurface(surface);
-    radeon_free_memory(pScrn, pPriv->surface_memory);
+    radeon_legacy_free_memory(pScrn, pPriv->surface_memory);
     pPriv->surface_memory = NULL;
     xfree(surface->pitches);
     xfree(surface->offsets);
@@ -3504,9 +3504,9 @@ RADEONPutVideo(
    if (pPriv->capture_vbi_data)
       alloc_size += 2 * 2 * vbi_line_width * 21;
 
-   pPriv->video_offset = radeon_allocate_memory(pScrn, &pPriv->video_memory,
-                                               (pPriv->doubleBuffer ?
-                                                (new_size * 2) : new_size), 
64);
+   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;
 

commit d744dc013cf5ca3141c0fdf55e36d713fe9f53ba
Author: Adam Jackson <[EMAIL PROTECTED]>
Date:   Wed Oct 8 15:50:25 2008 -0400

    Fix connector table mapping for lvtma/kaleidoscope/uniphy.
    
    Fixes DPMS on LVDS.

diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
index 13eb1fc..851014b 100644
--- a/src/radeon_atombios.c
+++ b/src/radeon_atombios.c
@@ -1594,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:
@@ -1611,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:

commit dc795ba66a8c0eb2c3fdb86bd42dfc17e0aa3b6e
Author: Alex Deucher <[EMAIL PROTECTED]>
Date:   Tue Oct 7 12:32:47 2008 -0400

    Fixups from last DFP/LCD refactor
    
    - fix DFP1 -> LCD1
    - use _INDEX rather than _SUPPORT defs

diff --git a/src/atombios_output.c b/src/atombios_output.c
index fad5a10..a770177 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -278,13 +278,13 @@ atombios_output_digital_setup(xf86OutputPtr output, int 
device, DisplayModePtr m
     int major, minor;
 
     switch (device) {
-    case ATOM_DEVICE_DFP1_SUPPORT:
+    case ATOM_DEVICE_DFP1_INDEX:
        index = GetIndexIntoMasterTable(COMMAND, TMDS1EncoderControl);
        break;
-    case ATOM_DEVICE_LCD1_SUPPORT:
+    case ATOM_DEVICE_LCD1_INDEX:
        index = GetIndexIntoMasterTable(COMMAND, LVDSEncoderControl);
        break;
-    case ATOM_DEVICE_DFP3_SUPPORT:
+    case ATOM_DEVICE_DFP3_INDEX:
        index = GetIndexIntoMasterTable(COMMAND, TMDS2EncoderControl);
        break;
     default:
@@ -305,7 +305,7 @@ atombios_output_digital_setup(xf86OutputPtr output, int 
device, DisplayModePtr m
            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_DFP1_SUPPORT) {
+           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))
@@ -334,7 +334,7 @@ atombios_output_digital_setup(xf86OutputPtr output, int 
device, DisplayModePtr m
            disp_data2.ucSpatial = 0;
            disp_data2.ucTemporal = 0;
            disp_data2.ucFRC = 0;
-           if (device == ATOM_DEVICE_DFP1_SUPPORT) {
+           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)) {
@@ -919,7 +919,7 @@ atombios_output_mode_set(xf86OutputPtr output,
                atombios_output_dig1_setup(output, adjusted_mode);
                atombios_output_dig1_transmitter_setup(output, adjusted_mode);
            } else
-               atombios_output_digital_setup(output, ATOM_DEVICE_DFP1_SUPPORT, 
adjusted_mode);
+               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
@@ -936,7 +936,7 @@ atombios_output_mode_set(xf86OutputPtr output,
                atombios_output_dig2_setup(output, adjusted_mode);
                atombios_output_dig2_transmitter_setup(output, adjusted_mode);
            } else
-               atombios_output_digital_setup(output, ATOM_DEVICE_DFP3_SUPPORT, 
adjusted_mode);
+               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) {
@@ -944,7 +944,7 @@ atombios_output_mode_set(xf86OutputPtr output,
                atombios_output_dig2_setup(output, adjusted_mode);
                atombios_output_dig2_transmitter_setup(output, adjusted_mode);
            } else
-               atombios_output_digital_setup(output, ATOM_DEVICE_LCD1_SUPPORT, 
adjusted_mode);
+               atombios_output_digital_setup(output, ATOM_DEVICE_LCD1_INDEX, 
adjusted_mode);
        }
     } else if ((radeon_output->MonType == MT_CTV) ||
               (radeon_output->MonType == MT_STV) ||

commit 4a9e8d9fe24278b56aef51677fd35289d01584a7
Author: Alex Deucher <[EMAIL PROTECTED]>
Date:   Mon Oct 6 18:00:08 2008 -0400

    set grey levels correctly for temporal dithering

diff --git a/src/atombios_output.c b/src/atombios_output.c
index 50e3681..fad5a10 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -346,6 +346,8 @@ atombios_output_digital_setup(xf86OutputPtr output, int 
device, DisplayModePtr m
                    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) == 4)
+                       disp_data2.ucTemporal |= PANEL_ENCODER_TEMPORAL_LEVEL_4;
                }
            } else {
                if (mode->Clock > 165000)

commit 5708624d1151877dd66a462d4a75fed6774604a7
Author: Alex Deucher <[EMAIL PROTECTED]>
Date:   Mon Oct 6 15:11:56 2008 -0400

    Turn coherent mode off by default on DVI

diff --git a/src/radeon_output.c b/src/radeon_output.c
index 3416edf..8c794fb 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -1158,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,

commit a5c5ce96279d01eb519bfb92b94c06a58acb7f07
Author: Alex Deucher <[EMAIL PROTECTED]>
Date:   Mon Oct 6 15:07:31 2008 -0400

    Refactor atom LCD/DFP output setup
    
    Simplify the code, properly handle dithering, coherent mode, encoding, etc.
    Should fix bug 17897.

diff --git a/src/atombios_output.c b/src/atombios_output.c
index 83b86a7..50e3681 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -206,7 +206,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 +219,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);
@@ -264,84 +265,107 @@ 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 = cpu_to_le16(mode->Clock / 10);


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to