RK3588 显示拓扑与 DRM 集成
1. 关键结论
RK3588主显示controller不是drivers/video/fbdev驱动,而是Rockchip DRM中的VOP2路径。drivers/video直接参与的是backlight、fbdev兼容、timing helper及vendor媒体模块。
2. DTS顶层
rk3588s.dtsi定义:
display-subsystem;vop@fdd90000;- VOP output ports;
- route-dp0/dsi0/dsi1/edp0/edp1/hdmi0/rgb等route;
- VOP IOMMU;
- clocks/resets/power domain/OPP/QoS。
3. Scanout拓扑
1 | GEM/dma-buf |
每条链路依赖DT graph两端endpoint互相连接。
4. VOP2
VOP2负责planes、blend、CRTC/video ports、timing和scanout。其driver主要在drivers/gpu/drm/rockchip,不要在drivers/video/rockchip查找。
5. 输出
- HDMI:controller、PHY、HPD、DDC/EDID;
- DP/eDP:link training、AUX、panel/bridge;
- DSI:host、PHY、panel;
- RGB/LVDS:可能经bridge/PHY;
- Backlight:常由本目录
pwm_bl.c提供class device。
6. Route
SoC dtsi给出所有可能route,板级dts决定:
- endpoint连接;
- status;
-默认logo/route; - panel/bridge;
- regulator/GPIO/backlight。
仅有SoC节点不等于板上输出已启用。
7. IOMMU
VOP IOMMU保护scanout DMA并允许non-contiguous GEM buffer。Boot framebuffer handoff时需处理firmware physical buffer与native IOMMU地址切换。
8. RGA/MPP关系
RGA或MPP输出dma-buf,HWC/DRM再把buffer放到VOP plane。它们是producer/processor,不是connector或CRTC。
9. Backlight实例
本树RK3588 tablet、EVB和vehicle dtsi包含大量pwm-backlight节点。最终有效性取决于:
- PWM controller status/pinctrl;
- power-supply;
- enable GPIO;
- brightness table;
- panel phandle。
10. 配置
Vendor defconfig启用:
DRM_ROCKCHIP=y;BACKLIGHT_CLASS_DEVICE=y;BACKLIGHT_PWM=y;- Multi-RGA;
- IEP;
- MPP及多数RK3588 codec。
FB/fbcon未在该defconfig中显式列出,应检查最终Kconfig结果和产品fragment,不能宣称必然启用。
基线Kconfig中DRM_FBDEV_EMULATION默认开启,并可进一步带入framebuffer console;因此普通Rockchip Linux构建通常会得到DRM模拟的/dev/fb0。产品fragment仍可覆盖,例如NVR配置明确关闭fbdev emulation。
11. 启动链
1 | U-Boot/VOP logo buffer |
该Vendor路径不依赖simplefb/efifb;本树RK3588 DTS也没有相应节点。
12. 常见故障
| 现象 | 优先检查 |
|---|---|
| 无connector | bridge/panel endpoint、status |
| connected无mode | EDID/AUX/DSI panel |
| atomic commit失败 | route、clock、bandwidth、format |
| 有图无背光 | PWM/regulator/GPIO/phandle |
| boot logo后黑屏 | aperture/handoff、first atomic commit |
| IOMMU fault | GEM mapping、modifier/stride、domain |
13. 运行核对
1 | ls /sys/class/drm |
14. 产品建议
以DRM为单一显示ownership;仅在确有需求时启用fbdev emulation。保留实际使用的output、panel、backlight和媒体backend,关闭不相关legacy fbdev及vendor debug接口。
正在加载留言…