mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	 32e2eae23f
			
		
	
	
		32e2eae23f
		
	
	
	
	
		
			
			Most of the driver-specific documentation is meant to help users of the media subsystem. Move them to the admin-guide. It should be noticed, however, that several of those files are outdated and will require further work in order to make them useful again. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
		
			
				
	
	
		
			162 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. SPDX-License-Identifier: GPL-2.0
 | |
| 
 | |
| i.MX7 Video Capture Driver
 | |
| ==========================
 | |
| 
 | |
| Introduction
 | |
| ------------
 | |
| 
 | |
| The i.MX7 contrary to the i.MX5/6 family does not contain an Image Processing
 | |
| Unit (IPU); because of that the capabilities to perform operations or
 | |
| manipulation of the capture frames are less feature rich.
 | |
| 
 | |
| For image capture the i.MX7 has three units:
 | |
| - CMOS Sensor Interface (CSI)
 | |
| - Video Multiplexer
 | |
| - MIPI CSI-2 Receiver
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|    MIPI Camera Input ---> MIPI CSI-2 --- > |\
 | |
|                                            | \
 | |
|                                            |  \
 | |
|                                            | M |
 | |
|                                            | U | ------>  CSI ---> Capture
 | |
|                                            | X |
 | |
|                                            |  /
 | |
|    Parallel Camera Input ----------------> | /
 | |
|                                            |/
 | |
| 
 | |
| For additional information, please refer to the latest versions of the i.MX7
 | |
