1.vop基本概念 rockchip平台的lcd controller成为vopvideo output processor),芯片中一般集成了1-2个vop,只有支持两个vop的芯片,才能支持双屏异显RK3399有2个VOP:Video Output ProcessorVOP_BIG)Video Output ProcessorVOP_LIT)支持的显示接口:One or Two MIPI-DSI portOne eDP portOne DP portOne HDMI port 2.vop基本配置逻辑 //数据传递流程如下:vop相当于显示控制器) –> dis/vlds/edp/rgb相当于encoder) –> panel相当于显示器)//分析2代的配置,数据流向vopb_out_rgb -> rgb_in_vopb -> rgb_out_panel ->panel_in_rgb//配置vopb&vopb {//1.这块使能了,相当于使能了lcd控制器status = “okay”;};&display_subsystem {route_rgb: route-rgb {status = “disabled”;logo,uboot = “logo.bmp”;logo,kernel = “logo_kernel.bmp”;logo,mode = “center”;charge_logo,mode = “center”;//2.vopb有多少输出点,这块相当于要连接vopb_out_rgb这个输出点connect = <&vopb_out_rgb>;};}&route_rgb { /delete-property/ logo,uboot;//3.这块使能了,相当于使能了vopb_out_rgb输出status = “okay”;}总结:以上3项配置相当于配置了vop -> vopb -> vopb_out_rgb//配置encoder&rgb {//1.这块使能相当于使能了encoderstatus = “okay”;ports {port@1 {reg = <1>;rgb_out_panel: endpoint {//2.这块定义了连接的panel,即显示器remote-endpoint = <&panel_in_rgb>;};};};};&rgb_in_vopb {//2.这块使能相当于使能了encoder的接收,即能够接收来自vopb_out_rgb的数据status = “okay”;};总结:以上2项配置相当于配置了encoder//配置panel,在panel中设置与液晶屏相关内容,例如分辨率、时钟,时序等各参数panel: panel {port {panel_in_rgb: endpoint {//1.这块定义了连接的encoderremote-endpoint = <&rgb_out_panel>;};};} //分析3代的配置//定义vopb&vopb {status = “okay”;};&display_subsystem {route_dsi: route-dsi {status = “disabled”;logo,uboot = “logo.bmp”;logo,kernel = “logo_kernel.bmp”;logo,mode = “center”;charge_logo,mode = “center”;connect = <&vopb_out_dsi>;};}&route_dsi {logo,uboot = “logo_kernel.bmp”;connect = <&vopb_out_dsi>;status = “okay”;};//定义encoder&dsi {status = “okay”;//在该处直接定义了panelpanel@0 {}}&dsi_in_vopb {status = “okay”;}; 3.设备节点
display-subsystem:配置 Rockchip 的 display engine;通过 route 表将各组件plane / crct / encoder / connector) 关联在一起,以便对应的驱动构建出 display pipe;vopl: vop@ff8f0000:配置 VOP little;子节点 port 里有 5 个 endpoint,名字分别为 vopl_out_dsi / vopl_out_edp 等,它们是数据输出端,即 output endpoint;每个 endpoint 都会连接到某个 remote-endpoint,VOP 的 remote-endpoint 连接的就是各种显示 Encoder 的 endpoint,例如 vopl_out_dsi —> dsi_in_vopl;vopb: vop@ff900000:省略edp: edp@ff970000:配置 edp 控制器,大致包括基地址、中断、时钟、子节点 port;2 个 input endpoint,分别连接到 VOPL 和 VOPB;1 个 output endpoint 连接到了 epd panel 上;有 3 条连接:vopb_out_edp —> edp_in_vopbvopl_out_edp —> edp_in_vopledp_out —> edp_panelpanel: edp-panel:配置某一款具体的 edp 屏;有 1 条连接:edp_out —> edp_panelhdmi: hdmi@ff940000:配置 hdmi 控制器,大致包括引脚、基地址、中断、时钟、子节点 port;有 2 条连接:vopb_out_hdmi —> hdmi_in_vopbvopl_out_hdmi —> hdmi_in_vopldsi: dsi@ff960000 dsi1: dsi@ff968000:配置 mipi dsi,类似 edp / hdmi;mipi_dphy_tx1rx1: mipi-dphy-tx1rx1@ff968000:配置 mipi dphy; 4.参考文档
RK3399 探索之旅 Display 子系统 基础概念