[ltp] x41 monitor selection

Paul Fox linux-thinkpad@linux-thinkpad.org
Tue, 30 Jan 2007 12:16:46 -0500


hi -- i'm still working on my dual display problem.

as a reminder, my problem is that using the fn-key to switch
monitors on my X41 will give me either the external or the
built-in display, but not both.  this is even though both
displays work fine together when the X server first starts (or is
restarted).

what i've included here are a) the relevant parts of server initialization,
where both displays end up active, and b) the results of 3 presses
of the fn-key, which cycle through the two working modes and back
to the simultaneous mode, which then doesn't work.

for completeness, the full log is here:
    http://www.foxharp.boston.ma.us/tmp/Xorg.0.log.x41switch.txt
and the xorg.conf file is here:
    http://www.foxharp.boston.ma.us/tmp/xorg.conf.x41switch.txt
this is all on ubuntu edgy, btw.

but i'm hoping that a glance at the errors reported in the last
log snippet down below might suggest a solution to someone more
familiar with the X11 drivers than i am...

many thanks to anyone who takes look!

Here's initialization:

> 
> (II) Setting vga for screen 0.
> (II) Loading sub module "int10"
> (II) LoadModule: "int10"
> (II) Reloading /usr/lib/xorg/modules/libint10.so
> (II) Loading sub module "vbe"
> (II) LoadModule: "vbe"
> (II) Reloading /usr/lib/xorg/modules/libvbe.so
> (II) Loading sub module "vgahw"
> (II) LoadModule: "vgahw"
> (II) Loading /usr/lib/xorg/modules/libvgahw.so
> (II) Module vgahw: vendor="X.Org Foundation"
>         compiled for 7.1.1, module version = 0.1.0
>         ABI class: X.Org Video Driver, version 1.0
> (**) I810(0): Depth 24, (--) framebuffer bpp 32
> (==) I810(0): RGB weight 888
> (==) I810(0): Default visual is TrueColor
> (**) I810(0): Option "SWcursor" "true"
> (**) I810(0): Option "DisplayInfo" "FALSE"
> (**) I810(0): Option "DevicePresence" "yes"
> (**) I810(0): Option "MonitorLayout" "CRT,LFP"
> (**) I810(0): Option "Clone" "yes"
> (**) I810(0): Option "CloneRefresh" "60"
> (II) Loading sub module "int10"
> (II) LoadModule: "int10"
> (II) Reloading /usr/lib/xorg/modules/libint10.so
> (II) I810(0): initializing int10
> (WW) I810(0): Bad V_BIOS checksum
> (II) I810(0): Primary V_BIOS segment is: 0xc000
> (II) I810(0): VESA BIOS detected
> (II) I810(0): VESA VBE Version 3.0
> (II) I810(0): VESA VBE Total Mem: 12288 kB
> (II) I810(0): VESA VBE OEM: Intel(r)915GM/910ML/915MS Graphics Chip Accelerated VGA BIOS
> (II) I810(0): VESA VBE OEM Software Rev: 1.0
> (II) I810(0): VESA VBE OEM Vendor: Intel Corporation
> (II) I810(0): VESA VBE OEM Product: Intel(r)915GM/910ML/915MS Graphics Controller
> (II) I810(0): VESA VBE OEM Product Rev: Hardware Version 0.0
> (II) I810(0): Integrated Graphics Chipset: Intel(R) 915GM
> (--) I810(0): Chipset: "915GM"
> (--) I810(0): Linear framebuffer at 0xC0000000
> (--) I810(0): IO registers at addr 0xA0080000
> (II) I810(0): 2 display pipes available.
> (II) I810(0): detected 7932 kB stolen memory.
> (WW) I810(0): Detected stolen memory (7872 kB) doesn't match what the BIOS reports (12288 kB)
> (II) I810(0): Kernel reported 238592 total, 1 used
> (II) I810(0): I830CheckAvailableMemory: 954364 kB available
> (**) I810(0): DRI is disabled because it needs HW cursor and 2D acceleration.
> (II) I810(0): Enabling Clone Mode
> (**) I810(0): Clone Monitor Refresh Rate 60
> (II) I810(0): Monitoring connected displays enabled
> (--) I810(0): Pre-allocated VideoRAM: 7932 kByte
> (==) I810(0): VideoRAM: 32768 kByte
> (==) I810(0): video overlay key set to 0x101fe
> (==) I810(0): Using gamma correction (1.0, 1.0, 1.0)
> (II) I810(0): BIOS Build: 3412
> (**) I810(0): Device Presence: enabled.
> (II) I810(0): Display Presence: CRT: attached: TRUE, encoder: TRUE
> (II) I810(0): Display Presence: TV: attached: FALSE, encoder: TRUE
> (II) I810(0): Display Presence: DFP (digital flat panel): attached: FALSE, encoder: FALSE
> (II) I810(0): Display Presence: LFP (local flat panel): attached: TRUE, encoder: TRUE
> (II) I810(0): Display Presence: Second (second CRT): attached: FALSE, encoder: FALSE
> (II) I810(0): Display Presence: TV2 (second TV): attached: FALSE, encoder: FALSE
> (II) I810(0): Display Presence: DFP2 (second digital flat panel): attached: FALSE, encoder: FALSE
> (II) I810(0): Display Presence: LFP2 (second local flat panel): attached: FALSE, encoder: FALSE
> (**) I810(0): Display Info: disabled.
> (II) I810(0): Currently active displays on Pipe A:
> (II) I810(0):   CRT
> (II) I810(0): Currently active displays on Pipe B:
> (II) I810(0):   LFP (local flat panel)
> (II) I810(0): No display size information available for pipe B.
> (**) I810(0): Display is using Pipe B
> (--) I810(0): Maximum frambuffer space: 32620 kByte
> (II) I810(0): VESA VBE PanelID read successfully
> (II) I810(0): PanelID returned panel resolution : 1024x768
> (II) Loading sub module "ddc"
> (II) LoadModule: "ddc"
> (II) Reloading /usr/lib/xorg/modules/libddc.so
> (II) I810(0): VESA VBE DDC supported
> (II) I810(0): VESA VBE DDC Level 2
> (II) I810(0): VESA VBE DDC transfer in appr. 1 sec.
> (II) I810(0): VESA VBE DDC read successfully
> (II) I810(0): Manufacturer: LCD  Model: b980  Serial#: 14805
> (II) I810(0): Year: 2004  Week: 48
> (II) I810(0): EDID Version: 1.3
> (II) I810(0): Analog Display Input,  Input Voltage Level: 0.700/0.700 V
> (II) I810(0): Sync:  Separate
> (II) I810(0): Max H-Image Size [cm]: horiz.: 38  vert.: 30
> (II) I810(0): Gamma: 2.20
> (II) I810(0): DPMS capabilities: Off; RGB/Color Display
> (II) I810(0): First detailed timing is preferred mode
> (II) I810(0): redX: 0.630 redY: 0.344   greenX: 0.294 greenY: 0.599
> (II) I810(0): blueX: 0.142 blueY: 0.076   whiteX: 0.305 whiteY: 0.326
> (II) I810(0): Supported VESA Video Modes:
> (II) I810(0): 720x400@70Hz
> (II) I810(0): 640x480@60Hz
> (II) I810(0): Monitoring connected displays enabled
> (--) I810(0): Pre-allocated VideoRAM: 7932 kByte
> (==) I810(0): VideoRAM: 32768 kByte
> (==) I810(0): video overlay key set to 0x101fe
> (==) I810(0): Using gamma correction (1.0, 1.0, 1.0)
> (II) I810(0): BIOS Build: 3412
> (**) I810(0): Device Presence: enabled.
> (II) I810(0): Display Presence: CRT: attached: TRUE, encoder: TRUE
> (II) I810(0): Display Presence: TV: attached: FALSE, encoder: TRUE
> (II) I810(0): Display Presence: DFP (digital flat panel): attached: FALSE, encoder: FALSE
> (II) I810(0): Display Presence: LFP (local flat panel): attached: TRUE, encoder: TRUE
> (II) I810(0): Display Presence: Second (second CRT): attached: FALSE, encoder: FALSE
> (II) I810(0): Display Presence: TV2 (second TV): attached: FALSE, encoder: FALSE
> (II) I810(0): Display Presence: DFP2 (second digital flat panel): attached: FALSE, encoder: FALSE
> (II) I810(0): Display Presence: LFP2 (second local flat panel): attached: FALSE, encoder: FALSE
> (**) I810(0): Display Info: disabled.
> (II) I810(0): Currently active displays on Pipe A:
> (II) I810(0):   CRT
> (II) I810(0): Currently active displays on Pipe B:
> (II) I810(0):   LFP (local flat panel)
> (II) I810(0): No display size information available for pipe B.
> (**) I810(0): Display is using Pipe B
> (--) I810(0): Maximum frambuffer space: 32620 kByte
> (II) I810(0): VESA VBE PanelID read successfully
> (II) I810(0): PanelID returned panel resolution : 1024x768
> (II) Loading sub module "ddc"
> (II) LoadModule: "ddc"
> (II) Reloading /usr/lib/xorg/modules/libddc.so
> (II) I810(0): VESA VBE DDC supported
> (II) I810(0): VESA VBE DDC Level 2
> (II) I810(0): VESA VBE DDC transfer in appr. 1 sec.
> (II) I810(0): VESA VBE DDC read successfully
> (II) I810(0): Manufacturer: LCD  Model: b980  Serial#: 14805
> (II) I810(0): Year: 2004  Week: 48
> (II) I810(0): EDID Version: 1.3
> (II) I810(0): Analog Display Input,  Input Voltage Level: 0.700/0.700 V
> (II) I810(0): Sync:  Separate
> (II) I810(0): Max H-Image Size [cm]: horiz.: 38  vert.: 30
> (II) I810(0): Gamma: 2.20
> (II) I810(0): DPMS capabilities: Off; RGB/Color Display
> (II) I810(0): First detailed timing is preferred mode
> (II) I810(0): redX: 0.630 redY: 0.344   greenX: 0.294 greenY: 0.599
> (II) I810(0): blueX: 0.142 blueY: 0.076   whiteX: 0.305 whiteY: 0.326
> (II) I810(0): Supported VESA Video Modes:
> (II) I810(0): 720x400@70Hz
> (II) I810(0): 640x480@60Hz
> (II) I810(0): 640x480@67Hz
> (II) I810(0): 640x480@72Hz
> (II) I810(0): 640x480@75Hz
> (II) I810(0): 800x600@56Hz
> (II) I810(0): 800x600@60Hz
> (II) I810(0): 800x600@72Hz
> (II) I810(0): 800x600@75Hz
> (II) I810(0): 832x624@75Hz
> (II) I810(0): 1024x768@60Hz
> (II) I810(0): 1024x768@70Hz
> (II) I810(0): 1024x768@75Hz
> (II) I810(0): 1280x1024@75Hz
> (II) I810(0): Manufacturer's mask: 0
> (II) I810(0): Supported Future Video Modes:
> (II) I810(0): #0: hsize: 640  vsize 480  refresh: 85  vid: 22833
> (II) I810(0): #1: hsize: 800  vsize 600  refresh: 85  vid: 22853
> (II) I810(0): #2: hsize: 1024  vsize 768  refresh: 85  vid: 22881
> (II) I810(0): #3: hsize: 1152  vsize 864  refresh: 75  vid: 20337
> (II) I810(0): #4: hsize: 1280  vsize 960  refresh: 60  vid: 16513
> (II) I810(0): #5: hsize: 1280  vsize 960  refresh: 85  vid: 22913
> (II) I810(0): #6: hsize: 1280  vsize 1024  refresh: 60  vid: 32897
> (II) I810(0): #7: hsize: 1280  vsize 1024  refresh: 85  vid: 39297
> (II) I810(0): Supported additional Video Mode:
> (II) I810(0): clock: 157.5 MHz   Image Size:  380 x 305 mm
> (II) I810(0): h_active: 1280  h_sync: 1344  h_sync_end 1504 h_blank_end 1728 h_border: 0
> (II) I810(0): v_active: 1024  v_sync: 1025  v_sync_end 1028 v_blanking: 1072 v_border: 0
> (II) I810(0): Serial No: 1524BJA014805
> (II) I810(0): Ranges: V min: 55  V max: 85 Hz, H min: 31  H max: 95 kHz, PixClock max 160 MHz
> (II) I810(0): Monitor name: R910E
> (--) I810(0): A non-CRT device is attached to pipe B.
>         No refresh rate overrides will be attempted.
> (--) I810(0): Maximum space available for video modes: 12288 kByte
> (II) I810(0): Using detected DDC timings
> (II) I810(0):   HorizSync 31-95
> (II) I810(0):   VertRefresh 55-85
> Mode: 30 (640x480)
>         ModeAttributes: 0x9b
> 
      ...snip....
