Some question about nvcsi/vi/cam

hi
I saw a graph of the nvcsi/vi/cam data flow and I have a question about it. Please help me answer, thank you.
this picture is as follows:

CSI Unit: MIPI-CSI compatible input subsystem is responsible for obtaining data from the camera, organizing the pixel format and sending it to the VI unit. There are 6 pixel parser (PP) units, each of which can accept input from a single 2-lane camera. In addition to this 6-camera model, the inputs can also be reconfigured to connect three mono or stereo 4-channel cameras to PPA, CSI1_PPA, and CSI2_PPA pairs.
VI: The video input unit receives data from the CSI unit through the 24-bit bus, the location of the data is determined by the input format. This data can then be routed to any one or two of the following interested parties. VI also has a Host 1x interface with 2 channels - one for controlling I2C access to the camera and the other for VI register programming

I have some questions is as follows:

  1. Does the above description of csi unit/vi make sense?
  2. Is it true that VI also has a Host 1x interface with 2 channels? Because in the configuration of the device tree, I only see that nvcsi is configured under host1x

The Device Tree is as follows:

Where are you get this documentation?

  1. Does the above description of csi unit/vi make sense? —> Yes it’s correct.
  2. Is it true that VI also has a Host 1x interface with 2 channels? Because in the configuration of the device tree, I only see that nvcsi is configured under host1x → it means have two VI HW logics. like below. It’s a pairs property. The first parameter is port number second is assign to which VI logic.
nvidia,vi-mapping = <0x00 0x00 **0x01 0x00** 0x02 0x01 0x03 0x01 0x04 0x00 0x05 0x01>;

And I saw the following description of VI unit:
VI Unit provides a hardware-software synchronization mechanism called VI synchronization Points (syncpts) to wait for certain conditions to be met and to increase the counter or expect the counter to reach a specific value. Multiple predefined indexes are available, each corresponding to a function such as the start of a frame, the end of a line, and the completion of ISP processing. For example, the software may choose to wait until a frame is received through the VI indicated by the next counter value corresponding to the index.

I want to confirm the correctness of the above description and which part of the code has the above description?

You can check vi4_fops.c to know the syncpts for the use case.
But for AGX Orin this part is move to unpublic RCE firmware.

I don’t quite understand how to understand the two VI hardware logic, can you explain it in more detail?

Which part? VI indexing and synchronization mechanism?

Two instances.

Don’t understand your query.

Is the above content in non-public RCE firmware?

I also ask is the RCE firmware running in the ARM R5 kernel?

Yes it’s run on RTCPU(co-processors) for AGX Xavier/Orin.

Okay, thanks for your anwser.

about vi two instances,are there any examples to help me understand?

There are two Host 1x ch0 and Host 1x ch1 next to VI module in the figure. I still don’t understand. It seems that the configuration of this block is not involved in the device tree?

Maybe check this driver for
the detail. …/kernel/nvidia/drivers/media/platform/tegra/camera/fusa-capture/capture-vi.c

Okay, thank you very much

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.