IMX6DL LVDS+HDMI同显问题

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

IMX6DL LVDS+HDMI同显问题

5,840 次查看
jiaxingliang
Contributor I

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

但是就是不能同时显示,求指导

Qiang_FSL

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";
};

标签 (1)
0 项奖励
回复
11 回复数

5,528 次查看
靖文王
Contributor I

我测试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双屏异显,  双屏同显不知道该怎么实现

0 项奖励
回复

5,528 次查看
qiang_li-mpu_se
NXP Employee
NXP Employee

2个display显示什么内容是有上层图像管理层实现的,比如你运行Android,双屏显示的内容就是相同的。

0 项奖励
回复

5,528 次查看
qiang_li-mpu_se
NXP Employee
NXP Employee

Please try with:

&hdmi_core {
ipu_id = <0>;
disp_id = <0>;
status = "okay";
};

0 项奖励
回复

5,528 次查看
jiaxingliang
Contributor I

改了,一样,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

0 项奖励
回复

5,528 次查看
qiang_li-mpu_se
NXP Employee
NXP Employee

&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";
};

0 项奖励
回复

5,528 次查看
jiaxingliang
Contributor I

按照上面的,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";
};

0 项奖励
回复

5,528 次查看
qiang_li-mpu_se
NXP Employee
NXP Employee

“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.

0 项奖励
回复

5,202 次查看
liman
Contributor I

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

 
0 项奖励
回复

5,528 次查看
jiaxingliang
Contributor I

DDR bandwidth,软件这边可以调节吗?

另外:

使用72M的配置(1楼),clock-frequency = <72000000>; 副屏hdmi没显示,

只有用148M才行clock-frequency = <148500000>;

那么其实是不是我的同显还是配置好呢?

0 项奖励
回复

5,528 次查看
qiang_li-mpu_se
NXP Employee
NXP Employee

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.

0 项奖励
回复

5,528 次查看
jiaxingliang
Contributor I

改了这个

//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呢?

0 项奖励
回复