AnsweredAssumed Answered

Parallel BT.656 on i.MX6D/Q IPU2 CSI1 (kernel 4.9)

Question asked by Inon Sharony on Apr 24, 2018
Latest reply on Apr 26, 2018 by igorpadykov

TL;DR

  1. SolidRun Hummingboard2 containing a i.MX6D running SolidRun's Linux kernel 4.9.x
  2. Camera parallel port outputting BT.656 video.

 

Good afternoon!

 

We're trying to pass a BT.656 video signal to our Hummingboard i.MX6 IPU2, in parallel to the MIPI CSI2 signal going into IPU1, but get no video from the BT.656 source. Attempts to stream video from the /dev video node using gstreamer simply result in an "internal data flow error" (ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0).

 

We've checked various wiring, pinning, and register settings, and so far found no reason for this.

 

We'd be happy to know if anyone has had success doing something similar, and if there are any pitfalls we should be looking out for.

 

Further information

 

See attached summary.

 

Some of the main points are as follows:

 

Our pins/ device tree/ connections are:

  • MX6QDL_PAD_EIM_A17__IPU2_CSI1_DATA12 0xb0b1 // BT656_0 G24
  • MX6QDL_PAD_EIM_A18__IPU2_CSI1_DATA13 0xb0b1 // BT656_1 J22
  • MX6QDL_PAD_EIM_A19__IPU2_CSI1_DATA14 0xb0b1 // BT656_2 G25
  • MX6QDL_PAD_EIM_A20__IPU2_CSI1_DATA15 0xb0b1 // BT656_3 H22
  • MX6QDL_PAD_EIM_A21__IPU2_CSI1_DATA16 0xb0b1 // BT656_4 H23
  • MX6QDL_PAD_EIM_A22__IPU2_CSI1_DATA17 0xb0b1 // BT656_5 F24
  • MX6QDL_PAD_EIM_A23__IPU2_CSI1_DATA18 0xb0b1 // BT656_6 J21
  • MX6QDL_PAD_EIM_A24__IPU2_CSI1_DATA19 0xb0b1 // BT656_7 F25
  • MX6QDL_PAD_EIM_A16__IPU2_CSI1_PIXCLK 0xb0b1 // BT656_CLK H25

 

This is compatible with both:

  1. SR-uSOM-MX6 Application Note Connecting Parallel Camera V1.0 from Solid-Run
  2. i.MX 6Dual/6Quad Applications Processors for Consumer Products 4.12.10.1 IPU Sensor Interface Signal Mapping Rev 5, from NXP Semiconductors

 

We have checked and verified the connections and signals are received and compatible with bt.656, and checked and verified the IPU register settings are correct for our signal in registers:

  • IPU2_CONF
  • IPU2_CSI1_SENS_CONF
  • IPU2_CSI1_CCIR_CODE_1
  • IPU2_CSI1_CCIR_CODE_2
  • IPU2_CSI1_CCIR_CODE_3
  • IPU2_CSI1_SENS_FRM_SIZE
  • IPU2_CSI1_ACT_FRM_SIZE
  • IPU2_CSI1_OUT_FRM_CTRL

 

as well as register

  • IOMUXC_GPR1 bits 19 and 20, responsible for (mipi/parallel muxing).

 

It is our understanding that external HSYNC and VSYNC are not necessary for bt.656 as they are included in the data,
as the i.MX 6 BSP Porting Guide , page 43 section 7.4.3 Timing Data Mode Protocols:
"In BT.656 mode, the CSI works according to recommendation ITU-R BT.656. The
timing reference signals (frame start, frame end, line start, line end) are embedded in the
data bus input."

However, we have tried to include the HSYNC and VSYNC signals, and the problem remains.
The bt656 is indeed a sub-device integrating into the mxc_v4l2_capture driver from freescale,
based on the examples of ov5642, adv7180 and ov5640, we have already written a similar driver for the adv7280 that works well.
The output for both video0 (adv7280 mipi, outputs video successfully) and video1 (bt656 not working).

 

Running GStreamer pipeline

gst-launch-1.0 -vv imxv4l2videosrc device=/dev/video1 do-timestamp=true fps-n=25 ! fakesink

 

has successfully set negotiated caps to:
"video/x-raw\,\ format\=\(string\)UYVY\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ framerate\=\(fraction\)25/1\,\ pixel-aspect-ratio\=\(fraction\)1/1"

 

yet the problem remains:

ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0
ERROR: from element /GstPipeline:pipeline0/GstImxV4l2VideoSrc:imxv4l2videosrc0: Internal data flow error.


Additional debug info:
../../../../gstreamer-1.8.3/libs/gst/base/gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstImxV4l2VideoSrc:imxv4l2videosrc0:
streaming task paused, reason error (-5)


Execution ended after 0:00:54.733082673

References

iMX6 Camera Parallel Interface - BT1120  

Document for Parallel camera debug 

[i.mx6d] acquisition from parallel camera interface 

IMX6 Parallel Camera Linux 4.4.3 

i.MX6 DISP0, DISP1 Parallel Video HSYNC, VSYNC, etc. 

Dual parallel camera input!!!! 

i.MX6 Dual interfacing with 8 bit Parallel Camera MT9Dxxx series 

iMX 6 parallel video input 

https://community.nxp.com/message/601115?commentID=601115#comment-601115 

Outcomes