瑞芯微RK3588显示驱动总结一

1.接口介绍

先来看看瑞芯微RK3588支持哪些接口

HDMI/eDP TX interface

◼ Support two HDMI/eDP TX combo interface, but HDMI and eDP can not work at the

RK3588 Datasheet Rev 1.5

Copyright 2022 ©Rockchip Electronics Co., Ltd. 12

same time for each interface

◼ Support x1, x2 and x4 configuration for each interface

◼ Support all the data rates for HDMI FRL: 3, 6, 8, 10 and 12Gbps

◼ Support 1.62Gbps, 2.7Gbps and 5.4Gbps for eDP

◼ Support up to 7680x4320@60Hz for HDMI TX, and 4K@60Hz for eDP

◼ Support RGB/YUV(up to 10bit) format for HDMI TX

◼ Support RGB, YCbCr 4:4:4, YCbCr 4:2:2 and 8/10 bit per component video format

for eDP

◼ Support DSC 1.2a for HDMI TX

◼ Support HDCP2.3 for HDMI TX, and HDCP1.3 for eDP

⚫ DP TX interface

◼ Support 2 DP TX 1.4a interface which combo with USB3.1 Gen1

◼ Support 1/2/4lanes for each interface

◼ Support 1.62Gbps, 2.7Gbps, 5.4Gbps and 8.1Gbps Serializer

◼ Support up to 7680x4320@30Hz

◼ Support RGB/YUV(up to 10bit) format

◼ Support Single Stream Transport(SST)

◼ Support DP Alt mode on USB Type-C

◼ Support HDCP2.3, HDCP 1.3

⚫ MIPI DSI interface

◼ Support 2 MIPI DPHY 2.0 or CPHY 1.1 interface

◼ Support 4 data lanes and 4.5Gbps maximum data rate per lane for DPHY

◼ Support 3 data trios and 2.0Gsps maximum data rate per trio for CPHY

◼ Support max resolution 4K@60Hz

◼ Support dual MIPI display: left-right mode

◼ Support RGB(up to 10bit) format

◼ Support DSC 1.1/1.2a

⚫ BT.1120 video output interface

◼ Support up to 1920x1080@60Hz

◼ Support RGB(up to 8bit) format

◼ Up to 150MHz data rate

 支持两个 HDMI/eDP TX Combo PHY

支持两个 MIPI D-PHY/C-PHY Combo PHY TX

支持两个 DP1.4 TX PHY(和 USB3.0 Combo)

支持一个 16bit BT1120 输出接口

以上这就是具体的硬件输出接口。

在送到输出接口,有个视频输出处理,即VOP(Video Output Processor)。

框架如下

2.DRM

RK3588使用 DRM 显⽰框架。

DRM 全称是 Direct Rendering Manager,进⾏显⽰输出管理、buffer 分配、帧缓冲。对应的 userspace 库为 libdrm,libdrm 库提供了⼀系列友好的控制封装,使⽤⼾可以⽅便的进⾏显⽰的控制和 buffer 申请。DRM 的设备节点为 "/dev/dri/cardX", X 为 0-15 的数值,默认使⽤的是 /dev/dri/card0。
DRM 概念:

显示通路 

DRM 驱动和 libdrm 的交互过程

3.显示驱动

3.1 uboot驱动

显⽰驱动在 U-Boot 中主要提供开机 logo 显⽰和充电界⾯显⽰这两个功能。

在 Rockchip 平台上,开机 logo ⼀般分为两个阶段:显⽰ U-Boot logo 和 显⽰ Kernel logo。

这两个 LOGO 图⽚默认放在 Linux kernel 根⽬录下(logo.bmp 和 logo_kernel.bmp),Linux Kernel 在编译的时候会把他们打包到resource.img 中,再打包进⼊ Boot.img。

U-Boot 启动的时候会把这两个⽂件加载到内存中,U-Boot LOGO 在 U-Boot 阶段就开始显⽰,Kernel LOGO 在内存中的地址会被 U-Boot传递给 Linux kernel,在 Linux Kernel 的 drm 驱动初始化阶段显⽰。

驱动⽬录:drivers/video/drm/
驱动⽂件