> 
> (II) I810(0): Monitor1: Using hsync range of 31.00-95.00 kHz
> (II) I810(0): Monitor1: Using vrefresh range of 55.00-85.00 Hz
> (--) I810(0): Virtual size is 1024x768 (pitch 1024)
> (**) I810(0): *Built-in mode "1024x768"
> (**) I810(0):  Built-in mode "800x600"
> (**) I810(0):  Built-in mode "640x480"
> (--) I810(0): Display dimensions: (380, 300) mm
> (--) I810(0): DPI set to (68, 65)
> 
      ...snip....


> (II) Loading sub module "int10"
> (II) LoadModule: "int10"
> (II) Reloading /usr/lib/xorg/modules/libint10.so
> (II) I810(0): initializing int10
> (WW) I810(0): Bad V_BIOS checksum
> (II) I810(0): Primary V_BIOS segment is: 0xc000
> (II) I810(0): VESA BIOS detected
> (II) I810(0): VESA VBE Version 3.0
> (II) I810(0): VESA VBE Total Mem: 12288 kB
> (II) I810(0): VESA VBE OEM: Intel(r)915GM/910ML/915MS Graphics Chip Accelerated VGA BIOS
> (II) I810(0): VESA VBE OEM Software Rev: 1.0
> (II) I810(0): VESA VBE OEM Vendor: Intel Corporation
> (II) I810(0): VESA VBE OEM Product: Intel(r)915GM/910ML/915MS Graphics Controller
> (II) I810(0): VESA VBE OEM Product Rev: Hardware Version 0.0
> (II) I810(0): Allocated 128 kB for the ring buffer at 0x0
> (II) I810(0): Allocating at least 512 scanlines for pixmap cache
> (II) I810(0): Initial framebuffer allocation size: 6144 kByte
> (II) I810(0): Allocated 4 kB for Overlay registers at 0xffff000 (0x31fc5000).
> (WW) I810(0): xf86AllocateGARTMemory: allocation of 16 pages failed
>         (Cannot allocate memory)
> (II) I810(0): Allocated 64 kB for the scratch buffer at 0xffef000
> (II) I810(0): 0x81fe908: Memory at offset 0x00020000, size 6144 kBytes
> (II) I810(0): 0x81ff650: Memory at offset 0x00000000, size 0 kBytes
> (II) I810(0): 0x81ff678: Memory at offset 0x00000000, size 0 kBytes
> (II) I810(0): 0x81ff61c: Memory at offset 0x00000000, size 128 kBytes
> (II) I810(0): 0x81fe948: Memory at offset 0x0ffef000, size 64 kBytes
> (II) I810(0): 0x81ff6a0: Memory at offset 0x0ffff000, size 4 kBytes
> (==) I810(0): Write-combining range (0xc0000000,0x10000000)
> (II) I810(0): vgaHWGetIOBase: hwp->IOBase is 0x03d0, hwp->PIOOffset is 0x0000
> (WW) I810(0): Extended BIOS function 0x5f05 failed.
> (II) I810(0): xf86BindGARTMemory: bind key 1 at 0x0ffef000 (pgoffset 65519)
> (II) I810(0): xf86BindGARTMemory: bind key 0 at 0x0ffff000 (pgoffset 65535)
> (II) I810(0): Setting refresh on clone head with VBE 3 method.
> (--) I810(0): A non-CRT device is attached to pipe B.
>         No refresh rate overrides will be attempted.
> (II) I810(0): Display plane A is enabled and connected to Pipe A.
> (II) I810(0): Display plane B is enabled and connected to Pipe B.
> (II) I810(0): Enabling plane A.
> (II) I810(0): Enabling plane B.
> (II) I810(0): Display plane A is now enabled and connected to Pipe A.
> (II) I810(0): Display plane B is now enabled and connected to Pipe B.
> (II) I810(0): PIPEACONF is 0x80000000
> (II) I810(0): PIPEBCONF is 0x80000000
> (II) I810(0): Mode bandwidth is 47 Mpixel/s
> (II) I810(0): maxBandwidth is 1152 Mbyte/s, pipe bandwidths are 252 Mbyte/s, 0 Mbyte/s


