From: Hans Verkuil <hansv...@cisco.com> The Model Year is only available in 1.4. And in 1.3 bits 4-3 are always for the Display Type.
Signed-off-by: Hans Verkuil <hansv...@cisco.com> --- edid-decode.c | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/edid-decode.c b/edid-decode.c index ed725ff4..660ae7a9 100644 --- a/edid-decode.c +++ b/edid-decode.c @@ -2157,6 +2157,25 @@ int main(int argc, char **argv) // return 1; } + printf("EDID version: %hd.%hd\n", edid[0x12], edid[0x13]); + if (edid[0x12] == 1) { + if (edid[0x13] > 4) { + printf("Claims > 1.4, assuming 1.4 conformance\n"); + edid[0x13] = 4; + } + switch (edid[0x13]) { + case 4: + claims_one_point_four = 1; + case 3: + claims_one_point_three = 1; + case 2: + claims_one_point_two = 1; + default: + break; + } + claims_one_point_oh = 1; + } + printf("Manufacturer: %s Model %x Serial Number %u\n", manufacturer_name(edid + 0x08), (unsigned short)(edid[0x0A] + (edid[0x0B] << 8)), @@ -2167,7 +2186,7 @@ int main(int argc, char **argv) time(&the_time); ptm = localtime(&the_time); - if (edid[0x10] < 55 || edid[0x10] == 0xff) { + if (edid[0x10] < 55 || (edid[0x10] == 0xff && claims_one_point_four)) { has_valid_week = 1; if (edid[0x11] > 0x0f) { if (edid[0x10] == 0xff) { @@ -2183,25 +2202,6 @@ int main(int argc, char **argv) } } - printf("EDID version: %hd.%hd\n", edid[0x12], edid[0x13]); - if (edid[0x12] == 1) { - if (edid[0x13] > 4) { - printf("Claims > 1.4, assuming 1.4 conformance\n"); - edid[0x13] = 4; - } - switch (edid[0x13]) { - case 4: - claims_one_point_four = 1; - case 3: - claims_one_point_three = 1; - case 2: - claims_one_point_two = 1; - default: - break; - } - claims_one_point_oh = 1; - } - /* display section */ if (edid[0x14] & 0x80) { @@ -2294,8 +2294,7 @@ int main(int argc, char **argv) printf("\n"); } - /* FIXME: this is from 1.4 spec, check earlier */ - if (analog) { + if (analog || !claims_one_point_four) { switch (edid[0x18] & 0x18) { case 0x00: printf("Monochrome or grayscale display\n"); break; case 0x08: printf("RGB color display\n"); break; -- 2.14.1 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel