Bug 20298

Summary: Nouveau doesn't allow my modeline because of hardcoded value
Product: xorg Reporter: Alistair Buxton <a.j.buxton>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: git   
Hardware: All   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Xorg log when running nvidia binary driver
none
xorg.conf for nvidia binary driver none

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.