From 08f6c80d34db90124e7937ac92e930958fb47ca3 Mon Sep 17 00:00:00 2001 From: Hung-Te Lin Date: Thu, 3 Apr 2014 21:13:11 +0800 Subject: [PATCH] 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 Reviewed-on: https://chromium-review.googlesource.com/193013 (cherry picked from commit 2ad598b8bd620117e70e13347365d74a7c6b87ef) Signed-off-by: Isaac Christensen Reviewed-on: http://review.coreboot.org/6998 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel Reviewed-by: Ronald G. Minnich --- src/lib/edid.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/lib/edid.c b/src/lib/edid.c index b171c8b99b..6efe6a95ba 100644 --- a/src/lib/edid.c +++ b/src/lib/edid.c @@ -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 || !has_valid_string_termination || !has_valid_descriptor_pad ||