1.. SPDX-License-Identifier: GPL-2.0 2 3i.MX7 Video Capture Driver 4========================== 5 6Introduction 7------------ 8 9The i.MX7 contrary to the i.MX5/6 family does not contain an Image Processing 10Unit (IPU); because of that the capabilities to perform operations or 11manipulation of the capture frames are less feature rich. 12 13For image capture the i.MX7 has three units: 14- CMOS Sensor Interface (CSI) 15- Video Multiplexer 16- MIPI CSI-2 Receiver 17 18.. code-block:: none 19 20 MIPI Camera Input ---> MIPI CSI-2 --- > |\ 21 | \ 22 | \ 23 | M | 24 | U | ------> CSI ---> Capture 25 | X | 26 | / 27 Parallel Camera Input ----------------> | / 28 |/ 29 30For additional information, please refer to the latest versions of the i.MX7 31reference manual [#f1]_. 32 33Entities 34-------- 35 36imx7-mipi-csi2 37-------------- 38 39This is the MIPI CSI-2 receiver entity. It has one sink pad to receive the pixel 40data from MIPI CSI-2 camera sensor. It has one source pad, corresponding to the 41virtual channel 0. This module is compliant to previous version of Samsung 42D-phy, and supports two D-PHY Rx Data lanes. 43 44csi-mux 45------- 46 47This is the video multiplexer. It has two sink pads to select from either camera 48sensor with a parallel interface or from MIPI CSI-2 virtual channel 0. It has 49a single source pad that routes to the CSI. 50 51csi 52--- 53 54The CSI enables the chip to connect directly to external CMOS image sensor. CSI 55can interface directly with Parallel and MIPI CSI-2 buses. It has 256 x 64 FIFO 56to store received image pixel data and embedded DMA controllers to transfer data 57from the FIFO through AHB bus. 58 59This entity has one sink pad that receives from the csi-mux entity and a single 60source pad that routes video frames directly to memory buffers. This pad is 61routed to a capture device node. 62 63Usage Notes 64----------- 65 66To aid in configuration and for backward compatibility with V4L2 applications 67that access controls only from video device nodes, the capture device interfaces 68inherit controls from the active entities in the current pipeline, so controls 69can be accessed either directly from the subdev or from the active capture 70device interface. For example, the sensor controls are available either from the 71sensor subdevs or from the active capture device. 72 73Warp7 with OV2680 74----------------- 75 76On this platform an OV2680 MIPI CSI-2 module is connected to the internal MIPI 77CSI-2 receiver. The following example configures a video capture pipeline with 78an output of 800x600, and BGGR 10 bit bayer format: 79 80.. code-block:: none 81 82 # Setup links 83 media-ctl -l "'ov2680 1-0036':0 -> 'imx7-mipi-csis.0':0[1]" 84 media-ctl -l "'imx7-mipi-csis.0':1 -> 'csi-mux':1[1]" 85 media-ctl -l "'csi-mux':2 -> 'csi':0[1]" 86 media-ctl -l "'csi':1 -> 'csi capture':0[1]" 87 88 # Configure pads for pipeline 89 media-ctl -V "'ov2680 1-0036':0 [fmt:SBGGR10_1X10/800x600 field:none]" 90 media-ctl -V "'csi-mux':1 [fmt:SBGGR10_1X10/800x600 field:none]" 91 media-ctl -V "'csi-mux':2 [fmt:SBGGR10_1X10/800x600 field:none]" 92 media-ctl -V "'imx7-mipi-csis.0':0 [fmt:SBGGR10_1X10/800x600 field:none]" 93 media-ctl -V "'csi':0 [fmt:SBGGR10_1X10/800x600 field:none]" 94 95After this streaming can start. The v4l2-ctl tool can be used to select any of 96the resolutions supported by the sensor. 97 98.. code-block:: none 99 100 # media-ctl -p 101 Media controller API version 5.2.0 102 103 Media device information 104 ------------------------ 105 driver imx7-csi 106 model imx-media 107 serial 108 bus info 109 hw revision 0x0 110 driver version 5.2.0 111 112 Device topology 113 - entity 1: csi (2 pads, 2 links) 114 type V4L2 subdev subtype Unknown flags 0 115 device node name /dev/v4l-subdev0 116 pad0: Sink 117 [fmt:SBGGR10_1X10/800x600 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range] 118 <- "csi-mux":2 [ENABLED] 119 pad1: Source 120 [fmt:SBGGR10_1X10/800x600 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range] 121 -> "csi capture":0 [ENABLED] 122 123 - entity 4: csi capture (1 pad, 1 link) 124 type Node subtype V4L flags 0 125 device node name /dev/video0 126 pad0: Sink 127 <- "csi":1 [ENABLED] 128 129 - entity 10: csi-mux (3 pads, 2 links) 130 type V4L2 subdev subtype Unknown flags 0 131 device node name /dev/v4l-subdev1 132 pad0: Sink 133 [fmt:Y8_1X8/1x1 field:none] 134 pad1: Sink 135 [fmt:SBGGR10_1X10/800x600 field:none] 136 <- "imx7-mipi-csis.0":1 [ENABLED] 137 pad2: Source 138 [fmt:SBGGR10_1X10/800x600 field:none] 139 -> "csi":0 [ENABLED] 140 141 - entity 14: imx7-mipi-csis.0 (2 pads, 2 links) 142 type V4L2 subdev subtype Unknown flags 0 143 device node name /dev/v4l-subdev2 144 pad0: Sink 145 [fmt:SBGGR10_1X10/800x600 field:none] 146 <- "ov2680 1-0036":0 [ENABLED] 147 pad1: Source 148 [fmt:SBGGR10_1X10/800x600 field:none] 149 -> "csi-mux":1 [ENABLED] 150 151 - entity 17: ov2680 1-0036 (1 pad, 1 link) 152 type V4L2 subdev subtype Sensor flags 0 153 device node name /dev/v4l-subdev3 154 pad0: Source 155 [fmt:SBGGR10_1X10/800x600@1/30 field:none colorspace:srgb] 156 -> "imx7-mipi-csis.0":0 [ENABLED] 157 158i.MX6ULL-EVK with OV5640 159------------------------ 160 161On this platform a parallel OV5640 sensor is connected to the CSI port. 162The following example configures a video capture pipeline with an output 163of 640x480 and UYVY8_2X8 format: 164 165.. code-block:: none 166 167 # Setup links 168 media-ctl -l "'ov5640 1-003c':0 -> 'csi':0[1]" 169 media-ctl -l "'csi':1 -> 'csi capture':0[1]" 170 171 # Configure pads for pipeline 172 media-ctl -v -V "'ov5640 1-003c':0 [fmt:UYVY8_2X8/640x480 field:none]" 173 174After this streaming can start: 175 176.. code-block:: none 177 178 gst-launch-1.0 -v v4l2src device=/dev/video1 ! video/x-raw,format=UYVY,width=640,height=480 ! v4l2convert ! fbdevsink 179 180.. code-block:: none 181 182 # media-ctl -p 183 Media controller API version 5.14.0 184 185 Media device information 186 ------------------------ 187 driver imx7-csi 188 model imx-media 189 serial 190 bus info 191 hw revision 0x0 192 driver version 5.14.0 193 194 Device topology 195 - entity 1: csi (2 pads, 2 links) 196 type V4L2 subdev subtype Unknown flags 0 197 device node name /dev/v4l-subdev0 198 pad0: Sink 199 [fmt:UYVY8_2X8/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range] 200 <- "ov5640 1-003c":0 [ENABLED,IMMUTABLE] 201 pad1: Source 202 [fmt:UYVY8_2X8/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range] 203 -> "csi capture":0 [ENABLED,IMMUTABLE] 204 205 - entity 4: csi capture (1 pad, 1 link) 206 type Node subtype V4L flags 0 207 device node name /dev/video1 208 pad0: Sink 209 <- "csi":1 [ENABLED,IMMUTABLE] 210 211 - entity 10: ov5640 1-003c (1 pad, 1 link) 212 type V4L2 subdev subtype Sensor flags 0 213 device node name /dev/v4l-subdev1 214 pad0: Source 215 [fmt:UYVY8_2X8/640x480@1/30 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range] 216 -> "csi":0 [ENABLED,IMMUTABLE] 217 218References 219---------- 220 221.. [#f1] https://www.nxp.com/docs/en/reference-manual/IMX7SRM.pdf 222