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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED](none)> +Date: Mon Sep 24 00:10:01 2007 -0400 + + bump for RC release + +commit fad9e7b00de051f632000eb2304ac23a524f7c8e +Author: Alex Deucher <[EMAIL PROTECTED]> +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 <[EMAIL PROTECTED](none)> +Date: Sun Sep 23 15:01:34 2007 -0400 + + RADEON: properly set default RMX types + +commit b27135bce8b41d69290613b440a338b0a7fe0200 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Sun Sep 23 14:44:38 2007 -0400 + + RADEON: fix up LVDS handling for r3xx and newer + +commit d5cf268be2c9b3e320d7101f5213f7d5609b6308 +Author: Alex Deucher <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED]> +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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](none)> +Date: Fri Sep 21 00:12:37 2007 -0400 + + RADEON: remove more old cruft + +commit 5a6f74103f0ec0d451d0e2573442efe5922848af +Author: Maciej Cencora <[EMAIL PROTECTED]> +Date: Thu Sep 20 23:56:08 2007 -0400 + + RADEON: fix video in on RV380 (tested on X600 VIVO) + +commit c72a365386e19f9257db041d44b09ad499cc9f6a +Author: Alex Deucher <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](none)> +Date: Wed Sep 19 19:58:28 2007 -0400 + + bump for RC release + +commit 46ff78b9f010ca24178d4363761be00eb3ecb632 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Wed Sep 19 19:49:58 2007 -0400 + + RADEON: add default connector setup for single crtc chips + +commit 509ca0cb0e1cde905b47db2bbac6f2a58523b279 +Author: Alex Deucher <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](none)> +Date: Tue Sep 18 22:12:31 2007 -0400 + + RADEON: Remove more mergedfb cruft + +commit 8ae69c496eba701e744cca0605f73242673f7b3f +Author: Alex Deucher <[EMAIL PROTECTED](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 <[EMAIL PROTECTED]> +Date: Tue Sep 18 11:53:39 2007 +0200 + + radeon: Remove declaration of unused variable. + +commit 2fbbd9c5f0ec27e72780e8b054bc59502f1e5651 +Author: Alex Deucher <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED]> +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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED]> +Date: Thu Aug 30 11:40:13 2007 +0200 + + radeon: Fix Option "MacModel". + +commit 2b860726fff058623e0e8e1b0aca092c246875ce +Author: Michel Dänzer <[EMAIL PROTECTED]> +Date: Thu Aug 30 11:38:28 2007 +0200 + + radeon: Don't build currently unused RADEONSavePalette. + +commit 12187a6aa93049c002a4171344d03c713f7f3c5d +Author: Alex Deucher <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](none)> +Date: Tue Aug 28 23:08:20 2007 -0400 + + RADEON: remove some cruft forgotten in a previous commit + +commit 673f799729824f4439dd5f681f75dd5aab50947f +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Tue Aug 28 00:42:30 2007 -0400 + + RADEON: Update tv attributes immediately + +commit ad6f7ad1b2ccae0bc0a416b9b0ca22709c9d5199 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Tue Aug 28 00:08:41 2007 -0400 + + RADEON: remove the "default" tv_standard option + +commit 17e0f9e6cbfdb115034d327bd34d46339fd632b7 +Author: Alex Deucher <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED]>." _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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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 <[EMAIL PROTECTED](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; + -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]