Our current hardware design about camera is Sensor+ DS933( Ti Ser) +DS960(Ti Des).
The MIPI output of DS960 is csi0. the design as below.
DS960 output side:
The cpu csi inside use 4 lanes ( CSI2+CSI3 combine)
the picture upload in reply 1
The driver model I used is based on imx185. Finally result, I want to use 4 sensors and 4 Virtual Channel. Current I just debug for one sensor. The sensor which I uesd is auto sync,so I did not need to set the isp and sensor imager. My driver is already probe normally. In the sys debug fs ,the dev directory is also exist /dev/video0. But it can not capture one frame.I am not sure if the csi port setting is right or not. Could you help me check it ? the device tree in the attachment documents
I always have a doubt that Out hardware design use 4 lanes to pass the MIPI data.
But I did know how to bind the DS960 MIPI csi output port with xavier’s CSI2 and CSI3 port in the device tree. Fow now,we can see that the device tree only setting the csi2 port use “port-index = <2>”
My questions :
How to setting the csi3 port based on our hardware design ?
Why the /dev/video0 is not register after changed port-index value from 0 to 2 ?
Could you help me check the device again ?
In addition, We can measure the MIPI signal output of DS960 CSI port with oscilloscope.
Change the port-index make the video registered failed not reasonable for me. Please confirm it again.
Please check the trace log if capture failed after you fixed the video node problem. https://elinux.org/Jetson_TX2_Camera_BringUp
Have this command to capture.
v4l2-ctl --stream-mmap --set-ctrl bypass_mode=0 --stream-count=30 -d /dev/video0
Now,I had a little confused.Our sensor is not need to set ISP.
Based on our hardware design FDLINK ( DS90UB933+DS90UB960 )
Which driver model should I used in xavier
You can reference to imx390 for virtual channel use case.
Even you don’t need internal ISP you still can have this driver as template to modify to match your design.
thanks for your reply.
I have a question about virtual channels.In the file of tegra194-camera-imx390-a00.dtsi
There’s a piece of code about virtual channels
Base on our hardware design,combine the csi2 and csi3 as a four lanes. I has changed the “port-index = <2>” “bus-width = <4>”,But I don’t know which virtual channel ID corresponds to CSI2 and CSI3 Is there any document about it or Could you explain it for me?
For imx390 as example these two imx390 are both connect to CSI0 (CSIA) 2 lanes configure.
One imx390 output package include VCID=0 another output VCID=1.
For your case looks like not 4 lane configure? There have 4 sensors two connect ot CSI2 another two connect to CSI3 and both of them are two lane configure as imx390 reference board.
In the vi@15c10000 dts property,there is vc-id setting,I think the four should be 0 1 2 3: In the properties of nvcsi@15a00000 ,about channel@N ,the reg=,the N should be fill with which value.
About the sensor of imx390 property,it also include vc-id ,it is relate to the vc-id of vi@15c10000 ? what’s more,in the property of gmsl-link ,the “st-vc” and “vc-id” should be used which value ?
4 I had moified a four sensor dtsi file,Could you help me have a look on it ?
Current software only support two VC each port. I think the bus-width should be 2 instead of 4 and camera C/D should be set port-index = 3 like below code.
the port-index use value 2 and 3 ,I can understand,
But the VC id only use 0 and 1,Is that enough ?
Can I use any two of the 16 virtual channel IDs, or is there a corresponding relationship between the virtual channel ID and the CSI port ?
Thanks for your reply.
I still a little confused for some property.
The property which I mask “/the configure value is right or not/” is not sure.
it’s correct value. based on our 4 sensors input design.
vi@15c10000 {
num-channels = <4>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
imx390_vi_in0: endpoint {
vc-id = <2>; /*the configure value is right or not*/
port-index = <2>; /*the configure value is right or not*/
bus-width = <4>;
remote-endpoint = <&imx390_csi_out0>;
};
};
port@1 {
reg = <1>;
imx390_vi_in1: endpoint {
vc-id = <2>; /*the configure value is right or not*/
port-index = <2>; /*the configure value is right or not*/
bus-width = <4>;
remote-endpoint = <&imx390_csi_out1>;
};
};
port@2 {
reg = <2>;
imx390_vi_in2: endpoint {
vc-id = <3>; /*the configure value is right or not*/
port-index = <3>; /*the configure value is right or not*/
bus-width = <4>;
remote-endpoint = <&imx390_csi_out2>;
};
};
port@3 {
reg = <3>;
imx390_vi_in3: endpoint {
vc-id = <3>; /*the configure value is right or not*/
port-index = <3>; /*the configure value is right or not*/
bus-width = <4>;
remote-endpoint = <&imx390_csi_out3>;
};
};
};
};
nvcsi@15a00000 {
num-channels = <4>;
#address-cells = <1>;
#size-cells = <0>;
channel@0 {
reg = <0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
imx390_csi_in0: endpoint@0 {
port-index = <2>; /*the configure value is right or not*/
bus-width = <4>;
remote-endpoint = <&imx390_imx390_out0>;
};
};
port@1 {
reg = <1>;
imx390_csi_out0: endpoint@1 {
remote-endpoint = <&imx390_vi_in0>;
};
};
};
};
channel@1 {
reg = <1>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
imx390_csi_in1: endpoint@2 {
port-index = <2>; /*the configure value is right or not*/
bus-width = <4>;
remote-endpoint = <&imx390_imx390_out1>;
};
};
port@1 {
reg = <1>;
imx390_csi_out1: endpoint@3 {
remote-endpoint = <&imx390_vi_in1>;
};
};
};
};
channel@2 {
reg = <2>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
imx390_csi_in2: endpoint@4 {
port-index = <3>; /*the configure value is right or not*/
bus-width = <4>;
remote-endpoint = <&imx390_imx390_out2>;
};
};
port@1 {
reg = <1>;
imx390_csi_out2: endpoint@5 {
remote-endpoint = <&imx390_vi_in2>;
};
};
};
};
channel@3 {
reg = <3>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
imx390_csi_in3: endpoint@2 {
port-index = <3>; /*the configure value is right or not*/
bus-width = <4>;
remote-endpoint = <&imx390_imx390_out3>;
};
};
port@1 {
reg = <1>;
imx390_csi_out3: endpoint@3 {
remote-endpoint = <&imx390_vi_in3>;
};
};
};
};
};