1. RK3588 显示子系统概述
RK3588 是瑞芯微推出的旗舰级 SoC,其显示子系统采用多显示控制器 + 多输出接口的异构架构,支持最高 8K@60fps 或 4K@120fps 的显示输出,可同时驱动多达 7 个独立显示通道。理解该子系统的模块划分与数据流是进行驱动故障排查的第一步。
1.1 整体架构与数据流
显示数据从 GPU/VPU 生成后,依次经过 显示控制器 (VOP/DPU) → 内部连接 (Internal Bridge) → 显示接口 (HDMI/DP/MIPI DSI/eDP) → 外部显示器。其中 VOP 负责图层合成与时序生成,DPU 负责图像处理与增强,接口模块负责协议转换与物理层传输。
1.2 显示控制器:VOP 与 DPU
RK3588 内部集成两个显示控制器核心:VOP (Video Output Processor) 和 DPU (Display Processing Unit)。两者在功能上各有侧重,共同完成从帧缓冲区到显示接口的数据处理。
| 特性 | VOP | DPU |
|---|---|---|
| 主要功能 | 图层合成、缩放、时序生成 | HDR 处理、色彩管理、图像增强 |
| 支持图层数 | 最多 8 个硬件图层 (Win0~Win7) | 输入来自 VOP 合成后的单路信号 |
| 输出分辨率 | 单通道最高 8K@60fps | 与 VOP 输出分辨率一致 |
| 关键特性 | AFBC 解压缩、YUV/RGB 转换、dither | PQ (画质) 调节、HDR10/HLG、3D LUT |
| 驱动文件 | drivers/gpu/drm/rockchip/rockchip_drm_vop2.c |
drivers/gpu/drm/rockchip/rockchip_drm_dpu.c |
1.3 显示输出接口模块
RK3588 提供了丰富的显示输出接口,每个接口对应一个独立的 DRM encoder/connector。下表列出了各接口的关键参数与典型应用场景。
| 接口 | 最大分辨率 | 协议版本 | 典型用途 | 驱动模块 |
|---|---|---|---|---|
| HDMI TX | 8K@60fps (HDMI 2.1) | HDMI 2.1 / HDCP 2.3 | 电视、显示器、投影 | dw-hdmi-qp |
| DP / USB-C | 8K@30fps (DP 1.4) | DP 1.4 / USB-C Alt Mode | 电脑显示器、扩展坞 | cdn-dp |
| MIPI DSI | 4K@60fps (4-lane) | MIPI DSI 1.3 | 平板、车载显示屏 | dw-mipi-dsi2 |
| eDP | 4K@120fps (eDP 1.4) | eDP 1.4 / PSR | 笔记本内置屏、工业屏 | analogix_dp |
1.4 内部连接与时钟拓扑
VOP/DPU 与各显示接口之间通过 内部连接桥 (Internal Bridge) 进行数据交换。每个显示通道可以动态路由到任意一个物理接口,这种灵活性使得 RK3588 支持多种显示组合(如双屏同显、三屏异显)。
时钟拓扑方面,RK3588 拥有独立的 CRTC (VOP/DPU) 时钟域和 PHY 时钟域。常见的时钟路径为:
- PLL (如 CPLL、GPLL) 产生参考时钟
- 参考时钟输入 VOP CRTC 生成像素时钟 (pixel clock)
- 像素时钟通过内部桥传递给 接口 PHY 生成链路时钟 (link clock)
- PHY 输出时钟驱动外部显示器
clk_summary 查看各时钟使能状态。
1.5 显示通道与多屏支持
RK3588 内部包含 3 个独立的显示通道 (Display Channel),每个通道包含一个完整的 VOP+DPU 流水线。这意味着 SoC 可以同时驱动最多 3 个不同的显示内容(异显),或者通过内部桥接实现更多物理接口的输出。
modetest -M rockchip 可以列出所有可用的 CRTC (显示通道) 和 encoder/connector。如果某个接口没有输出,先确认对应的显示通道是否已绑定到正确的 encoder。例如:# 查看 CRTC 与 encoder 的绑定关系
cat /sys/kernel/debug/dri/0/state
1.6 驱动层次结构
RK3588 显示驱动基于 Linux DRM/KMS 框架,驱动层次从上到下依次为:
- DRM Core:提供 /dev/dri/card0 设备文件,管理 framebuffer、CRTC、encoder、connector、plane 等核心对象。
- Rockchip DRM 驱动:
rockchip_drm_drv.c作为平台驱动入口,注册 component 框架,协调各子模块。 - VOP2 驱动:实现 CRTC 和 plane 的硬件控制,包括图层配置、中断处理、带宽计算。
- DPU 驱动:实现 HDR 和色彩管理相关的属性 (property) 控制。
- 接口驱动:每个接口 (HDMI/DP/DSI/eDP) 各自实现 encoder 和 connector 的回调函数,包括 EDID 读取、模式验证、链路训练等。
- PHY 驱动:负责物理层时钟生成与信号调理,通常通过
phy子系统与接口驱动交互。
dmesg | grep rockchip-drm 确认驱动是否 probe 成功;然后检查 ls /sys/class/drm/ 确认 card0 和各个 connector 是否创建。如果 connector 缺失,通常是接口驱动 probe 失败或 PHY 初始化出错。