Jetson Nano virtual channel support

Hello everyone,
Since the Jetson Nano claims to provide CSI-2 v1.1 compliant ports, I made a custom board under the assumption that virtual channel support would be possible.
Unfortunately, even if virtual channels are a feature that has been present in the standard for a really long time, it is not present on the nano code base.

I’m not going to ask Nvidia to add support for this, since they have made it clear (on other posts) that there is no intention to do so.
I still want some official confirmation on whether it is possible to support virtual channels and what limitations does the system impose.

I would also appreciate any pointers regarding where to look on the code base.
I’m currently looking at vi2_fops.c and csi2_fops.c for clues on this matter.

Best Regards,
Juan Pablo.

hello juan.tettamanti,

please refer to Software Features,
virtual channel supports only enable for TX2 series, Xavier series, and NX series devices.

Hello @JerryChang,
Thanks for the info, but my question wasn’t about the supported software features.
It was about whether this can actually be supported by the hardware.

When you read the TX1 TRM on page 2273, it states that

A maximum of six data/pixel streams can be processed simultaneously at any given time.
The streams can come from any of the six possible sources, as shown below.
If the two streams come from a single source, then the streams are separated using a filter indexed on different virtual channel numbers or data types.

Also, if you check CSI_PIXEL_STREAM_A_CONTROL0_0 and CSI_PIXEL_STREAM_B_CONTROL0_0, you can see that both pixel parsers allow for selecting CSI interface A.

In addition, figure 116 on page 2274 also point in this direction
Screenshot from 2020-07-21 11-31-05

In conclusion, I wanted to know if the things mentioned in the manual are actually correct.
If the things on the datasheet are correct, do they apply exclusively to a 2-lane CSI configuration or can they also be used with a 4-lane CSI configuration?

It also bothers me that the Nano cannot handle something supported by smaller processors like the i.MX6 (Solo / Dual Lite / Dual / Quad) with it’s MIPI CSI-2 v1.0 (2005) interface.

Best Regards,
Juan Pablo.

Hello @JerryChang,
Maybe I should have titled this “virtual channel support or equivalent”, since achieving a similar functionality through other means would not strictly be “virtual channel support”.

So reformulating my previous questions.
Would it be possible to use the pixel parsers to filter video from the same CSI interface with two different virtual channel ids?
Would that CSI interface be limited to using 2 lanes or can I also apply the filtering while using 4 lanes?

Best Regards,
Juan Pablo.

hello juan.tettamanti,

to clarify,
we’re using vc-id property in device tree to identify different streams,
however, Nano’s driver (i.e. vi2_fops.c and csi2_fops.c) did not have implementation to recognize that property,
if you’re interest,
you may look into TX2’s or Xavier’s kernel driver, searching for virtual_channel for more details.

you can enable 2-lane or 4-lane sensors on Nano, below camera combinations were supported

  1. three quad-lane camera streams, or
  2. two quad-lane plus two dual-lane camera streams, or
  3. one quad-lane plus three dual-lane camera streams.

please check Nano Product Design Guide, please refer to CSI connection session.
you may also look into Nano and NX Camera Design Guide for recommendations and guidelines of camera connectors.