[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-ati: Changes to 'debian-experimental'



 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 <bgoglin@debian.org>
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 <bgoglin@debian.org>  Sun, 12 Oct 2008 08:57:19 +0200
+ -- Brice Goglin <bgoglin@debian.org>  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 <bgoglin@debian.org>
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 <alexdeucher@gmail.com>
+Date:   Fri Oct 10 11:09:27 2008 -0400
+
+    Fix grey level dithering setup
+
+commit 9eb2b6cd28224f0cbbabf3df451696ae1a845b9c
+Author: Dave Airlie <airlied@redhat.com>
+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 <airlied@redhat.com>
+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 <ajax@redhat.com>
+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 <alexdeucher@gmail.com>
+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 <alexdeucher@gmail.com>
+Date:   Mon Oct 6 18:00:08 2008 -0400
+
+    set grey levels correctly for temporal dithering
+
+commit 5708624d1151877dd66a462d4a75fed6774604a7
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date:   Mon Oct 6 15:11:56 2008 -0400
+
+    Turn coherent mode off by default on DVI
+
+commit a5c5ce96279d01eb519bfb92b94c06a58acb7f07
+Author: Alex Deucher <alexdeucher@gmail.com>
+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 <alexdeucher@gmail.com>
+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 <alexdeucher@gmail.com>
+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 <alexdeucher@gmail.com>
+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 <alexdeucher@gmail.com>
+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 <michel@tungstengraphics.com>
+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 <michel@tungstengraphics.com>
+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 <michel@tungstengraphics.com>
+Date:   Sun Sep 14 11:46:36 2008 +0200
+
+    Fix -Werror build.
+
+commit d82f2938f69402c641a1c8362fdc513419b27659
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date:   Fri Sep 26 13:51:24 2008 -0400
+
+    atombios updates from upstream
+
+commit d0d58b39e49c5ce00bc8bd12f721ad8c7f554b91
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date:   Wed Sep 24 11:54:34 2008 -0400
+
+    radeon: Further pll adjustments
+
+commit d100a6af8f828eb94f8ba6e8a96c24389b5cf46f
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date:   Fri Sep 19 14:04:59 2008 -0400
+
+    cleanup macbook quirk
+
+commit 1218e38c75351a20f7414ba6fcb3545689339442
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date:   Fri Sep 19 13:52:07 2008 -0400
+
+    more macbook fixes
+
+commit 83e1f132965deadedda7a622184eb400cd4c120c
+Author: Alex Deucher <alexdeucher@gmail.com>
+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 <alexdeucher@gmail.com>
+Date:   Fri Sep 19 00:29:20 2008 -0400
+
+    radeon: Add quirk for macbook
+    
+    - should fix bug 17625
+
+commit 38aa450fce6a91b35c191fd07112490a62cc29c6
+Author: Alex Deucher <alexdeucher@gmail.com>
+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 <airlied@linux.ie>
 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 <bgoglin@debian.org>  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 <alexdeucher@gmail.com>
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 <airlied@redhat.com>
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 <airlied@redhat.com>
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 <ajax@redhat.com>
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 <alexdeucher@gmail.com>
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 <alexdeucher@gmail.com>
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 <alexdeucher@gmail.com>
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 <alexdeucher@gmail.com>
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);


Reply to: