ChangeLog | 202 ++++++++++++++++++++++ configure | 40 ++-- configure.ac | 4 debian/changelog | 8 man/radeon.man | 8 src/atidri.c | 7 src/radeon.h | 25 ++ src/radeon_bios.c | 32 +-- src/radeon_crtc.c | 123 +++++++------ src/radeon_display.c | 25 ++ src/radeon_dri.c | 85 +++++++-- src/radeon_driver.c | 456 ++++++++++++++++----------------------------------- src/radeon_output.c | 39 +--- src/radeon_probe.c | 1 src/radeon_reg.h | 1 src/radeon_tv.c | 9 - src/radeon_video.c | 55 +++--- src/theatre.c | 15 + src/theatre200.c | 19 +- src/theatre_detect.c | 15 + 20 files changed, 665 insertions(+), 504 deletions(-)
New commits: commit a62b39c445f399849fb255c94999c9f2b107f196 Author: Brice Goglin <[EMAIL PROTECTED]> Date: Mon Aug 27 08:29:40 2007 +0200 New upstream release candidate diff --git a/ChangeLog b/ChangeLog index 8666a08..7a0e0de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,205 @@ +commit a12e4aa01bf1c5723c3c791ff9bdc26eef21d5ea +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Sun Aug 26 18:51:29 2007 -0400 + + Bump for new release + +commit d43596e5f5d7c60f96b57bc3e743a9b40eb7109d +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Sun Aug 26 18:07:50 2007 -0400 + + RADEON: Fix rotation. works now + +commit 47eb3327c258bb0cfd9a1d5677624b9988a39057 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Sun Aug 26 15:43:22 2007 -0400 + + RADEON: minor tweak to tv out + +commit f36720377737210c985b196d9a988efdd767f1c7 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Sun Aug 26 14:13:06 2007 -0400 + + RADEON: fix depth 16 palette for real this time + +commit f2b13f1457bf860b075310d3962254be0ed7bea3 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Sun Aug 26 13:27:19 2007 -0400 + + RADEON: Only update pixclks_cntl when updating tv routing + + No need to re-set all of the pll2 stuff + +commit 5d044b9f74c7aa7e12f2822896fed881e2ca9d19 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Sat Aug 25 21:03:08 2007 -0400 + + RADEON: fix crtc clipping for Xv + +commit 3fd2d22a02812d5f86cdc1c9503f48362b0c362b +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Sat Aug 25 17:37:35 2007 -0400 + + RADEON: remove fbdev option + + FBDev support is currently broken, and it not really compatible + with randr + +commit 3469e1aa08792890fa6a5c72da52a1992a0b382c +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Fri Aug 24 20:42:13 2007 -0400 + + RADEON: add extra green data in depth 16 + + Apparently some radeons need this? + +commit 71f650d1bc432514516f7ac64a5e8a54c5227881 +Author: Michel Dänzer <[EMAIL PROTECTED]> +Date: Fri Aug 24 09:21:39 2007 +0200 + + Require xorg-server >= 1.3 for RandR 1.2. + +commit d7230939f523610c57f92bdfc72966bdbc6f1070 +Author: Michel Dänzer <[EMAIL PROTECTED]> +Date: Fri Aug 24 09:21:14 2007 +0200 + + 64 bit warning fixes. + + For printf vs. CARD32, use %u or %x and and a cast to unsigned. + +commit 91c45fedfd155a153dcd2c3f3e30986bfbd44e6f +Author: Dave Airlie <[EMAIL PROTECTED](none)> +Date: Fri Aug 24 15:05:01 2007 +1000 + + radeon: don't disable dac if either tv or vga is using it + + On my rs480 I had to vt switch to get hotplug VGA working due to the tv-out + code turning off the dac when the vga code was actually using it. + +commit 056ca6bb5adf974290693b55de6cd6880d2132d1 +Author: Alex Deucher <[EMAIL PROTECTED]> +Date: Thu Aug 23 20:19:47 2007 -0400 + + RADEON: NONE to None to match other port info + +commit 13fd53286bdda2c55683bdb5f63e7d345f6c63ef +Author: Alex Deucher <[EMAIL PROTECTED]> +Date: Thu Aug 23 20:17:51 2007 -0400 + + RADEON: set (hopefully) reasonable default max desktop sizes + + Based on the amount of vram. We really need ttm... + +commit 53bad86ca48a9b6529c1f0989ee568d9d48841c6 +Author: Alex Deucher <[EMAIL PROTECTED]> +Date: Thu Aug 23 19:24:59 2007 -0400 + + RADEON: clean up the logic in crtc_mode_set() + +commit 4712dedea225e9e07177aebda2ffc6290d1f53c7 +Author: Alex Deucher <[EMAIL PROTECTED]> +Date: Thu Aug 23 18:51:34 2007 -0400 + + RADEON: Always assume LVDS is connected + + Not all bioses seem to set the right scratch bits. If we have + LVDS (via bios table or otherwise) assume it's connected. + +commit b0f170c5f736ecba1a5899d602c4173fe9b9b1fa +Author: Michel Dänzer <[EMAIL PROTECTED]> +Date: Thu Aug 23 12:55:40 2007 +0200 + + radeon: Remove unnecessary #include <time.h>. + +commit ac54c0e4360099697755d14b1030def73d8235b0 +Author: Michel Dänzer <[EMAIL PROTECTED]> +Date: Wed Aug 22 14:33:59 2007 +0200 + + radeon: Warning fixes. + +commit de26e406f52b3b13f03eee2b8023924ec6406f0a +Author: Alon Ziv <[EMAIL PROTECTED]> +Date: Mon Jul 30 22:47:59 2007 +0300 + + radeon: Sane handling of timeouts in WaitForVerticalSync(2). + + RADEONWaitForVerticalSync() and RADEONWaitForVerticalSync2() need to wait + for a timeout specified in milliseconds; looping around usleep() causes + the timeout to be unnecessarily long, as the OS may sleep longer than + requested (on Linux the minimum actual sleep value may be several ms). + + The new logic uses gettimeofday() in the loop to see when the (absolute) + timeout has arrived. + + Signed-off-by: Alon Ziv <[EMAIL PROTECTED]> + +commit c66e5de26ae93caa368213f3cce139aacec955d2 +Author: Sascha Sommer <[EMAIL PROTECTED]> +Date: Thu Aug 23 12:11:51 2007 +0200 + + radeon: Round down RMX stretch ratios. + + Fixes issues with RMX scaling, see + https://bugs.freedesktop.org/show_bug.cgi?id=8983 . + +commit 633c1fff10a3be4c9f48c1995e330d60bf6abbb2 +Author: Michel Dänzer <[EMAIL PROTECTED]> +Date: Thu Aug 23 12:11:41 2007 +0200 + + radeon: Sync pages when enabling page flipping with EXA as well. + + Exclude the DRI window(s) though to avoid scribbling over 3D rendering. + +commit 4f8010ce22043c0f8d60c0f49d270ce98c9d2466 +Author: Michel Dänzer <[EMAIL PROTECTED]> +Date: Thu Aug 23 12:11:12 2007 +0200 + + radeon: Don't synchronize DRI windows between pages when possible. + +commit 7b527054a7c81d1d1dbc79d41b9e53064dab68cb +Author: Michel Dänzer <[EMAIL PROTECTED]> +Date: Thu Aug 23 12:10:33 2007 +0200 + + radeon: Restore memmap registers even if only AGP location changed. + +commit d7ba9f001c0ab645984526afd0e64d1c6a6d654a +Author: Michel Dänzer <[EMAIL PROTECTED]> +Date: Thu Aug 23 11:39:54 2007 +0200 + + radeon: Change a test to info->IsIGP from several IGP families. + +commit 8c7c22e22b6076abc80e4e1aaa8d1f4cf2f3ed14 +Author: Michel Dänzer <[EMAIL PROTECTED]> +Date: Thu Aug 23 11:38:17 2007 +0200 + + radeon: Wait for pending overlay flip to finish before emitting new one. + +commit 92fa7cc00688d7bfc1fb72e645ac30c6d92669c6 +Author: Michel Dänzer <[EMAIL PROTECTED]> +Date: Thu Aug 23 11:38:16 2007 +0200 + + radeon: Don't call RADEONDRIRefreshArea when the damaged region is empty. + +commit 5cb20c2dc5eca9d7d7d78e9924ea1b90076e7253 +Author: Dave Airlie <[EMAIL PROTECTED]> +Date: Thu Aug 23 18:46:41 2007 +1000 + + radeon: bug 11899 + debian 435040 - test for usefbdev before calling int10 + (cherry picked from commit 3334c247540b113f9c4a5ce1879d8648a45a959a) + +commit 9d6261c024c697a211da4b6300420153eb72a264 +Author: Roland Bär <[EMAIL PROTECTED]> +Date: Thu Aug 23 18:33:34 2007 +1000 + + radeon: bug 11860 fix some mem leaks + +commit 7bc1f862bc5f992f213143fbafef52459ba7db4a +Author: Roland Bär <[EMAIL PROTECTED]> +Date: Thu Aug 23 18:37:35 2007 +1000 + + radeon: bug 11861 - dead code removal in radeon_video.c + (cherry picked from commit 8e3a6f83016cd8c4cfd43ceee4cbf0a8dc018b2a) + commit 9d38c8aa1a7d6fb1af41ee8abdb4a95f94843538 Author: Dave Airlie <[EMAIL PROTECTED]> Date: Thu Aug 23 20:10:24 2007 +1000 diff --git a/configure b/configure index e53309b..a3102bc 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for xf86-video-ati 6.7.191. +# Generated by GNU Autoconf 2.61 for xf86-video-ati 6.7.192. # # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>. # @@ -728,8 +728,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='xf86-video-ati' PACKAGE_TARNAME='xf86-video-ati' -PACKAGE_VERSION='6.7.191' -PACKAGE_STRING='xf86-video-ati 6.7.191' +PACKAGE_VERSION='6.7.192' +PACKAGE_STRING='xf86-video-ati 6.7.192' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' ac_unique_file="Makefile.am" @@ -1438,7 +1438,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xf86-video-ati 6.7.191 to adapt to many kinds of systems. +\`configure' configures xf86-video-ati 6.7.192 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1508,7 +1508,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xf86-video-ati 6.7.191:";; + short | recursive ) echo "Configuration of xf86-video-ati 6.7.192:";; esac cat <<\_ACEOF @@ -1624,7 +1624,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xf86-video-ati configure 6.7.191 +xf86-video-ati configure 6.7.192 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1638,7 +1638,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xf86-video-ati $as_me 6.7.191, which was +It was created by xf86-video-ati $as_me 6.7.192, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -2333,7 +2333,7 @@ fi # Define the identity of the package. PACKAGE='xf86-video-ati' - VERSION='6.7.191' + VERSION='6.7.192' cat >>confdefs.h <<_ACEOF @@ -20762,12 +20762,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_XORG_CFLAGS="$XORG_CFLAGS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server xproto fontsproto \$REQUIRED_MODULES\"") >&5 - ($PKG_CONFIG --exists --print-errors "xorg-server xproto fontsproto $REQUIRED_MODULES") 2>&5 + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server >= 1.3 xproto fontsproto \$REQUIRED_MODULES\"") >&5 + ($PKG_CONFIG --exists --print-errors "xorg-server >= 1.3 xproto fontsproto $REQUIRED_MODULES") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - pkg_cv_XORG_CFLAGS=`$PKG_CONFIG --cflags "xorg-server xproto fontsproto $REQUIRED_MODULES" 2>/dev/null` + pkg_cv_XORG_CFLAGS=`$PKG_CONFIG --cflags "xorg-server >= 1.3 xproto fontsproto $REQUIRED_MODULES" 2>/dev/null` else pkg_failed=yes fi @@ -20780,12 +20780,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_XORG_LIBS="$XORG_LIBS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server xproto fontsproto \$REQUIRED_MODULES\"") >&5 - ($PKG_CONFIG --exists --print-errors "xorg-server xproto fontsproto $REQUIRED_MODULES") 2>&5 + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server >= 1.3 xproto fontsproto \$REQUIRED_MODULES\"") >&5 + ($PKG_CONFIG --exists --print-errors "xorg-server >= 1.3 xproto fontsproto $REQUIRED_MODULES") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - pkg_cv_XORG_LIBS=`$PKG_CONFIG --libs "xorg-server xproto fontsproto $REQUIRED_MODULES" 2>/dev/null` + pkg_cv_XORG_LIBS=`$PKG_CONFIG --libs "xorg-server >= 1.3 xproto fontsproto $REQUIRED_MODULES" 2>/dev/null` else pkg_failed=yes fi @@ -20804,14 +20804,14 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - XORG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xorg-server xproto fontsproto $REQUIRED_MODULES"` + XORG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xorg-server >= 1.3 xproto fontsproto $REQUIRED_MODULES"` else - XORG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xorg-server xproto fontsproto $REQUIRED_MODULES"` + XORG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xorg-server >= 1.3 xproto fontsproto $REQUIRED_MODULES"` fi # Put the nasty error message in config.log where it belongs echo "$XORG_PKG_ERRORS" >&5 - { { echo "$as_me:$LINENO: error: Package requirements (xorg-server xproto fontsproto $REQUIRED_MODULES) were not met: + { { echo "$as_me:$LINENO: error: Package requirements (xorg-server >= 1.3 xproto fontsproto $REQUIRED_MODULES) were not met: $XORG_PKG_ERRORS @@ -20822,7 +20822,7 @@ Alternatively, you may set the environment variables XORG_CFLAGS and XORG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 -echo "$as_me: error: Package requirements (xorg-server xproto fontsproto $REQUIRED_MODULES) were not met: +echo "$as_me: error: Package requirements (xorg-server >= 1.3 xproto fontsproto $REQUIRED_MODULES) were not met: $XORG_PKG_ERRORS @@ -22445,7 +22445,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xf86-video-ati $as_me 6.7.191, which was +This file was extended by xf86-video-ati $as_me 6.7.192, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22498,7 +22498,7 @@ Report bugs to <[EMAIL PROTECTED]>." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -xf86-video-ati config.status 6.7.191 +xf86-video-ati config.status 6.7.192 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/debian/changelog b/debian/changelog index 05e6a64..7c27ee7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +xserver-xorg-video-ati (1:6.7.192-1) experimental; urgency=low + + * New upstream release candidate. + + UseFBDev option removed, closes: #372920. + + Monitor detection fixed, closes: #413500. + + -- Brice Goglin <[EMAIL PROTECTED]> Mon, 27 Aug 2007 08:26:38 +0200 + xserver-xorg-video-ati (1:6.7.191-1) experimental; urgency=low * New upstream release candidate. commit a12e4aa01bf1c5723c3c791ff9bdc26eef21d5ea Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Sun Aug 26 18:51:29 2007 -0400 Bump for new release diff --git a/configure.ac b/configure.ac index cdc6377..0c413c8 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-video-ati], - 6.7.191, + 6.7.192, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-video-ati) commit d43596e5f5d7c60f96b57bc3e743a9b40eb7109d Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Sun Aug 26 18:07:50 2007 -0400 RADEON: Fix rotation. works now diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c index 026cd8a..e976e2c 100644 --- a/src/radeon_crtc.c +++ b/src/radeon_crtc.c @@ -188,7 +188,7 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RADEONSavePtr save, #endif save->crtc_offset_cntl = 0; - if (info->tilingEnabled) { + if (info->tilingEnabled && (crtc->rotatedData == NULL)) { if (IS_R300_VARIANT) save->crtc_offset_cntl |= (R300_CRTC_X_Y_MODE_EN | R300_CRTC_MICRO_TILE_BUFFER_DIS | @@ -207,7 +207,7 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RADEONSavePtr save, Base = pScrn->fbOffset; - if (info->tilingEnabled) { + if (info->tilingEnabled && (crtc->rotatedData == NULL)) { if (IS_R300_VARIANT) { /* On r300/r400 when tiling is enabled crtc_offset is set to the address of * the surface. the x/y offsets are handled by the X_Y tile reg for each crtc @@ -249,6 +249,10 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RADEONSavePtr save, Base += offset; } + if (crtc->rotatedData != NULL) { + Base = pScrn->fbOffset + (char *)crtc->rotatedData - (char *)info->FB; + } + Base &= ~7; /* 3 lower bits are always 0 */ @@ -419,7 +423,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save, #endif save->crtc2_offset_cntl = 0; - if (info->tilingEnabled) { + if (info->tilingEnabled && (crtc->rotatedData == NULL)) { if (IS_R300_VARIANT) save->crtc2_offset_cntl |= (R300_CRTC_X_Y_MODE_EN | R300_CRTC_MICRO_TILE_BUFFER_DIS | @@ -438,7 +442,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save, Base = pScrn->fbOffset; - if (info->tilingEnabled) { + if (info->tilingEnabled && (crtc->rotatedData == NULL)) { if (IS_R300_VARIANT) { /* On r300/r400 when tiling is enabled crtc_offset is set to the address of * the surface. the x/y offsets are handled by the X_Y tile reg for each crtc @@ -480,6 +484,10 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save, Base += offset; } + if (crtc->rotatedData != NULL) { + Base = pScrn->fbOffset + (char *)crtc->rotatedData - (char *)info->FB; + } + Base &= ~7; /* 3 lower bits are always 0 */ #ifdef XF86DRI @@ -560,7 +568,7 @@ RADEONInitCrtc2Registers(xf86CrtcPtr crtc, RADEONSavePtr save, ? RADEON_CRTC2_V_SYNC_POL : 0)); - save->crtc2_pitch = ((info->CurrentLayout.displayWidth * pScrn->bitsPerPixel) + + save->crtc2_pitch = ((pScrn->displayWidth * pScrn->bitsPerPixel) + ((pScrn->bitsPerPixel * 8) -1)) / (pScrn->bitsPerPixel * 8); save->crtc2_pitch |= save->crtc2_pitch << 16; commit 47eb3327c258bb0cfd9a1d5677624b9988a39057 Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Sun Aug 26 15:43:22 2007 -0400 RADEON: minor tweak to tv out diff --git a/src/radeon_tv.c b/src/radeon_tv.c index c5917bc..3a26a0a 100644 --- a/src/radeon_tv.c +++ b/src/radeon_tv.c @@ -343,7 +343,7 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save, | RADEON_SYNC_TIP_LEVEL | RADEON_YFLT_EN | RADEON_UVFLT_EN - | (2 << RADEON_CY_FILT_BLEND_SHIFT); + | (6 << RADEON_CY_FILT_BLEND_SHIFT); if (radeon_output->tvStd == TV_STD_NTSC || radeon_output->tvStd == TV_STD_NTSC_J) { commit f36720377737210c985b196d9a988efdd767f1c7 Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Sun Aug 26 14:13:06 2007 -0400 RADEON: fix depth 16 palette for real this time diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c index 6a4116d..026cd8a 100644 --- a/src/radeon_crtc.c +++ b/src/radeon_crtc.c @@ -103,7 +103,7 @@ radeon_crtc_dpms(xf86CrtcPtr crtc, int mode) } if (mode != DPMSModeOff) - radeon_crtc_load_lut(crtc); + radeon_crtc_load_lut(crtc); } static Bool @@ -911,21 +911,8 @@ void radeon_crtc_load_lut(xf86CrtcPtr crtc) PAL_SELECT(radeon_crtc->crtc_id); - if (pScrn->depth == 15) { - for (i = 0; i < 32; i++) { - OUTPAL(i * 8, radeon_crtc->lut_r[i], radeon_crtc->lut_g[i], radeon_crtc->lut_b[i]); - } - } else if (pScrn->depth == 16) { - for (i = 0; i < 64; i++) { - OUTPAL(i * 4, radeon_crtc->lut_r[i], radeon_crtc->lut_g[i], radeon_crtc->lut_b[i]); - if (i <= 31) { - OUTPAL(i * 8, radeon_crtc->lut_r[i + 64], radeon_crtc->lut_g[i + 64], radeon_crtc->lut_b[i + 64]); - } - } - } else { - for (i = 0; i < 256; i++) { - OUTPAL(i, radeon_crtc->lut_r[i], radeon_crtc->lut_g[i], radeon_crtc->lut_b[i]); - } + for (i = 0; i < 256; i++) { + OUTPAL(i, radeon_crtc->lut_r[i], radeon_crtc->lut_g[i], radeon_crtc->lut_b[i]); } } @@ -937,17 +924,19 @@ radeon_crtc_gamma_set(xf86CrtcPtr crtc, CARD16 *red, CARD16 *green, { RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; ScrnInfoPtr pScrn = crtc->scrn; - int i; + int i, j; if (pScrn->depth == 16) { for (i = 0; i < 64; i++) { - radeon_crtc->lut_r[i] = red[i/2] >> 8; - radeon_crtc->lut_g[i] = green[i] >> 8; - radeon_crtc->lut_b[i] = blue[i/2] >> 8; if (i <= 31) { - radeon_crtc->lut_r[i + 64] = red[i] >> 8; - radeon_crtc->lut_g[i + 64] = green[(i * 2) + 1] >> 8; - radeon_crtc->lut_b[i + 64] = blue[i] >> 8; + for (j = 0; j < 8; j++) { + radeon_crtc->lut_r[i * 8 + j] = red[i] >> 8; + radeon_crtc->lut_b[i * 8 + j] = blue[i] >> 8; + } + } + + for (j = 0; j < 4; j++) { + radeon_crtc->lut_g[i * 4 + j] = green[i] >> 8; } } } else { diff --git a/src/radeon_driver.c b/src/radeon_driver.c index e445b9e..158e1e4 100644 --- a/src/radeon_driver.c +++ b/src/radeon_driver.c @@ -2856,7 +2856,7 @@ static void RADEONLoadPalette(ScrnInfoPtr pScrn, int numColors, case 16: for (i = 0; i < numColors; i++) { index = indices[i]; - + if (i <= 31) { for (j = 0; j < 8; j++) { lut_r[index * 8 + j] = colors[index].red << 8; @@ -2874,7 +2874,7 @@ static void RADEONLoadPalette(ScrnInfoPtr pScrn, int numColors, lut_r[index] = colors[index].red << 8; lut_g[index] = colors[index].green << 8; lut_b[index] = colors[index].blue << 8; - } + } break; } commit f2b13f1457bf860b075310d3962254be0ed7bea3 Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Sun Aug 26 13:27:19 2007 -0400 RADEON: Only update pixclks_cntl when updating tv routing No need to re-set all of the pll2 stuff diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c index d42e482..6a4116d 100644 --- a/src/radeon_crtc.c +++ b/src/radeon_crtc.c @@ -752,6 +752,13 @@ RADEONInitPLL2Registers(ScrnInfoPtr pScrn, RADEONSavePtr save, } static void +radeon_update_tv_routing(ScrnInfoPtr pScrn, RADEONSavePtr restore) +{ + /* pixclks_cntl controls tv clock routing */ + OUTPLL(pScrn, RADEON_PIXCLKS_CNTL, restore->pixclks_cntl); +} + +static void radeon_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, DisplayModePtr adjusted_mode, int x, int y) { @@ -867,7 +874,7 @@ radeon_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, /* pixclks_cntl handles tv-out clock routing */ if (update_tv_routing) - RADEONRestorePLL2Registers(pScrn, &info->ModeReg); + radeon_update_tv_routing(pScrn, &info->ModeReg); if (info->DispPriority) RADEONInitDispBandwidth(pScrn); commit 5d044b9f74c7aa7e12f2822896fed881e2ca9d19 Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Sat Aug 25 21:03:08 2007 -0400 RADEON: fix crtc clipping for Xv diff --git a/src/radeon_video.c b/src/radeon_video.c index 5cbe9fc..271f7fe 100644 --- a/src/radeon_video.c +++ b/src/radeon_video.c @@ -1562,7 +1562,7 @@ RADEONSetupImageVideo(ScreenPtr pScreen) return NULL; adapt->type = XvWindowMask | XvInputMask | XvImageMask; - adapt->flags = VIDEO_OVERLAID_IMAGES | VIDEO_CLIP_TO_VIEWPORT; + adapt->flags = VIDEO_OVERLAID_IMAGES /*| VIDEO_CLIP_TO_VIEWPORT*/; adapt->name = "ATI Radeon Video Overlay"; adapt->nEncodings = 1; adapt->pEncodings = &DummyEncoding; @@ -3330,8 +3330,8 @@ RADEONInitOffscreenImages(ScreenPtr pScreen) return; offscreenImages[0].image = &Images[0]; - offscreenImages[0].flags = VIDEO_OVERLAID_IMAGES | - VIDEO_CLIP_TO_VIEWPORT; + offscreenImages[0].flags = VIDEO_OVERLAID_IMAGES /*| + VIDEO_CLIP_TO_VIEWPORT*/; offscreenImages[0].alloc_surface = RADEONAllocateSurface; offscreenImages[0].free_surface = RADEONFreeSurface; offscreenImages[0].display = RADEONDisplaySurface; commit 3fd2d22a02812d5f86cdc1c9503f48362b0c362b Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Sat Aug 25 17:37:35 2007 -0400 RADEON: remove fbdev option FBDev support is currently broken, and it not really compatible with randr diff --git a/man/radeon.man b/man/radeon.man index 8423cc9..88665bf 100644 --- a/man/radeon.man +++ b/man/radeon.man @@ -150,14 +150,6 @@ affects the "true" overlay via xv, it won't affect things like textured video. .br The default value is either 1536 (for most chips) or 1920. .TP -.BI "Option \*qUseFBDev\*q \*q" boolean \*q -Enable or disable use of an OS\-specific framebuffer device interface -(which is not supported on all OSs). MergedFB does not work when this -option is in use. See fbdevhw(__drivermansuffix__) for further information. -.br -The default is -.B off. -.TP .BI "Option \*qAGPMode\*q \*q" integer \*q Set AGP data transfer rate. (used only when DRI is enabled) diff --git a/src/radeon.h b/src/radeon.h index 6f880b8..53fb5f7 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -123,7 +123,6 @@ typedef enum { #endif OPTION_DDC_MODE, OPTION_IGNORE_EDID, - OPTION_FBDEV, OPTION_DISP_PRIORITY, OPTION_PANEL_SIZE, OPTION_MIN_DOTCLOCK, @@ -437,8 +436,6 @@ typedef struct { RADEONChipFamily ChipFamily; RADEONErrata ChipErrata; - Bool FBDev; - unsigned long LinearAddr; /* Frame buffer physical address */ unsigned long MMIOAddr; /* MMIO region physical address */ unsigned long BIOSAddr; /* BIOS physical address */ diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c index 3ee7760..d42e482 100644 --- a/src/radeon_crtc.c +++ b/src/radeon_crtc.c @@ -36,7 +36,6 @@ /* X and server generic header files */ #include "xf86.h" #include "xf86_OSproc.h" -#include "fbdevhw.h" #include "vgaHW.h" #include "xf86Modes.h" diff --git a/src/radeon_display.c b/src/radeon_display.c index ed20409..ed45d79 100644 --- a/src/radeon_display.c +++ b/src/radeon_display.c @@ -36,7 +36,6 @@ /* X and server generic header files */ #include "xf86.h" #include "xf86_OSproc.h" -#include "fbdevhw.h" #include "vgaHW.h" #include "xf86Modes.h" diff --git a/src/radeon_driver.c b/src/radeon_driver.c index a111e0d..e445b9e 100644 --- a/src/radeon_driver.c +++ b/src/radeon_driver.c @@ -98,11 +98,10 @@ #include "xf86cmap.h" #include "vbe.h" - /* fbdevhw * vgaHW definitions */ + /* vgaHW definitions */ #ifdef WITH_VGAHW #include "vgaHW.h" #endif -#include "fbdevhw.h" #define DPMS_SERVER #include <X11/extensions/dpms.h> @@ -159,7 +158,6 @@ static const OptionInfoRec RADEONOptions[] = { #endif { OPTION_DDC_MODE, "DDCMode", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_IGNORE_EDID, "IgnoreEDID", OPTV_BOOLEAN, {0}, FALSE }, - { OPTION_FBDEV, "UseFBDev", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_DISP_PRIORITY, "DisplayPriority", OPTV_ANYSTR, {0}, FALSE }, { OPTION_PANEL_SIZE, "PanelSize", OPTV_ANYSTR, {0}, FALSE }, { OPTION_MIN_DOTCLOCK, "ForceMinDotClock", OPTV_FREQ, {0}, FALSE }, @@ -208,34 +206,6 @@ static const char *vgahwSymbols[] = { }; #endif -static const char *fbdevHWSymbols[] = { - "fbdevHWInit", - "fbdevHWUseBuildinMode", - - "fbdevHWGetVidmem", - - "fbdevHWDPMSSet", - - /* colormap */ - "fbdevHWLoadPalette", - /* ScrnInfo hooks */ - "fbdevHWAdjustFrame", - "fbdevHWEnterVT", - "fbdevHWLeaveVT", - "fbdevHWModeInit", - "fbdevHWRestore", - "fbdevHWSave", - "fbdevHWSwitchMode", - "fbdevHWValidModeWeak", - - "fbdevHWMapMMIO", - "fbdevHWMapVidmem", - "fbdevHWUnmapMMIO", - "fbdevHWUnmapVidmem", - - NULL -}; - static const char *ddcSymbols[] = { "xf86PrintEDID", "xf86DoEDID_DDC1", @@ -396,7 +366,6 @@ void RADEONLoaderRefSymLists(void) drmSymbols, driSymbols, #endif - fbdevHWSymbols, vbeSymbols, int10Symbols, i2cSymbols, @@ -553,15 +522,11 @@ static Bool RADEONMapMMIO(ScrnInfoPtr pScrn) { RADEONInfoPtr info = RADEONPTR(pScrn); - if (info->FBDev) { - info->MMIO = fbdevHWMapMMIO(pScrn); - } else { - info->MMIO = xf86MapPciMem(pScrn->scrnIndex, - VIDMEM_MMIO | VIDMEM_READSIDEEFFECT, - info->PciTag, - info->MMIOAddr, - info->MMIOSize); - } + info->MMIO = xf86MapPciMem(pScrn->scrnIndex, + VIDMEM_MMIO | VIDMEM_READSIDEEFFECT, + info->PciTag, + info->MMIOAddr, + info->MMIOSize); if (!info->MMIO) return FALSE; return TRUE; @@ -574,11 +539,8 @@ static Bool RADEONUnmapMMIO(ScrnInfoPtr pScrn) { RADEONInfoPtr info = RADEONPTR(pScrn); - if (info->FBDev) - fbdevHWUnmapMMIO(pScrn); - else { - xf86UnMapVidMem(pScrn->scrnIndex, info->MMIO, info->MMIOSize); - } + xf86UnMapVidMem(pScrn->scrnIndex, info->MMIO, info->MMIOSize); + info->MMIO = NULL; return TRUE; } @@ -588,17 +550,13 @@ static Bool RADEONMapFB(ScrnInfoPtr pScrn) { RADEONInfoPtr info = RADEONPTR(pScrn); - if (info->FBDev) { - info->FB = fbdevHWMapVidmem(pScrn); - } else { - xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, - "Map: 0x%08lx, 0x%08lx\n", info->LinearAddr, info->FbMapSize); - info->FB = xf86MapPciMem(pScrn->scrnIndex, - VIDMEM_FRAMEBUFFER, - info->PciTag, - info->LinearAddr, - info->FbMapSize); - } + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "Map: 0x%08lx, 0x%08lx\n", info->LinearAddr, info->FbMapSize); + info->FB = xf86MapPciMem(pScrn->scrnIndex, + VIDMEM_FRAMEBUFFER, + info->PciTag, + info->LinearAddr, + info->FbMapSize); if (!info->FB) return FALSE; return TRUE; @@ -609,10 +567,7 @@ static Bool RADEONUnmapFB(ScrnInfoPtr pScrn) { RADEONInfoPtr info = RADEONPTR(pScrn); - if (info->FBDev) - fbdevHWUnmapVidmem(pScrn); - else - xf86UnMapVidMem(pScrn->scrnIndex, info->FB, info->FbMapSize); + xf86UnMapVidMem(pScrn->scrnIndex, info->FB, info->FbMapSize); info->FB = NULL; return TRUE; } @@ -1211,8 +1166,7 @@ static void RADEONInitMemoryMap(ScrnInfoPtr pScrn) } #endif - /* We won't try to change MC_FB_LOCATION when using fbdev */ - if (!info->FBDev) { + { if (info->IsIGP) info->mc_fb_location = INREG(RADEON_NB_TOM); else @@ -1380,9 +1334,7 @@ static Bool RADEONPreInitVRAM(ScrnInfoPtr pScrn) MessageType from = X_PROBED; CARD32 accessible, bar_size; - if (info->FBDev) - pScrn->videoRam = fbdevHWGetVidmem(pScrn) / 1024; - else if ((info->IsIGP)) { + if ((info->IsIGP)) { CARD32 tom = INREG(RADEON_NB_TOM); pScrn->videoRam = (((tom >> 16) - @@ -2293,12 +2245,7 @@ static void RADEONPreInitColorTiling(ScrnInfoPtr pScrn) } #endif /* XF86DRI */ - if ((info->allowColorTiling) && (info->FBDev)) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Color tiling not supported with UseFBDev option\n"); - info->allowColorTiling = FALSE; - } - else if (info->allowColorTiling) { + if (info->allowColorTiling) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Color tiling enabled by default\n"); } else { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Color tiling disabled\n"); @@ -2715,30 +2662,8 @@ _X_EXPORT Bool RADEONPreInit(ScrnInfoPtr pScrn, int flags) "X server will %skeep DPI constant for all screen sizes\n", info->constantDPI ? "" : "not "); - if (xf86ReturnOptValBool(info->Options, OPTION_FBDEV, FALSE)) { - /* check for Linux framebuffer device */ - - if (xf86LoadSubModule(pScrn, "fbdevhw")) { - xf86LoaderReqSymLists(fbdevHWSymbols, NULL); - - if (fbdevHWInit(pScrn, info->PciInfo, NULL)) { - pScrn->ValidMode = fbdevHWValidModeWeak(); - info->FBDev = TRUE; - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, - "Using framebuffer device\n"); - } else { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "fbdevHWInit failed, not using framebuffer device\n"); - } - } else { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Couldn't load fbdevhw module, not using framebuffer device\n"); - } - } - - if (!info->FBDev) - if (!RADEONPreInitInt10(pScrn, &pInt10)) - goto fail; + if (!RADEONPreInitInt10(pScrn, &pInt10)) + goto fail; RADEONPostInt10Check(pScrn, int10_save); @@ -2906,9 +2831,7 @@ static void RADEONLoadPalette(ScrnInfoPtr pScrn, int numColors, if (info->accelOn && pScrn->pScreen) RADEON_SYNC(info, pScrn); - if (info->FBDev) { - fbdevHWLoadPalette(pScrn, numColors, indices, colors, pVisual); - } else { + { for (c = 0; c < xf86_config->num_crtc; c++) { xf86CrtcPtr crtc = xf86_config->crtc[c]; @@ -3365,6 +3288,7 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, RADEONInfoPtr info = RADEONPTR(pScrn); xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); int hasDRI = 0; + int i; #ifdef RENDER int subPixelOrder = SubPixelUnknown; char* s; @@ -3465,11 +3389,11 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, /* empty the surfaces */ unsigned char *RADEONMMIO = info->MMIO; - unsigned int i; - for (i = 0; i < 8; i++) { - OUTREG(RADEON_SURFACE0_INFO + 16 * i, 0); - OUTREG(RADEON_SURFACE0_LOWER_BOUND + 16 * i, 0); - OUTREG(RADEON_SURFACE0_UPPER_BOUND + 16 * i, 0); + unsigned int j; + for (j = 0; j < 8; j++) { + OUTREG(RADEON_SURFACE0_INFO + 16 * j, 0); + OUTREG(RADEON_SURFACE0_LOWER_BOUND + 16 * j, 0); + OUTREG(RADEON_SURFACE0_UPPER_BOUND + 16 * j, 0); } #ifdef XF86DRI @@ -3642,35 +3566,22 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, #endif pScrn->vtSema = TRUE; -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]