本文硬件基于I.MX8MQ EVK。
今天遇到一个问题,如何让LCD和HDMI双屏显示。由于官方文档支持的双屏同显是基于双HDMI的,所以来分析一下双屏显示的设备树。
首先从datasheet里可以得到,I.MX8 支持的LCDIF,HDMI Display Interface,MIPI DSI 。在双屏显示的设备树里,使能DCSS–>HDMI链路。
&dcss {status = "okay";
};&hdmi {status = "okay";
};
DCSS和LCDIF都是挂接在ARM总线AIPS4下的display-controller,并且dcss与hdmi控制器通过port链接在一起,也就是dcss将数据发送给的是HDMI控制器。
&dcss {
status = “okay”;
port@0 {dcss_out: endpoint {remote-endpoint = <&hdmi_in>;};
};
};
而LCDIF显示控制器与MIPI DSI相连接,从设备树可知,LCDIF—>MIPI DSI—>ADV BRIDGE—>HDMI。ADV桥的作用是将MIPI DSI的信号转换成HDMI信号,所以如果不加adv桥,是可以驱动MIPI屏的。
&lcdif {....port@0 {lcdif_out: endpoint {remote-endpoint = <&mipi_dsi_in>;};};
&mipi_dsi {status = "okay";
ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;mipi_dsi_in: endpoint {remote-endpoint = <&lcdif_out>;};};port@1 {reg = <1>;mipi_dsi_out: endpoint {remote-endpoint = <&adv7535_in>;};};
};
};
我们可以设置MIPI DSI和HDMI的数据来源,比如官方提供的DTS中,实现了LCDIF–>MIPI和DCSS–>MIPI。
默认的双屏显示模式是DCSS–>HDMI和LCDIF–>MIPI DSI,也就是说,HDMI和DSI的显示数据来自两个接口,所以在Linux下无法做到双屏同步显示内容,但是可以做到双屏显示不同内容。
待验证的测试:如果将HDMI和MIPI的数据来源设置成同一个显示接口,是不是就可以实现双屏同步了呢?会不会对CPU造成过度负载,或者说会不会出现数据同步问题。
本文来自公众号:求密勒实验室