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? -- Regards, Sakari Ailus