Introduction
A brief introduction/notes for EDID format when reading the document of “E-EDID Standard.pdf” V1.3.
The notes is laid out by explaining on an example
Block
- The EDID is compromised of one or more 128bytes-blocks. The first one is mandatory. Others are not.
- each block ends up with a checksum byte.
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x32, 0x8d, 0xc5, 0x07, 0x01, 0x00, 0x00, 0x00,
0x2e, 0x14, 0x01, 0x03, 0x80, 0x59, 0x32, 0x78, 0x0a, 0xee, 0x91, 0xa3, 0x54, 0x4c, 0x99, 0x26,
0x0f, 0x50, 0x54, 0x21, 0x08, 0x80, 0x71, 0x40, 0x81, 0x00, 0x81, 0x40, 0x81, 0x80, 0x95, 0x00,
0xa9, 0xc0, 0xa9, 0x40, 0xd1, 0xc0, 0x01, 0x1d, 0x00, 0x72, 0x51, 0xd0, 0x1e, 0x20, 0x6e, 0x28,
0x55, 0x00, 0xc4, 0x8e, 0x21, 0x00, 0x00, 0x1e, 0x66, 0x21, 0x50, 0xb0, 0x51, 0x00, 0x1b, 0x30,
0x40, 0x70, 0x36, 0x00, 0xa0, 0x5a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x18,
0x4b, 0x1a, 0x51, 0x17, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc,
0x00, 0x4c, 0x4f, 0x4e, 0x54, 0x49, 0x55, 0x4d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x01, 0x57,
0x02, 0x03, 0x2f, 0xc1, 0x48, 0x84, 0x13, 0x03, 0x12, 0x02, 0x11, 0x10, 0x1f, 0x23, 0x09, 0x07,
0x07, 0x83, 0x01, 0x00, 0x00, 0x02, 0x00, 0x0f, 0xe3, 0x05, 0x03, 0x01, 0x72, 0x03, 0x0c, 0x00,
0x40, 0x00, 0x80, 0x1e, 0x20, 0xd0, 0x08, 0x01, 0x40, 0x07, 0x3f, 0x40, 0x50, 0x90, 0xa0, 0x01,
0x1d, 0x00, 0xbc, 0x52, 0xd0, 0x1e, 0x20, 0xb8, 0x28, 0x55, 0x40, 0xc4, 0x8e, 0x21, 0x00, 0x00,
0x1e, 0x66, 0x21, 0x56, 0xaa, 0x51, 0x00, 0x1e, 0x30, 0x46, 0x8f, 0x33, 0x00, 0xc4, 0x8e, 0x21,
0x00, 0x00, 0x1e, 0x20, 0x1c, 0x56, 0x86, 0x50, 0x00, 0x20, 0x30, 0x0e, 0x38, 0x13, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1e, 0x0e, 0x1f, 0x00, 0x80, 0x51, 0x00, 0x1e, 0x30, 0x40, 0x80, 0x37,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef
The second block begins with 0x02, which means it is a block of “Additional timing date type 2”. Other possible values are defined in the section 2.2.1.4.
The critical part is timing definition
Block 0: Offset 23,24,25 is defined in section 3.8. Block 0: offset 0x26,27, Standard Timing #1, offset 0x28,29, Standard Timing #2 … offset 0x34,35, Standard Timing #8
Block 0: offset 0x36, 18 bytes, detailed timing description #1 offset 0x48, 18 bytes, detailed timing description #2 offset 0x5A, 18 bytes, detailed timing description #3 offset 0x6C, 18 bytes, detailed timing description #4
Now why there are different form factors of timing definition?
Offset 23-25 is the most compact definition which defines the most common timing definition. Refer to table 3.15 in the document on how to figure out the width/height and refresh rate.
Offset 26 to offset 35, defines the standard timing, which is more flexible than the above compact form. The arbitral timing definition could be done in “Detailed timing description”.
The first Detailed Timing shall only be used to indicate the mode that the monitor vendor has determined will give an optimal image. For LCD monitors, this will in most cases be the panel “native timing” and “native resolution”. Use of the EDID Preferred Timing bit shall be used to indicate that the timing indeed conforms to this definition.
Block0: offset 0x18 (decimal 24) bit 1: Preferred Timing Mode:
If this bit is set to 1, the display’s preferred timing mode is indicated in the first detailed timing block. Note: Use of preferred timing mode is required by EDID Structure Version 1 Revision 3 and higher.
In above example offset 0x18 is 0xe3, bit 1 is 1
, which means we need
detailed timing.
How host select which timing to use?
The priority on which timing to select is defined in Section 5. Note that preferred detailed timing is the top priority.
However If additional timing information is contained in EDID extensions, the timing priority order should be according to the rules established in the VESA Standard describing the first listed EDID extension. For example the LCD Timings extension may specify that the timings contained in the LCD Extension have higher priority than the timings listed in the basic EDID structure.
Revision
Block 0: offset 0x12: Version which is 0x01 offset 0x13: revision, which is 0x03
Flag to indicate the next blocks
Flag is the byte next to the last byte, to indicate the number of (optional) blocks to follow.
0x01 means there will be a second block.
an example
Change the following highlight bits (which is standard display mode)
offset
0 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x32, 0x8d, 0xc5, 0x07, 0x01, 0x00, 0x00, 0x00,
16 0x2e, 0x14, 0x01, 0x03, 0x80, 0x59, 0x32, 0x78, 0x0a, 0xee, 0x91, 0xa3, 0x54, 0x4c, 0x99, 0x26,
32 0x0f, 0x50, 0x54, 0x21, 0x08, 0x80,*0x71, 0x40, 0x81, 0x00, 0x81, 0x40, 0x81, 0x80, 0x95, 0x00,
48 0xa9, 0xc0, 0xa9, 0x40, 0xd1, 0xc0,*0x01, 0x1d, 0x00, 0x72, 0x51, 0xd0, 0x1e, 0x20, 0x6e, 0x28,
64 0x55, 0x00, 0xc4, 0x8e, 0x21, 0x00, 0x00, 0x1e, 0x66, 0x21, 0x50, 0xb0, 0x51, 0x00, 0x1b, 0x30,
80 0x40, 0x70, 0x36, 0x00, 0xa0, 0x5a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x18,
96 0x4b, 0x1a, 0x51, 0x17, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc,
112 0x00, 0x4c, 0x4f, 0x4e, 0x54, 0x49, 0x55, 0x4d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x01, 0x57,
To:
offset
0 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x32, 0x8d, 0xc5, 0x07, 0x01, 0x00, 0x00, 0x00,
16 0x2e, 0x14, 0x01, 0x03, 0x80, 0x59, 0x32, 0x78, 0x0a, 0xee, 0x91, 0xa3, 0x54, 0x4c, 0x99, 0x26,
32 0x0f, 0x50, 0x54, 0x21, 0x08, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
48 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1d, 0x00, 0x72, 0x51, 0xd0, 0x1e, 0x20, 0x6e, 0x28,
64 0x55, 0x00, 0xc4, 0x8e, 0x21, 0x00, 0x00, 0x1e, 0x66, 0x21, 0x50, 0xb0, 0x51, 0x00, 0x1b, 0x30,
80 0x40, 0x70, 0x36, 0x00, 0xa0, 0x5a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x18,
96 0x4b, 0x1a, 0x51, 0x17, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc,
112 0x00, 0x4c, 0x4f, 0x4e, 0x54, 0x49, 0x55, 0x4d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x01, 0x57,
Will disable all standard display mode
We have to recalculate the checksum
Another example: 702p EDID
offset
0 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x4D,0xD9,0x02,0x2C,0x01,0x01,0x01,0x01,
16 0x01,0x15,0x01,0x03,0x80,0x59,0x32,0x78, 0x0A,0x0D,0xC9,0xA0,0x57,0x47,0x98,0x27,
32 0x12,0x48,0x4C,0x20,0x00,0x00,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
54 55 56 57 58
48 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x1D, 0x00,0x72,0x51,0xD0,0x1E,0x20,0x6E,0x28,
0x1d01=7425, means 74.25Mhz
0x00, lower 8 bit of h active
0x5 high 4 bit of h active 0x500 = 1280
0x172 = 370, h blanking
0x2D0 = 720 v active
0x01E = 30 v blanking
0x20 h sync offset
0x6E Hysnc Pulse width
64 0x55,0x00,0x76,0xF2,0x31,0x00,0x00,0x1E, 0x01,0x1D,0x00,0x72,0x51,0xD0,0x1E,0x20,
80 0x6E,0x28,0x55,0x00,0x76,0xF2,0x31,0x00, 0x00,0x1E,0x00,0x00,0x00,0xFC,0x00,0x53,
96 0x4F,0x4E,0x59,0x20,0x54,0x56,0x0A,0x20, 0x20,0x20,0x20,0x20,0x00,0x00,0x00,0xFD,
112 0x00,0x30,0x3E,0x0E,0x46,0x08,0x00,0x0A, 0x20,0x20,0x20,0x20,0x20,0x20,0x01,0xF1,
offset
0 0x02,0x03,0x1D,0xF0,0x45,0x04,0x13,0x03, 0x02,0x01,0x23,0x09,0x07,0x07,0x83,0x01,
16 0x00,0x00,0x67,0x03,0x0C,0x00,0x10,0x00, 0x00,0x10,0xE2,0x00,0xFB,0x8C,0x0A,0xD0,
32 0x90,0x20,0x40,0x31,0x20,0x0C,0x40,0x55, 0x00,0x13,0x8E,0x21,0x00,0x00,0x18,0x00,
48 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
64 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
80 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
96 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
112 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39