edid: Support EDID 1.4.

EDID v1.4 has changed some fields (0xfc - Monitor Name, 0xfd - Monitor Range
Limits) to optional so we need to list the requirements explicitly instead of
sharing v1.3 requirements.

Change-Id: I5c7ca06893bd20e178bc35164c4ca639c881e00b
Signed-off-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/193013
(cherry picked from commit 2ad598b8bd620117e70e13347365d74a7c6b87ef)
Signed-off-by: Isaac Christensen <isaac.christensen@se-eng.com>
Reviewed-on: http://review.coreboot.org/6998
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
Hung-Te Lin 2014-04-03 21:13:11 +08:00 committed by Isaac Christensen
parent b2c1062116
commit 08f6c80d34
1 changed files with 18 additions and 1 deletions

View File

@ -1251,7 +1251,24 @@ int decode_edid(unsigned char *edid, int size, struct edid *out)
* } * }
*/ */
if (claims_one_point_three) { if (claims_one_point_four) {
if (nonconformant_digital_display ||
!has_valid_string_termination ||
!has_valid_descriptor_pad ||
!has_preferred_timing)
conformant = 0;
if (!conformant)
printk(BIOS_ERR, "EDID block does NOT conform to EDID 1.4!\n");
if (nonconformant_digital_display)
printk(BIOS_ERR, "\tDigital display field contains garbage: %x\n",
nonconformant_digital_display);
if (!has_valid_string_termination)
printk(BIOS_ERR, "\tDetailed block string not properly terminated\n");
if (!has_valid_descriptor_pad)
printk(BIOS_ERR, "\tInvalid descriptor block padding\n");
if (!has_preferred_timing)
printk(BIOS_ERR, "\tMissing preferred timing\n");
} else if (claims_one_point_three) {
if (nonconformant_digital_display || if (nonconformant_digital_display ||
!has_valid_string_termination || !has_valid_string_termination ||
!has_valid_descriptor_pad || !has_valid_descriptor_pad ||