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