Dual display of LVDS plus VGA LCD on iMX6 platform

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Dual display of LVDS plus VGA LCD on iMX6 platform

Jump to solution
16,728 Views
omar_ccc
Contributor II

Hi,

I am using iMX6 platform and this platform has 3 display devices: LVDS, VGA LCD, and HDMI.

I found from the document that iMX6 support dual display of the combination of LVDS and HDMI.

It seems does not support the dual display of LVDS+ VGA LCD

Is there any body know any possibility to make dual display of LVDS+VGA LCD work?

Labels (4)
1 Solution
2,519 Views
zhaozhao
Contributor III

Hi, Weidong

     The VGA is ok now.

     int the file arch/arm/mach-mx6/board-mx6q_sabrelite.c

     The older setting:

static struct fsl_mxc_hdmi_core_platform_data hdmi_core_data = {

    .ipu_id = 0,

    .disp_id = 1,

};

static struct fsl_mxc_lcd_platform_data lcdif_data = {

    .ipu_id = 0,

    .disp_id = 0,

    .default_ifmt = IPU_PIX_FMT_RGB565,

};

static struct fsl_mxc_ldb_platform_data ldb_data = {

    .ipu_id = 1,

    .disp_id = 0,

    .ext_ref = 1,

    .mode = LDB_SEP0,

    .sec_ipu_id = 1,

    .sec_disp_id = 1,

};

Now I set it to :

static struct fsl_mxc_hdmi_core_platform_data hdmi_core_data = { 

   .ipu_id = 1,   

.disp_id = 1,

};

static struct fsl_mxc_lcd_platform_data lcdif_data = {  

  .ipu_id = 0,  

  .disp_id = 0,

    .default_ifmt = IPU_PIX_FMT_RGB565,

};

static struct fsl_mxc_ldb_platform_data ldb_data = {

    .ipu_id = 1,

    .disp_id = 0,  

  .ext_ref = 1,  

  .mode = LDB_SEP0,  

  .sec_ipu_id = 0,  

  .sec_disp_id = 1,

}

I don't  really understand what the ipu_id adn disp_id mean . I just found the VGA  conflict with hdmi ,then i modified the setting .

View solution in original post

0 Kudos
17 Replies
2,519 Views
luozhh1018
Contributor I

Hello All:

   I want dual diaplay with LCD and HDMI in my imx6dl platform under ubuntu,but the ubuntu is only display the fb0,and the fb2 is no output,(fb1 is overlay).How can i siwtch the fbX? and how can i test the dual display?
I set the board data was:

Now I set it to :


Now I set it to :

static struct fsl_mxc_hdmi_core_platform_data hdmi_core_data = { 

   .ipu_id = 0,   

.disp_id = 1,

};

static struct fsl_mxc_lcd_platform_data lcdif_data = {  

  .ipu_id = 0,  

  .disp_id = 0,

    .default_ifmt = IPU_PIX_FMT_RGB565,

};

and the uboot cmdline is :

video=mxcfb0:dev=lcd,VGA,if=RGB24 video=mxcfb1:dev=hdmi,1920x1080@60,if=RGB24

0 Kudos
2,519 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello,Chi-Chung,

     There is no VGA port on i.mx6 SOC. If there exists VGA port on your board, you should know which port on i.mx6 is converted to VGA. For example, the VGA is from DISP0(RGB24 interface) ?

     So please check VGA part of the schematic. Then you will know how to set u-boot environment to use dual display according to i.mx6dq user's guide released by Freescale.

Reagards,

Weidong

0 Kudos
2,519 Views
omar_ccc
Contributor II

Hi, Weidong,

We tried to have dual display with LVDS and RGB(LCD) even with mirror content.

We set LVDS as mxcfb0 and LCD as mxcfb1 in kernel command line of uboot.

Our LVDS panel resolution 1920x1080, and LCD panel is 1024x768.

LVDS panel can display correctly but LCD panel has no output.

