2 camera streams through 1 CSI port using Virtual Channel concept

Hi All,

Is the below scenario feasible with TX1/TX2?

  1. I have two camera streams coming from a single source
  2. This single source is connected to CSI-A (or any other CSi ports)
  3. Each stream is distinguished using Virtual channel (VC) ID in packet header. Say 0 & 1
  4. Camera stream with VC0 is directed to Pixel Parser A(PPA) & camera stream with VC1 is directed to Pixel Parser B (PPB).

If this is possible,

  1. Can all this configuration be done via dtb (E.g: mapping VC with PPA & PPB)?
  2. Is the usage concept like /dev/video0 is mapped to PPA and /dev/video1 mapped to PPB?

Regards,
Rejeesh

Rejeesh,
When you said single source but 2 camera streams, how is your CSI camera connected to Jetson? We have 12 lanes CSI interface and can connect multiple cameras.

Hi Chijen,

My CSI camera is connected to only one CSI port (E.g. CSI-A,2 lane). However I need to send 2 different streams through them and wish to distinguish them using Virtual channel concept.

i.e., one stream is directed to CSI-A and the other to CSI-B. Hope you get a better picture now.

Regards,
Rejeesh

Rejeesh,
OK so this is an one camera using CSI 2-lane connection and you intend to get each stream from each lane, correct? From system perpective, it’s one CSI device but your stream will represent the data from each CSI lane. Am I right?

Hi Chijen,

OK so this is an one camera using CSI 2-lane connection and you intend to get each stream from each lane, correct?

Partially correct :) Yes, its 1 camera using 2-lane. BUT each stream use 2 lane. 1 stream is directed to PPA and the other to PPB using Virtual Channel ID.

Hope the attached image makes it clear.

Regards,
Rejeesh
VC.jpg

VC.jpg

Rejeesh,
Ya it’s more clear now. Although we have not had the chance to validate virtual channel for our V4L2 camera driver due to lack of hardware device, mapping to a different device node for each virtual channel is the right thing to do. Hope you could make it work. Please let us know should you encounter any issue.

We should have multiple camera device tree sample for reference. Let us check too.

Hi Rejeesh
May I know the VC0 and VC1 transfer one by one sequentially or interleave.

Hi Shane & Chijen,

We plan to do VC0/VC1 transfer sequentially.

It would be great if you could share a reference dtsi file where Virtual channel-CSI port mapping is mentioned.

Also, do you anticipate any modifications in host driver (like setting up CSI registers to use different VCs) to get my system working?

Regards,
Rejeesh

Hi Rejeesh
Why do you need virtual channel if VC0/VC1 transfer one by one sequentially? One PPA is enough if these two streams are one after one sequentially.

Hi Shane,

Why do you need virtual channel if VC0/VC1 transfer one by one sequentially?

Sorry Shane, I did not understand this question clearly.

One PPA is enough if these two streams are one after one sequentially

  1. If we are using one PPA only, how does VI separate 2 streams?
  2. If you meant that both VC0 and VC1 can be send via PPA (CSI-A), is it possible to configure PPA (CSI-A) to receive both VC0 and VC1?

Regards,
Rejeesh

My understand of the transfer sequentially is VC0 done and VC1 starting transfer. If not I think it’s interleave. Current we didn’t implement virtual channel that is new feature for us.
What’s your HW source FPGA?

Hi Rejeesh,
do you have solved the problem? I also meet the problem.
my platform is :
2 X sensors + 2 X DS90UB913 + DS90UB964 + tx1
the DS90UB964 combine the two streams from two sensors to a source output to CSI-A on TX1.
one sensor stream using VC0, another using VC1.
but the TX1 receives only one channel stream from either VC0 or VC1 at present.
because I just used the PPA to handle these stream and don’t konw how to use the PPB to handle the stream from CSI-A port.
also I config the reg CSI_PIXEL_STREAM_B_CONTROL0_0 bit0~2 to value 0x0,which indicate the PPB source is CSI_A,
but it seem doesn’t work.

Could you check if DS90UB964 can support 4 lanes and 2 lanes output VC0 another 2 lanes output VC1, otherwise we can’t support it now.

hi shane,
thank you for your reply.
as you said, the line connect may be :
CSI_A_CLK ------- 964 CSI_CLK
CSI_A_D0~D1 ------- 964 CSI D0~D1
CSI_B_D0~D1 ------- 964 CSI D2~D3
the VC0 and VC1 share same CSI_A_CLK,right?

the DS90UB964 support 4 lanes ,but both VC0 stream and VC1 stream use 4 lanes sequentially.
does the TX1 implement the multi channels  in this case  ?

Hi,

We will be working on the VCID Support, we had another post were we were asking NVIDIA about it:

https://devtalk.nvidia.com/default/topic/1009457/tx1-i2c-csi-2-quad-camera-input/?offset=16#5210831

Have you made progress on this? I am not sure if with the documentation available is enough to get it working but will give it a try.

1 Like

Hi qianbu,

That’s not supported in TX1 now. We are evaluating to add this feature in future.

Thanks

Hi kayccc,

Is there any progress on this topic?
Does R28.2 drivers support this ?

Thanks!

Any update on this ? is this feature available on jetson nano ?