Sakari, On 1/9/24 4:55 PM, Sakari Ailus wrote: > Hi Bingbu, > > On Tue, Jan 09, 2024 at 02:34:48PM +0800, Bingbu Cao wrote: >> Sakari, >> >> On 1/8/24 5:14 PM, Sakari Ailus wrote: >>> 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 user can select any of the video nodes to one source pad. >> This figure shows that user have the capability to link any source pad >> to any of the video node (in dotted line). In reality, only 1 link is >> active (solid line). > > Yes, that's how it's currently implemented but I don't think there's really > a reason to do that. Could you remove all but one link to each video node? > Ack. I generated this graph by media-ctl and dot automatically. Let me try to draw a new one. Thanks! -- Best regards, Bingbu Cao