iMX6DQ ISL79985/79987 MIPI CSI2 CVBS camera surround view solution for Linux BSP

Document created by Qiang Li Employee on Aug 13, 2015Last modified by Qiang Li Employee on Nov 22, 2016
Version 9Show Document
  • View in full screen mode

For iMX6DQ, there are two IPUs, so they can support up to 4 cameras at the same time. But the default BSP can only support up to two cameras at the same time.

 

untitled.png

 

The attached patch can make the BSP support up to 4 cameras based on 3.10.53 GA 1.1.0 BSP.

 

The 4 cameras can be:

- 1xCSI, 3xMIPI

- 2xCSI, 2xMIPI

- 4xMIPI

 

For 4xMIPI case, the four cameras should be combined on the single MIPI CSI2 interface, and each camera data should be transfered on a mipi virtual channel.

 

In this patch, we given the example driver for Intersil ISL79985. The input to ISL79985 is four CVBS camera.

There are four patches:

0001-IPU-update-IPU-capture-driver-to-support-up-to-four-.patch

     Updated IPU common code to support up to four cameras.

 

0002-Add-Intersil-ISL79985-MIPI-Video-Decoder-Driver-for-.patch

     ISL79985 driver, which can support both 1 lanes and 2 lanes mode.

 

0003-Remove-the-page-size-align-requirement-for-v4l2-capt.patch

     With this patch, the mxc_v4l2_tvin test application can use overlay framebuffer as V4l2 capture buffer directly.

 

0004-IPU-CSI-Drop-1-2-frame-on-MIPI-interface-for-interla.patch

     This patch is option, it will drop one field data, so for each camera, the input will be 720*240 30 FPS.

 

For 720P HD solution, it is based on Maxim MAX9286: iMX6DQ MAX9286 MIPI CSI2 720P camera surround view solution for Linux BSP

 

How to builld the kernel with ISL79985 support:

      make imx_v7_defconfig

      make menuconfig (In this command, you should select the ISL79985 driver:

            Device Drivers  --->

                  <*> Multimedia support  --->

                        [*]   V4L platform devices  --->

                              <*>   MXC Video For Linux Video Capture

                                      MXC Camera/V4L2 PRP Features support  --->

                                          <*>Intersil ISL79985 Video Decoder support

                                          <*>mxc VADC support

                                          <*>Select Overlay Rounting (Queue ipu device for overlay library)

                                          <*>Pre-processor Encoder library

                                          <*>IPU CSI Encoder library)

      make zImage

      make dtbs

 

The built out image file:

      arch/arm/boot/dts/imx6q-sabresd.dtb

      arch/arm/boot/zImage

 

"mxc_v4l2_tvin.zip" is the test application, test command to capture the four cameras and render on 1080P HDMI display:

/mxc_v4l2_tvin.out -ol 0 -ot 0 -ow 960 -oh 540 -d 1 -x 0 -g2d &

/mxc_v4l2_tvin.out -ol 960 -ot 0 -ow 960 -oh 540 -d 1 -x 1 -g2d &

/mxc_v4l2_tvin.out -ol 0 -ot 540 -ow 960 -oh 540 -d 1 -x 2 -g2d &
/mxc_v4l2_tvin.out -ol 960 -ot 540 -ow 960 -oh 540 -d 1 -x 3 -g2d &

 

2015-10-10 Update:

Updated the test application "mxc_v4l2_tvin_isl79985.tar.gz" to fix the Yocto build errors.

Updated ISL79985 register setting "page5, isl79985_write_reg(0x07, 0x46)" in patch "0002-Add-Intersil-ISL79985-MIPI-Video-Decoder-Driver-for-.patch", which can fix the green line issue.

 

2016-01-25 Update:

Added de-interlace support, L3.10.53_ISL79985_Surroundview_Patch_20160125.tar.gz

New test capplication for de-interlance: mxc_v4l2_tvin_isl79985_vdi_20160125.tar.gz

New test commands:

/mxc_v4l2_tvin.out -ol 0 -ot 0 -ow 960 -oh 540 -d 1 -x 0 -g2d -m &

/mxc_v4l2_tvin.out -ol 960 -ot 0 -ow 960 -oh 540 -d 1 -x 1 -g2d -m &

/mxc_v4l2_tvin.out -ol 0 -ot 540 -ow 960 -oh 540 -d 1 -x 2 -g2d -m &
/mxc_v4l2_tvin.out -ol 960 -ot 540 -ow 960 -oh 540 -d 1 -x 3 -g2d -m &

 

Note:  with the 0005-Add-interlaced-mode-capture-for-ISL79985.patch, the V4l2 capture driver will return 720x480 video size, but only odd lines have the video data, they are filled in line skip line mode.

 

 

2016-11-21 Update:

Added ISL79987 support, L3.10.53_ISL7998x_Surroundview_Patch_20161121.zip

New test capplication for de-interlance support: mxc_v4l2_tvin_isl7998x.tar.gz

 

Test commands (without de-interlace):

/mxc_v4l2_tvin.out -ol 0 -ot 0 -ow 960 -oh 540 -d 1 -x 0 -g2d &

/mxc_v4l2_tvin.out -ol 960 -ot 0 -ow 960 -oh 540 -d 1 -x 1 -g2d &

/mxc_v4l2_tvin.out -ol 0 -ot 540 -ow 960 -oh 540 -d 1 -x 2 -g2d &
/mxc_v4l2_tvin.out -ol 960 -ot 540 -ow 960 -oh 540 -d 1 -x 3 -g2d &

 

Test commands (with de-interlace, for ISL79987 only):

/mxc_v4l2_tvin.out -ol 0 -ot 0 -ow 960 -oh 540 -d 1 -x 0 -m 1 -g2d &
/mxc_v4l2_tvin.out -ol 960 -ot 0 -ow 960 -oh 540 -d 1 -x 1 -m 1 -g2d &
/mxc_v4l2_tvin.out -ol 0 -ot 540 -ow 960 -oh 540 -d 1 -x 2 -m 1 -g2d &
/mxc_v4l2_tvin.out -ol 960 -ot 540 -ow 960 -oh 540 -d 1 -x 3 -m 1 -g2d &

 

 

Now the same patch can support both ISL79985 and ISL79987, with NTSC CVBS camera, for ISL79985, it captures 60fps 720*240; for ISL79987, it captures 30fps 720*480.

 

2016-11-22 Update:

Added patch for L4.1.15 BSP, it supports both ISL79985 and ISL79987, L4.1.15_ISL7998x_Surroundview_Patch_20161122.zip

Test capplication mxc_v4l2_tvin_isl7998x.tar.gz is re-used.

6 people found this helpful

Outcomes