AnsweredAssumed Answered

How to configure four screen display

Question asked by Lou Jenwei on Sep 16, 2013
Latest reply on Mar 23, 2017 by vo son

hi,

i want to driver four-screen on MX6Q SabreSD board.

Requirements are as follows :

                                         output resolution

     Disp0(LCD)               CLAA_WVGA(800x480)

     Disp1(LVDS0)              LDB_XGA(1024x768)

     Disp2(HDMI)                    720p(1280x720)

     Disp3(LVDS1)              LDB_XGA(1024x768)


1. Hardware :

     i.MX6Q Sabresd board.

     One LCD Panel

     TWO LVDS Panel

     One HDMI port

2. Linux Release Package :

     L3.0.35-4.0.0 GA

3. Software configure:
     Video and UI will be blended on lcd and lvds0, it is processed in DP. For lvds1 and hdmi, the data goes through DC.

     command line : bootargs_base=setenv bootargs console=ttymxc0,115200 arm_freq=800 video=mxcfb0:dev=lcd,

                            CLAA-WXGA,if=RGB24,fbpix=BGR32 video=mxcfb1:dev=ldb,LDB-XGA,if=RGB666,ldb=sep0

                             video=mxcfb2:dev=hdmi,1280x720M@60,if=RGB24

 

     Configuration in arch/arm/mach-mx6q_sabresd.c    

     static struct ipuv3_fb_platform_data sabresd_fb_data[] = {

      {

           .disp_dev = "lcd",

           .interface_pix_fmt = IPU_PIX_FMT_RGB565,

           .mode_str = "CLAA-WVGA",

           .default_bpp = 16,

           .int_clk = false,

           .late_init = false,

      },

      {

           .disp_dev = "ldb",

           .interface_pix_fmt = IPU_PIX_FMT_RGB666,

           .mode_str = "LDB-XGA",

           .default_bpp = 16,

           .int_clk = false,

           .late_init = false,

      },

      {

           .disp_dev = "hdmi",

           .interface_pix_fmt = IPU_PIX_FMT_RGB24,

           .mode_str = "1280x720M@60",

           .default_bpp = 32,

           .int_clk = false,

           .late_init = false,

      },

      {

           .disp_dev = "ldb",

           .interface_pix_fmt = IPU_PIX_FMT_RGB666,

           .mode_str = "LDB-XGA",

           .default_bpp = 16,

           .int_clk = false,

           .late_init = false,

      },

     };

//--------------------------------------------------

     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,

     };

It results in frame buffer allocation as below:

                              +--------> IPU1 DP-BG : /dev/fb0 <----> /dev/video16

LCD       -------+

                              +--------> IPU1 DP-FG : /dev/fb1 <-----> /dev/video17

 

                              +--------> IPU0 DP-BG : /dev/fb2 <----> /dev/video18

LVDS0       -------+

                              +--------> IPU0 DP-FG : /dev/fb3 <-----> /dev/video19

 

HDMI        -------->                 IPU1 DC : /dev/fb4 <-----> /dev/video20

 

LVDS1      -------->                  IPU0 DC : /dev/fb5 <-----> /dev/video21

 

4. test :

4.1 play a video on HDMI ,

       gst-launch videotestsrc ! mfw_v4lsink device=/dev/video20&

4.2  play a video on LCD ,

       gst-launch videotestsrc ! mfw_v4lsink device=/dev/video16&

4.3  only LCD playing , HDMI is blank.


Outcomes