Radeon X300, radeonfb, dual head

Hans-Jürgen Koch hjk at linutronix.de
Wed Apr 18 05:09:51 PDT 2007


I've got a Radeon X300 (MSI RX300HM) PCIE card. The card has a 
VGA and a DVI-I output. I connect two LCD monitors (1680x1050 each)
using VGA outputs (DVI-VGA adapter for one monitor).

I'd like to run xserver-xorg with KDE from Debian unstable in 
mergedfb mode showing a 3360x1050 desktop across the two monitors.

I'm running a vanilla 2.6.21-rc7. Now I've got two problems that
might or might not be related:

1.) I compiled radeonfb statically into my kernel and booted with
video=radeonfb:1280x1024-32 at 60. This works fine, the framebuffer
console works as expected. But the X server doesn't come up
properly. Xorg.0.log ends like this:

[...]
(**) RADEON(0): RADEONSaveScreen(2)
(**) RADEON(0): FIFO timed out: 2 entries, stat=0x80026102
(EE) RADEON(0): FIFO timed out, resetting engine...
(**) RADEON(0): EngineRestore (32/32)
(**) RADEON(0): FIFO timed out: 31 entries, stat=0x8002611f
(EE) RADEON(0): FIFO timed out, resetting engine...
(**) RADEON(0): EngineRestore (32/32)
(**) RADEON(0): FIFO timed out: 15 entries, stat=0x8002610f
(EE) RADEON(0): FIFO timed out, resetting engine...
(**) RADEON(0): EngineRestore (32/32)
(**) RADEON(0): FIFO timed out: 15 entries, stat=0x8002610f
(EE) RADEON(0): FIFO timed out, resetting engine...
(**) RADEON(0): EngineRestore (32/32)
(**) RADEON(0): FIFO timed out: 31 entries, stat=0x8002611f
(EE) RADEON(0): FIFO timed out, resetting engine...
(**) RADEON(0): EngineRestore (32/32)
(**) RADEON(0): FIFO timed out: 3 entries, stat=0x80026103
(EE) RADEON(0): FIFO timed out, resetting engine...
(**) RADEON(0): EngineRestore (32/32)
(**) RADEON(0): FIFO timed out: 6 entries, stat=0x80026106
(EE) RADEON(0): FIFO timed out, resetting engine...
(**) RADEON(0): EngineRestore (32/32)
(**) RADEON(0): RADEONCloseScreen
(**) RADEON(0): RADEONDRIStop
(**) RADEON(0): RADEONDisplayPowerManagementSet(0,0x0)
(**) RADEON(0): RADEONRestore
(**) RADEON(0): RADEONRestoreMode()
(**) RADEON(0): RADEONRestoreMode(0x8202e40)
(**) RADEON(0): RADEONRestoreMemMapRegisters() :
(**) RADEON(0):   MC_FB_LOCATION   : 0x1fff0000
(**) RADEON(0):   MC_AGP_LOCATION  : 0x27ff2000
(**) RADEON(0):   Map Changed ! Applying ...
(**) RADEON(0):   Map applied, resetting engine ...
(**) RADEON(0): Updating display base addresses...
(**) RADEON(0): Memory map updated.
(**) RADEON(0): Programming CRTC2, offset: 0x00000000
(**) RADEON(0): Wrote: 0x00000000 0x00000000 0x00000000 (0x0000a400)
(**) RADEON(0): Wrote: rd=0, fd=0, pd=0
(**) RADEON(0): Programming CRTC1, offset: 0x00000000
(**) RADEON(0): Wrote: 0x0030000c 0x00010060 0x00000000 (0x0000a700)
(**) RADEON(0): Wrote: rd=12, fd=96, pd=1
(**) RADEON(0): Disposing accel...
(**) RADEON(0): Disposing cusor info
(**) RADEON(0): Disposing DGA
(**) RADEON(0): Unmapping memory
FreeFontPath: FPE "unix/:7100" refcount is 2, should be 1; fixing.

That's all, I end up with two black screens.

2.) I compiled vesafb statically, radeonfb only as module. If I boot
with vga=0x318, the framebuffer console works as expected. The
X server starts up, Xorg.0.log looks good (except that DRI is disabled).

But when kdm comes up, I see the same picture on both monitors. What I
see looks like the right half of the 3360x1050 desktop (mouse can be
moved across the left border of the screen, stops at the right border).
Both screens are driven properly with 1680x1050. I tried several
modifications of my xorg.conf, but never managed to get different
images on the two monitors, they always show the same. 

Here are the relevant parts of my current xorg.conf:

Section "Device"
        Identifier      "RadeonX300"
        Driver          "radeon"
        BusID           "PCI:1:0:0"
        Option          "MergedFB" "true"
        Option          "MonitorLayout" "TMDS,TMDS"
        Option          "CRT2Position" "RightOf"
        Option          "CRT2HSync" "32-82"
        Option          "CRT2VRefresh" "56-75"
        Option          "MetaModes" "1680x1050-1680x1050"
EndSection

Section "Monitor"
        Identifier      "NECMonitor1"
        Option          "DPMS"
        HorizSync       32-82
        VertRefresh     56-75
EndSection

Section "Monitor"
        Identifier      "NECMonitor2"
        Option          "DPMS"
        HorizSync       32-82
        VertRefresh     56-75
EndSection

Section "Screen"
        Identifier      "Screen1"
        Device          "RadeonX300"
        Monitor         "NECMonitor1"
        DefaultDepth    24
        SubSection "Display"
                Depth           16
                Modes           "1680x1050"
        EndSubSection
        SubSection "Display"
                Depth           24
                Modes           "1680x1050"
        EndSubSection
EndSection

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Screen1" 0 0
        InputDevice     "Generic Keyboard"
        InputDevice     "Configured Mouse"
EndSection

So, at the moment I've got the choice between radeonfb and no X at all
or vesafb and X without proper dual head functionality. That's like
the difference between a rock and a hard place :-)

If you need more information, please tell me.

Any ideas?

Thanks,
Hans





More information about the xorg mailing list