[Bug 21857] DVI-0 Out of Range, where DVI-1 works on a FireGL.

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sun Oct 18 09:56:18 PDT 2009


http://bugs.freedesktop.org/show_bug.cgi?id=21857





--- Comment #6 from Mathias Fröhlich <Mathias.Froehlich at web.de>  2009-10-18 09:56:16 PST ---
Created an attachment (id=30535)
 --> (http://bugs.freedesktop.org/attachment.cgi?id=30535)
bunch of debug output

Hi,

Still this does not work - so I looked into that, but without having a real
solution at hands.

Anyway I have made some observations that might help.

At first attached some plain register dumps and logs.
Attached here is the avivotool dump of all registers when dvi-1 is attached and
when dvi-2 is attached. This is done with todays drm-next kernel module on a
redhat rawhide from today. These are the dvi*-all-kms files.
Also included in this tar file are the fglrx avivodump files from a feora 10
install in the same hardware. these are the dvi*-all-fglrx files.
Additionally - I believe redundant but to be complete - the default avivotool
regs dumps They also show interesting but for this problem irrelevant
differences.
The atombios is included as well - I believe that this was already attached
some time ago.
The files dvi*-debug contain the kernel dmesg output with drm debugging enabled
of the kms boot.

Ok, so far the static things.

The interesting difference between the two register sets as from fglrx and from
the kms code is the difference in the 0x0430 and 0x043c registers - which match
the pll1 setup values of ref_div << 16 and the post_div from the kms code.

So comparing this register settings.

fglrx with dvi1 attached.
0x0430 = 4718592 means ref_div = 72 
0x043c = 3 means post_div = 3

fglrx with dvi2 attached.
0x0430 = 4718592 means ref_div = 72 
0x043c = 6 means post_div = 6

kms with dvi1 as well as dvi2 attached
0x0430 = 3145728 means ref_div = 48 
0x043c = 4 means post_div = 4

Where as noted in the first post here the monitor works when attached at dvi2
but tells 'out of range' when attached at dvi1. The same monitor with the same
card works with fglrx on *both* dvi ports.
Interesting is the factor of two between the post_div values with fglrx.

Now, I can make the kms settings work with the following variants:

* With dvi1 attached replace the post_div value of 4 with post_div = 2 using
avivotool. Voila, the monitor works with some minor flickering/sparkles, but
that also happens at dvi2.

* Or take the two values that fglrx pokes into those two registers and poke
those both values using avivotool into the r520 registers while running kms,
and I will get a perfectly flicker/sparkle free picture with that monitor.

So, for the record, the reference clock is 2700(0). Also as far as I understand
that fractional pll code, both settings match exactly the requested dot clock
for the monitor. But fglrx seems to know that some values are better and takes
an other set.
Also there is that factor of 2 that makes the monitor at dvi1 work, but that I
could not really see a source of information that includes an additional factor
of two for that output.

Ideas?
Help?
Patches?

Thanks in advance.

Mathias


-- 
Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the xorg-driver-ati mailing list