AnsweredAssumed Answered

i.MX6 LVDS channels problem in 'separate' mode

Question asked by igor ferrara on Apr 18, 2013
Latest reply on Apr 30, 2013 by Juan Antonio Gutierrez Rosas
Branched to a new discussion

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

 

Attachments

Outcomes