<lazy>Can you please link the EDID specification, I just looked on wikipedia which is not quite authoritative</lazy>
The changes look logical to me assuming the fields represent the values I think they do (based on wikipedia). Still, I'm confused about this > 2006 issue. Is that somewhere in the spec? What if firmware updates cause the display to support EDID v1.4 but it was manufactured in 2005? To check for <1.4, you should change "edid[0x13] < 4" to "(edid[0x12] == 1 && edid[0x13] < 4)" ... your existing check would not work for EDID version 2.0. If you change the 1.4 check (and that matches the spec), or if you remove the 1.4 check, Reviewed-by: Jeremy Huddleston <[email protected]> On Dec 17, 2011, at 15:24, Tormod Volden wrote: > From: Tormod Volden <[email protected]> > > For instance, the handling of week=0xff or week=0 was not working, > as could be seen from the data/sharp-* examples. > > Only EDID version 1.4 requires the year to be 2006 or later. > > Signed-off-by: Tormod Volden <[email protected]> > --- > > v2: We should not require year >= 2006 if version < 1.4. > > This can be made prettier if we do the EDID version > parsing before the week and year parsing, but I will leave it like > this for now. > > Tormod > > > edid-decode.c | 22 +++++++++++----------- > 1 files changed, 11 insertions(+), 11 deletions(-) > > diff --git a/edid-decode.c b/edid-decode.c > index ab4bde8..9c89528 100644 > --- a/edid-decode.c > +++ b/edid-decode.c > @@ -953,18 +953,18 @@ int main(int argc, char **argv) > > time(&the_time); > ptm = localtime(&the_time); > - if (edid[0x10] < 55 || edid[0x10] == 0xff) { > + if (edid[0x10] < 0x37 || edid[0x10] == 0xff) > has_valid_week = 1; > - if (edid[0x11] > 0x0f) { > - if (edid[0x10] == 0xff) { > - has_valid_year = 1; > - printf("Made week %hd of model year %hd\n", edid[0x10], > - edid[0x11]); > - } else if (edid[0x11] + 90 <= ptm->tm_year) { > - has_valid_year = 1; > - printf("Made week %hd of %hd\n", edid[0x10], edid[0x11] + 1990); > - } > - } > + if (edid[0x11] + 90 <= ptm->tm_year) { > + /* Year must be 2006 or later from EDID version 1.4 */ > + if (edid[0x11] > 0x0f || edid[0x13] < 4) > + has_valid_year = 1; > + if (edid[0x10] == 0xff) > + printf("Model year %hd\n", edid[0x11] + 1990); > + else if (edid[0x10] == 0) > + printf("Manufactured year %hd\n", edid[0x11] + 1990); > + else > + printf("Manufactured week %hd of %hd\n", edid[0x10], edid[0x11] + > 1990); > } > > printf("EDID version: %hd.%hd\n", edid[0x12], edid[0x13]); > -- > 1.7.5.4 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