DriverFile
Corerockchip_display.c rockchip_crtc.c rockchip_connector.c rockchip_phy.c rockchip_panel.c rockchip_bridge.c
VOProckchip_vop.c rockchip_vop_reg.c rockchip_vop2.c rockchip_vop2_reg.c
RGBrockchip_rgb.c inno_video_combo_phy.c
LVDSrockchip_lvds.c inno_video_combo_phy.c
MIPI-DSIdrm_mipi_dsi.c dw_mipi_dsi2.c inno_mipi_phy.c inno_video_combo_phy.c samsung_mipi_dcphy.c
eDProckchip_analogix_dp.c rockchip_analogix_dp_reg.c
HDMIdw_hdmi.c rockchip_dw_hdmi.c rockchip-inno-hdmi-phy.c inno_hdmi.c dw_hdmi_qp.c rockchip_dw_hdmi_qp.cphy-rockchip-samsung-hdptx-hdmi.c
TVE /CVBSrockchip_drm_tve.c
DPdw-dp.c drm_dp_helper.c phy-rockchip-usbdp.c

3.2 linux驱动

驱动⽂件:

drivers/gpu/drm/rockchip/ drivers/gpu/drm/bridge/analogix/ drivers/gpu/drm/bridge/synopsys/ drivers/phy/rockchip/

驱动⽬录:

DriverFileDoc
Corerockchip_drm_drv.c rockchip_drm_fb.c rockchip_drm_fbdev.c rockchip_drm_gem.c rockchip_drm_logo.c rockchip_drm_direct_show.c panel-simple.crockchip-drm.txt or rockchip-drm.yaml
VOProckchip_drm_vop.c rockchip_vop_reg.c rockchip_drm_vop2.c rockchip_vop2_reg.crockchip-vop.txt or rockchip-vop.yaml
RGBrocckhip_rgb.cphy-rockchip-inno-video-combo-phy.crockchip-rgb.txt
LVDSrockchip_lvds.cphy-rockchip-inno-video-combo-phy.crockchip-lvds.txt
MIPI-DSIdw-mipi-dsi.cphy-rockchip-inno-dsidphy.cphy-rockchip-inno-video-combo-phy.c dw-mipi-dsi2-rockchip.cphy-rockchip-samsung-dcphy.cdw_mipi_dsi_rockchip.txt phy-rockchip-inno-mipi-dphy.txt
eDPanalogix_dp_core.c analogix_dp-rockchip.c analogix_dp_reg.c phy-rockchip-dp.canalogix_dp-rockchip.txt analogix_dp.txt rockchip-dp-phy.txt
DPcdn-dp-core.c cdn-dp-reg.c dw-dp.cphy-rockchip-usbdp.cphy-rockchip-samsung-hdptx-hdmi.ccdn-dp-rockchip.txt
HDMIinno_hdmi.cdw-hdmi.cdw_hdmi-rockchip.cphy-rockchip-inno-hdmi-phy.cdw-hdmi-qp.cphy-rockchip-samsung-hdptx-hdmi.cinno_hdmi-rockchip.txt dw_hdmi-rockchip.txtphy-rockchip-inno-hdmi-phy.txt
TVE/CVBSrockchip_drm_tve.crockchip_drm_tve.txt

需要注意的是,DRM 驱动是⼀系列显⽰相关模块的驱动的结合,他包含了 backlight、panel、rgb、lvds、dsi、edp、lvds、hdmi、vop 等等显⽰通路上的依赖模块。只有这些相互依赖的模块都加载起来,整个 drm 系统才能启动成功。

因为这些复杂的依赖关系,在 drm 系统初始化的过程中,可能会出现某个资源暂时未就绪,而导致某个模块暂时⽆法顺利加载的情况,为了解决这种问题,drm 驱动利⽤了 Linux 驱动 中的 deferred probe 机制,当发现某个依赖的资源未就绪的时候,驱动返回 - EPROBE_DEFER(-517) , 然后退出。Linux kernel 会在稍后再次尝试加载这个驱动,直到依赖的资源就绪,驱动顺利加载为⽌。

  • 28
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值