- SolidRun Hummingboard2 containing a i.MX6D running SolidRun's Linux kernel 4.9.x
- Camera parallel port outputting BT.656 video.
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.
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:
- SR-uSOM-MX6 Application Note Connecting Parallel Camera V1.0 from Solid-Run
- i.MX 6Dual/6Quad Applications Processors for Consumer Products 126.96.36.199 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:
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