Here's a great tutorial on using the mergefb option in xorg to handle dual displays: http://ozlabs.org/~jk/docs/mergefb/
I have an external monitor hooked to my laptop via the VGA port, and I'd been struggling to get X to use anything other than a horrible 60 Hz to drive it.
Once I followed the steps on the linked page, it just worked fine at a "lovely" 85 Hz - no flicker - no more headaches !!!
Because I only wanted the same resolution on the lcd and the monitor, and I wasn't interested in scrolling around multiple desktops, I changed the config from the linked page a little bit - and here's what works like a charm for me now:
The particular trick is duplicating your Device section with the same BusID in both sections (you can get the ID from lspci), and setting up 2 monitor sections - 1 for lcd, 1 for monitor.
As you'll see, in MetaModes I've forced both displays to 1024x768 - but you don't have to do that (I played around with the dual desktop overlapping etc.., and it works really well - I just didn't use it in the end) - it was just the solution to my refresh rate problem.
CODE
Section "ServerFlags"
#DontZap # disable <Ctrl><Alt><BS> (server abort)
#DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching)
AllowMouseOpenFail # allows the server to start up even if the mouse does not work
EndSection
Section "Module"
Load "dbe" # Double-Buffering Extension
Load "v4l" # Video for Linux
Load "extmod"
Load "type1"
Load "freetype"
Load "glx" # 3D layer
Load "dri" # direct rendering
EndSection
Section "InputDevice"
Identifier "Keyboard1"
Driver "kbd"
Option "XkbModel" "logicd"
Option "XkbLayout" "us"
Option "XkbOptions" "compose:rwin"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "ExplorerPS/2"
Option "Device" "/dev/mouse"
EndSection
Section "Monitor"
Identifier "monitor1"
VendorName "Philips"
ModelName "Philips 107S(17inch/CM1300)"
HorizSync 30.0-69.0
VertRefresh 50.0-120.0
DisplaySize 269 201 # 96 DPI @ 1024x768
EndSection
Section "Monitor"
Identifier "laptop lcd"
Option "DPMS"
EndSection
Section "Device"
Identifier "device1"
VendorName "ATI Technologies Inc"
BoardName "ATI Radeon 9250 and earlier"
Driver "ati"
BusID "PCI:01:05:0"
Option "MergedFB" "true"
Option "MetaModes" "1024x768-1024x768 1024x768-1024x768"
Option "MergedDPI" "100 100"
Option "DPMS"
Option "BIOSHotkeys"
Option "XaaNoOffscreenPixmaps" "1"
EndSection
Section "Device"
Identifier "device2"
VendorName "ATI Technologies Inc"
BoardName "ATI Radeon 9250 and earlier"
Driver "ati"
BusID "PCI:01:05:0"
Option "DPMS"
Option "BIOSHotkeys"
Option "XaaNoOffscreenPixmaps" "1"
Screen 1
EndSection
Section "Screen"
Identifier "screen1"
Device "device1"
Monitor "monitor1"
DefaultColorDepth 24
Subsection "Display"
Depth 8
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 15
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 16
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 24
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
EndSection
Section "Screen"
Identifier "screen2"
Device "device2"
Monitor "laptop lcd"
DefaultColorDepth 24
Subsection "Display"
Depth 8
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 15
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 16
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 24
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
EndSection
Section "ServerLayout"
Identifier "layout1"
InputDevice "Keyboard1" "CoreKeyboard"
InputDevice "Mouse1" "CorePointer"
Screen "screen1"
EndSection
#DontZap # disable <Ctrl><Alt><BS> (server abort)
#DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching)
AllowMouseOpenFail # allows the server to start up even if the mouse does not work
EndSection
Section "Module"
Load "dbe" # Double-Buffering Extension
Load "v4l" # Video for Linux
Load "extmod"
Load "type1"
Load "freetype"
Load "glx" # 3D layer
Load "dri" # direct rendering
EndSection
Section "InputDevice"
Identifier "Keyboard1"
Driver "kbd"
Option "XkbModel" "logicd"
Option "XkbLayout" "us"
Option "XkbOptions" "compose:rwin"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "ExplorerPS/2"
Option "Device" "/dev/mouse"
EndSection
Section "Monitor"
Identifier "monitor1"
VendorName "Philips"
ModelName "Philips 107S(17inch/CM1300)"
HorizSync 30.0-69.0
VertRefresh 50.0-120.0
DisplaySize 269 201 # 96 DPI @ 1024x768
EndSection
Section "Monitor"
Identifier "laptop lcd"
Option "DPMS"
EndSection
Section "Device"
Identifier "device1"
VendorName "ATI Technologies Inc"
BoardName "ATI Radeon 9250 and earlier"
Driver "ati"
BusID "PCI:01:05:0"
Option "MergedFB" "true"
Option "MetaModes" "1024x768-1024x768 1024x768-1024x768"
Option "MergedDPI" "100 100"
Option "DPMS"
Option "BIOSHotkeys"
Option "XaaNoOffscreenPixmaps" "1"
EndSection
Section "Device"
Identifier "device2"
VendorName "ATI Technologies Inc"
BoardName "ATI Radeon 9250 and earlier"
Driver "ati"
BusID "PCI:01:05:0"
Option "DPMS"
Option "BIOSHotkeys"
Option "XaaNoOffscreenPixmaps" "1"
Screen 1
EndSection
Section "Screen"
Identifier "screen1"
Device "device1"
Monitor "monitor1"
DefaultColorDepth 24
Subsection "Display"
Depth 8
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 15
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 16
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 24
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
EndSection
Section "Screen"
Identifier "screen2"
Device "device2"
Monitor "laptop lcd"
DefaultColorDepth 24
Subsection "Display"
Depth 8
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 15
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 16
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
Subsection "Display"
Depth 24
Modes "1024x768" "832x624" "800x600" "640x480" "480x360" "320x240"
EndSubsection
EndSection
Section "ServerLayout"
Identifier "layout1"
InputDevice "Keyboard1" "CoreKeyboard"
InputDevice "Mouse1" "CorePointer"
Screen "screen1"
EndSection