Now the first hotkey press:  switch to enable "internal" LCD. 
this works:  (and the OSD on the external monitor says "No
signal".)

> (II) I810(0): Hotkey switch to 0x800.
> (II) I810(0): Attachable device 0x80000100.
> (II) I810(0): Attachable device 0x80000240.
> (II) I810(0): Attachable device 0x80000410.
> (II) I810(0): Detected three device configs.
> (II) I810(0): Requested display devices 0x800.
> (II) I810(0): Detected display change operation (0x1, 0x900, 0x800).
> (II) I810(0): Clearing Clone mode
> (II) I810(0): Primary pipe is now B.
> (--) I810(0): A non-CRT device is attached to pipe B.
>       No refresh rate overrides will be attempted.
> (II) I810(0): Display plane A is disabled and connected to Pipe A.
> (II) I810(0): Display plane B is enabled and connected to Pipe B.
> (II) I810(0): Enabling plane B.
> (II) I810(0): Display plane A is now disabled and connected to Pipe A.
> (II) I810(0): Display plane B is now enabled and connected to Pipe B.
> (II) I810(0): PIPEACONF is 0x00000000
> (II) I810(0): PIPEBCONF is 0x80000000
> (II) I810(0): Mode bandwidth is 47 Mpixel/s
> (II) I810(0): maxBandwidth is 1152 Mbyte/s, pipe bandwidths are 252 Mbyte/s, 0 Mbyte/s

And the second hotkey press:  switch to enable external LCD
monitor only.  this works:

> (II) I810(0): Hotkey switch to 0x1.
> (II) I810(0): Attachable device 0x80000100.
> (II) I810(0): Attachable device 0x80000240.
> (II) I810(0): Attachable device 0x80000410.
> (II) I810(0): Detected three device configs.
> (II) I810(0): Requested display devices 0x1.
> (II) I810(0): Detected display change operation (0x900, 0x800, 0x1).
> (II) I810(0): Clearing Clone mode
> (II) I810(0): Primary pipe is now A.
> (II) I810(0): Display plane A is enabled and connected to Pipe A.
> (II) I810(0): Display plane B is disabled and connected to Pipe B.
> (II) I810(0): Enabling plane A.
> (II) I810(0): Display plane A is now enabled and connected to Pipe A.
> (II) I810(0): Display plane B is now disabled and connected to Pipe B.
> (II) I810(0): PIPEACONF is 0x80000000
> (II) I810(0): PIPEBCONF is 0x00000000
> (II) I810(0): Mode bandwidth is 47 Mpixel/s
> (II) I810(0): maxBandwidth is 1152 Mbyte/s, pipe bandwidths are 252 Mbyte/s, 0 Mbyte/s
> (WW) I810(0): Changing XVideo pipe (1 to 0).

Third hotkey press:  attempted to enable both screens.  only the
"internal" LCD comes on.  the OSD on the external monitor says
"Input not supported".

> (II) I810(0): Hotkey switch to 0x800.
> (II) I810(0): Attachable device 0x80000100.
> (II) I810(0): Attachable device 0x80000240.
> (II) I810(0): Attachable device 0x80000410.
> (II) I810(0): Detected last devices (2).
> (II) I810(0): Requested display devices 0x800.
> (II) I810(0): Detected display change operation (0x800, 0x1, 0x900).
> (II) I810(0): Clearing Clone mode
> (WW) I810(0): Extended BIOS function 0x5f64 failed.
> (WW) I810(0): Extended BIOS function 0x5f64 failed.
> (WW) I810(0): Failed to set display devices to 0x900.
> (WW) I810(0): Enabling LVDS directly. Pipe B.
> (WW) I810(0): Enabling ADPA directly. Pipe B.
> (WW) I810(0): Writing config directly to SWF0.
> (II) I810(0): Primary pipe is now B.
> (--) I810(0): A non-CRT device is attached to pipe B.
>       No refresh rate overrides will be attempted.
> (II) I810(0): Display plane A is disabled and connected to Pipe A.
> (II) I810(0): Display plane B is enabled and connected to Pipe B.
> (II) I810(0): Enabling plane B.
> (II) I810(0): Display plane A is now disabled and connected to Pipe A.
> (II) I810(0): Display plane B is now enabled and connected to Pipe B.
> (II) I810(0): PIPEACONF is 0x00000000
> (II) I810(0): PIPEBCONF is 0x80000000
> (II) I810(0): Mode bandwidth is 47 Mpixel/s
> (II) I810(0): maxBandwidth is 1152 Mbyte/s, pipe bandwidths are 252 Mbyte/s, 0 Mbyte/s
> (WW) I810(0): Changing XVideo pipe (0 to 1).


any pointers or tips for further experiments welcome!

paul
=---------------------
 paul fox, pgf@foxharp.boston.ma.us (arlington, ma, where it's 23.9 degrees)