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
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
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
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
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
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
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
Hi All,
We have made it working by few changes in device tree so we can close this thread now.
Thanks,
Jemish
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
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
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