I am trying to get LVDS in split-mode with HDMI at 1080p60 simultaneously using the IMX6Q, using the VAR-SOM-MX6, without success.
I am using the following U-Boot variable:
video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 ; i2c dev 2; if i2c probe 0x38; then setenv bootargs ${bootargs} screen_alternate=yes
I am also using the following structure for the LDB in the imx6qdl-var-som-solocb-dt6cb-displays.dtsi file:
&ldb {
status = "okay";
split-mode;
lvds-channel@0 {
fsl,data-mapping = "spwg";
fsl,data-width = <24>;
crtc = "ipu1-di0";
primary;
status = "okay";
display-timings {
native-mode = <&timing0>;
timing0: hsd100pxn1 {
clock-frequency = <148500000>;
hactive = <1920>;
vactive = <1080>;
hback-porch = <104>;
hfront-porch = <88>;
vback-porch = <36>;
vfront-porch = <4>;
hsync-len = <88>;
vsync-len = <5>;
};
};
};
lvds-channel@1 {
fsl,data-mapping = "spwg";
fsl,data-width = <24>;
crtc = "ipu1-di1";
status = "okay";
display-timings {
native-mode = <&timing1>;
timing1: hsd100pxn1 {
clock-frequency = <148500000>;
hactive = <1920>;
vactive = <1080>;
hback-porch = <104>;
hfront-porch = <88>;
vback-porch = <36>;
vfront-porch = <4>;
hsync-len = <88>;
vsync-len = <5>;
};
};
};
};
I also change the hdmi_core instance to point to another ipu, like ipu2-di0.
This way I am able to see /dev/fb0 for LVDS amd /dev/fb2 for HDMI.
However, when I tried to start a gstreamer pipeline like this one to appear on the HDMI link :
gst-launch-1.0 videotestsrc ! imxv4l2sink device=/dev/video18
the output resolution on the LVDS channels goes from 1920x1080p60 to 1920x1080p17.14? Do you know why this is happening?
If I stop the command line and disable the fb2 y doing
echo 1 > /sys/class/graphics/fb2/blank and then
gst-launch-1.0 videotestsrc ! imxv4l2sink device=/dev/video16
- which is LVDS output - I then have a 1080p60 format.
Is there a problem using HDMI and split mode? Seems to have the same problem when using 720p60 instead of 1080p60. However, I do get 34.28Hz on LVDS (17.14x2) when the issue occurs.
I even tried 640x480p60 in LVDS split-mode with HDMI. THe HDMI input seem to work fine but the LVDS output is not stable, I can't get a stable format. No problem in single channel mode.
When using LVDS single mode with HDMI at 720p60, I am able to properly receive HDMI and LVDS at 720p60.
Is there some hardware/bandwidth limitation when we are using LVDS split-mode?
The main purpose of all of these tests is to hack the IMX6 and point HDMI and LVDS channels to the same IPU in order to avoid memory bandwidth limitation caused by two independent frame buffers.
There are a lot of threads complaining about this issue but none of them received an answer.
Jérôme
Hi Igor,
Your patch is not working. I still do get a problem when we enable HDMI 1080p60 at the same time using echo 0 > /sys/class/graphics/fb2/blank. I get 17.14Hz on LVDS instead of 59.99 that was previously measured by our FPGA. 59.99 / 17.14 = 3.5. Is it something related with the ldb driver?
Here is what I get with dmesg | grep ldb
[ 0.000000] ccm: ldb_di_sel already changed from reset value
[ 0.336908] ldb 2000000.aips-bus:ldb@020e0008: split mode
[ 0.337150] ldb 2000000.aips-bus:ldb@020e0008: split mode or dual mode, ignoring second output
[ 0.338504] mxc_sdc_fb fb@0: registered mxc display driver ldb
[ 0.584016] ldb 2000000.aips-bus:ldb@020e0008: LVDS channel1 is not online
Is that normal?
Are we at the IMX6Q limit if we want to output 2x 1080p60?
Regards,
Jérôme
I managed to get it working by modifying the mxc_ipuv3_fb.c file in kernel when it searches for already used ipu/di. By doing this patch, I am able to get 1080p60 in split mode and HDMI 1080p60 simultaneously.
Jerome
I'm trying to use LVDS in split mode, have the same device tree setup, and I am getting the same output in dmesg. Can you explain or post what you changed in mxc_ipuv3_fb.c ? Thanks very much.
Hi Igor,
I don't think I understand your answer. I thought that the LVDS split mode was managed by 2 DIs.
I changed
lvds-channel@0 crtc = "ipu1-di0";
lvds-channel@1 crtc = "ipu2-di0";
You suggest to point to same ipu and same di?
Regards,
Jérôme
Hi Jerome
it is one DI, as described in i.MX6DQ Reference Manual
please look at patch provided on
Best regards
igor
Hi jerome
seems ipu1-di0, ipu1-di1 are for separate mode, as described in
Table 39-5. Channel Mapping i.MX6DQ Reference Manual
http://www.nxp.com/docs/en/reference-manual/IMX6DQRM.pdf
one can look at patch provided on
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Igor,
Thanks for the proposed solution, I just changed the lvds0 to ipu1-di0 and lvds1 to ipu2-di0 and I have the same problem. I get 1080p60 using lvds split-mode but as soon as I do echo 0 > /sys/class/graphics/fb2/blank, I see that the frame rate of lvds falls from 60 to 17.14. Why would the frame rate on LVDS drops when fb2 is activated. Same problem when using split-mode at 720p60. No problem if I have single mode LVDS when fb2 is activated.
Jérôme
Hi Jerome
regarding ipu1-di0, ipu2-di0, I think it should be the same
Best regards
igor