Hi! I thought this patch would be applied on the new upload, but it seems it wasn't, I have reworked it again so that it applies well against the new packages and I'm sending it again to see if we have better luck next time ;-)
Regards... -- Manty/BestiaTester -> http://manty.net diff -r -u xc.orig/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c --- xc.orig/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 2004-04-30 14:04:58.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 2004-04-30 13:59:44.000000000 +0200 @@ -149,7 +149,8 @@ OPTION_CLONE_HSYNC, OPTION_CLONE_VREFRESH, OPTION_FBDEV, - OPTION_VIDEO_KEY + OPTION_VIDEO_KEY, + OPTION_MIN_DOTCLOCK } RADEONOpts; const OptionInfoRec RADEONOptions[] = { @@ -180,6 +181,7 @@ { OPTION_CLONE_VREFRESH, "CloneVRefresh", OPTV_ANYSTR, {0}, FALSE }, { OPTION_FBDEV, "UseFBDev", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE }, + { OPTION_MIN_DOTCLOCK, "ForceMinDotClock", OPTV_FREQ, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; @@ -1728,6 +1730,7 @@ RADEONPLLPtr pll = &info->pll; CARD16 bios_header; CARD16 pll_info_block; + double min_dotclock; if (!info->VBIOS) { @@ -1782,6 +1785,26 @@ pll->xclk = RADEON_BIOS16(pll_info_block + 0x08); } + /* (Some?) Radeon BIOSes seem too lie about their minimum dot + * clocks. Allow users to override the detected minimum dot clock + * value (e.g., and allow it to be suitable for TV sets). + */ + if (xf86GetOptValFreq(info->Options, OPTION_MIN_DOTCLOCK, + OPTUNITS_MHZ, &min_dotclock)) { + if (min_dotclock < 12 || min_dotclock*100 >= pll->max_pll_freq) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Illegal minimum dotclock specified %.2f MHz " + "(option ignored)\n", + min_dotclock); + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Forced minimum dotclock to %.2f MHz " + "(instead of detected %.2f MHz)\n", + min_dotclock, ((double)pll->min_pll_freq/1000)); + pll->min_pll_freq = min_dotclock * 1000; + } + } + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "PLL parameters: rf=%d rd=%d min=%d max=%d; xclk=%d\n", pll->reference_freq, diff -r -u xc.orig/programs/Xserver/hw/xfree86/drivers/ati/radeon.man xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.man --- xc.orig/programs/Xserver/hw/xfree86/drivers/ati/radeon.man 2004-04-30 14:04:58.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.man 2004-04-30 13:59:44.000000000 +0200 @@ -235,6 +235,17 @@ but not work correctly in some rare cases, hence the default is .B off. +.TP +.BI "Option \*qForceMinDotClock\*q \*q" frequency \*q +Override minimum dot clock. Some Radeon BIOSes report a minimum dot +clock unsuitable (too high) for use with television sets even when they +actually can produce lower dot clocks. If this is the case you can +override the value here. +.B Note that using this option may damage your hardware. +You have been warned. The +.B frequency +parameter may be specified as a float value with standard suffixes like +"k", "kHz", "M", "MHz". .SH SEE ALSO XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(__miscmansuffix__)

