LCD and HDMI interface not working together !

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LCD and HDMI interface not working together !

3,847 Views
jemish_1990
Contributor IV

Hi All,

We are using imx6q based custom board for our product. We are using wandboard based kernel (Kernel variant : imx_3.14.28).

For our product requirement we want to run LCD and HDMI interface together.

In our dtsi file below is default configuration.

        mxcfb1: fb@0 {

                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 = "disabled";

        };

        mxcfb2: fb@1 {

                compatible = "fsl,mxc_sdc_fb";

                disp_dev = "ldb";

                interface_pix_fmt = "RGB666";

                mode_str ="LDB-XGA";

                default_bpp = <16>;

                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 ="CLAA-WVGA";

                default_bpp = <24>;

                int_clk = <0>;

                late_init = <0>;

                status = "disabled";

        };

        mxcfb4: fb@3 {

                compatible = "fsl,mxc_sdc_fb";

                disp_dev = "ldb";

                interface_pix_fmt = "RGB666";

                mode_str ="LDB-XGA";

                default_bpp = <16>;

                int_clk = <0>;

                late_init = <0>;

                status = "disabled";

        };

With this configuration HDMI video and audio is working. We can see data on HDMI display. But LCD is not working with this configuration.

To make LCD working we made below changes in dtsi file.

        mxcfb1: fb@0 {

                compatible = "fsl,mxc_sdc_fb";

                disp_dev = "lcd";

                interface_pix_fmt = "RGB24";

                mode_str ="CLAA-WVGA";

                default_bpp = <24>;

                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 = <32>;

                int_clk = <0>;

                late_init = <0>;

                status = "disabled";

        };

        mxcfb3: fb@2 {

                compatible = "fsl,mxc_sdc_fb";

                disp_dev = "ldb";

                interface_pix_fmt = "RGB666";

                mode_str ="LDB-XGA";

                default_bpp = <16>;

                int_clk = <0>;

                late_init = <0>;

                status = "disabled";

        };

        mxcfb4: fb@3 {

                compatible = "fsl,mxc_sdc_fb";

                disp_dev = "ldb";

                interface_pix_fmt = "RGB666";

                mode_str ="LDB-XGA";

                default_bpp = <16>;

                int_clk = <0>;

                late_init = <0>;

                status = "disabled";

        };

Based on above experiments individually both interface LCD and HDMI are working. It indicates that hardware is working fine.

But both interfaces together are not working. 

So it's looks like only "fb0" is working either with LCD or HDMI.

Any suggestions for this issue would be appreciated. Let us know if anything required from our side.

Thanks,

Jemish

Labels (2)
0 Kudos
Reply
10 Replies

1,983 Views
igorpadykov
NXP Employee
NXP Employee

Hi Jemish

this works on sabresd board, example one can look at attached i.MX_Linux_User's_Guide.pdf

sect.Specifying displays  p.23

http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/arch/arm/boot/dts/imx6qdl-sabresd.d...

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply

1,983 Views
jemish_1990
Contributor IV

Hi Igor,

Thanks a lot for your valuable suggestion. In imx linux user guide suggested option is to pass "lcd" and "hdmi " interface via command line option. That option we have already tried and we don't succeed.

Do you have any other suggestion?

Is there any good document where I can read about mapping of each frame buffer (fb) device and different display interfaces (LCD, HDMI , LVDS etc)?

Thanks,

Jemish

0 Kudos
Reply

1,983 Views
jemish_1990
Contributor IV

Hi Igor,

Please find one more input for regarding this.

My observation is that whatever display interface we set for mxcfb0 only that is working. As an example if I set below command line option. Only hdmi is working.

setenv bootargs 'console=ttymxc0,115200 rw ip=dhcp root=/dev/nfs nfsroot=192.168.1.12:/home/jemish/imx/filesys/linaro/linarofs video=mxcfb1:dev=lcd,if=RGB24 video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 consoleblank=0'

If I set below command line option then only "lcd" interface is working.

setenv bootargs 'console=ttymxc0,115200 rw ip=dhcp root=/dev/nfs nfsroot=192.168.1.12:/home/jemish/imx/filesys/linaro/linarofs video=mxcfb0:dev=lcd,if=RGB24 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 consoleblank=0'

Any pointers based on above observation will appreciated?

Thanks,

Jemish

0 Kudos
Reply

