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.