rockchip中的vop

本文详细介绍了Rockchip RK3399平台的VOP(视频输出处理器)显示系统的配置原理及流程。包括VOP的基本概念、配置逻辑、设备节点的定义及其之间的连接方式,为理解RK3399的显示架构提供了实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.vop基本概念

rockchip平台的lcd controller成为vop(video output processor),芯片中一般集成了1-2个vop,只有支持两个vop的芯片,才能支持双屏异显

RK3399有2个VOP:
Video Output Processor(VOP_BIG)Video Output Processor(VOP_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.这块使能相当于使能了encoder
	status = "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.这块定义了连接的encoder
			remote-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";
	//在该处直接定义了panel
	panel@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_panel
panel: edp-panel:
配置某一款具体的 edp 屏;
有 1 条连接:
edp_out ---> edp_panel
hdmi: hdmi@ff940000:
配置 hdmi 控制器,大致包括引脚、基地址、中断、时钟、子节点 port;
有 2 条连接:
vopb_out_hdmi ---> hdmi_in_vopbvopl_out_hdmi ---> hdmi_in_vopl
dsi: dsi@ff960000  dsi1: dsi@ff968000:
配置 mipi dsi,类似 edp / hdmi;
mipi_dphy_tx1rx1: mipi-dphy-tx1rx1@ff968000:
配置 mipi dphy;

4.参考文档

RK3399 探索之旅 Display 子系统 基础概念

[ 1.954977] Video Port0: ACTIVE [ 1.955014] Connector: HDMI-A-1 [ 1.955051] bus_format[100a]: RGB888_1X24 [ 1.955084] overlay_mode[0] output_mode[f] [ 1.955090] color_space[0], eotf:0 [ 1.955137] Display mode: 1920x1080p60 [ 1.955157] clk[148500] real_clk[148500] type[40] flag[5] [ 1.955179] H: 1920 2008 2052 2200 [ 1.955213] V: 1080 1084 1089 1125 [ 1.955250] Smart1-win0: ACTIVE [ 1.955284] win_id: 1 [ 1.955330] format: RG24 little-endian (0x34324752) SDR[0] color_space[0] glb_alpha[0xff] [ 1.955367] rotate: xmirror: 0 ymirror: 0 rotate_90: 0 rotate_270: 0 [ 1.955401] csc: y2r[0] r2y[0] csc mode[0] [ 1.955419] zpos: 0 [ 1.955437] src: pos[0, 0] rect[400 x 130] [ 1.955455] dst: pos[760, 475] rect[400 x 130] [ 1.955477] buf[0]: addr: 0x00000000edf00000 pitch: 1200 offset: 479232 [ 1.963395] Video Port1: ACTIVE [ 1.963416] Connector: LVDS-1 [ 1.963435] bus_format[1009]: RGB666_1X18 [ 1.963471] overlay_mode[0] output_mode[0] [ 1.963478] color_space[0], eotf:0 [ 1.963529] Display mode: 1280x800p61 [ 1.963563] clk[72000] real_clk[72000] type[48] flag[a] [ 1.963598] H: 1280 1320 1340 1420 [ 1.963633] V: 800 806 814 838 [ 1.963667] Smart0-win0: ACTIVE [ 1.963685] win_id: 0 [ 1.963711] format: RG24 little-endian (0x34324752) SDR[0] color_space[0] glb_alpha[0xff] [ 1.963749] rotate: xmirror: 0 ymirror: 0 rotate_90: 0 rotate_270: 0 [ 1.963783] csc: y2r[0] r2y[0] csc mode[0] [ 1.963816] zpos: 1 [ 1.963856] src: pos[0, 0] rect[400 x 130] [ 1.963890] dst: pos[440, 335] rect[400 x 130] [ 1.963927] buf[0]: addr: 0x00000000edf00000 pitch: 1200 offset: 479232 [ 1.963994] rockchip-vop2 fe040000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp0 [ 1.964085] rockchip-vop2 fe040000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp0 [ 1.977521] rockchip-vop2 fe040000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp0 [ 1.977651] rockchip-vop2 fe040000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp0 [ 1.977732] rockchip-vop2 fe040000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp0 [ 1.977787] rockchip-vop2 fe040000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp0 [ 1.977815] rockchip-vop2 fe040000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp0 [ 1.977848] rockchip-vop2 fe040000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp0 [ 1.977877] rockchip-vop2 fe040000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp0 [ 1.977905] rockchip-vop2 fe040000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp0 [ 2.122726] rockchip-drm display-subsystem: fb0: frame buffer device RK3566Android12 问题现象是烧录完固件平板HDMI连接显示器显示是正常的,但是重启后上下滑动平板,显示器就是闪屏,是什么原因,应该怎么改驱动
最新发布
07-14
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值