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.0 +0200
+++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 2004-04-30
13:59:44.0 +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.0 +0200
+++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.man 2004-04-30
13:59:44.0 +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__)