/* edid.h: defines to parse an EDID block
*
* This file contains all information to interpret a standard EDIC block
* transmitted by a display device via DDC (Display Data Channel). So far
* there is no information to deal with optional EDID blocks.
* DDC is a Trademark of VESA (Video Electronics Standard Association).
*
* Copyright 1998 by Egbert Eich <Egbert.Eich@Physik.TU-Darmstadt.DE>
*/
#ifndef _EDID_H_
#define _EDID_H_
#include "vdif.h"
/* read complete EDID record */
#ifdef _PARSE_EDID_
/* header: 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 */
#define HEADER_SECTION 0
/* vendor section */
#define V_MANUFACTURER 0
/* EDID version */
#define V_VERSION 0
/* display information */
#define D_INPUT 0
/* supported VESA and other standard timings */
#define E_T1 0
/* non predefined standard timings supported by display */
/* detailed timing info of non standard timings */
/* number of EDID sections to follow */
/* one byte checksum */
# error "EDID1 length != 128!"
#endif
/* extract information from vendor section */
/* extract information from version section */
/* extract information from display section */
/* color characteristics */
/* extract information from standard timing section */
/* extract information from estabished timing section */
|| ((x[0] == 0x00) && (x[1] == 0x00)) \
|| ((x[0] == 0x20) && (x[1] == 0x20)) )
#define RATIO1_1 0
/* EDID Ver. 1.3 redefined this */
}
#define _ID_LOW(x) x[0]
/* EDID Ver. >= 1.2 */
#endif /* _PARSE_EDID_ */
/* input type */
#define DIGITAL(x) x
/* DFP */
#define DFP1(x) x
/* input voltage level */
/* Signal level setup */
#define SIG_SETUP(x) (x)
/* sync characteristics */
/* DPMS features */
/* display type */
#define DISP_MONO 0
/* Msc stuff EDID Ver > 1.1 */
/* detailed timing misc */
#define IS_INTERLACED(x) (x)
#define IS_STEREO(x) (x)
typedef unsigned int Uint;
typedef unsigned char Uchar;
struct vendor {
int prod_id;
int week;
int year;
};
struct edid_version {
int version;
int revision;
};
struct disp_features {
int hsize;
int vsize;
float gamma;
float redx;
float redy;
float greenx;
float greeny;
float bluex;
float bluey;
float whitex;
float whitey;
};
struct established_timings {
};
struct std_timings {
int hsize;
int vsize;
int refresh;
};
struct detailed_timings {
int clock;
int h_active;
int h_blanking;
int v_active;
int v_blanking;
int h_sync_off;
int h_sync_width;
int v_sync_off;
int v_sync_width;
int h_size;
int v_size;
int h_border;
int v_border;
};
#define DT 0
struct monitor_ranges {
int min_v;
int max_v;
int min_h;
int max_h;
int max_clock;
int gtf_2nd_f;
int gtf_2nd_c;
int gtf_2nd_m;
int gtf_2nd_k;
int gtf_2nd_j;
};
struct whitePoints{
int index;
float white_x;
float white_y;
float white_gamma;
};
struct detailed_monitor_section {
int type;
union {
} section;
};
typedef struct {
int scrnIndex;
int no_sections;
extern xf86MonPtr ConfiguredMonitor;
#endif /* _EDID_H_ */