| reference manual [#f1]_.
 | |
| 
 | |
| Entities
 | |
| --------
 | |
| 
 | |
| imx7-mipi-csi2
 | |
| --------------
 | |
| 
 | |
| This is the MIPI CSI-2 receiver entity. It has one sink pad to receive the pixel
 | |
| data from MIPI CSI-2 camera sensor. It has one source pad, corresponding to the
 | |
| virtual channel 0. This module is compliant to previous version of Samsung
 | |
| D-phy, and supports two D-PHY Rx Data lanes.
 | |
| 
 | |
| csi-mux
 | |
| -------
 | |
| 
 | |
| This is the video multiplexer. It has two sink pads to select from either camera
 | |
| sensor with a parallel interface or from MIPI CSI-2 virtual channel 0.  It has
 | |
| a single source pad that routes to the CSI.
 | |
| 
 | |
| csi
 | |
| ---
 | |
| 
 | |
| The CSI enables the chip to connect directly to external CMOS image sensor. CSI
 | |
| can interface directly with Parallel and MIPI CSI-2 buses. It has 256 x 64 FIFO
 | |
| to store received image pixel data and embedded DMA controllers to transfer data
 | |
| from the FIFO through AHB bus.
 | |
| 
 | |
| This entity has one sink pad that receives from the csi-mux entity and a single
 | |
| source pad that routes video frames directly to memory buffers. This pad is
 | |
| routed to a capture device node.
 | |
| 
 | |
| Usage Notes
 | |
| -----------
 | |
| 
 | |
| To aid in configuration and for backward compatibility with V4L2 applications
 | |
| that access controls only from video device nodes, the capture device interfaces
 | |
| inherit controls from the active entities in the current pipeline, so controls
 | |
| can be accessed either directly from the subdev or from the active capture
 | |
| device interface. For example, the sensor controls are available either from the
 | |
| sensor subdevs or from the active capture device.
 | |
| 
 | |
| Warp7 with OV2680
 | |
| -----------------
 | |
| 
 | |
| On this platform an OV2680 MIPI CSI-2 module is connected to the internal MIPI
 | |
| CSI-2 receiver. The following example configures a video capture pipeline with
 | |
| an output of 800x600, and BGGR 10 bit bayer format:
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|    # Setup links
 | |
|    media-ctl -l "'ov2680 1-0036':0 -> 'imx7-mipi-csis.0':0[1]"
 | |
|    media-ctl -l "'imx7-mipi-csis.0':1 -> 'csi-mux':1[1]"
 | |
|    media-ctl -l "'csi-mux':2 -> 'csi':0[1]"
 | |
|    media-ctl -l "'csi':1 -> 'csi capture':0[1]"
 | |
| 
 | |
|    # Configure pads for pipeline
 | |
|    media-ctl -V "'ov2680 1-0036':0 [fmt:SBGGR10_1X10/800x600 field:none]"
 | |
|    media-ctl -V "'csi-mux':1 [fmt:SBGGR10_1X10/800x600 field:none]"
 | |
|    media-ctl -V "'csi-mux':2 [fmt:SBGGR10_1X10/800x600 field:none]"
 | |
|    media-ctl -V "'imx7-mipi-csis.0':0 [fmt:SBGGR10_1X10/800x600 field:none]"
 | |
|    media-ctl -V "'csi':0 [fmt:SBGGR10_1X10/800x600 field:none]"
 | |
| 
 | |
| After this streaming can start. The v4l2-ctl tool can be used to select any of
 | |
| the resolutions supported by the sensor.
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
| 	# media-ctl -p
 | |
| 	Media controller API version 5.2.0
 | |
| 
 | |
| 	Media device information
 | |
| 	------------------------
 | |
| 	driver          imx7-csi
 | |
| 	model           imx-media
 | |
| 	serial
 | |
| 	bus info
 | |
| 	hw revision     0x0
 | |
| 	driver version  5.2.0
 | |
| 
 | |
| 	Device topology
 | |
| 	- entity 1: csi (2 pads, 2 links)
 | |
| 	            type V4L2 subdev subtype Unknown flags 0
 | |
| 	            device node name /dev/v4l-subdev0
 | |
| 	        pad0: Sink
 | |
| 	                [fmt:SBGGR10_1X10/800x600 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range]
 | |
| 	                <- "csi-mux":2 [ENABLED]
 | |
| 	        pad1: Source
 | |
| 	                [fmt:SBGGR10_1X10/800x600 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range]
 | |
| 	                -> "csi capture":0 [ENABLED]
 | |
| 
 | |
| 	- entity 4: csi capture (1 pad, 1 link)
 | |
| 	            type Node subtype V4L flags 0
 | |
| 	            device node name /dev/video0
 | |
| 	        pad0: Sink
 | |
| 	                <- "csi":1 [ENABLED]
 | |
| 
 | |
| 	- entity 10: csi-mux (3 pads, 2 links)
 | |
| 	             type V4L2 subdev subtype Unknown flags 0
 | |
| 	             device node name /dev/v4l-subdev1
 | |
| 	        pad0: Sink
 | |
| 	                [fmt:Y8_1X8/1x1 field:none]
 | |
| 	        pad1: Sink
 | |
| 	               [fmt:SBGGR10_1X10/800x600 field:none]
 | |
| 	                <- "imx7-mipi-csis.0":1 [ENABLED]
 | |
| 	        pad2: Source
 | |
| 	                [fmt:SBGGR10_1X10/800x600 field:none]
 | |
| 	                -> "csi":0 [ENABLED]
 | |
| 
 | |
| 	- entity 14: imx7-mipi-csis.0 (2 pads, 2 links)
 | |
| 	             type V4L2 subdev subtype Unknown flags 0
 | |
| 	             device node name /dev/v4l-subdev2
 | |
| 	        pad0: Sink
 | |
| 	                [fmt:SBGGR10_1X10/800x600 field:none]
 | |
| 	                <- "ov2680 1-0036":0 [ENABLED]
 | |
| 	        pad1: Source
 | |
| 	                [fmt:SBGGR10_1X10/800x600 field:none]
 | |
| 	                -> "csi-mux":1 [ENABLED]
 | |
| 
 | |
| 	- entity 17: ov2680 1-0036 (1 pad, 1 link)
 | |
| 	             type V4L2 subdev subtype Sensor flags 0
 | |
| 	             device node name /dev/v4l-subdev3
 | |
| 	        pad0: Source
 | |
| 	                [fmt:SBGGR10_1X10/800x600@1/30 field:none colorspace:srgb]
 | |
| 	                -> "imx7-mipi-csis.0":0 [ENABLED]
 | |
| 
 | |
| References
 | |
| ----------
 | |
| 
 | |
| .. [#f1] https://www.nxp.com/docs/en/reference-manual/IMX7SRM.pdf
 |