Hi Bingbu, On Mon, Jan 08, 2024 at 11:51:50AM +0800, Bingbu Cao wrote: > Sakari, > > On 10/25/23 8:15 PM, Sakari Ailus wrote: > > Hi Bingbu, > > > > On Tue, Oct 24, 2023 at 07:29:23PM +0800, bingbu.cao@xxxxxxxxx wrote: > >> From: Bingbu Cao <bingbu.cao@xxxxxxxxx> > >> > >> This document mainly describe the functionality of IPU6 and > >> IPU6 isys driver, and gives an example that how user can do > >> imaging capture with tools. > >> > >> Signed-off-by: Bingbu Cao <bingbu.cao@xxxxxxxxx> > >> --- > >> Documentation/admin-guide/media/ipu6-isys.rst | 159 +++ > >> .../admin-guide/media/ipu6_isys_graph.svg | 338 +++++ > >> .../admin-guide/media/ipu6_isys_multi.svg | 1124 +++++++++++++++++ > >> .../admin-guide/media/v4l-drivers.rst | 1 + > >> 4 files changed, 1622 insertions(+) > >> create mode 100644 Documentation/admin-guide/media/ipu6-isys.rst > >> create mode 100644 Documentation/admin-guide/media/ipu6_isys_graph.svg > >> create mode 100644 Documentation/admin-guide/media/ipu6_isys_multi.svg > >> > >> diff --git a/Documentation/admin-guide/media/ipu6-isys.rst b/Documentation/admin-guide/media/ipu6-isys.rst > >> new file mode 100644 > >> index 000000000000..fb4d355e1522 > >> --- /dev/null > >> +++ b/Documentation/admin-guide/media/ipu6-isys.rst > >> @@ -0,0 +1,159 @@ > >> +.. SPDX-License-Identifier: GPL-2.0 > >> + > >> +.. include:: <isonum.txt> > >> + > >> +=============================================================== > >> +Intel Image Processing Unit 6 (IPU6) Input System driver > >> +=============================================================== > > > > Too many '='s. > > > >> + > >> +Copyright |copy| 2023 Intel Corporation > >> + > >> +Introduction > >> +============ > >> + > >> +This file documents the Intel IPU6 (6th generation Image Processing Unit) > >> +Input System (MIPI CSI2 receiver) drivers located under > >> +drivers/media/pci/intel/ipu6. > >> + > >> +The Intel IPU6 can be found in certain Intel Chipsets but not in all SKUs: > >> + > >> +* TigerLake > >> +* JasperLake > >> +* AlderLake > >> +* RaptorLake > >> +* MeteorLake > >> + > >> +Intel IPU6 is made up of two components - Input System (ISYS) and Processing > >> +System (PSYS). > >> + > >> +The Input System mainly works as MIPI CSI2 receiver which receives and > >> +processes the imaging data from the sensors and outputs the frames to memory. > >> + > >> +There are 2 driver modules - intel_ipu6 and intel_ipu6_isys. intel_ipu6 is an > >> +IPU6 common driver which does PCI configuration, firmware loading and parsing, > >> +firmware authentication, DMA mapping and IPU-MMU (internal Memory mapping Unit) > >> +configuration. intel_ipu6_isys implements V4L2, Media Controller and V4L2 > >> +sub-device interfaces. The IPU6 ISYS driver supports camera sensors connected > >> +to the IPU6 ISYS through V4L2 sub-device sensor drivers. > >> + > >> +.. Note:: See Documentation/driver-api/media/drivers/ipu6.rst for more > >> + information about the IPU6 hardware. > > > > A direct reference would be nice. > > > >> + > >> + > >> +Input system driver > >> +=================== > >> + > >> +The input System driver mainly configures CSI2 DPHY, constructs the firmware > >> +stream configuration, sends commands to firmware, gets response from hardware > >> +and firmware and then returns buffers to user. > >> +The ISYS is represented as several V4L2 sub-devices - 'Intel IPU6 CSI2 $port', > >> +which provide V4L2 subdev interfaces to the user space, there are also several > >> +video nodes for each CSI-2 stream capture - 'Intel IPU6 ISYS capture $num' which > >> +provide interface to user to set formats, queue buffers and streaming. > >> + > >> +.. kernel-figure:: ipu6_isys_graph.svg > >> + :alt: ipu6 isys media graph without multiple streams support > >> + > >> + ipu6 isys media graph without multiple streams support > >> + > >> +.. kernel-figure:: ipu6_isys_multi.svg > >> + :alt: ipu6 isys media graph with multiple streams support > >> + > >> + ipu6 isys media graph with multiple streams support > > > > Is there a reason for having links from the CSI-2 receivers' source pads to > > multiple video nodes? Isn't a single one enough? > > > > Sorry, I forgot to reply before. Firmware sees each MIPI VC as a single > stream, for multiple VCs case, SW need create multiple firmware streams. Yes, I understand that, but this does not explain why you have multiple links between the source pads and video nodes. You can only capture one stream at a time from a video node. The user needs to select the correct video node related to a source pad, not to pick a random video node and then figure out which link to enable. The media graph does look impressive though. :-) -- Regards, Sakari Ailus