EDID结构体解析 (Extended Display Identification Data)

EDID数据以128字节的形式存储,通常使用一组16个16进制数表示

头部(HEAD)

//固定的8个字节,用于识别EDID数据
u8 header[8];

厂商和产品识别(Vendor and Product Identification)

/* Vendor & product info */
// 一个长度为2字节的数组,用于表示厂商ID。每个字节对应一个ASCII字符,用于标识显示设备的制造商
u8 mfg_id[2];
// 一个长度为2字节的数组,用于表示产品代码。它指定了特定显示设备的产品标识符
u8 prod_code[2];
//  一个32位无符号整数,用于表示设备的序列号,注意,这里的字节顺序
u32 serial; /* FIXME: byte order */
// 制造设备的周数以及年份
u8 mfg_week;
u8 mfg_year;

EDID版本信息(EDID version)

//EDID数据的版本号
u8 version;
//EDID数据结构的修订版本
u8 revision;

显示参数(Display Parameters)

//用于表示显示设备的输入类型,VGA,HDMI等
u8 input;
//显示设备的宽度,单位是厘米
u8 width_cm;
//显示设备的高度,单位是厘米
u8 height_cm;
//伽马校准值,这对于颜色显示和图像处理非常重要
u8 gamma;
//显示设备的特性,可能包括一些特定的功能
u8 features;

色度数据(Chromaticity Data)

// 这两个字段表示了颜色和亮度之间的低位差异
// 颜色和亮度的精确度对于图像显示和颜色呈现都非常重要
u8 red_green_lo;
u8 black_white_lo;
// 这些字段给出了每种颜色在CIE色彩空间中的坐标。CIE色彩空间是一个三维坐标系统
// 其中每种颜色都可以用两个坐、、标值(x和y)来表示。这些坐标值决定了颜色的视觉属性,如色调、饱和度和亮度
u8 red_x;
u8 red_y;
u8 green_x;
u8 green_y;
u8 blue_x;
u8 blue_y;
u8 white_x;
u8 white_y;

已建立的时序、标准时序和详细时序描述(Established Timings, Standard Timings, and Detailed Timing Descriptors)

// 这些部分描述了支持的标准显示模式和详细的定制显示模式,比如分辨率、刷新率等
/* Est. timings and mfg rsvd timings*/
struct est_timings established_timings;
/* Standard timings 1-8*/
struct std_timing standard_timings[8];
/* Detailing timings 1-4 */
struct detailed_timing detailed_timings[4];

扩展标志和校验和(Extension Flag and Checksum)

//最后的字节用于指示是否存在扩展的EDID数据,并包含了一个校验和,用于验证EDID数据的完整性。
/* Number of 128 byte ext. blocks */
u8 extensions;
/* Checksum */
u8 checksum;

整个机构体的构成可以查阅内核头文件(kernel/include/drm/drm_edid.h)

你可能感兴趣的:(linux,显示器)