Lines Matching +full:video +full:- +full:firmware

1 .. SPDX-License-Identifier: GPL-2.0
24 ImgU). The CIO2 driver is available as drivers/media/pci/intel/ipu3/ipu3-cio2*
36 Both of the drivers implement V4L2, Media Controller and V4L2 sub-device
38 MIPI CSI-2 interfaces through V4L2 sub-device sensor drivers.
44 interface to the user space. There is a video node for each CSI-2 receiver,
47 The CIO2 contains four independent capture channel, each with its own MIPI CSI-2
48 receiver and DMA engine. Each channel is modelled as a V4L2 sub-device exposed
49 to userspace as a V4L2 sub-device node and has two pads:
53 .. flat-table::
55 * - pad
56 - direction
57 - purpose
59 * - 0
60 - sink
61 - MIPI CSI-2 input, connected to the sensor subdev
63 * - 1
64 - source
65 - Raw video capture, connected to the V4L2 video interface
67 The V4L2 video interfaces model the DMA engines. They are exposed to userspace
68 as V4L2 video device nodes.
71 ------------------------------------
81 -- The IPU3 CSI2 receiver outputs the captured frames from the sensor in packed
84 -- Multiple video nodes have to be operated simultaneously.
92 .. code-block:: none
98 export SDEV=$(media-ctl -d $MDEV -e "ov5670 10-0036")
100 # Establish the link for the media devices using media-ctl [#f3]_
101 media-ctl -d $MDEV -l "ov5670:0 -> ipu3-csi2 0:0[1]"
104 media-ctl -d $MDEV -V "ov5670:0 [fmt:SGRBG10/2592x1944]"
105 media-ctl -d $MDEV -V "ipu3-csi2 0:0 [fmt:SGRBG10/2592x1944]"
106 media-ctl -d $MDEV -V "ipu3-csi2 0:1 [fmt:SGRBG10/2592x1944]"
113 .. code-block:: none
115 yavta -w 0x009e0903 444 $SDEV
116 yavta -w 0x009e0913 1024 $SDEV
117 yavta -w 0x009e0911 2046 $SDEV
123 .. code-block:: none
125 yavta --data-prefix -u -c10 -n5 -I -s2592x1944 --file=/tmp/frame-#.bin \
126 -f IPU3_SGRBG10 $(media-ctl -d $MDEV -e "ipu3-cio2 0")
131 The captured frames are available as /tmp/frame-#.bin files.
141 and Snapshot During Video(SDV).
143 The ImgU contains two independent pipes, each modelled as a V4L2 sub-device
144 exposed to userspace as a V4L2 sub-device node.
150 .. flat-table::
152 * - pad
153 - direction
154 - purpose
156 * - 0
157 - sink
158 - Input raw video stream
160 * - 1
161 - sink
162 - Processing parameters
164 * - 2
165 - source
166 - Output processed video stream
168 * - 3
169 - source
170 - Output viewfinder video stream
172 * - 4
173 - source
174 - 3A statistics
176 Each pad is connected to a corresponding V4L2 video interface, exposed to
177 userspace as a V4L2 video device node.
180 ----------------
182 With ImgU, once the input video node ("ipu3-imgu 0/1":0, in
183 <entity>:<pad-number> format) is queued with buffer (in packed raw Bayer
184 format), ImgU starts processing the buffer and produces the video output in YUV
187 input video node is queued with buffer.
190 video nodes should be enabled for IPU3 to start image processing.
192 Each ImgU V4L2 subdev has the following set of video nodes.
194 input, output and viewfinder video nodes
195 ----------------------------------------
198 input video node is processed by the IPU3 Imaging Unit and are output to 2 video
203 :ref:`v4l2-pix-fmt-ipu3-sbggr10`.
205 The driver supports V4L2 Video Capture Interface as defined at :ref:`devices`.
207 Only the multi-planar API is supported. More details can be found at
208 :ref:`planar-apis`.
210 Parameters video node
211 ---------------------
213 The parameters video node receives the ImgU algorithm parameters that are used
217 :ref:`v4l2-meta-fmt-params`.
219 3A statistics video node
220 ------------------------
222 3A statistics video node is used by the ImgU driver to output the 3A (auto
234 Running mode and firmware binary selection
235 ------------------------------------------
237 ImgU works based on firmware, currently the ImgU firmware support run 2 pipes in
238 time-sharing with single input frame data. Each pipe can run at certain mode -
239 "VIDEO" or "STILL", "VIDEO" mode is commonly used for video frames capture, and
240 "STILL" is used for still frame capture. However, you can also select "VIDEO" to
243 larger bayer frame for further YUV processing than "VIDEO" mode to get high
245 "STILL" mode will need more power and memory bandwidth than "VIDEO" mode. TNR
246 will be enabled in "VIDEO" mode and bypassed by "STILL" mode. ImgU is running at
247VIDEO” mode by default, the user can use v4l2 control V4L2_CID_INTEL_IPU3_MODE
248 (currently defined in drivers/staging/media/ipu3/include/intel-ipu3.h) to query
250 between the "VIDEO" and "STILL" mode, mandatory input and main output node
251 should be enabled and buffers need be queued, the statistics and the view-finder
254 The firmware binary will be selected according to current running mode, such log
257 if_to_osys_striped is selected for "VIDEO" and the binary
262 ----------------------------------------
268 all the video nodes setup correctly.
270 Let us take "ipu3-imgu 0" subdev as an example.
272 .. code-block:: none
274 media-ctl -d $MDEV -r
275 media-ctl -d $MDEV -l "ipu3-imgu 0 input":0 -> "ipu3-imgu 0":0[1]
276 media-ctl -d $MDEV -l "ipu3-imgu 0":2 -> "ipu3-imgu 0 output":0[1]
277 media-ctl -d $MDEV -l "ipu3-imgu 0":3 -> "ipu3-imgu 0 viewfinder":0[1]
278 media-ctl -d $MDEV -l "ipu3-imgu 0":4 -> "ipu3-imgu 0 3a stat":0[1]
281 (e.g 0 for video mode or 1 for still mode) through the control id 0x009819a1 as
284 .. code-block:: none
286 yavta -w "0x009819A1 1" /dev/v4l-subdev7
291 There is also a block which can change the frame resolution - YUV Scaler, it is
297 .. kernel-figure:: ipu3_rcb.svg
335 intermediate resolutions can be generated by specific tool -
337 https://github.com/intel/intel-ipu3-pipecfg
342 https://chromium.googlesource.com/chromiumos/overlays/board-overlays/+/master
344 Under baseboard-poppy/media-libs/cros-camera-hal-configs-poppy/files/gcss
374 .. code-block:: none
376 v4l2n --pipe=4 --load=/tmp/frame-#.bin --open=/dev/video4
377 --fmt=type:VIDEO_OUTPUT_MPLANE,width=2592,height=1944,pixelformat=0X47337069 \
378 --reqbufs=type:VIDEO_OUTPUT_MPLANE,count:1 --pipe=1 \
379 --output=/tmp/frames.out --open=/dev/video5 \
380 --fmt=type:VIDEO_CAPTURE_MPLANE,width=2560,height=1920,pixelformat=NV12 \
381 --reqbufs=type:VIDEO_CAPTURE_MPLANE,count:1 --pipe=2 \
382 --output=/tmp/frames.vf --open=/dev/video6 \
383 --fmt=type:VIDEO_CAPTURE_MPLANE,width=2560,height=1920,pixelformat=NV12 \
384 --reqbufs=type:VIDEO_CAPTURE_MPLANE,count:1 --pipe=3 --open=/dev/video7 \
385 --output=/tmp/frames.3A --fmt=type:META_CAPTURE,? \
386 --reqbufs=count:1,type:META_CAPTURE --pipe=1,2,3,4 --stream=5
390 .. code-block:: none
392 yavta --data-prefix -Bcapture-mplane -c10 -n5 -I -s2592x1944 \
393 --file=frame-#.out-f NV12 /dev/video5 & \
394 yavta --data-prefix -Bcapture-mplane -c10 -n5 -I -s2592x1944 \
395 --file=frame-#.vf -f NV12 /dev/video6 & \
396 yavta --data-prefix -Bmeta-capture -c10 -n5 -I \
397 --file=frame-#.3a /dev/video7 & \
398 yavta --data-prefix -Boutput-mplane -c10 -n5 -I -s2592x1944 \
399 --file=/tmp/frame-in.cio2 -f IPU3_SGRBG10 /dev/video4
402 input, output, viewfinder and 3A statistics video nodes respectively.
405 ----------------------------------------------
413 .. code-block:: none
415 raw2pnm -x2560 -y1920 -fNV12 /tmp/frames.out /tmp/frames.out.ppm
417 where 2560x1920 is output resolution, NV12 is the video format, followed
423 .. code-block:: none
425 raw2pnm -x2560 -y1920 -fNV12 /tmp/frames.vf /tmp/frames.vf.ppm
427 where 2560x1920 is output resolution, NV12 is the video format, followed
435 https://chromium.googlesource.com/chromiumos/platform/arc-camera/+/master/
445 .. kernel-render:: DOT
475 { rank=same; a -> b -> c -> d -> e -> f -> g -> h -> i }
476 { rank=same; j -> k -> l -> m -> n -> o -> p -> q -> s -> t}
478 a -> j [style=invis, weight=10]
479 i -> j
480 q -> r
488 Optical Black Correction Optical Black Correction block subtracts a pre-defined
493 address non-linearity sensor effects. The Lookup table
497 non-uniformity of the pixel response due to optical
511 processing by Firmware. The struct is defined as
518 basic non-linear tone mapping correction that is
572 Y-tone mapping
574 A few stages of the pipeline will be executed by firmware running on the ISP
589 .. [#f5] drivers/staging/media/ipu3/include/intel-ipu3.h
595 .. [#f3] http://git.ideasonboard.org/?p=media-ctl.git;a=summary