1680x1050 on i830 -> mode disappears

Andy Isaacson 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
Ubuntu with

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
bits below.

I've added a relevant ModeLine to my xorg.conf, and have the Device and
Screen sections configured:

Section "Monitor"
        Identifier      "Dell 2005FPW"
        Option          "DPMS"
        HorizSync       20-150
        VertRefresh     50-70
        ModeLine "1680x1050"  147.14 1680 1784 1968 2256 1050 1051 1054 1087
EndSection

Section "Device"
        Identifier      "i855 head 1"
        Driver          "i810"
        BusID           "PCI:0:2:0"
        Option          "MonitorLayout" "CRT,LFP"
        VideoRam        128000 
        #Option          "Clone" "true"
        Option          "DisplayPresence" "true"
        Screen          1
EndSection

Section "Screen"
        Identifier      "dell screen"
        Device          "i855 head 1"
        Monitor         "Dell 2005FPW"
        DefaultDepth    24
        SubSection "Display"
                Depth           24
                Modes           "1680x1050"
        EndSubSection
EndSection

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. [1]  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,
				pScrn->display->modes, clockRanges,
   2836                         NULL, 0, MAX_DISPLAY_PITCH, 1,
   2837                         0, MAX_DISPLAY_HEIGHT,
   2838                         pScrn->display->virtualX,
   2839                         pScrn->display->virtualY,
   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?)

[1] 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.

-andy



More information about the xorg mailing list