We found the reason is that LCD always use the settings of LVDS, not the setting for LCD,  so that LCD panel cannot display (out of range).

If we change LVDS setting to 1024x768, the LVDS and LCD panels have the output (of course, LVDS has output but with wrong resolution).

Have you solutions to this?

0 Kudos
2,519 Views
zhaozhao
Contributor III

Hi, Weidong

   We are using imx6q sabrelite board. We change the DISP0(RGB24 interface) to VGA by  ADV7125. the VGA can only output 1024x768@60 correctly.

    I couldn't set any other resolutions such as 1360x768 or 1920x1080 successfully. I can get the clock, and it looks good, but there is no data output.  The board is running linux,and the kernel is got from yocto..

    The fb_videomode i set is :

    

{ "1360x768", 60, 1360, 768, 11695, 256, 64, 18, 3, 112, 6,

    0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA},

    { "1440x900", 60, 1440, 900, 9389, 232, 80, 25,  3, 152, 6,

      0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA},

    { "1600x1200", 60, 1600, 1200, 6172, 304, 64, 46, 1, 192, 3,

    0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA},

    {"1024x768", 60, 1024, 768, 15384, 160, 24, 29, 3, 136, 6,

    0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA},


    Can you help me with that ?

0 Kudos
2,519 Views
XiaoPong
NXP Employee
NXP Employee

Hi, Zhao,

Not sure if this post could help you or not. https://community.freescale.com/docs/DOC-94905

0 Kudos
2,519 Views
zhaozhao
Contributor III

Hi, Wei-Shan

     Thank  you

     It works good only when the set is 1204x768.

     On other situations,such as 1360x768,  there is no data output from DISP0_DAT0~DISP0_DAT23. when the resolution is 1360x768, the pixel clock is less than 100MHZ

0 Kudos
2,519 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello,zhao,

      I need to konw 2 messages:

(1) What is the max resolution supportd by ADV7125 ?

I mean it's working mode is bypass or scale ?

(2)Can you paste your u-boot environment here ?

Let us analyze it .

Regards,

Weidong

0 Kudos
2,519 Views
zhaozhao
Contributor III

Hi Weidong

     Thank you.

     (1). The hardware engineer told me that the ADV7125 could support up to 1920x1080 resolution.. There is no data output before ADV7125 by now, but the clock output seems right.

     (2) .we are using hdmi 、 lvds and VGA

the cmdline is :

console=ttymxc1,115200 root=/dev/nfs nfsroot=192.168.0.85:/opt/mx6fs,v3,tcp ip=192.168.0.61 video=mxcfb2:dev=ldb,1024x768,if=RGB24 ldb=sin0 video=mxcfb1:dev=hdmi,1920x1080@60,if=RGB24 video=mxcfb0:dev=lcd,1360x768,if=RGB24

0 Kudos
2,519 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello,zhao,

     Try this bootargs:

console=ttymxc1,115200 root=/dev/nfs nfsroot=192.168.0.85:/opt/mx6fs,v3,tcp ip=192.168.0.61 video=mxcfb1:dev=hdmi,1920x1080@60,if=RGB24 video=mxcfb0:dev=lcd,1920x1080@60,if=RGB24

It means if we don't use LVDS, see HDMI and VGA resolutions.

Regards,

Weidong

0 Kudos
2,519 Views
zhaozhao
Contributor III

Hi, Weidong

     using console=ttymxc1,115200 root=/dev/nfs nfsroot=192.168.0.85:/opt/mx6fs,v3,tcp ip=192.168.0.61 video=mxcfb1:dev=hdmi,1920x1080@60,if=RGB24 video=mxcfb0:dev=lcd,1920x1080@60,if=RGB24

     The VGA still can not work..

     The HDMI is ok

0 Kudos
2,519 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello,zhao,

    "The VGA still can not work.."  what does it mean ?  No ouput or resolution is not correct ?

Then how is 1360x768 ?

