Bug#514301: xserver-xorg-video-radeon: ignores existing EDID from ACPI BIOS even when DDC fails

Nikolaus Schulz microschulz at web.de
Sun Feb 8 09:07:38 PST 2009


On Sat, Feb 07, 2009 at 11:19:24AM -0500, Alex Deucher wrote:
> On Fri, Feb 6, 2009 at 9:16 PM, Nikolaus Schulz <microschulz at web.de> wrote:
> > On Fri, Feb 06, 2009 at 08:22:11PM -0500, Alex Deucher wrote:
> >> On Thu, Feb 5, 2009 at 9:22 PM, Nikolaus Schulz <microschulz at web.de> wrote:
> >> > On my Thinkpad T42 laptop, the builtin LCD display apparently doesn't support
> >> > DDC, see:
> >> >
> >> > luigi[tmp] sudo get-edid
> >> > get-edid: get-edid version 1.4.1
> >> >
> >> >        Performing real mode VBE call
> >> >        Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
> >> >        Function supported
> >> >        Call successful
> >> >
> >> >        VBE version 200
> >> >        VBE string at 0x11110 "ATI MOBILITY RADEON 7500"
> >> >
> >> > VBE/DDC service about to be called
> >> >        Report DDC capabilities
> >> >
> >> >        Performing real mode VBE call
> >> >        Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
> >> >        Function supported
> >> >        Call successful
> >> >
> >> >        Monitor and video card combination does not support DDC1 transfers
> >> >        Monitor and video card combination does not support DDC2 transfers
> >> >        0 seconds per 128 byte EDID block transfer
> >> >        Screen is not blanked during DDC transfer
> >> >
> >> > Reading next EDID block
> >> >
> >> > VBE/DDC service about to be called
> >> >        Read EDID
> >> >
> >> >        Performing real mode VBE call
> >> >        Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
> >> >        Function supported
> >> >        Call failed
> >> >
> >> > The EDID data should not be trusted as the VBE call failed
> >> > Error: output block unchanged
> >> > luigi[tmp]$ sudo ddcprobe
> >> > vbe: VESA 2.0 detected.
> >> > oem: ATI MOBILITY RADEON 7500
> >> > memory: 32704kb
> >> > mode: 320x200x32k
> >> > mode: 320x200x64k
> >> > mode: 320x200x16m
> >> > mode: 1600x1200x256
> >> > mode: 640x400x256
> >> > mode: 640x480x256
> >> > mode: 640x480x32k
> >> > mode: 640x480x64k
> >> > mode: 640x480x16m
> >> > mode: 1600x1200x32k
> >> > mode: 800x600x256
> >> > mode: 800x600x32k
> >> > mode: 800x600x64k
> >> > mode: 800x600x16m
> >> > mode: 1600x1200x64k
> >> > mode: 1024x768x256
> >> > mode: 1024x768x32k
> >> > mode: 1024x768x64k
> >> > mode: 1024x768x16m
> >> > mode: 1280x1024x256
> >> > mode: 1280x1024x32k
> >> > mode: 1280x1024x64k
> >> > mode: 1280x1024x16m
> >> > edid:
> >> > edidfail
> >> > luigi[tmp]$
> >> >
> >> > I have tried get-edid with various controller numbers because, if I read
> >> > Xorg.0.log correctly, the LVDS doesn't map to controller #0, but to no
> >> > avail.
> >> >
> >> > However, there *is* a valid EDID available from the ACPI BIOS,
> >> > accessible in /proc/acpi/video/VID/LCD0/EDID, but it is ignored:
> >> >
> >> > luigi[tmp]$ hd /proc/acpi/video/VID/LCD0/EDID
> >> > 00000000  00 ff ff ff ff ff ff 00  24 4d 55 0a 00 00 00 00  |........$MU.....|
> >> > 00000010  00 0e 01 03 80 1e 17 78  ee ee 91 a3 54 4c 99 26  |.......x....TL.&|
> >> > 00000020  0f 50 54 21 08 00 01 01  01 01 01 01 01 01 01 01  |.PT!............|
> >> > 00000030  01 01 01 01 01 01 64 19  00 40 41 00 26 30 18 88  |......d.. at A.&0..|
> >> > 00000040  36 00 30 e4 10 00 00 18  00 00 00 fc 00 54 68 69  |6.0..........Thi|
> >> > 00000050  6e 6b 50 61 64 20 4c 43  44 20 00 00 00 fc 00 31  |nkPad LCD .....1|
> >> > 00000060  30 32 34 78 37 36 38 0a  20 20 20 20 00 00 00 00  |024x768.    ....|
> >> > 00000070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 aa  |................|
> >> > 00000080
> >> > luigi[tmp]$
> >> >
> >> > I see no reason why the X server (or the driver, who ever is responsible)
> >> > shouldn't check the ACPI BIOS if DDC fails, especially as DDC failures seem to
> >> > be not uncommon with laptop panels.
> >> >
> >> > I have worked around my problem by manually feeding the ACPI EDID to parse-edid
> >> > and copying the result to xorg.conf, see below.  xrandr still thinks the
> >> > display has zero width and height, but xdpyinfo and Xorg.0.log look fine
> >> > AFAICT.  Let me know if you need more information.
> >>
> >> The driver is able to to get the panel timings out of the bios lcd
> >> info table, so even if there is no panel edid, the panel will still
> >> work properly.  I suspect the ACPI edid is generated from the lcd info
> >> table anyway.
> >
> > Hmm, I guess that depends on how you define "properly working".  It was
> > working, yes, but properly?  At least it didn't get the display size and
> > dpi right, but defaulted to standard 96 dpi.  Which wasn't a horrible
> > failure, but still.
> 
> You can specify the display size in your config.

That's what I did.

> I'll ask the bios guys if there is a better way of getting the display
> size info for panels without an edid.

Thanks.  IIUIC, the APCI BIOS may offer the _DDC method to retrieve the
EDID, and it seems to me that on my machine, it's the only way to get
it.  (Disclaimer: I only learned about this whole DDC and video BIOS
thing while examing my problem, so forgive me if I'm talking pure BS
here. :-)  So I think X should check if that _DDC method is present in
the BIOS, or just parse /proc/acpi/video/VID/LCD0/EDID, or whatever, but
not miss a complete and valid EDID like it apparently does right now.

Nikolaus






More information about the xorg-driver-ati mailing list