BSP:4.1.15-1.2.0
Kernel:4.1.15
dts文件:BLTP01lvds_lvds_hdmi.dts、blt-p01-test.dtsi
当设置fb0为ldb的时候,lvds能正常显示1920x1080
当设置fb0为hdmi的时候,hdmi能正常显示1920x1080
但是就是不能同时显示,求指导
mxcfb1: fb@0 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "ldb";
interface_pix_fmt = "RGB24";
default_bpp = <32>;
int_clk = <0>;
late_init = <0>;
status = "okay";
};
mxcfb2: fb@1 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "hdmi";
interface_pix_fmt = "RGB24";
mode_str = "1920x1080M@60";
default_bpp = <32>;
int_clk = <0>;
late_init = <0>;
status = "okay";
};
&ldb {
status = "okay";
split-mode;
#if 1
lvds-channel@0 {
fsl,data-mapping = "spwg";
//fsl,data-mapping = "jeida";
fsl,data-width = <24>;
crtc = "ipu1-di0";
status = "okay";
primary;
display-timings {
native-mode = <&timing0>;
timing0: LM215WF3 {
clock-frequency = <72000000>;
hactive = <1920>;
vactive = <1080>;
hback-porch = <48>;
hfront-porch = <48>;
vback-porch = <8>;
vfront-porch = <8>;
hsync-len = <32>;
vsync-len = <4>;
};
};
};
#endif
#if 1
lvds-channel@1 {
crtc = "ipu1-di1";
};
#endif
};
&hdmi_core {
ipu_id = <0>;
disp_id = <1>;
status = "okay";
};
我测试IMX6DL 可以LVDS+HDMI双屏显示, 具体配置:
mxcfb1: fb@0 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "ldb";
interface_pix_fmt = "RGB24";
default_bpp = <18>;
int_clk = <0>;
late_init = <0>;
status = "disabled";
};
mxcfb2: fb@1 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "hdmi";
interface_pix_fmt = "RGB24";
mode_str ="1920x1080M@60";
default_bpp = <18>;
int_clk = <0>;
late_init = <0>;
status = "disabled";
};
mxcfb3: fb@2 {
status = "disabled";
};
mxcfb4: fb@3 {
status = "disabled";
};
&hdmi_core {
ipu_id = <0>;
disp_id = <1>;
status = "okay";
};
启动之后再/dev/下面会出现 fb0,fb1,fb2三个设备,其中fb2对应的是HDMI, 需要执行 echo 0 > /sys/class/graphics/fb2/blank 来开启HDMI显示.
这样配置可以实现HDMI+LVDS双屏异显, 双屏同显不知道该怎么实现
2个display显示什么内容是有上层图像管理层实现的,比如你运行Android,双屏显示的内容就是相同的。
Please try with:
&hdmi_core {
ipu_id = <0>;
disp_id = <0>;
status = "okay";
};
改了,一样,fb0是ldb就显示lvds,是hdmi就显示hdmi
root@imx6dlsabresd:~# cat /sys/class/graphics/fb0/modes
U:1920x1080p-31
cat /sys/class/graphics/fb1/modes
U:240x320p-31
root@imx6dlsabresd:~# dmesg |grep fb
[ 0.292212] mxc_sdc_fb fb@0: registered mxc display driver ldb
[ 0.344192] LJX : in fb_blank , set blank = 0
[ 0.515630] fbcvt: 1920x1080@60: CVT Name - 2.073M9
[ 0.515754] mxc_sdc_fb fb@1: registered mxc display driver hdmi
[ 0.515766] mxc_sdc_fb fb@1: ipu0-di0 already in use
[ 0.515787] mxc_sdc_fb: probe of fb@1 failed with error -16
[ 4.039609] platform caam_sm: [0016] fa fb cb de bf 01 2e a3
&ldb {
status = "okay";
split-mode;
lvds-channel@0 {
fsl,data-mapping = "spwg";
fsl,data-width = <24>;
status = "okay";
primary;
display-timings {
native-mode = <&timing0>;
timing0: LM215WF3 {
clock-frequency = <72000000>;
hactive = <1920>;
vactive = <1080>;
hback-porch = <48>;
hfront-porch = <48>;
vback-porch = <8>;
vfront-porch = <8>;
hsync-len = <32>;
vsync-len = <4>;
};
};
};
lvds-channel@1 {
fsl,data-mapping = "spwg";
fsl,data-width = <24>;
status = "okay";
};
};
&hdmi_core {
ipu_id = <0>;
disp_id = <1>;
status = "okay";
};
按照上面的,HDMI还是没有显示。
我尝试添加了LCD为fb2,能够同时显示,但是用着用着会有ipu warning,hdmi显示会黑一下再亮起来
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00080000
配置:
mxcfb1: fb@0 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "ldb";
interface_pix_fmt = "RGB24";
default_bpp = <32>;
int_clk = <0>;
late_init = <0>;
status = "disabled";
};
mxcfb2: fb@1 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "hdmi";
interface_pix_fmt = "RGB24";
mode_str ="1024x768M@60"; //如果使用1920x1080,会直接黑屏
default_bpp = <32>;
int_clk = <0>;
late_init = <0>;
status = "disabled";
};
mxcfb3: fb@2 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "lcd";
interface_pix_fmt = "RGB24";
mode_str ="vga1024x768";
default_bpp = <32>;
int_clk = <0>;
late_init = <0>;
status = "disabled";
};
mxcfb4: fb@3 {
status = "disabled";
};
#if 1
lcd@0 {
compatible = "fsl,lcd";
ipu_id = <0>;
disp_id = <1>;
default_ifmt = "RGB24";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ipu1>;
status = "okay";
};
#endif
&ldb {
status = "okay";
split-mode;
#if 1
lvds-channel@0 {
fsl,data-mapping = "spwg";
//fsl,data-mapping = "jeida";
fsl,data-width = <24>;
crtc = "ipu1-di0";
status = "okay";
primary;
display-timings {
native-mode = <&timing0>;
timing0: XT2931920715 {
clock-frequency = <148500000>;
hactive = <1920>;
vactive = <1080>;
hback-porch = <148>;
hfront-porch = <88>;
vback-porch = <36>;
vfront-porch = <4>;
hsync-len = <44>;
vsync-len = <5>;
};
};
};
#endif
};
&hdmi_core {
ipu_id = <0>;
disp_id = <0>;
status = "okay";
};
“imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00080000”
That means DDR bandwidth is not enough for two 1080P60 display, you can reduce the pixel clock frequency for your display to improve it. But the issue can't be avoided.
two 1080P60 display and one 1080P60 display,
Is the DDR bandwidth different?
What is the relationship between the two situations above?
If I change the two display from 1080P60 to 1080P30,can it be work well?
Thanks
DDR bandwidth,软件这边可以调节吗?
另外:
使用72M的配置(1楼),clock-frequency = <72000000>; 副屏hdmi没显示,
只有用148M才行clock-frequency = <148500000>;
那么其实是不是我的同显还是配置好呢?
In default BSP, HDMI used IMX6QDL_CLK_PLL5_VIDEO_DIV as the clock source, LVDS used IMX6QDL_CLK_PLL2_PFD0_352M as the clock source, they are independ.
But if changed LVDS to IMX6QDL_CLK_PLL5_VIDEO_DIV too, it will impact the HDMI display.
改了这个
//HDMI clk source
fsl,ldb-di0-parent = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>;
fsl,ldb-di1-parent = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>;
72M和165M都没显示(lvds的kernel logo还是能显示的,但是运行QT程序后就没有显示了,HDMI一直没有显示)
那么还是回到哪里,IMX6DL是无法支持1920x1080 lvds+hdmi同显的吗?
IMX6D或者IMX6Q呢?