目录
背景
如果显示控制器直连显示器,例如HDMI控制器直接连接HDMI显示器,EDID通常影响不大。但是在有些场景中通过如下方式连接输出。
HDMI控制器----》HDMI转EDP芯片---》EDP屏幕。
虽然HDMI有I2C通道,EDP有aux通道,并且HDMI转EDP芯片将两者连接起来,但是EDID信息并没有直接从屏幕读取,而是先将EDID配置到转换芯片。而HDMI控制器在初始化时再从转换芯片读取。
屏幕原始EDID
通过 DP转EDP显示器驱动板4K 8K 120HZ便携液晶显示器驱动板DIY直连8K-淘宝网
这种转接板,可以将edp屏幕连接到带DP口的单板上,而后读取EDID。
:/sys/class/drm/card0-DP-1# cat edid |edid-decode
edid-decode (hex):
00 ff ff ff ff ff ff 00 09 e5 47 08 00 00 00 00
2d 1c 01 04 b5 22 13 78 06 b3 35 a5 54 4f 9c 27
0f 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 42 37 80 cc 70 38 1e 40 30 20
36 00 58 c2 10 00 00 1a 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 fe 00 42
4f 45 20 43 51 0a 20 20 20 20 20 20 00 00 00 fe
00 4e 56 31 35 36 46 48 4d 2d 4e 35 32 0a 01 70
02 03 0f 00 e3 05 80 00 e6 06 05 01 60 60 28 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 aa
----------------
EDID version: 1.4
Manufacturer: BOE Model 2119 Serial Number 0
Made in week 45 of 2018
Digital display
10 bits per primary color channel
DisplayPort interface
Maximum image size: 34 cm x 19 cm
Gamma: 2.20
Supported color formats: RGB 4:4:4
Default (sRGB) color space is primary color space
First detailed timing includes the native pixel format and preferred refresh rate
Color Characteristics
Red: 0.6464, 0.3310
Green: 0.3085, 0.6123
Blue: 0.1523, 0.0615
White: 0.3134, 0.3291
Established Timings I & II: none
Standard Timings: none
Detailed mode: Clock 141.460 MHz, 344 mm x 194 mm
1920 1968 2000 2124 ( 48 32 124)
1080 1083 1089 1110 ( 3 6 21)
+hsync -vsync
VertFreq: 60.001 Hz, HorFreq: 66.601 kHz
Empty Descriptor
Alphanumeric Data String: BOE CQ
Alphanumeric Data String: NV156FHM-N52
Has 1 extension block
Checksum: 0x70
----------------
CTA-861 Extension Block Revision 3
0 native detailed modes
11 bytes of CTA data blocks
Extended tag: Colorimetry Data Block
BT2020RGB
Extended tag: HDR Static Metadata Data Block
Electro optical transfer functions:
Traditional gamma - SDR luminance range
SMPTE ST2084
Supported static metadata descriptors:
Static metadata type 1
Desired content max luminance: 96 (400.000 cd/m^2)
Desired content max frame-average luminance: 96 (400.000 cd/m^2)
Desired content min luminance: 40 (0.098 cd/m^2)
Checksum: 0xaa
将EDID配置到转换芯片中
{
int edid_size=256;
int i;
for (i=0;i<edid_size;i++)
{
I2CSend_Data(0xe0,0xa0,i);
I2CSend_Data(0xe0,0xa1,nv156_edid_data[i]);
}
}
采用屏幕EDID,屏幕无显示
分析上述原始EDID 与之前可以显示的EDID对比。发现
原始EDID极性: +hsync -vsync
可以显示EDID极性: +hsync +vsync
EDID规范
极性字段的配置如下:

对应屏幕的EDID字段:

1A 。 0001 1010 bit 2 =0: Vertical Sync Negative(垂直同步负极性)
1e: 0001 1110 bit 2=1 Vertical Sync Positive(垂直同步正极性)
转换芯片的极性


转换芯片默认配置的输入输出极性均为正极性,和屏幕的EDID里面不一致。导致显示不正常。
解决
修改EDID
修改 极性为正极性,即0x1a 修改为0x1e 。转换芯片保持不动。
修改转换芯片配置
由于转换芯片默认即负极性。删除配置为正极性的代码即可。
但是此处修改后,影响到UEFI的显示,由于UEFI并不是直接读取EDID来设置显示相关。需要同步修改参数uefi中的参数配置。
将如下字段由0配置为1,则UEFI也可正常显示,即1表示负极性。

swing和电阻
上述极性修改为和屏一致后,即负极性后
采用else部分的 swing和电阻配置才能正常显示。
采用else部分的 swing和电阻配置才能正常显示。
#if 0
I2CSend_Data(0xea,0x0e,0x06);
I2CSend_Data(0xea,0x0f,0x06);
I2CSend_Data(0xea,0x11,0x88);
#else
I2CSend_Data(0xea,0x0e,0x18);
I2CSend_Data(0xea,0x0f,0x18);
I2CSend_Data(0xea,0x11,0x08);
#endif
接口类型
规范定义

原始EDID为DP配置,修改为HDMI,在控制器侧依然显示为DVI,如下
dvi_mode :yes
------------------------------------------------------------------hw_cfg----------------------------------------------------------------
work_mode :tmds |pre_work_mode :tmds |tmds_scr_en :no |pre_tmds_scr_en :no |
tmds_clock :141460 |pre_tmds_clock :141460 |dvi_mode :yes |pre_dvi_mode :no |
导致不能显示。而EDID中此字段的修改并不能影响HDMI对模式的更改。
总结
引入 显示桥片后,EDID的来源及内容值得仔细审核。