1,983 Views
BiyongSUN
NXP Employee
NXP Employee

What is "LCD and HDMI interface not working together ! "?

we have tried and lots of customers tried. They are working fine.

could you please run the following command to see if the lcd is showing the UI and hdmi is playing gstream test.

gst-launch-1.0 videotestsrc  ! imxv4l2sink  device=/dev/video18

also you can modify the /etc/X11/xorg.conf

to see if the UI is changed to hdmi.

Section "Device"

    Identifier  "i.MX Accelerated Framebuffer Device"

    Driver      "vivante"

    Option      "fbdev"     "/dev/fb2"

    Option      "vivante_fbdev" "/dev/fb2"

    Option      "HWcursor"  "false"

EndSection

The driver layer is enabled.

It is not Android, has already implemented showing the UI both on the dual display.

You need to implement that.

this my test:

root@imx6qdlsolo:~# cat /proc/cmdline

console=ttymxc0,115200 root=/dev/mmcblk2p2 rootwait rw video=mxcfb0:dev=ldb video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24

IMG_20160219_174149.jpg

0 Kudos
Reply

1,983 Views
jemish_1990
Contributor IV

Hi Biyong,

In our case I am not verifying with GStreamer application. So it is not application but kernel issue.

In our case when I keep "LCD" as primary device either in bootargs or in device tree file it is not allowing second device (HDMI) to register.

We are seeing below errors in boot log

fsl-hdmi-dai hdmi_audio.3: failed to probe. Load HDMI-video first.

fsl-hdmi-dai: probe of hdmi_audio.3 failed with error -12

imx-audio-hdmi sound-hdmi.21: initialize HDMI-audio failed. load HDMI-video first!

Which is means video device is not registered. This is the issue we are facing.

Please suggest or comment for this issue.

Thanks,

Jemish

0 Kudos
Reply

1,983 Views
jemish_1990
Contributor IV

Hi All,

We have made it working by few changes in device tree so we can close this thread now.

Thanks,

Jemish

0 Kudos
Reply

1,983 Views
aravinthkumarja
Senior Contributor II

HI jemishpatel​,

I'm also facing same issue, What changes you made in dts.??

Thanks!

Aravinth

0 Kudos
Reply

1,983 Views
jemish_1990
Contributor IV

Hi Aravinth,

1.

In default .dtsi file for wang board you find frambuffer node like given below:

"status" will be disabled.

Change "status" to okay" for fb1 and fb2 nodes.

        mxcfb1: fb@0 {

                compatible = "fsl,mxc_sdc_fb";

                disp_dev = "lcd";

                interface_pix_fmt = "RGB24";

                mode_str ="TM050RVHG01-00"; /*It is name of LCD in our board you may have different*/

                default_bpp = <24>;

                int_clk = <0>;

                late_init = <0>;

               status = "disabled";

               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 = "disabled";

                status = "okay";

        };

2. Change display ID for both interface. In our board we want to keep LCD as primary and HDMI as secondary display.

        lcd@0 {

                compatible = "fsl,lcd";

                ipu_id = <0>;

                disp_id = <0>;

                default_ifmt = "RGB24";

                pinctrl-names = "default";

                pinctrl-0 = <&pinctrl_ipu1_1>;

                status = "okay";

        };

&hdmi_core {

        ipu_id = <0>;

        disp_id = <1>;

        status = "okay";

};

I hope this will help you.

Thanks,

Jemish

1,983 Views
aravinthkumarja
Senior Contributor II

Hi jemishpatel​,

Thanks for your response. Now LCD and HDMI working fine. But how to make it separate UI. I mean now i open any application it open on both screen, but i want to do one operation on display and other operation on another disply.

How make it??

Thanks!

Aravinth

0 Kudos
Reply

1,983 Views
jemish_1990
Contributor IV

Hi Aravinth,

I am glad that it works for you!

I am not sure but this may be helpful.

Once you both LCD and HDMI interfaces are enabled you will get one more video node in device entry.

/dev/video16,   /dev/video17,  /dev/video18.

Here: /dev/video16 and /dev/video17 belongs to primary display.

         /dev/video18 belongs to secondary dispaly.

Same is the case for frame buffer.

Primary display: /dev/fb0   /dev/fb1 

Secondary disaply: /dev/fb2

Please make sure that you can consider above things in your application while opening video node and framebuffer nodes.

Thanks,

Jemish