显示模式、EDID 与 Device Tree Timing

显示模式、EDID 与 Device Tree Timing

1. 数据模型

display_timing每个参数可有min/typ/max:

  • pixelclock;
  • hactive、hfront porch、hsync、hback porch;
  • vactive、vfront porch、vsync、vback porch;
  • sync polarity和data enable flags。

videomode是选定后的具体数值。

2. 转换

videomode_from_timing()通常取typ值并转换flags。反向转换用于跨fbdev/DRM/panel helper共享。

3. DT结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
display-timings {
native-mode = <&timing0>;
timing0: timing-0 {
clock-frequency = <...>;
hactive = <...>;
hfront-porch = <...>;
hsync-len = <...>;
hback-porch = <...>;
vactive = <...>;
vfront-porch = <...>;
vsync-len = <...>;
vback-porch = <...>;
};
};

属性可为单值或范围。

4. OF API

  • of_get_display_timing()
  • of_get_display_timings()
  • of_get_videomode()
  • native mode选择;
  • timing释放。

Parser必须检查缺失属性、范围顺序和overflow。

5. fbdev ModeDB

modedb.c维护标准video modes,解析video=参数并做最佳匹配。fbcvt.c生成CVT mode。

6. EDID

fbmon.c解析EDID:

  • header/checksum;
  • established/standard timings;
  • detailed timing descriptors;
  • monitor range;
  • preferred mode。

fb_ddc.c可通过I2C DDC读取EDID。

7. Mode验证

候选mode还必须满足:

  • display controller pixel clock;
  • output PHY/link bandwidth;
  • plane/stride和memory bandwidth;
  • panel固定时序;
  • bridge限制;
  • porch/sync范围。

DT能解析不等于硬件可用。

8. HDMI Helper

hdmi.c提供HDMI相关通用结构/信息处理辅助,但RK3588 HDMI controller、PHY、HDCP和connector状态主要在DRM/vendor驱动中。

9. 时钟误差

实际PLL可能只能近似pixelclock。Driver应检查允许误差并把实际mode反馈给上层,防止面板抖动或音视频不同步。

10. RK3588

固定panel常由DT panel timing/compatible描述;HDMI/DP/eDP通常通过EDID和DRM mode probing。VOP2输出route决定video port连接哪个connector。

11. 常见故障

现象 检查
无mode EDID/DDC、DT timing、connector状态
花屏 pixel format、clock、lane/PHY
偏移 porch/sync polarity
间歇黑屏 link bandwidth、PLL误差、HPD
panel亮但无图 route/endpoint/VOP plane

12. 安全

EDID来自外部显示器,应视为不可信:校验长度、extension count、descriptor offset和乘法溢出,避免恶意EDID触发越界。

文章互动

阅读 --

留言

0 条留言

正在加载留言…