based_edid should be "base edid"? On 4 December 2015 at 14:08, <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > lib/Makefile.sources | 1 + > lib/igt_edid_template.h | 74 ++++++++++++++++++++++++++++++++++++++++ > lib/igt_kms.c | 90 +++++++++++-------------------------------------- > 3 files changed, 95 insertions(+), 70 deletions(-) > create mode 100644 lib/igt_edid_template.h > > diff --git a/lib/Makefile.sources b/lib/Makefile.sources > index cb20f030cbec..4999868052b1 100644 > --- a/lib/Makefile.sources > +++ b/lib/Makefile.sources > @@ -11,6 +11,7 @@ libintel_tools_la_SOURCES = \ > igt_debugfs.h \ > igt_aux.c \ > igt_aux.h \ > + igt_edid_template.h \ Since this new header doesn't have any public API, please add it to IGNORE_HFILES in docs/reference/intel-gpu-tools/Makefile.am > igt_gt.c \ > igt_gt.h \ > igt_stats.c \ > diff --git a/lib/igt_edid_template.h b/lib/igt_edid_template.h > new file mode 100644 > index 000000000000..de421e080a88 > --- /dev/null > +++ b/lib/igt_edid_template.h > @@ -0,0 +1,74 @@ > +#define GAMMA(x) (((x) * 100) - 100) > + > +#define MANUFACTURER_ID(a, b, c) (a - '@') << 2 | (b - '@') >> 3, \ > + (b - '@') << 5 | (c - '@') > + > + > +#define ab(x, y) ((x) & 0xff), ((y) & 0xff), (((x) & 0xf00) >> 4) | (((y) & 0xf00) >> 8) > +#define op(ho, hp, vo, vp) ((ho) & 0xff), ((hp) & 0xff), \ > + (((vo) & 0xf) << 4) | ((vp) & 0xf), \ > + (((ho) & 0x300) >> 2) | (((hp) & 0x300) >> 4) \ > + | (((vo) & 0x30) >> 2) | ((vp) & 0x30 >> 4) > + > +static unsigned char EDID_NAME[EDID_LENGTH] = { > + 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, /* header */ > + MANUFACTURER_ID('I', 'G', 'T'), > + /* product code, serial number, week and year of manufacture */ > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x01, 0x03, /* edid version (1.3) */ > + /* basic display parameters */ > + /* digital display, maximum horizontal image size, maximum vertical > + * image size, gamma, features: RGB 4:4:4, native pixel format and > + * refresh rate in descriptor 1 */ > + 0x80, HSIZE, VSIZE, GAMMA(2.20), 0x02, > + /* chromaticity coordinates */ > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + /* established timings: 640x480 60Hz, 800x600 60Hz, 1024x768 60Hz */ > + 0x21, 0x08, 0x00, > + /* standard timings */ > + 0xd1, 0xc0, /* 1920x1080 60Hz */ > + 0x81, 0xc0, /* 1280x720 60Hz */ > + 0x61, 0x40, /* 1024x768 60Hz */ > + 0x45, 0x40, /* 800x600 60Hz */ > + 0x31, 0x40, /* 640x480 60Hz */ > + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, > + /* descriptor 1 (preferred timing) */ > + (CLOCK / 10) & 0x00ff, ((CLOCK / 10) & 0xff00) >> 8, > + ab(HACTIVE, HBLANK), ab(VACTIVE, VBLANK), > + op(HOFFSET, HPULSE, VOFFSET, VPULSE), > + ab(HSIZE * 10, VSIZE * 10), > + 0x00, 0x00, 0x00, > + /* descriptor 2 (monitor range limits) */ > + 0x00, 0x00, 0x00, 0xfd, 0x00, > + VFREQ - 1, VFREQ + 1, /* minimum, maximum vertical field rate */ > + (CLOCK / (HACTIVE + HBLANK)) - 1, /* minimum horizontal line rate */ > + (CLOCK / (HACTIVE + HBLANK)) + 1, /* maximum horizontal line rate */ > + (CLOCK / 10000) + 1, /* maximum pixel clock rate */ > + 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, > + /* descriptor 3 (name descriptor) */ > + 0x00, 0x00, 0x00, 0xfc, 0x00, 'I', 'G', 'T', 0x0a, > + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, > + /* descriptor 4 */ > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + /* extensions, checksum */ > + 0x00, 0x00 > +}; > + > +#undef EDID_NAME > +#undef VFREQ > +#undef CLOCK > +#undef HACTIVE > +#undef HBLANK > +#undef VACTIVE > +#undef VBLANK > +#undef HOFFSET > +#undef HPULSE > +#undef VOFFSET > +#undef VPULSE > +#undef HSIZE > +#undef VSIZE > +#undef GAMMA > +#undef MANUFACTURER_ID > +#undef ab > +#undef op > diff --git a/lib/igt_kms.c b/lib/igt_kms.c > index fd4f05e81f3d..da49f5676641 100644 > --- a/lib/igt_kms.c > +++ b/lib/igt_kms.c > @@ -53,6 +53,23 @@ > #define MAX_CONNECTORS 32 > static char *forced_connectors[MAX_CONNECTORS + 1]; > > +static void update_edid_csum(unsigned char *edid) > +{ > + int i, sum = 0; > + struct tm *tm; > + time_t t; > + > + /* year of manufacture */ > + t = time(NULL); > + tm = localtime(&t); > + edid[17] = tm->tm_year - 90; > + > + /* calculate checksum */ > + for (i = 0; i < 127; i++) { > + sum = sum + edid[i]; > + } > + edid[127] = 256 - sum; > +} > > #define VFREQ 60 > #define CLOCK 148500 > @@ -68,62 +85,8 @@ static char *forced_connectors[MAX_CONNECTORS + 1]; > #define HSIZE 52 > #define VSIZE 30 > > -#define GAMMA(x) (x * 100) - 100 > - > -#define MANUFACTURER_ID(a, b, c) (a - '@') << 2 | (b - '@') >> 3, \ > - (b - '@') << 5 | (c - '@') > - > - > -#define ab(x, y) (x & 0xff), (y & 0xff), ((x & 0xf00) >> 4) | ((y & 0xf00) >> 8) > -#define op(ho, hp, vo, vp) (ho & 0xff), (hp & 0xff), \ > - ((vo & 0xf) << 4) | (vp & 0xf), \ > - ((ho & 0x300) >> 2) | ((hp & 0x300) >> 4) \ > - | ((vo & 0x30) >> 2) | (vp & 0x30 >> 4) > - > -static unsigned char base_edid[EDID_LENGTH] = { > - 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, /* header */ > - MANUFACTURER_ID('I', 'G', 'T'), > - /* product code, serial number, week and year of manufacture */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x01, 0x03, /* edid version (1.3) */ > - /* basic display parameters */ > - /* digital display, maximum horizontal image size, maximum vertical > - * image size, gamma, features: RGB 4:4:4, native pixel format and > - * refresh rate in descriptor 1 */ > - 0x80, HSIZE, VSIZE, GAMMA(2.20), 0x02, > - /* chromaticity coordinates */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - /* established timings: 640x480 60Hz, 800x600 60Hz, 1024x768 60Hz */ > - 0x21, 0x08, 0x00, > - /* standard timings */ > - 0xd1, 0xc0, /* 1920x1080 60Hz */ > - 0x81, 0xc0, /* 1280x720 60Hz */ > - 0x61, 0x40, /* 1024x768 60Hz */ > - 0x45, 0x40, /* 800x600 60Hz */ > - 0x31, 0x40, /* 640x480 60Hz */ > - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, > - /* descriptor 1 (preferred timing) */ > - (CLOCK / 10) & 0x00ff, ((CLOCK / 10) & 0xff00) >> 8, > - ab(HACTIVE, HBLANK), ab(VACTIVE, VBLANK), > - op(HOFFSET, HPULSE, VOFFSET, VPULSE), > - ab(HSIZE * 10, VSIZE * 10), > - 0x00, 0x00, 0x00, > - /* descriptor 2 (monitor range limits) */ > - 0x00, 0x00, 0x00, 0xfd, 0x00, > - VFREQ - 1, VFREQ + 1, /* minimum, maximum vertical field rate */ > - (CLOCK / (HACTIVE + HBLANK)) - 1, /* minimum horizontal line rate */ > - (CLOCK / (HACTIVE + HBLANK)) + 1, /* maximum horizontal line rate */ > - (CLOCK / 10000) + 1, /* maximum pixel clock rate */ > - 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, > - /* descriptor 3 (name descriptor) */ > - 0x00, 0x00, 0x00, 0xfc, 0x00, 'I', 'G', 'T', 0x0a, > - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, > - /* descriptor 4 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - /* extensions, checksum */ > - 0x00, 0x00 > -}; > +#define EDID_NAME base_edid > +#include "igt_edid_template.h" > > /** > * igt_kms_get_base_edid: > @@ -143,20 +106,7 @@ static unsigned char base_edid[EDID_LENGTH] = { > */ > const unsigned char* igt_kms_get_base_edid(void) > { > - int i, sum = 0; > - struct tm *tm; > - time_t t; > - > - /* year of manufacture */ > - t = time(NULL); > - tm = localtime(&t); > - base_edid[17] = tm->tm_year - 90; > - > - /* calculate checksum */ > - for (i = 0; i < 127; i++) { > - sum = sum + base_edid[i]; > - } > - base_edid[127] = 256 - sum; > + update_edid_csum(base_edid); > > return base_edid; > } > -- > 2.4.10 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx