Hi,
The Xavier Series SoC Technical Reference Manual document says that the CSI camera section supports 16 virtual channels, so it is being tested by referring to the imx390 camera devicetree.
-
I tested by changing the vc-id from 0 to 15, but the vc-id value works up to 0, 1, 2, and 3, but does not work from 4 on. I think it’s because the dphy version is low, right?
-
If the dphy version is low, does 16 virtual channel support mean that 4 CSI ports and 4 virtual channels are combined to support 16?
- This is a separate question from the virtual channel, but I want to use two csi ports, so I added channel@1 to the devicetree and uses 2lane, so I assigned the port-index to 1. Also, changing num_csi_lanes to 4 in tegra-camera-platform does not work. Is there any reference material?
/*
* Copyright (c) 2022, VSI Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/ {
host1x {
vi@15c10000 {
num-channels = <2>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
status = "okay";
ar1820_vi_in0: endpoint {
vc-id = <0>;
status = "okay";
port-index = <0>;
bus-width = <2>; // 2Lane
remote-endpoint = <&ar1820_csi_out0>;
};
};
port@1 {
reg = <1>;
status = "okay";
ar1820_vi_in1: endpoint {
vc-id = <0>;
status = "okay";
port-index = <1>;
bus-width = <2>; // 2Lane
remote-endpoint = <&ar1820_csi_out1>;
};
};
};
};
nvcsi@15a00000 {
num-channels = <2>;
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
channel@0 {
reg = <0>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ar1820_csi_in0: endpoint@0 {
status = "okay";
port-index = <0>;
bus-width = <2>; // 2Lane
remote-endpoint = <&ar1820_out0>;
};
};
port@1 {
reg = <1>;
ar1820_csi_out0: endpoint@1 {
status = "okay";
remote-endpoint = <&ar1820_vi_in0>;
};
};
};
};
channel@1 {
reg = <1>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ar1820_csi_in1: endpoint@2 {
status = "okay";
port-index = <1>;
bus-width = <2>; // 2Lane
remote-endpoint = <&ar1820_out1>;
};
};
port@1 {
reg = <1>;
ar1820_csi_out1: endpoint@3 {
status = "okay";
remote-endpoint = <&ar1820_vi_in1>;
};
};
};
};
};
};
i2c@3180000 {
ar1820_a@37 {
.....
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ar1820_out0: endpoint {
vc-id = <0>;
port-index = <0>;
bus-width = <2>; // 2Lane
status = "okay";
remote-endpoint = <&ar1820_csi_in0>;
};
};
};
};
ar1820_b@36 {
.....
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ar1820_out1: endpoint {
vc-id = <0>;
port-index = <1>;
bus-width = <2>; // 2Lane
status = "okay";
remote-endpoint = <&ar1820_csi_in1>;
};
};
};
};
};
};
/ {
tegra-camera-platform {
compatible = "nvidia, tegra-camera-platform";
num_csi_lanes = <4>; // 2Lane
max_lane_speed = <1500000>;
min_bits_per_pixel = <10>;
vi_peak_byte_per_pixel = <2>;
vi_bw_margin_pct = <25>;
max_pixel_rate = <750000>;
isp_peak_byte_per_pixel = <5>;
isp_bw_margin_pct = <25>;
modules {
module0 {
badge = "ar1820_rear";
position = "rear";
orientation = "1";
status = "okay";
drivernode0 {
pcl_id = "v4l2_sensor";
devname = "ar1820 2-0037";
proc-device-tree = "/proc/device-tree/i2c@3180000/ar1820_a@37";
status = "okay";
};
};
module1 {
badge = "ar1820_front";
position = "front";
orientation = "1";
status = "okay";
drivernode0 {
pcl_id = "v4l2_sensor";
devname = "ar1820 2-0036";
proc-device-tree = "/proc/device-tree/i2c@3180000/ar1820_b@36";
status = "okay";
};
};
};
};
};