/*
* 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_
#ifndef _X_EXPORT
# include <X11/Xfuncproto.h>
#endif
/* 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 */
/**
* Returns true if the pointer is the start of a monitor descriptor block
* instead of a detailed timing descriptor.
*
* Checking the reserved pad fields for zeroes fails on some monitors with
* broken empty ASCII strings. Only the first two bytes are reliable.
*/
#define PREFERRED_ASPECT_4_3 0
#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, analog */
#define DISP_MONO 0
/* display color encodings, digital */
/* 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 {
/* 15 bit hole */
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 gtf_2nd_f;
int gtf_2nd_c;
int gtf_2nd_m;
int gtf_2nd_k;
int gtf_2nd_j;
int max_clock_khz;
char supported_aspect;
char preferred_aspect;
char supported_blanking;
char supported_scaling;
};
struct whitePoints{
int index;
float white_x;
float white_y;
float white_gamma;
};
struct cvt_timings {
int width;
int height;
int rate;
int rates;
};
/*
* Be careful when adding new sections; this structure can't grow, it's
* embedded in the middle of xf86Monitor which is ABI. Sizes below are
* in bytes, for ILP32 systems. If all else fails just copy the section
* literally like serial and friends.
*/
struct detailed_monitor_section {
int type;
union {
/* color management data */
};
/* flags */
/* old, don't use */
/*
* For DisplayID devices, only the scrnIndex, flags, and rawData fields
* are meaningful. For EDID, they all are.
*/
typedef struct {
int scrnIndex;
unsigned long flags;
int no_sections;
#define EXT_TAG 0
struct cea_video_block {
};
struct cea_audio_block_descriptor {
};
struct cea_audio_block {
};
struct cea_vendor_block_hdmi {
};
struct cea_vendor_block {
union {
/* any other vendor blocks we know about */
} dummy;
};
struct cea_speaker_block
{
};
struct cea_data_block {
union{
}u;
};
struct cea_ext_body {
};
#endif /* _EDID_H_ */