1. RK3399 显示子系统概述:VOP、DP、HDMI、MIPI DSI、eDP 控制器架构与多路显示通道

RK3399 作为 Rockchip 面向高端平板、互动商显、边缘计算和 ARM 服务器的旗舰 SoC,其显示子系统在硬件层面原生支持三路独立显示通道。理解 VOP(Video Output Processor,视频输出处理器)与各物理显示接口(DP、HDMI、MIPI DSI、eDP)之间的拓扑关系,是后续配置 DMA-BUF 多屏异显的基础。

1.1 显示子系统整体架构

RK3399 显示子系统采用“VOP 多通道 + 独立 PHY”的分离式架构。VOP 负责从内存(通过 DMA-BUF 或 iommu)获取帧缓冲数据,完成图层合成、缩放、色彩转换后,将并行 RGB/LVDS 信号分发到对应的显示控制器(Display Controller,即 DP/HDMI/eDP/MIPI DSI 的 MAC 层),最终由 PHY 串化输出。

关键设计原则: VOP 与显示控制器之间通过内部总线连接,每个 VOP 端口可以独立选择绑定到任意一个显示控制器,但受限于 SoC 内部走线,实际存在固定的推荐映射关系。
RK3399 显示子系统整体架构 RK3399 显示子系统整体架构 系统内存 (DDR) DMA-BUF / IOMMU VOP (Video Output Processor) Win0 Win1 Win2 Win3 图层合成 / CSC / 缩放 VOP 输出端口 (Port0/Port1) DP 控制器 HDMI 控制器 MIPI DSI / eDP PHY 串化输出 说明:VOP 内部包含 4 个硬件图层(Win0~Win3),支持叠加、alpha 混合和独立缩放。 VOP 输出端口通过内部总线连接到 DP/HDMI/MIPI DSI/eDP 控制器,每个控制器再驱动对应的 PHY。

1.2 VOP 控制器详解

RK3399 集成 2 个 VOP:VOPB(Big VOP)和 VOPL(Little VOP)。两者在能力上存在差异,直接决定了多屏异显时分辨率和刷新率的分配策略。

特性 VOPB (Big VOP) VOPL (Little VOP)
最大输出分辨率 4096x2160 @ 60Hz 2560x1600 @ 60Hz
硬件图层数 4 (Win0~Win3) 2 (Win0~Win1)
支持接口 DP / HDMI / eDP / MIPI DSI eDP / MIPI DSI / 并行 RGB
AFBC 解码 支持 不支持
HDR 处理 支持 HDR10 不支持
典型用途 主屏(HDMI/DP 输出) 副屏(eDP/DSI 输出)
实践要点: 在多屏异显场景中,通常将 VOPB 分配给 HDMI 或 DP 作为主显示输出,VOPL 分配给 eDP 或 MIPI DSI 作为副屏。如果强行将 4K 分辨率分配给 VOPL,驱动会返回 -EINVAL 错误。

1.3 显示控制器与物理接口

每个显示控制器负责将 VOP 输出的并行视频时序(VSYNC/HSYNC/DE/PCLK + RGB 数据)转换为对应接口标准的串行协议。RK3399 的显示控制器布局如下:

  • DP 控制器: 符合 VESA DisplayPort 1.2 标准,支持 4 通道 HBR2(5.4 Gbps/通道),最大分辨率 4096x2160 @ 60Hz。内部集成 AUX 通道用于 EDID 读取和 DPCD 配置。
  • HDMI 控制器: 符合 HDMI 2.0 标准,支持 TMDS 时钟高达 600 MHz,支持 4K @ 60Hz 4:4:4 8bit。集成 HDCP 2.2 引擎。
  • MIPI DSI 控制器: 符合 MIPI DSI 1.3 标准,支持 4 通道,每通道最高 1.5 Gbps。支持视频模式(Burst/Non-Burst)和命令模式。
  • eDP 控制器: 符合 VESA eDP 1.4 标准,支持 PSR(Panel Self Refresh)和快速链路训练。通常用于连接内置 LCD 面板。
RK3399 显示控制器与接口对比 显示控制器与物理接口对比 DP 控制器 DisplayPort 1.2 4 通道 HBR2 4K@60Hz HDMI 控制器 HDMI 2.0 TMDS 600 MHz 4K@60Hz 4:4:4 MIPI DSI DSI 1.3 4 通道 1.5 Gbps 视频/命令模式 eDP 控制器 eDP 1.4 PSR 支持 快速链路训练 VOPB 可绑定 DP 或 HDMI 控制器;VOPL 通常绑定 eDP 或 MIPI DSI 控制器。 实际绑定关系由设备树 (Device Tree) 中的 port 节点和 <display-subsystem> 配置决定。

1.4 多路显示通道与设备树绑定

RK3399 支持三路独立显示,但并非所有接口都能同时工作。硬件上存在引脚复用和时钟域隔离的限制。典型的多屏异显组合如下:

显示通道 VOP 分配 典型接口 设备树路径
通道 0(主屏) VOPB HDMI 或 DP /hdmi@ff940000 或 /dp@fec00000
通道 1(副屏) VOPL eDP 或 MIPI DSI /edp@ff970000 或 /dsi@ff960000
通道 2(第三屏) VOPB 或 VOPL MIPI DSI 或 并行 RGB /dsi@ff968000 或 /rgb@ff960000
硬件限制警告: 当同时使用 HDMI 和 DP 时,两者共享 VOPB 的同一个输出端口,无法同时独立显示不同内容。要实现真正的三屏异显,必须将其中一个接口(如 DP)配置为从 VOPL 输出,但这需要修改 SoC 内部 CRTC 路由,属于高级定制范畴。

1.5 显示时钟树与像素时钟

每个 VOP 和显示控制器都有独立的 PLL 时钟源。RK3399 的显示时钟树结构如下:

  • CPLL (Codec PLL):通常用于音频和低速外设,也可作为 VOP 备用时钟。
  • GPLL (General PLL):通用 PLL,频率范围 24 MHz ~ 1.6 GHz,是 VOP 像素时钟的主要来源。
  • NPLL (NIC PLL):用于内存控制器和内部总线,也可为显示控制器提供参考时钟。
  • VPLL (Video PLL):专用视频 PLL,为 HDMI PHY 和 DP PHY 提供精确的 TMDS 或 Link 时钟。

在设备树中,时钟配置通常如下:

&vopb {
    status = "okay";
    assigned-clocks = &cru ACLK_VOP0, &cru HCLK_VOP0;
    assigned-clock-rates = <400000000>, <100000000>;
};

&hdmi {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&hdmi_cec &hdmi_hpd &hdmi_ddc>;
    rockchip,phy-table =
        <74250000 0x8000 0x0000 0x0000>,
        <165000000 0x8000 0x0000 0x0000>;
};
时钟调试技巧: 如果遇到显示闪烁或无信号,首先检查 /sys/kernel/debug/clk/clk_summary 中 aclk_vop0、dclk_vop0、hdmi_phy_pll 的频率是否与预期一致。使用 clk_summary 可以快速定位时钟门控或频率设置错误。

1.6 本章小结