RK px30 双面屏带宽不足问题调试

1.简介

我们有一个项目是双屏异显的(双 MIPI 屏),副屏是通过 rk618 的转换芯片,把 rgb 信号转成 mipi信号输出,但是转换出来的画面会有抖动的现象,log 打印的错误显示带宽不足

[ 127.410618] rockchip-vop ff470000.vop: [drm:vop_isr] ERROR WIN1_EMPTY irq err
[ 127.568685] rockchip-vop ff470000.vop: [drm:vop_isr] ERROR WIN1_EMPTY irq err
[ 130.254854] rockchip-vop ff470000.vop: [drm:vop_isr] ERROR WIN1_EMPTY irq err

2.调试过程

2.1 先关闭 dmc 定频,来查看现象
&dmc {
	center-supply = <&vdd_logic>;
	status = "disabled";
};

如果问题解决,说明当前的ddr频率没有问题,则把 dmc 打开

修改vop-dclk-mode值:0,1,2

vop-dclk-mode = <0>;

注: 常是改为 vop-dclk-mode = <1>;

2.2 如果上述修改不行,则需要修改 ddr 频率

改成 rk 支持的最大频率,查看现象,逐步调试成合适的频率,即可

&dmc {
	status = "okay";

	system-status-freq = <

	/*system status freq(KHz)*/
	SYS_STATUS_NORMAL 856000 //只保留这个改成这个列表里最高频率看看能不能行。

	/* SYS_STATUS_REBOOT 666000
	SYS_STATUS_SUSPEND 328000
	SYS_STATUS_VIDEO_1080P 666000
	SYS_STATUS_VIDEO_4K 856000
	SYS_STATUS_VIDEO_4K_10B 856000
	SYS_STATUS_PERFORMANCE 856000
	SYS_STATUS_BOOST 856000
	SYS_STATUS_DUALVIEW 856000
	SYS_STATUS_ISP 856000 */
	>;

	auto-min-freq = <666000>;
	auto-freq-en = <1>;
}

3.dts 参考说明

dmc: dmc {
	compatible = "rockchip,rk3399-dmc";
	devfreq-events = <&dfi>;
	interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH 0>;
	clocks = <&cru SCLK_DDRCLK>;
	clock-names = "dmc_clk";
	ddr_timing = <&ddr_timing>;

	/* DDR 利用率超过 40%,开始升频;auto-freq-en=1 时才有效 */
	upthreshold = <40>;

	/* DDR 利用率低于 20%,开始降频;auto-freq-en=1 时才有效 */
	downdifferential = <20>;

	system-status-freq = <
	/*system status freq(KHz)*/
	/* 只有 auto-freq-en=0 时有效。表示除了下列场景以外的,都用这个场景 */
	SYS_STATUS_NORMAL 800000

	/* reboot 前的 DDR 频率。当 auto-freq-en=1 时,会以此频率作为 min 值,根据负载状况往上升频 */
	SYS_STATUS_REBOOT 528000

	/* 一级待机时的 DDR 频率。当 auto-freq-en=1 时,会以此频率作为 min 值,根据负载状况往上升频 */
	SYS_STATUS_SUSPEND 200000

	/* 1080P 视频时的 DDR 频率。当 auto-freq-en=1 时,会以此频率作为 min 值,根据负载状况往上升频 */
	SYS_STATUS_VIDEO_1080P 300000

	/* 4K 视频时的 DDR 频率。当 auto-freq-en=1 时,会以此频率作为 min 值,根据负载状况往上升频 */
	SYS_STATUS_VIDEO_4K 600000

	/* 4K 10bit 视频时的 DDR 频率。当 auto-freq-en=1 时,会以此频率作为 min 值,根据负载状况往上升频 */
	SYS_STATUS_VIDEO_4K_10B 800000

	/* 性能模式时的 DDR 频率。当 auto-freq-en=1 时,会以此频率作为 min 值,根据负载状况往上升频 */
	SYS_STATUS_PERFORMANCE 800000

	/* 触屏时的 DDR 频率,用于从低频提高上来,改善触屏响应。当 auto-freq-en=1 时,会以此频率作为 min值,根据负载状况往上升频 */
	SYS_STATUS_BOOST 400000

	/* 双屏显示时的 DDR 频率。当 auto-freq-en=1 时,会以此频率作为 min 值,根据负载状况往上升频 */
	SYS_STATUS_DUALVIEW 600000

	/* ISP 时的 DDR 频率。当 auto-freq-en=1 时,会以此频率作为 min 值,根据负载状况往上升频 */
	SYS_STATUS_ISP 600000
	>;

	/* auto-freq-en=1 时有效,表示 normal 场景的最低频率 */
	auto-min-freq = <400000>;

	/* 等于 1,表示开启负载变频功能;等于 0,表示关闭负载变频功能。开启负载变频功能后,SYS_STATUS_NORMAL 场景将完全被负载负载变频接替,且最低频率以 auto-min-freq 为准,而不是以SYS_STATUS_NORMAL 定义的为准。而且开启负载变频后,其他场景定义的频率将作为最低频率,系统根据 DDR带宽的利用率状况,依据 upthreshold、downdifferential 来提高、降低 DDR 频率 */

	auto-freq-en = <1>;
	status = "disabled";
};
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值