~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/admin-guide/media/ipu6-isys.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/admin-guide/media/ipu6-isys.rst (Architecture alpha) and /Documentation/admin-guide/media/ipu6-isys.rst (Architecture ppc)


  1 .. SPDX-License-Identifier: GPL-2.0                 1 .. SPDX-License-Identifier: GPL-2.0
  2                                                     2 
  3 .. include:: <isonum.txt>                           3 .. include:: <isonum.txt>
  4                                                     4 
  5 ==============================================      5 ========================================================
  6 Intel Image Processing Unit 6 (IPU6) Input Sys      6 Intel Image Processing Unit 6 (IPU6) Input System driver
  7 ==============================================      7 ========================================================
  8                                                     8 
  9 Copyright |copy| 2023--2024 Intel Corporation       9 Copyright |copy| 2023--2024 Intel Corporation
 10                                                    10 
 11 Introduction                                       11 Introduction
 12 ============                                       12 ============
 13                                                    13 
 14 This file documents the Intel IPU6 (6th genera     14 This file documents the Intel IPU6 (6th generation Image Processing Unit)
 15 Input System (MIPI CSI2 receiver) drivers loca     15 Input System (MIPI CSI2 receiver) drivers located under
 16 drivers/media/pci/intel/ipu6.                      16 drivers/media/pci/intel/ipu6.
 17                                                    17 
 18 The Intel IPU6 can be found in certain Intel S     18 The Intel IPU6 can be found in certain Intel SoCs but not in all SKUs:
 19                                                    19 
 20 * Tiger Lake                                       20 * Tiger Lake
 21 * Jasper Lake                                      21 * Jasper Lake
 22 * Alder Lake                                       22 * Alder Lake
 23 * Raptor Lake                                      23 * Raptor Lake
 24 * Meteor Lake                                      24 * Meteor Lake
 25                                                    25 
 26 Intel IPU6 is made up of two components - Inpu     26 Intel IPU6 is made up of two components - Input System (ISYS) and Processing
 27 System (PSYS).                                     27 System (PSYS).
 28                                                    28 
 29 The Input System mainly works as MIPI CSI-2 re     29 The Input System mainly works as MIPI CSI-2 receiver which receives and
 30 processes the image data from the sensors and      30 processes the image data from the sensors and outputs the frames to memory.
 31                                                    31 
 32 There are 2 driver modules - intel-ipu6 and in     32 There are 2 driver modules - intel-ipu6 and intel-ipu6-isys. intel-ipu6 is an
 33 IPU6 common driver which does PCI configuratio     33 IPU6 common driver which does PCI configuration, firmware loading and parsing,
 34 firmware authentication, DMA mapping and IPU-M     34 firmware authentication, DMA mapping and IPU-MMU (internal Memory mapping Unit)
 35 configuration. intel_ipu6_isys implements V4L2     35 configuration. intel_ipu6_isys implements V4L2, Media Controller and V4L2
 36 sub-device interfaces. The IPU6 ISYS driver su     36 sub-device interfaces. The IPU6 ISYS driver supports camera sensors connected
 37 to the IPU6 ISYS through V4L2 sub-device senso     37 to the IPU6 ISYS through V4L2 sub-device sensor drivers.
 38                                                    38 
 39 .. Note:: See Documentation/driver-api/media/d     39 .. Note:: See Documentation/driver-api/media/drivers/ipu6.rst for more
 40           information about the IPU6 hardware.     40           information about the IPU6 hardware.
 41                                                    41 
 42 Input system driver                                42 Input system driver
 43 ===================                                43 ===================
 44                                                    44 
 45 The Input System driver mainly configures CSI-     45 The Input System driver mainly configures CSI-2 D-PHY, constructs the firmware
 46 stream configuration, sends commands to firmwa     46 stream configuration, sends commands to firmware, gets response from hardware
 47 and firmware and then returns buffers to user.     47 and firmware and then returns buffers to user.  The ISYS is represented as
 48 several V4L2 sub-devices as well as video node     48 several V4L2 sub-devices as well as video nodes.
 49                                                    49 
 50 .. kernel-figure::  ipu6_isys_graph.svg            50 .. kernel-figure::  ipu6_isys_graph.svg
 51    :alt: ipu6 isys media graph with multiple s     51    :alt: ipu6 isys media graph with multiple streams support
 52                                                    52 
 53    IPU6 ISYS media graph with multiple streams     53    IPU6 ISYS media graph with multiple streams support
 54                                                    54 
 55 The graph has been produced using the followin     55 The graph has been produced using the following command:
 56                                                    56 
 57 .. code-block:: none                               57 .. code-block:: none
 58                                                    58 
 59    fdp -Gsplines=true -Tsvg < dot > dot.svg        59    fdp -Gsplines=true -Tsvg < dot > dot.svg
 60                                                    60 
 61 Capturing frames with IPU6 ISYS                    61 Capturing frames with IPU6 ISYS
 62 -------------------------------                    62 -------------------------------
 63                                                    63 
 64 IPU6 ISYS is used to capture frames from the c     64 IPU6 ISYS is used to capture frames from the camera sensors connected to the
 65 CSI2 ports. The supported input formats of ISY     65 CSI2 ports. The supported input formats of ISYS are listed in table below:
 66                                                    66 
 67 .. tabularcolumns:: |p{0.8cm}|p{4.0cm}|p{4.0cm     67 .. tabularcolumns:: |p{0.8cm}|p{4.0cm}|p{4.0cm}|
 68                                                    68 
 69 .. flat-table::                                    69 .. flat-table::
 70     :header-rows: 1                                70     :header-rows: 1
 71                                                    71 
 72     * - IPU6 ISYS supported input formats          72     * - IPU6 ISYS supported input formats
 73                                                    73 
 74     * - RGB565, RGB888                             74     * - RGB565, RGB888
 75                                                    75 
 76     * - UYVY8, YUYV8                               76     * - UYVY8, YUYV8
 77                                                    77 
 78     * - RAW8, RAW10, RAW12                         78     * - RAW8, RAW10, RAW12
 79                                                    79 
 80 .. _ipu6_isys_capture_examples:                    80 .. _ipu6_isys_capture_examples:
 81                                                    81 
 82 Examples                                           82 Examples
 83 ~~~~~~~~                                           83 ~~~~~~~~
 84                                                    84 
 85 Here is an example of IPU6 ISYS raw capture on     85 Here is an example of IPU6 ISYS raw capture on Dell XPS 9315 laptop. On this
 86 machine, ov01a10 sensor is connected to IPU IS     86 machine, ov01a10 sensor is connected to IPU ISYS CSI-2 port 2, which can
 87 generate images at sBGGR10 with resolution 128     87 generate images at sBGGR10 with resolution 1280x800.
 88                                                    88 
 89 Using the media controller APIs, we can config     89 Using the media controller APIs, we can configure ov01a10 sensor by
 90 media-ctl [#f1]_ and yavta [#f2]_ to transmit      90 media-ctl [#f1]_ and yavta [#f2]_ to transmit frames to IPU6 ISYS.
 91                                                    91 
 92 .. code-block:: none                               92 .. code-block:: none
 93                                                    93 
 94     # Example 1 capture frame from ov01a10 cam     94     # Example 1 capture frame from ov01a10 camera sensor
 95     # This example assumes /dev/media0 as the      95     # This example assumes /dev/media0 as the IPU ISYS media device
 96     export MDEV=/dev/media0                        96     export MDEV=/dev/media0
 97                                                    97 
 98     # Establish the link for the media devices     98     # Establish the link for the media devices using media-ctl
 99     media-ctl -d $MDEV -l "\"ov01a10 3-0036\":     99     media-ctl -d $MDEV -l "\"ov01a10 3-0036\":0 -> \"Intel IPU6 CSI2 2\":0[1]"
100                                                   100 
101     # Set the format for the media devices        101     # Set the format for the media devices
102     media-ctl -d $MDEV -V "ov01a10:0 [fmt:SBGG    102     media-ctl -d $MDEV -V "ov01a10:0 [fmt:SBGGR10/1280x800]"
103     media-ctl -d $MDEV -V "Intel IPU6 CSI2 2:0    103     media-ctl -d $MDEV -V "Intel IPU6 CSI2 2:0 [fmt:SBGGR10/1280x800]"
104     media-ctl -d $MDEV -V "Intel IPU6 CSI2 2:1    104     media-ctl -d $MDEV -V "Intel IPU6 CSI2 2:1 [fmt:SBGGR10/1280x800]"
105                                                   105 
106 Once the media pipeline is configured, desired    106 Once the media pipeline is configured, desired sensor specific settings
107 (such as exposure and gain settings) can be se    107 (such as exposure and gain settings) can be set, using the yavta tool.
108                                                   108 
109 e.g                                               109 e.g
110                                                   110 
111 .. code-block:: none                              111 .. code-block:: none
112                                                   112 
113     # and that ov01a10 sensor is connected to     113     # and that ov01a10 sensor is connected to i2c bus 3 with address 0x36
114     export SDEV=$(media-ctl -d $MDEV -e "ov01a    114     export SDEV=$(media-ctl -d $MDEV -e "ov01a10 3-0036")
115                                                   115 
116     yavta -w 0x009e0903 400 $SDEV                 116     yavta -w 0x009e0903 400 $SDEV
117     yavta -w 0x009e0913 1000 $SDEV                117     yavta -w 0x009e0913 1000 $SDEV
118     yavta -w 0x009e0911 2000 $SDEV                118     yavta -w 0x009e0911 2000 $SDEV
119                                                   119 
120 Once the desired sensor settings are set, fram    120 Once the desired sensor settings are set, frame captures can be done as below.
121                                                   121 
122 e.g                                               122 e.g
123                                                   123 
124 .. code-block:: none                              124 .. code-block:: none
125                                                   125 
126     yavta --data-prefix -u -c10 -n5 -I -s 1280    126     yavta --data-prefix -u -c10 -n5 -I -s 1280x800 --file=/tmp/frame-#.bin \
127             -f SBGGR10 $(media-ctl -d $MDEV -e    127             -f SBGGR10 $(media-ctl -d $MDEV -e "Intel IPU6 ISYS Capture 0")
128                                                   128 
129 With the above command, 10 frames are captured    129 With the above command, 10 frames are captured at 1280x800 resolution with
130 sBGGR10 format. The captured frames are availa    130 sBGGR10 format. The captured frames are available as /tmp/frame-#.bin files.
131                                                   131 
132 Here is another example of IPU6 ISYS RAW and m    132 Here is another example of IPU6 ISYS RAW and metadata capture from camera
133 sensor ov2740 on Lenovo X1 Yoga laptop.           133 sensor ov2740 on Lenovo X1 Yoga laptop.
134                                                   134 
135 .. code-block:: none                              135 .. code-block:: none
136                                                   136 
137     media-ctl -l "\"ov2740 14-0036\":0 -> \"In    137     media-ctl -l "\"ov2740 14-0036\":0 -> \"Intel IPU6 CSI2 1\":0[1]"
138     media-ctl -l "\"Intel IPU6 CSI2 1\":1 -> \    138     media-ctl -l "\"Intel IPU6 CSI2 1\":1 -> \"Intel IPU6 ISYS Capture 0\":0[1]"
139     media-ctl -l "\"Intel IPU6 CSI2 1\":2 -> \    139     media-ctl -l "\"Intel IPU6 CSI2 1\":2 -> \"Intel IPU6 ISYS Capture 1\":0[1]"
140                                                   140 
141     # set routing                                 141     # set routing
142     media-ctl -R "\"Intel IPU6 CSI2 1\" [0/0->    142     media-ctl -R "\"Intel IPU6 CSI2 1\" [0/0->1/0[1],0/1->2/1[1]]"
143                                                   143 
144     media-ctl -V "\"Intel IPU6 CSI2 1\":0/0 [f    144     media-ctl -V "\"Intel IPU6 CSI2 1\":0/0 [fmt:SGRBG10/1932x1092]"
145     media-ctl -V "\"Intel IPU6 CSI2 1\":0/1 [f    145     media-ctl -V "\"Intel IPU6 CSI2 1\":0/1 [fmt:GENERIC_8/97x1]"
146     media-ctl -V "\"Intel IPU6 CSI2 1\":1/0 [f    146     media-ctl -V "\"Intel IPU6 CSI2 1\":1/0 [fmt:SGRBG10/1932x1092]"
147     media-ctl -V "\"Intel IPU6 CSI2 1\":2/1 [f    147     media-ctl -V "\"Intel IPU6 CSI2 1\":2/1 [fmt:GENERIC_8/97x1]"
148                                                   148 
149     CAPTURE_DEV=$(media-ctl -e "Intel IPU6 ISY    149     CAPTURE_DEV=$(media-ctl -e "Intel IPU6 ISYS Capture 0")
150     ./yavta --data-prefix -c100 -n5 -I -s1932x    150     ./yavta --data-prefix -c100 -n5 -I -s1932x1092 --file=/tmp/frame-#.bin \
151         -f SGRBG10 ${CAPTURE_DEV}                 151         -f SGRBG10 ${CAPTURE_DEV}
152                                                   152 
153     CAPTURE_META=$(media-ctl -e "Intel IPU6 IS    153     CAPTURE_META=$(media-ctl -e "Intel IPU6 ISYS Capture 1")
154     ./yavta --data-prefix -c100 -n5 -I -s97x1     154     ./yavta --data-prefix -c100 -n5 -I -s97x1 -B meta-capture \
155         --file=/tmp/meta-#.bin -f GENERIC_8 ${    155         --file=/tmp/meta-#.bin -f GENERIC_8 ${CAPTURE_META}
156                                                   156 
157 References                                        157 References
158 ==========                                        158 ==========
159                                                   159 
160 .. [#f1] https://git.ideasonboard.org/media-ct    160 .. [#f1] https://git.ideasonboard.org/media-ctl.git
161 .. [#f2] https://git.ideasonboard.org/yavta.gi    161 .. [#f2] https://git.ideasonboard.org/yavta.git
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php