本文硬件基于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造成过度负载,或者说会不会出现数据同步问题。