Hi all,
I'm using a Freescale Sabre SD card with the quad-core i.MX6 processor. I want to use LVDS channels in "separate" mode.
I modified the uboot and the kernel in order to set video mode according to LVDS display panel’s spec.
UBOOT:
I properly changed the board file (in this case "board/freescale/mx6q_sabresd/mx6q_sabresd.c").
1) I added a new "fb_videomode" struct:
static struct fb_videomode lvds_wxga = {
"WXGA", 60, 1280, 768, 14641, 40, 40, 10, 2, 80, 10,
0,
FB_VMODE_NONINTERLACED,
FB_MODE_IS_DETAILED,
};
2) I modified "ipuv3_fb_init" function (called into "lcd_enable" routine):
ret = ipuv3_fb_init(&lvds_wxga, di, IPU_PIX_FMT_RGB666, DI_PCLK_LDB, 65000000);
3) I modified "panel_info_init":
void panel_info_init(void)
{
panel_info.vl_bpix = LCD_BPP;
panel_info.vl_col = lvds_wxga.xres;
panel_info.vl_row = lvds_wxga.yres;
panel_info.cmap = colormap;
}
KERNEL:
1) I added a video mode in struct fb_videomode in drivers/video/mxc/ldb.c according to the new LVDS display panel’s spec:
......
{
"DS-LDB-WXGA", 60, 1280, 768, 14641,
40, 40,
10, 2,
80, 10,
0,
FB_VMODE_NONINTERLACED,
FB_MODE_IS_DETAILED,},
{
.......
2) I modified struct ipuv3_fb_platform_data in arch/arm/mach-imx6/board-mx6q_sabresd.c according to new configuration:
static struct ipuv3_fb_platform_data sabresd_fb_data[] = {
{ /*fb0*/
.disp_dev = "hdmi",
.interface_pix_fmt = IPU_PIX_FMT_RGB32,
.mode_str = "1920x1080M@60",
.default_bpp = 32,
.int_clk = false,
}, {
.disp_dev = "ldb",
.interface_pix_fmt = IPU_PIX_FMT_RGB666,
.mode_str = "DS-LDB-WXGA",
.default_bpp = 16,
.int_clk = false,
}, {
.disp_dev = "ldb",
.interface_pix_fmt = IPU_PIX_FMT_RGB666,
.mode_str = "DS-LDB-WXGA",
.default_bpp = 16,
.int_clk = false,
},
};
The problem is the following: both when Linux starts or when the board has finished playing a movie (using Gstreamer) on the LVDS1 channel, latter is no longer controlled (see attached file).
Using an oscilloscope I could verify that LVDS1 channel signals (Link0-, Link0+, Link1-, Link1+ etc.) disappear.
Instead LVDS0 channel works fine.
Can anyone help me figure out the exact cause of the problem?
What are the changes required to solve that issue?
Thanks a lot,
Igor