Hi,
Is it possible to use the HDMI port and one LDB port at the same time on iMX6DL?. I can't do it.
We configure the framebuffers:
-------------------
static struct ipuv3_fb_platform_data es6_fb_data[] = {
{
.disp_dev = "hdmi",
.interface_pix_fmt = IPU_PIX_FMT_RGB24,
.mode_str = "1920x1080M@60",
.default_bpp = 32,
.int_clk = false,
},
{
.disp_dev = "ldb",
.interface_pix_fmt = IPU_PIX_FMT_RGB666,
.mode_str = "LDB-WXGA",
.default_bpp = 18,
.int_clk = false,
.late_init = false,
},
}
----------------------
We allocate each display on a different display port of the IPU1:
-------------------------
static struct fsl_mxc_hdmi_core_platform_data hdmi_core_data = {
.ipu_id = 0,
.disp_id = 1,
};
static struct fsl_mxc_ldb_platform_data ldb_data = {
.ipu_id = 0,
.disp_id = 0,
.ext_ref = 1,
.mode = LDB_SIN0,
};
-------------------------
The issue is that only works the first frammebuffer declared on the struct ipuv3_fb_platform_data. Besides Linux creates a third framebuffer on /dev/fb1 that we haven't declared on any place:
mode "240x320-60"
# D: 4.608 MHz, H: 19.200 kHz, V: 60.000 Hz
geometry 240 320 240 960 16
timings 217013 0 0 0 0 0 0
rgba 5/11,6/5,5/0,0/0
endmode
So the first framebuffer declared is on /dev/fb0 and works. The second declared is on /dev/fb2 and doesn't work (we do: "export FRAMEBUFFER=/dev/fb1" to check it). The strange thing is that each display works on any of the two ports of the IPU provided it has been declared as first element of the struct.
By the way: there's not bootargs of video on u-boot.
Any advice?
Thanks,
Manuel.
We got it!. I explain our conclusions:
1. /dev/fb1 is the overlay of /dev/fb0. So the second framebuffer declared is always on /dev/fb2.
2. To enable the secondary display is necessary to unblank the framebuffer and export it:
echo 0 > /sys/class/graphics/fb2/blank
export FRAMEBUFFER=/dev/fb2
3. By some reason is not possible to place LVDS channel 0 in mode SIN0 on DI1: when we place LVDS0 on DI1 and HMDI on DI0 and we try to output an image through HDMI we get a distortioned image on LVDS0 (seems some kind of conflict on DI0). We have tried to hardcode the control registers but still not working:
mxc_iomux_set_gpr_register(3, 6, 2, 1);
mxc_iomux_set_gpr_register(2, 0, 2, 3);
I hope be helpful for others. Best regards,
Manuel.
Hi,
we see the same issue on a DualLite using Yocto Linux, QT5.3.0 and OpenGL ES 2. First framebuffer HDMI 1280x720 pixel, second framebuffer LVDS 1024x768 pixel. (Also tried running each on 640x480 pixels). When we operate only one of them the display is ok. When we operate both we see a distorted image on the LVDS display. The image origin is shifted, the colors are gayscale and a vertical line pattern appears.
I wonder if we have the same issue. Have you found a solution or further information ?meanwhile
Best regards,
Roelof
Hi Roelof,
It seems to be the same that happened to us. Unfortunately we didn't solve the issue. Moreover, we found a similar issue when working with both IPUs at the same time (neither solved):
Conflict with clock between LCD and HDMI on i.MX6Q.
Sorry I can not help :smileysad:
Best regards,
Manuel.
Hi Manuel,
I understand, thank you.
Is anyone from Freescale reading this and can give a hint ? (We're a world market leader for medical devices and need this information in order to evaluate whether the i.mx6 is the right choice for our next base platform that will be used in all our future products).
Thank you,
Roelof Berg
Roelof,
By the way: HDMI(D1) + LCD(D0) works fine in S and DL versions, just in case it would be useful...
I hope you find a solution!
Best regards,
Manuel.
Sorry, I meant "export FRAMEBUFFER=/dev/fb2".