1680x1050 on i830 -> mode disappears
adi at hexapodia.org
Wed Feb 8 23:35:17 PST 2006
I'm attempting to get a "Dell 2005FPW" 1680x1050 flat panel to work on
the VGA connector of a Thinkpad X40 with i830 chipset. I'm running
ii xorg-common 6.8.2-10.1 X Window System (X.Org) infrastructure
ii xserver-xorg 6.8.2-10.1 the X.Org X server
The complete xorg.conf and Xorg.1.log are at
http://web.hexapodia.org/~adi/bobble/, but I've included the relevant
I've added a relevant ModeLine to my xorg.conf, and have the Device and
Screen sections configured:
Identifier "Dell 2005FPW"
ModeLine "1680x1050" 147.14 1680 1784 1968 2256 1050 1051 1054 1087
Identifier "i855 head 1"
Option "MonitorLayout" "CRT,LFP"
#Option "Clone" "true"
Option "DisplayPresence" "true"
Identifier "dell screen"
Device "i855 head 1"
Monitor "Dell 2005FPW"
but as far as I can tell, the i830 driver simply ignores the ModeLine.
In Xorg.1.log I see
(II) I810(1): Dell 2005FPW: Using hsync range of 20.00-150.00 kHz
(II) I810(1): Dell 2005FPW: Using vrefresh range of 50.00-70.00 Hz
(II) I810(1): Not using mode "1680x1050" (no mode of this name)
(--) I810(1): Virtual size is 1600x1200 (pitch 1600)
(**) I810(1): Built-in mode "1600x1200"
(**) I810(1): Built-in mode "1280x1024"
(**) I810(1): Built-in mode "1024x768"
(**) I810(1): Built-in mode "800x600"
(**) I810(1): Built-in mode "640x480"
Note that the server doesn't print any reason for discarding the
1680x1050 mode - it just seems to ignore it completely. The same thing
happens with other modes - I added a trivial 800x600 ModeLine and it
is also ignored.
I hacked my i830_driver.c to print out the list of modes in
pScrn->modePool and it looks like the modes from pScrn->monitor->Modes
are never added to the pool (it appears to fill the pool with a list of
modes derived from the system BIOS), and also does not do DDC to get the
mode list supported by the monitor.  Comparing to
drivers/ati/radeon_driver.c it seemed odd that the availModes argument
was NULL, so I tried hacking it like so to no effect:
2835 n = VBEValidateModes(pScrn, pScrn->monitor->Modes,
2836 NULL, 0, MAX_DISPLAY_PITCH, 1,
2837 0, MAX_DISPLAY_HEIGHT,
2840 memsize, LOOKUP_BEST_REFRESH);
(I also tried the same without NULL for clockRanges.)
So am I barking up the wrong tree, or is the driver just broken in this
regard? (Or has it been fixed since 6.8.2?)
 It seems to try DDC and fail:
(--) I810(1): Using HW Cursor because it's enabled on primary head.
(--) I810(1): Maximum frambuffer space: 127832 kByte
(II) Loading sub module "ddc"
(II) LoadModule: "ddc"
(II) Reloading /usr/X11R6/lib/modules/libddc.a
(II) I810(0): VESA VBE DDC supported
(II) I810(0): VESA VBE DDC Level none
(II) I810(0): VESA VBE DDC transfer in appr. 0 sec.
(II) I810(0): VESA VBE DDC read failed
(II) I810(1): Will use BIOS call 0x5f05 to set refresh rates for CRTs.
More information about the xorg