xserver-xorg-video-ati: Changes to 'debian-experimental'
ChangeLog | 330 +++++++++++++++++++++++++++++++++++++++++++++++++++
configure | 20 +--
configure.ac | 2
debian/changelog | 10 +
man/radeon.man | 6
src/radeon.h | 3
src/radeon_display.c | 7 -
src/radeon_driver.c | 10 -
src/radeon_modes.c | 181 ++-------------------------
src/radeon_output.c | 146 ++++++++++++++--------
src/radeon_probe.c | 2
src/radeon_probe.h | 9 +
src/radeon_reg.h | 6
src/radeon_video.c | 27 ++++
src/radeon_vip.c | 7 +
15 files changed, 522 insertions(+), 244 deletions(-)
New commits:
commit d9190780a32e9dcbd2384ce40d952b2a98d5e733
Author: Brice Goglin <bgoglin@debian.org>
Date: Mon Sep 24 08:05:26 2007 +0200
New upstream release candidate
diff --git a/ChangeLog b/ChangeLog
index 7a0e0de..0872b77 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,333 @@
+commit 22cccb99d762567757d3fd38795f71e943f1faf9
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Mon Sep 24 00:10:01 2007 -0400
+
+ bump for RC release
+
+commit fad9e7b00de051f632000eb2304ac23a524f7c8e
+Author: Alex Deucher <alex@t41p.hsd1.va.comcast.net>
+Date: Sun Sep 23 23:43:26 2007 -0400
+
+ RADEON: Rework LVDS mode validation
+
+ The old validation code wasn't really well suited to randr.
+ This fixes several issues:
+ - missing display size for panels with edid
+ - broken duplicate modes
+
+commit bf9674b9df351108e069d037ec10869a4154a881
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Sun Sep 23 15:01:34 2007 -0400
+
+ RADEON: properly set default RMX types
+
+commit b27135bce8b41d69290613b440a338b0a7fe0200
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Sun Sep 23 14:44:38 2007 -0400
+
+ RADEON: fix up LVDS handling for r3xx and newer
+
+commit d5cf268be2c9b3e320d7101f5213f7d5609b6308
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Sat Sep 22 18:31:51 2007 -0400
+
+ RADEON: Fix crash when Xv window is outside of either crtc
+
+commit 8aca0ca6be7122e0ece20985a1862553a1b225c0
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Sat Sep 22 17:56:50 2007 -0400
+
+ Revert "RADEON: fix crash when Xv window is outside of either crtc"
+
+ This reverts commit 9109e62e3be7f96b41b534ab517fdf1baf458806.
+
+ This breaks ABI. better fix to come.
+
+commit d6e1d9be1cd5786a24ed4bb8e45fa7e04df56622
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Sat Sep 22 16:14:06 2007 -0400
+
+ RADEON: Don't make the entity as shareable
+
+ This should prevent people from mistakenly trying to run
+ zaphod mode
+
+commit 81114af1cdddc0b10d076f2e38c7a00c1223cc48
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Sat Sep 22 15:51:23 2007 -0400
+
+ RADEON: preliminary support for mac mini
+
+ Option "MacModel" "mini"
+ may not be 100% correct yet
+
+commit 6c482e453bc8156886294d0c1b8f3f1b3dcf4b36
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Sat Sep 22 15:11:20 2007 -0400
+
+ RADEON: Fix RMX on LVDS
+
+ LVDS + RMX doesn't seem to like having the crtc values tweaked.
+
+commit 9109e62e3be7f96b41b534ab517fdf1baf458806
+Author: Michel Dänzer <daenzer@debian.org>
+Date: Sat Sep 22 14:19:10 2007 -0400
+
+ RADEON: fix crash when Xv window is outside of either crtc
+
+ Should fix bug 12175
+
+commit d2ce4a5003ce1291ea2327b2c00a0b24408fe26c
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Sat Sep 22 10:41:55 2007 -0400
+
+ RADEON: RMX updates
+
+ - add option to turn off RMX
+ - turn off RMX by default on DVI
+ - add infrastructure to support more RMX modes
+
+commit f95b9ab729376083bf0d12987ee260ec2aba721e
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Fri Sep 21 00:12:37 2007 -0400
+
+ RADEON: remove more old cruft
+
+commit 5a6f74103f0ec0d451d0e2573442efe5922848af
+Author: Maciej Cencora <m.cencora@gmail.com>
+Date: Thu Sep 20 23:56:08 2007 -0400
+
+ RADEON: fix video in on RV380 (tested on X600 VIVO)
+
+commit c72a365386e19f9257db041d44b09ad499cc9f6a
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Thu Sep 20 23:49:57 2007 -0400
+
+ RADEON: fix up dvo support (still no external chip init)
+
+commit 5e4d98470b6412a686883c554e7eb7badbe78c4d
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Thu Sep 20 23:22:48 2007 -0400
+
+ RADEON: round 3 on the PLLs. should fix the LVDS issues
+
+commit c5e2a2f09af807006c7ea493a8e90ff77abe207c
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Wed Sep 19 19:58:28 2007 -0400
+
+ bump for RC release
+
+commit 46ff78b9f010ca24178d4363761be00eb3ecb632
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Wed Sep 19 19:49:58 2007 -0400
+
+ RADEON: add default connector setup for single crtc chips
+
+commit 509ca0cb0e1cde905b47db2bbac6f2a58523b279
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Wed Sep 19 19:41:17 2007 -0400
+
+ RADEON: fix external TMDS parsing in legacy bios connector table
+
+commit 5a59547ef7e986c9613023d941c3354cd476faf1
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Wed Sep 19 19:28:09 2007 -0400
+
+ Revert "RADEON: initial pass at external TMDS support"
+
+ This reverts commit 4000a710c93dd2d82891e4082bc7fa922ba9c5f4.
+
+ This needs to be reworked and needs more soak time. so revert
+ for now.
+
+commit dc333884c540d536bffe51a5ebfaf1822af6a91c
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Tue Sep 18 22:23:12 2007 -0400
+
+ RADEON: fix plls again
+
+ previous fix seemed to break other chips. Lets see how
+ this goes.
+
+commit 271e541088f455d1cfedff87e88c9a4fdbdbe424
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Tue Sep 18 22:12:31 2007 -0400
+
+ RADEON: Remove more mergedfb cruft
+
+commit 8ae69c496eba701e744cca0605f73242673f7b3f
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Tue Sep 18 20:12:21 2007 -0400
+
+ RADEON: adjust pll restore
+
+ some chips seem to be pickier than others. fixes bug 12467
+
+commit 8a84dc8ee260716026fa661a6dced2000621efa2
+Author: Michel Dänzer <michel@tungstengraphics.com>
+Date: Tue Sep 18 11:53:39 2007 +0200
+
+ radeon: Remove declaration of unused variable.
+
+commit 2fbbd9c5f0ec27e72780e8b054bc59502f1e5651
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Tue Sep 18 00:45:56 2007 -0400
+
+ RADEON: note that MergedFB support has been replaced with randr 1.2
+
+commit 81b708dbd35c29bf2d67e8c655af97b60e61498b
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Mon Sep 17 23:54:03 2007 -0400
+
+ RADEON: turn off load detection on tv dac by default
+
+ it's just too unreliable and even when it is most people
+ don't want it. enable it via output attribute or force
+ the outputs on with xrandr
+
+commit c3ab53159d42157985a25e9125eaa5362273b73d
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Mon Sep 17 23:28:51 2007 -0400
+
+ RADEON: XPRESS connector tables are crap
+
+ besides specifying the pimary DAC (which they don't have),
+ most seem to specify DDC_CRT2 for DDC, which does not seem
+ to ever work. Some have reported success with DDC_MONID so
+ lets give that a try.
+
+commit 1fafa970fa78ddea29a8804b6cd0aea52e4fa2e1
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Mon Sep 17 23:10:13 2007 -0400
+
+ RADEON: ignore edid digital bit on analog ports
+
+ Some monitors have this bit set even on analog ports
+
+commit 4000a710c93dd2d82891e4082bc7fa922ba9c5f4
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Mon Sep 17 23:04:17 2007 -0400
+
+ RADEON: initial pass at external TMDS support
+
+ - Based on Dave Airlie's initial work and the dvo support
+ in the intel driver.
+ - Only sil164 is supported at the moment.
+ - Once we get some testing and such, we ought to move the dvo
+ drivers out of the drivers so they can be shared among all drivers
+ - Doesn't seem to work on my card (r4xx ATOM) card ATM
+ - Legacy bios table programming sequence not implemented yet
+
+commit 38515d402555eaa61c686d42973e59f659b07466
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Sat Sep 15 11:39:47 2007 -0400
+
+ RADEON: don't restore bios scratch regs
+
+ Leave them as programmed by the bios
+ fixes bug 12424
+
+commit 0241cac643fa1c08a45ea44f5c670b290e760ad8
+Author: Michel Dänzer <michel@tungstengraphics.com>
+Date: Sat Sep 8 00:22:40 2007 +0200
+
+ radeon: Reinstate sync in radeon_crtc_show/hide_cursor.
+
+ Make sure the DRI lock is held though, as these can be called asynchronously.
+
+ Fixes https://bugs.freedesktop.org/show_bug.cgi?id=12245 .
+
+commit 49933e2f7d590811f2bc8c0d51a09f3b7f14845e
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Sat Sep 1 12:23:07 2007 -0400
+
+ RADEON: automatically disable tiling if requested virtual desktop exceeds surface limits
+
+ Also, tweak default desktop sizes and add some informational messages
+
+commit d49a60bc939c9f3e9d57c23e44263f5bb52f09fb
+Author: Sjoerd Simons <sjoerd@luon.net>
+Date: Thu Aug 30 11:40:13 2007 +0200
+
+ radeon: Fix Option "MacModel".
+
+commit 2b860726fff058623e0e8e1b0aca092c246875ce
+Author: Michel Dänzer <michel@tungstengraphics.com>
+Date: Thu Aug 30 11:38:28 2007 +0200
+
+ radeon: Don't build currently unused RADEONSavePalette.
+
+commit 12187a6aa93049c002a4171344d03c713f7f3c5d
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Wed Aug 29 23:11:30 2007 -0400
+
+ RADEON: Add quirk and connector tables for apple laptops
+
+ As far as I can tell there are three apple laptop variants:
+ ibook - LVDS, TVDAC drives TV or VGA via dongle
+ powerbook-duallink - LVDS, TV, External TMDS/Primary DAC
+ powerbook - LVDS, TV, Internal TMDS/Primary DAC
+ use Option "MacModel" "<string>"
+ to enable the appropriate quirks where string is one of the above
+
+ We can't yet init the external TMDS directly, but if OF inits it,
+ it should work. This should also fix bug 9955.
+
+ Please test!
+
+commit 61c1fdaa8553581944f78a11e6f9aa76163a468a
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Tue Aug 28 23:47:19 2007 -0400
+
+ RADEON: add option to force tmds pll to default table
+
+ Also rework the tmds pll output attribute handling a bit
+
+commit 0d9087bc60bb95c770b899cfed29699c02bdac49
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Tue Aug 28 23:08:20 2007 -0400
+
+ RADEON: remove some cruft forgotten in a previous commit
+
+commit 673f799729824f4439dd5f681f75dd5aab50947f
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Tue Aug 28 00:42:30 2007 -0400
+
+ RADEON: Update tv attributes immediately
+
+commit ad6f7ad1b2ccae0bc0a416b9b0ca22709c9d5199
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Tue Aug 28 00:08:41 2007 -0400
+
+ RADEON: remove the "default" tv_standard option
+
+commit 17e0f9e6cbfdb115034d327bd34d46339fd632b7
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Mon Aug 27 23:59:03 2007 -0400
+
+ RADEON: enable load detection for tvdac if output count for tvdac < 2
+
+commit 42839fb5a8584196e7b18375bff6c426ed0347d9
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Mon Aug 27 23:44:13 2007 -0400
+
+ RADEON: make load detection an output attribute for analog outputs
+
+ Since TV/VGA/DVI-I can share the TV DAC, we often get false detection
+ of all inputs that share that DAC. Make load detection an output
+ attribute. Enabled by default on primary dac and on cards where
+ tv dac is (usually) dedicated to tv (non-IGP mobilities).
+
+commit a5a1055d64ab4fa16bfb03a412ae6c4fe69ff65d
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Mon Aug 27 22:42:22 2007 -0400
+
+ RADEON: make tmds pll an output attribute
+
+ sometimes the bios tmds plls are busted for certain
+ monitors. sometimes the dirver tables are. Let the user
+ pick at run time.
+
commit a12e4aa01bf1c5723c3c791ff9bdc26eef21d5ea
Author: Alex Deucher <alex@botch2.(none)>
Date: Sun Aug 26 18:51:29 2007 -0400
diff --git a/configure b/configure
index fc11c1d..f568204 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.193.
+# Generated by GNU Autoconf 2.61 for xf86-video-ati 6.7.194.
#
# 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.193'
-PACKAGE_STRING='xf86-video-ati 6.7.193'
+PACKAGE_VERSION='6.7.194'
+PACKAGE_STRING='xf86-video-ati 6.7.194'
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.193 to adapt to many kinds of systems.
+\`configure' configures xf86-video-ati 6.7.194 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.193:";;
+ short | recursive ) echo "Configuration of xf86-video-ati 6.7.194:";;
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.193
+xf86-video-ati configure 6.7.194
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.193, which was
+It was created by xf86-video-ati $as_me 6.7.194, 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.193'
+ VERSION='6.7.194'
cat >>confdefs.h <<_ACEOF
@@ -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.193, which was
+This file was extended by xf86-video-ati $as_me 6.7.194, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -22498,7 +22498,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-xf86-video-ati config.status 6.7.193
+xf86-video-ati config.status 6.7.194
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 6821b8a..c66bc5d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+xserver-xorg-video-ati (1:6.7.194-1) experimental; urgency=low
+
+ * New upstream release candidate.
+ + Add MacModel "mini" option to support Mac Mini connector table,
+ closes: #443570.
+ + Fix crash when Xv window is outside of either crtc,
+ closes: #441902.
+
+ -- Brice Goglin <bgoglin@debian.org> Mon, 24 Sep 2007 07:59:36 +0200
+
xserver-xorg-video-ati (1:6.7.193-1) experimental; urgency=low
* New upstream release candidate.
commit 22cccb99d762567757d3fd38795f71e943f1faf9
Author: Alex Deucher <alex@botch2.(none)>
Date: Mon Sep 24 00:10:01 2007 -0400
bump for RC release
diff --git a/configure.ac b/configure.ac
index bd5109b..7204a31 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
AC_PREREQ(2.57)
AC_INIT([xf86-video-ati],
- 6.7.193,
+ 6.7.194,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-video-ati)
commit fad9e7b00de051f632000eb2304ac23a524f7c8e
Author: Alex Deucher <alex@t41p.hsd1.va.comcast.net>
Date: Sun Sep 23 23:43:26 2007 -0400
RADEON: Rework LVDS mode validation
The old validation code wasn't really well suited to randr.
This fixes several issues:
- missing display size for panels with edid
- broken duplicate modes
diff --git a/src/radeon_modes.c b/src/radeon_modes.c
index 9c12ecb..af56cdf 100644
--- a/src/radeon_modes.c
+++ b/src/radeon_modes.c
@@ -82,7 +82,7 @@ static DisplayModePtr RADEONTVModes(xf86OutputPtr output)
{
DisplayModePtr new = NULL;
- /* just a place holder */
+ /* just a place holder */
new = xf86CVTMode(800, 600, 60.00, FALSE, FALSE);
new->type = M_T_DRIVER | M_T_PREFERRED;
@@ -125,161 +125,25 @@ static DisplayModePtr RADEONFPNativeMode(xf86OutputPtr output)
new->next = NULL;
new->prev = NULL;
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "No valid mode specified, force to native mode\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Added native panel mode: %dx%d\n",
+ radeon_output->PanelXRes, radeon_output->PanelYRes);
}
return new;
}
-/* FP mode initialization routine for using on-chip RMX to scale
- */
-int RADEONValidateFPModes(xf86OutputPtr output, char **ppModeName, DisplayModePtr *modeList)
-{
- ScrnInfoPtr pScrn = output->scrn;
- RADEONOutputPrivatePtr radeon_output = output->driver_private;
- DisplayModePtr last = NULL;
- DisplayModePtr new = NULL;
- DisplayModePtr first = NULL;
- DisplayModePtr p, tmp;
- int count = 0;
- int i, width, height;
-
- pScrn->virtualX = pScrn->display->virtualX;
- pScrn->virtualY = pScrn->display->virtualY;
-
- /* We have a flat panel connected to the primary display, and we
- * don't have any DDC info.
- */
- for (i = 0; ppModeName[i] != NULL; i++) {
-
- if (sscanf(ppModeName[i], "%dx%d", &width, &height) != 2) continue;
-
- /* Note: We allow all non-standard modes as long as they do not
- * exceed the native resolution of the panel. Since these modes
- * need the internal RMX unit in the video chips (and there is
- * only one per card), this will only apply to the primary head.
- */
- if (width < 320 || width > radeon_output->PanelXRes ||
- height < 200 || height > radeon_output->PanelYRes) {
- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
- "Mode %s is out of range.\n", ppModeName[i]);
- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
- "Valid modes must be between 320x200-%dx%d\n",
- radeon_output->PanelXRes, radeon_output->PanelYRes);
- continue;
- }
-
- new = xnfcalloc(1, sizeof(DisplayModeRec));
- new->name = xnfalloc(strlen(ppModeName[i]) + 1);
- strcpy(new->name, ppModeName[i]);
- new->HDisplay = width;
- new->VDisplay = height;
-
- /* These values are effective values after expansion They are
- * not really used to set CRTC registers.
- */
- new->HTotal = radeon_output->PanelXRes + radeon_output->HBlank;
- new->HSyncStart = radeon_output->PanelXRes + radeon_output->HOverPlus;
- new->HSyncEnd = new->HSyncStart + radeon_output->HSyncWidth;
- new->VTotal = radeon_output->PanelYRes + radeon_output->VBlank;
- new->VSyncStart = radeon_output->PanelYRes + radeon_output->VOverPlus;
- new->VSyncEnd = new->VSyncStart + radeon_output->VSyncWidth;
- new->Clock = radeon_output->DotClock;
- new->Flags |= RADEON_USE_RMX;
-
-#ifdef M_T_PREFERRED
- if (width == radeon_output->PanelXRes && height == radeon_output->PanelYRes)
- new->type |= M_T_PREFERRED;
-#endif
-
- new->type |= M_T_USERDEF;
-
- new->next = NULL;
- new->prev = last;
-
- if (last) last->next = new;
- last = new;
- if (!first) first = new;
-
- pScrn->display->virtualX =
- pScrn->virtualX = MAX(pScrn->virtualX, width);
- pScrn->display->virtualY =
- pScrn->virtualY = MAX(pScrn->virtualY, height);
- count++;
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Valid mode using on-chip RMX: %s\n", new->name);
- }
-
- /* If all else fails, add the native mode */
- if (!count) {
- first = last = RADEONFPNativeMode(output);
- if (first) count = 1;
- }
-
- /* add in all default vesa modes smaller than panel size, used for randr*/
- for (p = *modeList; p && p->next; p = p->next->next) {
- if ((p->HDisplay <= radeon_output->PanelXRes) && (p->VDisplay <= radeon_output->PanelYRes)) {
- tmp = first;
- while (tmp) {
- if ((p->HDisplay == tmp->HDisplay) && (p->VDisplay == tmp->VDisplay)) break;
- tmp = tmp->next;
- }
- if (!tmp) {
- new = xnfcalloc(1, sizeof(DisplayModeRec));
- new->name = xnfalloc(strlen(p->name) + 1);
- strcpy(new->name, p->name);
- new->HDisplay = p->HDisplay;
- new->VDisplay = p->VDisplay;
-
- /* These values are effective values after expansion They are
- * not really used to set CRTC registers.
- */
- new->HTotal = radeon_output->PanelXRes + radeon_output->HBlank;
- new->HSyncStart = radeon_output->PanelXRes + radeon_output->HOverPlus;
- new->HSyncEnd = new->HSyncStart + radeon_output->HSyncWidth;
- new->VTotal = radeon_output->PanelYRes + radeon_output->VBlank;
- new->VSyncStart = radeon_output->PanelYRes + radeon_output->VOverPlus;
- new->VSyncEnd = new->VSyncStart + radeon_output->VSyncWidth;
- new->Clock = radeon_output->DotClock;
- new->Flags |= RADEON_USE_RMX;
-
- new->type |= M_T_DEFAULT;
-
- if (last) last->next = new;
- last = new;
- if (!first) first = new;
- }
- }
- }
-
- /* Close the doubly-linked mode list, if we found any usable modes */
- if (last) {
- last->next = NULL; //first;
- first->prev = NULL; //last;
- *modeList = first;
- //RADEONSetPitch(pScrn);
- }
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Total number of valid FP mode(s) found: %d\n", count);
-
- return count;
-}
-
DisplayModePtr
RADEONProbeOutputModes(xf86OutputPtr output)
{
ScrnInfoPtr pScrn = output->scrn;
RADEONOutputPrivatePtr radeon_output = output->driver_private;
- DisplayModePtr mode;
xf86MonPtr edid_mon;
DisplayModePtr modes = NULL;
#if 0
/* force reprobe */
radeon_output->MonType = MT_UNKNOWN;
-
+
RADEONConnectorFindMonitor(pScrn, output);
#endif
ErrorF("in RADEONProbeOutputModes\n");
@@ -288,7 +152,7 @@ RADEONProbeOutputModes(xf86OutputPtr output)
if (radeon_output->type == OUTPUT_DVI || radeon_output->type == OUTPUT_VGA) {
edid_mon = xf86OutputGetEDID (output, radeon_output->pI2CBus);
xf86OutputSetEDID (output, edid_mon);
-
+
modes = xf86OutputGetEDIDModes (output);
return modes;
}
@@ -299,29 +163,17 @@ RADEONProbeOutputModes(xf86OutputPtr output)
if (radeon_output->type == OUTPUT_LVDS) {
/* okay we got DDC info */
if (output->MonInfo) {
- /* Debug info for now, at least */
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "EDID for output %d\n", radeon_output->num);
- xf86PrintEDID(output->MonInfo);
-
- modes = xf86DDCGetModes(pScrn->scrnIndex, output->MonInfo);
-
- for (mode = modes; mode != NULL; mode = mode->next) {
- if (mode->Flags & V_DBLSCAN) {
- if ((mode->CrtcHDisplay >= 1024) || (mode->CrtcVDisplay >= 768))
- mode->status = MODE_CLOCK_RANGE;
- }
- }
- xf86PruneInvalidModes(pScrn, &modes, TRUE);
-
- /* do some physcial size stuff */
- }
-
- if (modes == NULL) {
- RADEONValidateFPModes(output, pScrn->display->modes, &modes);
- }
+ edid_mon = xf86OutputGetEDID (output, radeon_output->pI2CBus);
+ xf86OutputSetEDID (output, edid_mon);
+
+ modes = xf86OutputGetEDIDModes (output);
+ return modes;
+ } else
+ /* add native panel mode */
+ modes = RADEONFPNativeMode(output);
}
}
-
+
if (modes) {
xf86ValidateModesUserConfig(pScrn, modes);
xf86PruneInvalidModes(pScrn, &modes, FALSE);
commit bf9674b9df351108e069d037ec10869a4154a881
Author: Alex Deucher <alex@botch2.(none)>
Date: Sun Sep 23 15:01:34 2007 -0400
RADEON: properly set default RMX types
diff --git a/src/radeon_output.c b/src/radeon_output.c
index eab39a6..6ece28a 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -2475,10 +2475,12 @@ void RADEONInitConnector(xf86OutputPtr output)
}
if (radeon_output->type == OUTPUT_LVDS) {
+ radeon_output->rmx_type = RMX_FULL;
RADEONGetLVDSInfo(output);
}
if (radeon_output->type == OUTPUT_DVI) {
+ radeon_output->rmx_type = RMX_OFF;
RADEONGetTMDSInfo(output);
}
commit b27135bce8b41d69290613b440a338b0a7fe0200
Author: Alex Deucher <alex@botch2.(none)>
Date: Sun Sep 23 14:44:38 2007 -0400
RADEON: fix up LVDS handling for r3xx and newer
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 3b8454f..e7cccf6 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -4172,8 +4172,8 @@ void RADEONRestoreLVDSRegisters(ScrnInfoPtr pScrn, RADEONSavePtr restore)
if (info->IsMobility) {
OUTREG(RADEON_LVDS_GEN_CNTL, restore->lvds_gen_cntl);
- /*OUTREG(RADEON_LVDS_PLL_CNTL, restore->lvds_pll_cntl);
- OUTREG(RADEON_BIOS_4_SCRATCH, restore->bios_4_scratch);
+ OUTREG(RADEON_LVDS_PLL_CNTL, restore->lvds_pll_cntl);
+ /*OUTREG(RADEON_BIOS_4_SCRATCH, restore->bios_4_scratch);
OUTREG(RADEON_BIOS_5_SCRATCH, restore->bios_5_scratch);
OUTREG(RADEON_BIOS_6_SCRATCH, restore->bios_6_scratch);*/
}
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 346fdc4..eab39a6 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -790,7 +790,7 @@ static void RADEONInitFP2Registers(xf86OutputPtr output, RADEONSavePtr save,
if (IsPrimary) {
if ((info->ChipFamily == CHIP_FAMILY_R200) || IS_R300_VARIANT) {
save->fp2_gen_cntl &= ~R200_FP2_SOURCE_SEL_MASK;
- if (mode->Flags & RADEON_USE_RMX)
+ if (mode->Flags & RADEON_USE_RMX)
save->fp2_gen_cntl |= R200_FP2_SOURCE_SEL_RMX;
} else {
save->fp2_gen_cntl &= ~RADEON_FP2_SRC_SEL_CRTC2;
@@ -812,16 +812,30 @@ static void RADEONInitLVDSRegisters(xf86OutputPtr output, RADEONSavePtr save,
ScrnInfoPtr pScrn = output->scrn;
RADEONInfoPtr info = RADEONPTR(pScrn);
- save->lvds_pll_cntl = info->SavedReg.lvds_pll_cntl;
+ save->lvds_pll_cntl = (info->SavedReg.lvds_pll_cntl |
+ RADEON_LVDS_PLL_EN);
+
+ save->lvds_pll_cntl &= ~RADEON_LVDS_PLL_RESET;
save->lvds_gen_cntl = info->SavedReg.lvds_gen_cntl;
save->lvds_gen_cntl |= RADEON_LVDS_DISPLAY_DIS;
save->lvds_gen_cntl &= ~(RADEON_LVDS_ON | RADEON_LVDS_BLON);
- if (IsPrimary)
- save->lvds_gen_cntl &= ~RADEON_LVDS_SEL_CRTC2;
- else
- save->lvds_gen_cntl |= RADEON_LVDS_SEL_CRTC2;
+ if (IS_R300_VARIANT)
+ save->lvds_pll_cntl &= ~(R300_LVDS_SRC_SEL_MASK);
+
+ if (IsPrimary) {
+ if (IS_R300_VARIANT) {
+ if (mode->Flags & RADEON_USE_RMX)
+ save->lvds_pll_cntl |= R300_LVDS_SRC_SEL_RMX;
+ } else
+ save->lvds_gen_cntl &= ~RADEON_LVDS_SEL_CRTC2;
+ } else {
+ if (IS_R300_VARIANT) {
+ save->lvds_pll_cntl |= R300_LVDS_SRC_SEL_CRTC2;
+ } else
+ save->lvds_gen_cntl |= RADEON_LVDS_SEL_CRTC2;
+ }
}
diff --git a/src/radeon_reg.h b/src/radeon_reg.h
index af62a69..96adb22 100644
--- a/src/radeon_reg.h
+++ b/src/radeon_reg.h
@@ -924,6 +924,12 @@
#define RADEON_LVDS_PLL_CNTL 0x02d4
# define RADEON_HSYNC_DELAY_SHIFT 28
# define RADEON_HSYNC_DELAY_MASK (0xf << 28)
+# define RADEON_LVDS_PLL_EN (1 << 16)
+# define RADEON_LVDS_PLL_RESET (1 << 17)
+# define R300_LVDS_SRC_SEL_MASK (3 << 18)
+# define R300_LVDS_SRC_SEL_CRTC1 (0 << 18)
+# define R300_LVDS_SRC_SEL_CRTC2 (1 << 18)
+# define R300_LVDS_SRC_SEL_RMX (2 << 18)
#define RADEON_MAX_LATENCY 0x0f3f /* PCI */
#define RADEON_MC_AGP_LOCATION 0x014c
commit d5cf268be2c9b3e320d7101f5213f7d5609b6308
Author: Alex Deucher <alex@botch2.(none)>
Date: Sat Sep 22 18:31:51 2007 -0400
RADEON: Fix crash when Xv window is outside of either crtc
diff --git a/src/radeon_video.c b/src/radeon_video.c
index 271f7fe..dca9695 100644
--- a/src/radeon_video.c
+++ b/src/radeon_video.c
@@ -2907,6 +2907,15 @@ RADEONPutImage(
clipBoxes, width, height))
return Success;
+ if (!crtc) {
+ if (pPriv->videoStatus & CLIENT_VIDEO_ON) {
+ unsigned char *RADEONMMIO = info->MMIO;
+ OUTREG(RADEON_OV0_SCALE_CNTL, 0);
+ pPriv->videoStatus &= ~CLIENT_VIDEO_ON;
+ }
+ return Success;
+ }
+
dstBox.x1 -= crtc->x;
dstBox.x2 -= crtc->x;
dstBox.y1 -= crtc->y;
@@ -3285,6 +3294,15 @@ RADEONDisplaySurface(
surface->width, surface->height))
return Success;
+ if (!crtc) {
+ if (pPriv->isOn) {
+ unsigned char *RADEONMMIO = info->MMIO;
+ OUTREG(RADEON_OV0_SCALE_CNTL, 0);
+ pPriv->isOn = FALSE;
+ }
+ return Success;
+ }
+
dstBox.x1 -= crtc->x;
dstBox.x2 -= crtc->x;
dstBox.y1 -= crtc->y;
@@ -3419,6 +3437,15 @@ RADEONPutVideo(
clipBoxes, width, height))
return Success;
+ if (!crtc) {
+ if (pPriv->videoStatus & CLIENT_VIDEO_ON) {
+ unsigned char *RADEONMMIO = info->MMIO;
+ OUTREG(RADEON_OV0_SCALE_CNTL, 0);
+ pPriv->videoStatus &= ~CLIENT_VIDEO_ON;
+ }
+ return Success;
+ }
+
dstBox.x1 -= crtc->x;
dstBox.x2 -= crtc->x;
dstBox.y1 -= crtc->y;
commit 8aca0ca6be7122e0ece20985a1862553a1b225c0
Author: Alex Deucher <alex@botch2.(none)>
Date: Sat Sep 22 17:56:50 2007 -0400
Revert "RADEON: fix crash when Xv window is outside of either crtc"
This reverts commit 9109e62e3be7f96b41b534ab517fdf1baf458806.
This breaks ABI. better fix to come.
diff --git a/src/radeon_video.c b/src/radeon_video.c
index bbd743b..271f7fe 100644
--- a/src/radeon_video.c
+++ b/src/radeon_video.c
@@ -215,8 +215,7 @@ radeon_clip_video_helper(ScrnInfoPtr pScrn,
REGION_INIT (pScreen, &crtc_region_local, &crtc_box, 1);
crtc_region = &crtc_region_local;
REGION_INTERSECT (pScreen, crtc_region, crtc_region, reg);
- } else
- return FALSE;
+ }
*crtc_ret = crtc;
}
commit d6e1d9be1cd5786a24ed4bb8e45fa7e04df56622
Author: Alex Deucher <alex@botch2.(none)>
Date: Sat Sep 22 16:14:06 2007 -0400
RADEON: Don't make the entity as shareable
This should prevent people from mistakenly trying to run
zaphod mode
diff --git a/src/radeon_probe.c b/src/radeon_probe.c
index c697f65..207e537 100644
--- a/src/radeon_probe.c
+++ b/src/radeon_probe.c
@@ -314,7 +314,7 @@ RADEONProbe(DriverPtr drv, int flags)
DevUnion *pPriv;
RADEONEntPtr pRADEONEnt;
- xf86SetEntitySharable(usedChips[i]);
+ /*xf86SetEntitySharable(usedChips[i]);*/
if (gRADEONEntityIndex == -1)
gRADEONEntityIndex = xf86AllocateEntityPrivateIndex();
commit 81114af1cdddc0b10d076f2e38c7a00c1223cc48
Author: Alex Deucher <alex@botch2.(none)>
Date: Sat Sep 22 15:51:23 2007 -0400
RADEON: preliminary support for mac mini
Option "MacModel" "mini"
may not be 100% correct yet
diff --git a/man/radeon.man b/man/radeon.man
index 8217262..35dd701 100644
--- a/man/radeon.man
+++ b/man/radeon.man
@@ -404,9 +404,11 @@ Used to specify Mac models for connector tables and quirks. Only valid
.br
ibook \-\- ibooks
.br
-powerbook-duallink \-\- Powerbooks with dual link DVI
+powerbook-duallink \-\- Powerbooks with external DVI
.br
-powerbook \-\- Powerbooks with single link DVI
+powerbook \-\- Powerbooks with integrated DVI
+.br
+mini \-\- Mac Mini
.br
The default value is
.B undefined.
diff --git a/src/radeon.h b/src/radeon.h
index 4c586f6..cec06e9 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -429,7 +429,8 @@ typedef enum {
typedef enum {
RADEON_MAC_IBOOK = 0x00000001,
RADEON_MAC_POWERBOOK_DL = 0x00000002,
- RADEON_MAC_POWERBOOK = 0x00000004
+ RADEON_MAC_POWERBOOK = 0x00000004,
+ RADEON_MAC_MINI = 0x00000008
} RADEONMacModel;
#endif
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 3e58d41..346fdc4 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -2544,6 +2544,19 @@ static Bool RADEONSetupAppleConnectors(ScrnInfoPtr pScrn)
info->BiosConnector[2].DDCType = DDC_NONE_DETECTED;
info->BiosConnector[2].valid = TRUE;
return TRUE;
+ case RADEON_MAC_MINI:
+ info->BiosConnector[0].DDCType = DDC_CRT2;
+ info->BiosConnector[0].DACType = DAC_TVDAC;
+ info->BiosConnector[0].TMDSType = TMDS_EXT;
+ info->BiosConnector[0].ConnectorType = CONNECTOR_DVI_I;
+ info->BiosConnector[0].valid = TRUE;
+
Reply to: