[Libdlo] Problem with reading EDID from monitor that should work

Alexander Todorov atodorov at otb.bg
Tue Sep 14 13:43:41 PDT 2010


Hi all,
I've decided to upgrade the configuration that I use and gave a try of the new
sources (not latest git).

When the driver loads I get an error message:
dlfb: Unrecognized vendor firmware descriptor

This comes from dlfb_parse_vendor_descriptor():

total_len = usb_get_descriptor(usbdev, 0x5f, /* vendor specific */
                               0, desc, MAX_VENDOR_DESCRIPTOR_SIZE);

total_len is 224 but the desc buffer contains only zeros (i've tried to print it
all). Btw this function has the same implementation in my local copy and latest git.

The reason that I think it doesn't work is because when I plug in the monitor
directly into the PC as a second monitor it's detected automatically and X
spawns on the second monitor as well. In X.log there's the full hex EDID which
is not zeros obviously. I'm not quite sure if it is for the external monitor or
for the laptop's integrated one but I think it is the external monitor EDID.

The other confusing thing is that the first time I tried this new code base I
got the monitor green and after a reboot (to fix something else) I wasn't able
to make it go green again. Also I've tried the very same code base 2-3 monts
before and I had no issues back then but my kernel has been updated in between.

Further down in the udlfb messages is a list of monitor modes that the driver
tries automatically. My monitor is 1024x768, nothing special, and this mode is
there in the list but for some reason it's not activated.

Some questions:

1) Why do we have:
  buf = kzalloc(MAX_VENDOR_DESCRIPTOR_SIZE, GFP_KERNEL);
  desc = buf;

I see no other references to buf in this function and it's freed at the end of
it so we can remove the buf variable and use desc directly. I can do simple
patch if necessary.

2) Why in the usb_get_descriptor we pass type = 0x5f, /* vendor specific */ and
index = 0 parameters. I just don't understand that yet.

Any ideas what could I do to find out what goes wrong?


Thanks,
Alexander.


More information about the Libdlo mailing list