RK3399 Ubuntu20.04 HDMI不显示

平台:RK3399 Ubuntu20.04

屏幕:LVDS 1280*800,HDMI 1920*1080,其中LVDS是通过GM8775C转dsi0转出来的

问题:HDMI不显示,插上以后一直报错

[ 129.133762] dw-mipi-dsi ff960000.dsi: An overflow occurs in the DPI pixel payload FIFO 
[ 129.141756] dw-mipi-dsi ff960000.dsi: Host reports that the configured timeout counter for the high-speed transmission has expired 
[ 129.153495] dw-mipi-dsi ff960000.dsi: An overflow occurs in the DPI pixel payload FIFO 
[ 129.161489] dw-mipi-dsi ff960000.dsi: Host reports that the configured timeout counter for the high-speed transmission has expired 
[ 129.173221] dw-mipi-dsi ff960000.dsi: An overflow occurs in the DPI pixel payload FIFO 
[ 129.181215] dw-mipi-dsi ff960000.dsi: Host reports that the configured timeout counter for the high-speed transmission has expired 
[ 129.192947] dw-mipi-dsi ff960000.dsi: An overflow occurs in the DPI pixel payload FIFO 
[ 129.200935] dw-mipi-dsi ff960000.dsi: Host reports that the configured timeout counter for the high-speed transmission has expired 
[ 129.212667] dw-mipi-dsi ff960000.dsi: An overflow occurs in the DPI pixel payload FIFO 
[ 129.220670] dw-mipi-dsi ff960000.dsi: Host reports that the configured timeout counter for the high-speed transmission has expired

似乎是DPI像素负载FIFO发生溢出,还没有深入了解。

解决办法:原本给dsi用的是vopb,HDMI是vopl

&dsi_in_vopl {
	status = "disabled";
};

&dsi_in_vopb {
	status = "okay";
};
&route_dsi {
	status = "okay";
	connect = <&vopb_out_dsi>;
};

&hdmi {
	status = "okay";
	rockchip,phy-table =
		<74250000 0x8009 0x0004 0x0272>,
		<165000000 0x802b 0x0004 0x0209>,
		<297000000 0x8039 0x0005 0x028d>,
		<594000000 0x8039 0x0000 0x019d>,
		<000000000 0x0000 0x0000 0x0000>;
};

&hdmi_sound {
     status = "okay";
};

&route_hdmi {
    status = "okay";
    };
    
&hdmi_in_vopl{
    status = "okay";
};

&hdmi_in_vopb{
    status = "disabled";
};

然后尝试将他们对调,让dsi用vopl,HDMI用vopb,HDMI就有显示了

&dsi_in_vopl {
	status = "okay";
};

&dsi_in_vopb {
	status = "disabled";
};
&route_dsi {
	status = "okay";
	connect = <&vopl_out_dsi>;
};

&hdmi {
	status = "okay";
	rockchip,phy-table =
		<74250000 0x8009 0x0004 0x0272>,
		<165000000 0x802b 0x0004 0x0209>,
		<297000000 0x8039 0x0005 0x028d>,
		<594000000 0x8039 0x0000 0x019d>,
		<000000000 0x0000 0x0000 0x0000>;
};

&hdmi_sound {
     status = "okay";
};

&route_hdmi {
    status = "okay";
    };
    
&hdmi_in_vopl{
    status = "disabled";
};

&hdmi_in_vopb{
    status = "okay";
};

解决了这个问题,又出现了新的问题,因为两个屏幕分辨率不一样,副屏HDMI显示有问题

找了半天,发现可以通过命令解决,可以先xrandr查看一下自己的显示屏信息,这个命令就是让HDMI的分辨率跟随DSI的1280*800

xrandr --output DSI-1 --auto --output HDMI-1 --mode 1280x800 --same-as DSI-1

但是如果这个命令直接放/etc/rc.local里面没用,加延时也没用,于是将搞了一个脚本文件xrandr_hdmi.sh,把指令放里面,然后在/etc/rc.local加命令去执行这个脚本

sleep 4
sudo su - root -c "/usr/bin/xrandr_hdmi.sh&"

期间还遇到两个小问题,一是sleep 3不行,4才可以,应该是DSI-1 和HDMI-1没有加载出来,需要sleep久一点,二是第一次写脚本是在本地写的,拷贝到开发板上发现不行,会报错

root@lubuntu:~# sudo su - root -c "/usr/bin/xrandr_hdmi.sh&"
"randr: cannot find output "DSI-1

最后直接在板子上touch一个脚本操作了,问题就解决了。

不过这种办法还是会有不足之处,就是每次开机去设置HDMI的分辨率,一旦开机之前没有插上HDMI或者开机后HDMI断开的话,就又要重启了,暂时还没去想永久解决这个问题的办法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值