Comment 58 for bug 312133

Revision history for this message
In , Michael Fu (michael-fu-intel) wrote :

Jesse, I think the BDB_LVDS_LFP_DATA and BDB_LVDS_LFP_DATA_PTRS should be the same thing, while one is pointers and the other is datum. Driver is preferred to use BDB_LVDS_LFP_DATA_PTRS , rather than visit BDB_LVDS_LFP_DATA directly, even though we can...But,

I did some Hex editing and noticed that all pointers in BDB_LVDS_LFP_DATA_PTRS are busted, as you said, and are set 4 bytes ahead of the correct value. Not only DVO_Timing, but also LFP_PARAMs, PnPIDs. I further checked out and noticed that BDB_LVDS_OPTIONS is unexpected 4 bytes longer than it should be of its BDB version ...The correct size is 4 ( excluding bdb header/size ) , but in this rom, it's 8. From a document I have, it is valid to have this size but it's only in later version, not 1.26.

It looks like someone tucked 4 extra bytes of information to block BDB_LVDS_OPTIONS and just updated its size ( thus each block can still be parsed out correctly ), while forget the offset values in following blocks..

Googling around of this platform, it seems i810 or vesa driver need the hint of 800x480 to pick up the correct timing as well. I guess they use BDB_LVDS_LFP_DATA directly...