console=ttymxc1,115200 root=/dev/nfs nfsroot=192.168.0.85:/opt/mx6fs,v3,tcp ip=192.168.0.61 video=mxcfb1:dev=hdmi,1920x1080@60,if=RGB24 video=mxcfb0:dev=lcd,1360x768,if=RGB24

Weidong

0 Kudos
2,520 Views
zhaozhao
Contributor III

Hi, Weidong

     The VGA is ok now.

     int the file arch/arm/mach-mx6/board-mx6q_sabrelite.c

     The older setting:

static struct fsl_mxc_hdmi_core_platform_data hdmi_core_data = {

    .ipu_id = 0,

    .disp_id = 1,

};

static struct fsl_mxc_lcd_platform_data lcdif_data = {

    .ipu_id = 0,

    .disp_id = 0,

    .default_ifmt = IPU_PIX_FMT_RGB565,

};

static struct fsl_mxc_ldb_platform_data ldb_data = {

    .ipu_id = 1,

    .disp_id = 0,

    .ext_ref = 1,

    .mode = LDB_SEP0,

    .sec_ipu_id = 1,

    .sec_disp_id = 1,

};

Now I set it to :

static struct fsl_mxc_hdmi_core_platform_data hdmi_core_data = { 

   .ipu_id = 1,   

.disp_id = 1,

};

static struct fsl_mxc_lcd_platform_data lcdif_data = {  

  .ipu_id = 0,  

  .disp_id = 0,

    .default_ifmt = IPU_PIX_FMT_RGB565,

};

static struct fsl_mxc_ldb_platform_data ldb_data = {

    .ipu_id = 1,

    .disp_id = 0,  

  .ext_ref = 1,  

  .mode = LDB_SEP0,  

  .sec_ipu_id = 0,  

  .sec_disp_id = 1,

}

I don't  really understand what the ipu_id adn disp_id mean . I just found the VGA  conflict with hdmi ,then i modified the setting .

0 Kudos
2,519 Views
weidong_sun
NXP TechSupport
NXP TechSupport

OK, Zhao,

     Good Job !!

     There are 2 IPUs in i.mX6Q(IPU0 and IPU1), and every IPU has 2 display interface(IPU0_DI0/IPU0_DI1; IPU1_DI0/IPU1_DI1)

     It means IPU0 has disp_id=0 and disp_id=1 , IPU1 has disp_id=0 and disp_id=1. for example , for your design:

(1)IPU1_DI1------>HDMI

(2)IPU0_DI0------>DISP0--->ADV7125

(3)LVDS datastructure

It means LVDS0 uses IPU1_DI0 and LVDS1 uses IPU0_DI1.

   I hope the above can help you understand display interface.

Regards,

Weidong

0 Kudos
2,519 Views
luozhh1018
Contributor I

我与你一样,都使用了adv7125,不过,我使用的是imx6dl,由于dl的只有一个ipu,我想知道怎么做lcd与hdmi的自动切换

0 Kudos
2,519 Views
alineg
Contributor I

Hello Weidong,

First of all you are very helpful! thank you!

and second, can you please explain about the struct fsl_mxc_ldb_platform_data ldb_data?

Is the ipu_id&disp_id are for the primary display and sec_ipu_id&sec_disp_id for the secondary?

should their configurations match the configurations in fsl_mxc_hdmi_core_platform_data hdmi_core_data and fsl_mxc_lcd_platform_data lcdif_data?

and what about ext_ref? what does it mean?

also, can I change the mode? for example to mode = LDB_DUL0? (as I understand there are 4 modes: sin,spl,dul and sep) 

Thank you!

Aline.

0 Kudos
2,519 Views
omar_ccc
Contributor II


Weidong,

What is the relation between MXCFB0/1/2, and IPU0/1, DISP0/1?

0 Kudos
2,519 Views
zhaozhao
Contributor III

Hi, Weidong

     There is no output. There is no data come from DISP0_DAT0~DISP0_DAT23, but the HSYNC seems right

     when 1360x768, the phenomenon is the same

0 Kudos