Bug 20298 - Nouveau doesn't allow my modeline because of hardcoded value
Summary: Nouveau doesn't allow my modeline because of hardcoded value
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: git
Hardware: All All
: medium normal
Assignee: Nouveau Project
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-02-24 13:15 UTC by Alistair Buxton
Modified: 2009-03-08 18:14 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
Xorg log when running nvidia binary driver (138.91 KB, text/x-log)
2009-02-25 13:40 UTC, Alistair Buxton
no flags Details
xorg.conf for nvidia binary driver (1.63 KB, application/octet-stream)
2009-02-25 13:41 UTC, Alistair Buxton
no flags Details

Description Alistair Buxton 2009-02-24 13:15:54 UTC
in nv_output.c line 344:

    if (mode->Clock < 12000) 
        return MODE_CLOCK_LOW;

This code prevents the following modeline from working:

ModeLine "512x288pal" 9.875 512 528 576 632 288 290 293 311 -hsync -vsync

Reducing the value 12000 allows it to work. I use this modeline with a VGA to SCART adapter, a small passive adapter (just two transistors to generate composite sync) which allows a normal television with RGB inputs to be connected directly to the analogue VGA connector.
Comment 1 Stuart Bennett 2009-02-25 09:48:00 UTC
What other driver does this modeline work with?  I doubt it works with nv.

If you're using this successfully with the nvidia binary driver I'd like to see what PLL setup they arrive at.  To do this, please do "git clone git://anongit.freedesktop.org/~stuart/radeontool", then make, then dump some regs as follows (while in X, with this mode set up, running the binary driver):

./radeontool regmatch 0x101000
./radeontool regmatch 0x680508
if your card is nv11 (geforce 2 mx) or newer please also do
./radeontool regmatch 0x680520
if your card is nv31 (geforce fx 5xxx) or newer please also do
./radeontool regmatch 0x680578
./radeontool regmatch 0x68057c
and if your card is nv41 (geforce 6xxx) or newer please also do
./radeontool regmatch 0x680580

and attach the values read (looks like "0x680580        0x00011e07 (73223)") as a comment to this bug
Comment 2 Alistair Buxton 2009-02-25 11:21:02 UTC
01:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000] (rev c1)

0x680520	0x00045405 (283653)

The modeline does work successfully with nouveau after removing the quoted sanity check or reducing the value. The output from radeontool is identical for both nvidia and patched nouveau.

nv does not support this modeline; it also arbitrarily sets the minimum clock frequency to 12000 (http://cgit.freedesktop.org/xorg/driver/xf86-video-nv/tree/src/nv_setup.c#n274)
Comment 3 Stuart Bennett 2009-02-25 13:00:58 UTC
(In reply to comment #2)
> 01:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000]
> (rev c1)
> 
> 0x680520        0x00045405 (283653)
> 
> The modeline does work successfully with nouveau after removing the quoted
> sanity check or reducing the value. The output from radeontool is identical for
> both nvidia and patched nouveau.

Hi, can I also have ./radeontool regmatch 0x101000 and ./radeontool regmatch 0x680508 while running this mode under nvidia.  An Xorg.0.log to show what's getting set would also help (and if you can run Xorg with "-logverbose 9" that's even better).
Comment 4 Alistair Buxton 2009-02-25 13:40:00 UTC
Created attachment 23294 [details]
Xorg log when running nvidia binary driver
Comment 5 Alistair Buxton 2009-02-25 13:41:14 UTC
Created attachment 23295 [details]
xorg.conf for nvidia binary driver
Comment 6 Alistair Buxton 2009-02-25 13:57:27 UTC
Also, 9.875 mhz is not even the lowest pixel clock somebody might want to use. That modeline is 16:9 - the 4:3 equivalent (384x288) would have a pixel clock of 7.375 mhz.
Comment 7 Alistair Buxton 2009-02-25 17:58:03 UTC
radeontool outputs:

0x101000	0x84ded09f (-2065772385)
0x680508	0x0005750a (357642)
Comment 8 Stuart Bennett 2009-03-08 18:14:09 UTC
Yeah, seems this restriction was pretty arbitrary in the old driver, so now it accepts all clocks (which works until the pll calculator craps out; ~6.25MHz for two stage plls, < 0.25MHz for single stage).

http://cgit.freedesktop.org/nouveau/xf86-video-nouveau/commit/?id=cb237a34f31f8b8c841974cb64141a2f2e36c53b


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.