hi,
I want to know the mapping relationship between port-index in tegra-capture-vi and port_index in nvcsi@15a00000 and tegra_sinterface in I2c device properties?
Is it a mapping like this:
tegra-capture-vi------>nvcsi@15a00000 ------->tegra_sinterface
/*
* Copyright (c) 2018-2020, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope 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/>.
*/
/ {
tegra-capture-vi {
num-channels = <8>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
status = "okay";
z_ox05b3s_96717_vi_in0: endpoint {
status = "okay";
vc-id = <0>;
port-index = <0>; /* Stream id */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_out0>;
};
};
port@1 {
reg = <1>;
status = "okay";
z_ox05b3s_96717_vi_in1: endpoint {
status = "okay";
vc-id = <2>;
port-index = <0>; /* Stream id */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_out1>;
};
};
port@2 {
reg = <2>;
status = "okay";
z_ox05b3s_96717_vi_in2: endpoint {
status = "okay";
vc-id = <0>;
port-index = <4>; /* Stream id */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_out2>;
};
};
port@3 {
reg = <3>;
status = "okay";
z_ox05b3s_96717_vi_in3: endpoint {
status = "okay";
vc-id = <2>;
port-index = <4>; /* Stream id */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_out3>;
};
};
port@4 {
reg = <4>;
status = "okay";
z_ox05b3s_96717_vi_in4: endpoint {
status = "okay";
vc-id = <0>;
port-index = <2>; /* Stream id */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_out4>;
};
};
port@5 {
reg = <5>;
status = "okay";
z_ox05b3s_96717_vi_in5: endpoint {
status = "okay";
vc-id = <2>;
port-index = <2>; /* Stream id */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_out5>;
};
};
port@6 {
reg = <6>;
status = "okay";
z_ox05b3s_96717_vi_in6: endpoint {
status = "okay";
vc-id = <0>;
port-index = <5>; /* Stream id */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_out6>;
};
};
port@7 {
reg = <7>;
status = "okay";
z_ox05b3s_96717_vi_in7: endpoint {
status = "okay";
vc-id = <2>;
port-index = <5>; /* Stream id */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_out7>;
};
};
};
};
host1x@13e00000 {
nvcsi@15a00000 {
num-channels = <8>;
#address-cells = <1>;
#size-cells = <0>;
channel@0 {
reg = <0>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
status = "okay";
z_ox05b3s_96717_csi_in0: endpoint@0 {
status = "okay";
port-index = <0>; /* CSI port */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_cam_out0>;
};
};
port@1 {
reg = <1>;
status = "okay";
z_ox05b3s_96717_csi_out0: endpoint@1 {
status = "okay";
remote-endpoint = <&z_ox05b3s_96717_vi_in0>;
};
};
};
};
channel@1 {
reg = <1>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
status = "okay";
z_ox05b3s_96717_csi_in1: endpoint@2 {
status = "okay";
port-index = <0>; /* CSI port */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_cam_out1>;
};
};
port@1 {
reg = <1>;
status = "okay";
z_ox05b3s_96717_csi_out1: endpoint@3 {
status = "okay";
remote-endpoint = <&z_ox05b3s_96717_vi_in1>;
};
};
};
};
channel@2 {
reg = <2>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
status = "okay";
z_ox05b3s_96717_csi_in2: endpoint@4 {
status = "okay";
port-index = <4>; /* CSI port */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_cam_out2>;
};
};
port@1 {
reg = <1>;
status = "okay";
z_ox05b3s_96717_csi_out2: endpoint@5 {
status = "okay";
remote-endpoint = <&z_ox05b3s_96717_vi_in2>;
};
};
};
};
channel@3 {
reg = <3>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
status = "okay";
z_ox05b3s_96717_csi_in3: endpoint@6 {
status = "okay";
port-index = <4>; /* CSI port */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_cam_out3>;
};
};
port@1 {
reg = <1>;
status = "okay";
z_ox05b3s_96717_csi_out3: endpoint@7 {
status = "okay";
remote-endpoint = <&z_ox05b3s_96717_vi_in3>;
};
};
};
};
channel@4 {
reg = <4>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
status = "okay";
z_ox05b3s_96717_csi_in4: endpoint@8 {
status = "okay";
port-index = <2>; /* CSI port */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_cam_out4>;
};
};
port@1 {
reg = <1>;
status = "okay";
z_ox05b3s_96717_csi_out4: endpoint@9 {
status = "okay";
remote-endpoint = <&z_ox05b3s_96717_vi_in4>;
};
};
};
};
channel@5 {
reg = <5>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
status = "okay";
z_ox05b3s_96717_csi_in5: endpoint@10 {
status = "okay";
port-index = <2>; /* CSI port */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_cam_out5>;
};
};
port@1 {
reg = <1>;
status = "okay";
z_ox05b3s_96717_csi_out5: endpoint@11 {
status = "okay";
remote-endpoint = <&z_ox05b3s_96717_vi_in5>;
};
};
};
};
channel@6 {
reg = <6>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
status = "okay";
z_ox05b3s_96717_csi_in6: endpoint@12 {
status = "okay";
port-index = <6>; /* CSI port */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_cam_out6>;
};
};
port@1 {
reg = <1>;
status = "okay";
z_ox05b3s_96717_csi_out6: endpoint@13 {
status = "okay";
remote-endpoint = <&z_ox05b3s_96717_vi_in6>;
};
};
};
};
channel@7 {
reg = <7>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
status = "okay";
z_ox05b3s_96717_csi_in7: endpoint@14 {
status = "okay";
port-index = <6>; /* CSI port */
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_cam_out7>;
};
};
port@1 {
reg = <1>;
status = "okay";
z_ox05b3s_96717_csi_out7: endpoint@15 {
status = "okay";
remote-endpoint = <&z_ox05b3s_96717_vi_in7>;
};
};
};
};
};
};
i2c@3180000 {
tca9546@70 {
i2c@0 {
ox05b_a@30 {
status = "okay";
compatible = "allen,z_ox05b3s_96717";
reg = <0x30>;
/* Physical dimensions of sensor unit:mm*/
physical_w = "15";
physical_h = "12.5";
sensor_model ="z_ox05b3s_96717";
/* Defines number of frames to be dropped by driver internally after applying */
/* sensor crop settings. Some sensors send corrupt frames after applying */
/* crop co-ordinates */
post_crop_frame_drop = "0";
/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
use_decibel_gain = "true";
/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = "true";
/**
* A modeX node is required to support v4l2 driver
* implementation with NVIDIA camera software stack
*
* mclk_khz = "";
* Standard MIPI driving clock, typically 24MHz
*
* num_lanes = "";
* Number of lane channels sensor is programmed to output
*
* tegra_sinterface = "";
* The base tegra serial interface lanes are connected to
*
* vc_id = "";
* The virtual channel id of the sensor.
*
* discontinuous_clk = "";
* The sensor is programmed to use a discontinuous clock on MIPI lanes
*
* dpcm_enable = "true";
* The sensor is programmed to use a DPCM modes
*
* cil_settletime = "";
* MIPI lane settle time value.
* A "0" value attempts to autocalibrate based on mclk_khz and pix_clk_hz
*
* active_w = "";
* Pixel active region width
*
* active_h = "";
* Pixel active region height
*
* dynamic_pixel_bit_depth = "";
* sensor dynamic bit depth for sensor mode
*
* csi_pixel_bit_depth = "";
* sensor output bit depth for sensor mode
*
* mode_type="";
* Sensor mode type, For eg: yuv, Rgb, bayer, bayer_wdr_pwl
*
* pixel_phase="";
* Pixel phase for sensor mode, For eg: rggb, vyuy, rgb888
*
* readout_orientation = "0";
* Based on camera module orientation.
* Only change readout_orientation if you specifically
* Program a different readout order for this mode
*
* line_length = ""; 2608*1960
* Pixel line length (width) for sensor mode.
* This is used to calibrate features in our camera stack.
*
* pix_clk_hz = "";
* Sensor pixel clock used for calculations like exposure and framerate
*
*
*serdes_pix_clk_hz = (deserializer output data rate in hertz) * (number of CSI lanes) / (bits per pixel)
*
* inherent_gain = "";
* Gain obtained inherently from mode (ie. pixel binning)
*
* min_gain_val = ""; (floor to 6 decimal places)
* max_gain_val = ""; (floor to 6 decimal places)
* Gain limits for mode
* if use_decibel_gain = "true", please set the gain as decibel
*
* min_exp_time = ""; (ceil to integer)
* max_exp_time = ""; (ceil to integer)
* Exposure Time limits for mode (us)
*
*
* min_hdr_ratio = "";
* max_hdr_ratio = "";
* HDR Ratio limits for mode
*
* min_framerate = "";
* max_framerate = "";
* Framerate limits for mode (fps)
*
* embedded_metadata_height = "";
* Sensor embedded metadata height in units of rows.
* If sensor does not support embedded metadata value should be 0.
*/
mode0 {/*mode ox05b_MODE_2592X1944_60FPS*/
mclk_khz = "24000";
num_lanes = "2";
tegra_sinterface = "serial_a";
phy_mode = "DPHY";
vc_id = "0";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "10";
csi_pixel_bit_depth = "10";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "2592";
active_h = "1944";
readout_orientation = "0";
line_length = "2592";
inherent_gain = "1";
mclk_multiplier = "6.39";
pix_clk_hz = "306700800";
serdes_pix_clk_hz = "960000000"; /* 1500Mbps*4/10 */
gain_factor = "10";
min_gain_val = "0"; /* dB */
max_gain_val = "420"; /* dB */
step_gain_val = "3"; /* 0.3 */
default_gain = "150";
min_hdr_ratio = "1";
max_hdr_ratio = "1";
framerate_factor = "1000000";
min_framerate = "60000000";
max_framerate = "60000000";
step_framerate = "1";
default_framerate = "60000000";
exposure_factor = "1000000";
min_exp_time = "59"; /*us*/
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";/* us */
embedded_metadata_height = "0";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
z_ox05b3s_96717_cam_out0: endpoint {
vc-id = <0>;
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_in0>;
};
};
};
gmsl-link {
num-ser-lanes = <4>;
streams = "raw10";
};
};
ox05b_b@31 {
status = "okay";
compatible = "allen,z_ox05b3s_96717";
reg = <0x31>;
/* Physical dimensions of sensor unit:mm*/
physical_w = "15";
physical_h = "12.5";
sensor_model ="z_ox05b3s_96717";
/* Defines number of frames to be dropped by driver internally after applying */
/* sensor crop settings. Some sensors send corrupt frames after applying */
/* crop co-ordinates */
post_crop_frame_drop = "0";
/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
use_decibel_gain = "true";
/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = "true";
mode0 {/*mode ox05b_MODE_2592X1944_60FPS*/
mclk_khz = "24000";
num_lanes = "2";
tegra_sinterface = "serial_a";
phy_mode = "DPHY";
vc_id = "0";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "10";
csi_pixel_bit_depth = "10";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "2592";
active_h = "1944";
readout_orientation = "0";
line_length = "2592";
inherent_gain = "1";
mclk_multiplier = "6.39";
pix_clk_hz = "306700800";
serdes_pix_clk_hz = "960000000"; /* 1500Mbps*4/10 */
gain_factor = "10";
min_gain_val = "0"; /* dB */
max_gain_val = "420"; /* dB */
step_gain_val = "3"; /* 0.3 */
default_gain = "150";
min_hdr_ratio = "1";
max_hdr_ratio = "1";
framerate_factor = "1000000";
min_framerate = "60000000";
max_framerate = "60000000";
step_framerate = "1";
default_framerate = "60000000";
exposure_factor = "1000000";
min_exp_time = "59"; /*us*/
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";/* us */
embedded_metadata_height = "0";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
z_ox05b3s_96717_cam_out1: endpoint {
vc-id = <2>;
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_in1>;
};
};
};
gmsl-link {
num-ser-lanes = <4>;
streams = "raw10";
};
};
ox05b_c@32 {
status = "okay";
compatible = "allen,z_ox05b3s_96717";
reg = <0x32>;
/* Physical dimensions of sensor unit:mm*/
physical_w = "15";
physical_h = "12.5";
sensor_model ="z_ox05b3s_96717";
/* Defines number of frames to be dropped by driver internally after applying */
/* sensor crop settings. Some sensors send corrupt frames after applying */
/* crop co-ordinates */
post_crop_frame_drop = "0";
/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
use_decibel_gain = "true";
/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = "true";
mode0 {/*mode ox05b_MODE_2592X1944_60FPS*/
mclk_khz = "24000";
num_lanes = "2";
tegra_sinterface = "serial_e";
phy_mode = "DPHY";
vc_id = "0";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "10";
csi_pixel_bit_depth = "10";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "2592";
active_h = "1944";
readout_orientation = "0";
line_length = "2592";
inherent_gain = "1";
mclk_multiplier = "6.39";
pix_clk_hz = "306700800";
serdes_pix_clk_hz = "960000000"; /* 1500Mbps*4/10 */
gain_factor = "10";
min_gain_val = "0"; /* dB */
max_gain_val = "420"; /* dB */
step_gain_val = "3"; /* 0.3 */
default_gain = "150";
min_hdr_ratio = "1";
max_hdr_ratio = "1";
framerate_factor = "1000000";
min_framerate = "60000000";
max_framerate = "60000000";
step_framerate = "1";
default_framerate = "60000000";
exposure_factor = "1000000";
min_exp_time = "59"; /*us*/
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";/* us */
embedded_metadata_height = "0";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
z_ox05b3s_96717_cam_out2: endpoint {
vc-id = <0>;
port-index = <4>;
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_in2>;
};
};
};
gmsl-link {
num-ser-lanes = <4>;
streams = "raw10";
};
};
ox05b_d@33 {
status = "okay";
compatible = "allen,z_ox05b3s_96717";
reg = <0x33>;
/* Physical dimensions of sensor unit:mm*/
physical_w = "15";
physical_h = "12.5";
sensor_model ="z_ox05b3s_96717";
/* Defines number of frames to be dropped by driver internally after applying */
/* sensor crop settings. Some sensors send corrupt frames after applying */
/* crop co-ordinates */
post_crop_frame_drop = "0";
/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
use_decibel_gain = "true";
/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = "true";
mode0 {/*mode ox05b_MODE_2592X1944_60FPS*/
mclk_khz = "24000";
num_lanes = "2";
tegra_sinterface = "serial_e";
phy_mode = "DPHY";
vc_id = "0";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "10";
csi_pixel_bit_depth = "10";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "2592";
active_h = "1944";
readout_orientation = "0";
line_length = "2592";
inherent_gain = "1";
mclk_multiplier = "6.39";
pix_clk_hz = "306700800";
serdes_pix_clk_hz = "960000000"; /* 1500Mbps*4/10 */
gain_factor = "10";
min_gain_val = "0"; /* dB */
max_gain_val = "420"; /* dB */
step_gain_val = "3"; /* 0.3 */
default_gain = "150";
min_hdr_ratio = "1";
max_hdr_ratio = "1";
framerate_factor = "1000000";
min_framerate = "60000000";
max_framerate = "60000000";
step_framerate = "1";
default_framerate = "60000000";
exposure_factor = "1000000";
min_exp_time = "59"; /*us*/
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";/* us */
embedded_metadata_height = "0";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
z_ox05b3s_96717_cam_out3: endpoint {
vc-id = <2>;
port-index = <4>;
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_in3>;
};
};
};
gmsl-link {
num-ser-lanes = <4>;
streams = "raw10";
};
};
};
i2c@1 {
ox05b_a@30 {
status = "okay";
compatible = "allen,z_ox05b3s_96717";
reg = <0x30>;
/* Physical dimensions of sensor unit:mm*/
physical_w = "15";
physical_h = "12.5";
sensor_model ="z_ox05b3s_96717";
/* Defines number of frames to be dropped by driver internally after applying */
/* sensor crop settings. Some sensors send corrupt frames after applying */
/* crop co-ordinates */
post_crop_frame_drop = "0";
/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
use_decibel_gain = "true";
/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = "true";
mode0 {/*mode ox05b_MODE_2592X1944_60FPS*/
mclk_khz = "24000";
num_lanes = "2";
tegra_sinterface = "serial_c";
phy_mode = "DPHY";
vc_id = "0";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "10";
csi_pixel_bit_depth = "10";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "2592";
active_h = "1944";
readout_orientation = "0";
line_length = "2592";
inherent_gain = "1";
mclk_multiplier = "6.39";
pix_clk_hz = "306700800";
serdes_pix_clk_hz = "960000000"; /* 1500Mbps*4/10 */
gain_factor = "10";
min_gain_val = "0"; /* dB */
max_gain_val = "420"; /* dB */
step_gain_val = "3"; /* 0.3 */
default_gain = "150";
min_hdr_ratio = "1";
max_hdr_ratio = "1";
framerate_factor = "1000000";
min_framerate = "60000000";
max_framerate = "60000000";
step_framerate = "1";
default_framerate = "60000000";
exposure_factor = "1000000";
min_exp_time = "59"; /*us*/
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";/* us */
embedded_metadata_height = "0";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
z_ox05b3s_96717_cam_out4: endpoint {
vc-id = <0>;
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_in4>;
};
};
};
gmsl-link {
num-ser-lanes = <4>;
streams = "raw10";
};
};
ox05b_b@31 {
status = "okay";
compatible = "allen,z_ox05b3s_96717";
reg = <0x31>;
/* Physical dimensions of sensor unit:mm*/
physical_w = "15";
physical_h = "12.5";
sensor_model ="z_ox05b3s_96717";
/* Defines number of frames to be dropped by driver internally after applying */
/* sensor crop settings. Some sensors send corrupt frames after applying */
/* crop co-ordinates */
post_crop_frame_drop = "0";
/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
use_decibel_gain = "true";
/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = "true";
mode0 {/*mode ox05b_MODE_2592X1944_60FPS*/
mclk_khz = "24000";
num_lanes = "2";
tegra_sinterface = "serial_c";
phy_mode = "DPHY";
vc_id = "0";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "10";
csi_pixel_bit_depth = "10";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "2592";
active_h = "1944";
readout_orientation = "0";
line_length = "2592";
inherent_gain = "1";
mclk_multiplier = "6.39";
pix_clk_hz = "306700800";
serdes_pix_clk_hz = "960000000"; /* 1500Mbps*4/10 */
gain_factor = "10";
min_gain_val = "0"; /* dB */
max_gain_val = "420"; /* dB */
step_gain_val = "3"; /* 0.3 */
default_gain = "150";
min_hdr_ratio = "1";
max_hdr_ratio = "1";
framerate_factor = "1000000";
min_framerate = "60000000";
max_framerate = "60000000";
step_framerate = "1";
default_framerate = "60000000";
exposure_factor = "1000000";
min_exp_time = "59"; /*us*/
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";/* us */
embedded_metadata_height = "0";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
z_ox05b3s_96717_cam_out5: endpoint {
vc-id = <2>;
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_in5>;
};
};
};
gmsl-link {
num-ser-lanes = <4>;
streams = "raw10";
};
};
ox05b_c@32 {
status = "okay";
compatible = "allen,z_ox05b3s_96717";
reg = <0x32>;
/* Physical dimensions of sensor unit:mm*/
physical_w = "15";
physical_h = "12.5";
sensor_model ="z_ox05b3s_96717";
/* Defines number of frames to be dropped by driver internally after applying */
/* sensor crop settings. Some sensors send corrupt frames after applying */
/* crop co-ordinates */
post_crop_frame_drop = "0";
/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
use_decibel_gain = "true";
/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = "true";
mode0 {/*mode ox05b_MODE_2592X1944_60FPS*/
mclk_khz = "24000";
num_lanes = "2";
tegra_sinterface = "serial_g";
phy_mode = "DPHY";
vc_id = "0";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "10";
csi_pixel_bit_depth = "10";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "2592";
active_h = "1944";
readout_orientation = "0";
line_length = "2592";
inherent_gain = "1";
mclk_multiplier = "6.39";
pix_clk_hz = "306700800";
serdes_pix_clk_hz = "960000000"; /* 1500Mbps*4/10 */
gain_factor = "10";
min_gain_val = "0"; /* dB */
max_gain_val = "420"; /* dB */
step_gain_val = "3"; /* 0.3 */
default_gain = "150";
min_hdr_ratio = "1";
max_hdr_ratio = "1";
framerate_factor = "1000000";
min_framerate = "60000000";
max_framerate = "60000000";
step_framerate = "1";
default_framerate = "60000000";
exposure_factor = "1000000";
min_exp_time = "59"; /*us*/
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";/* us */
embedded_metadata_height = "0";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
z_ox05b3s_96717_cam_out6: endpoint {
vc-id = <0>;
port-index = <6>;
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_in6>;
};
};
};
gmsl-link {
num-ser-lanes = <4>;
streams = "raw10";
};
};
ox05b_d@33 {
status = "okay";
compatible = "allen,z_ox05b3s_96717";
reg = <0x33>;
/* Physical dimensions of sensor unit:mm*/
physical_w = "15";
physical_h = "12.5";
sensor_model ="z_ox05b3s_96717";
/* Defines number of frames to be dropped by driver internally after applying */
/* sensor crop settings. Some sensors send corrupt frames after applying */
/* crop co-ordinates */
post_crop_frame_drop = "0";
/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
use_decibel_gain = "true";
/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = "true";
mode0 {/*mode ox05b_MODE_2592X1944_60FPS*/
mclk_khz = "24000";
num_lanes = "2";
tegra_sinterface = "serial_g";
phy_mode = "DPHY";
vc_id = "0";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "10";
csi_pixel_bit_depth = "10";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "2592";
active_h = "1944";
readout_orientation = "0";
line_length = "2592";
inherent_gain = "1";
mclk_multiplier = "6.39";
pix_clk_hz = "306700800";
serdes_pix_clk_hz = "960000000"; /* 1500Mbps*4/10 */
gain_factor = "10";
min_gain_val = "0"; /* dB */
max_gain_val = "420"; /* dB */
step_gain_val = "3"; /* 0.3 */
default_gain = "150";
min_hdr_ratio = "1";
max_hdr_ratio = "1";
framerate_factor = "1000000";
min_framerate = "60000000";
max_framerate = "60000000";
step_framerate = "1";
default_framerate = "60000000";
exposure_factor = "1000000";
min_exp_time = "59"; /*us*/
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";/* us */
embedded_metadata_height = "0";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
z_ox05b3s_96717_cam_out7: endpoint {
vc-id = <2>;
port-index = <6>;
bus-width = <4>;
remote-endpoint = <&z_ox05b3s_96717_csi_in7>;
};
};
};
gmsl-link {
num-ser-lanes = <4>;
streams = "raw10";
};
};
};
};
};
};
/ {
tegra-camera-platform {
compatible = "nvidia, tegra-camera-platform";
/**
* Physical settings to calculate max ISO BW
*
* num_csi_lanes = <>;
* Total number of CSI lanes when all cameras are active
*
* max_lane_speed = <>;
* Max lane speed in Kbit/s
*
* min_bits_per_pixel = <>;
* Min bits per pixel
*
* vi_peak_byte_per_pixel = <>;
* Max byte per pixel for the VI ISO case
*
* vi_bw_margin_pct = <>;
* Vi bandwidth margin in percentage
*
* max_pixel_rate = <>;
* Max pixel rate in Kpixel/s for the ISP ISO case
*
* isp_peak_byte_per_pixel = <>;
* Max byte per pixel for the ISP ISO case
*
* isp_bw_margin_pct = <>;
* Isp bandwidth margin in percentage
*/
num_csi_lanes = <4>;
max_lane_speed = <15000000>;
min_bits_per_pixel = <10>;
vi_peak_byte_per_pixel = <2>;
vi_bw_margin_pct = <25>;
isp_peak_byte_per_pixel = <5>;
isp_bw_margin_pct = <25>;
/**
* The general guideline for naming badge_info contains 3 parts, and is as follows,
* The first part is the camera_board_id for the module; if the module is in a FFD
* platform, then use the platform name for this part.
* The second part contains the position of the module, ex. "rear" or "front".
* The third part contains the last 6 characters of a part number which is found
* in the module's specsheet from the vender.
*/
modules {
module0 {
status="okay";
badge = "ox05b_bottomleft";
position = "bottomleft";
orientation = "1";
drivernode0 {
status="okay";
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "ox05b 30-0030";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@0/ox05b_a@30";
};
};
module1 {
status="okay";
badge = "ox05b_centerleft";
position = "centerleft";
orientation = "1";
drivernode0 {
status="okay";
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "ox05b 30-0031";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@0/ox05b_b@31";
};
};
module2 {
status="okay";
badge = "ox05b_centerright";
position = "centerright";
orientation = "1";
drivernode0 {
status="okay";
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "ox05b 30-0032";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@0/ox05b_c@32";
};
};
module3 {
status="okay";
badge = "ox05b_topleft";
position = "topleft";
orientation = "1";
drivernode0 {
status="okay";
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "ox05b 30-0033";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@0/ox05b_d@33";
};
};
module4 {
status="okay";
badge = "ox05b_bottomright";
position = "bottomright";
orientation = "1";
drivernode0 {
status="okay";
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "ox05b 30-0030";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@1/ox05b_a@30";
};
};
module5 {
status="okay";
badge = "ox05b_topright";
position = "topright";
orientation = "1";
drivernode0 {
status="okay";
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "ox05b 30-0031";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@1/ox05b_b@31";
};
};
module6 {
status="okay";
badge = "ox05b_bottomcenter";
position = "bottomcenter";
orientation = "1";
drivernode0 {
status="okay";
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "ox05b 30-0032";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@1/ox05b_c@32";
};
};
module7 {
status="okay";
badge = "ox05b_topcenter";
position = "topcenter";
orientation = "1";
drivernode0 {
status="okay";
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "ox05b 30-0033";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@1/ox05b_d@33";
};
};
};
};
};
I used a camera to test each of agx orin’s eight gmsl ports in sequence. The video stream can be captured and displayed through the ox05b_a@30&ox05b_b@31 and i2c@1 ox05b_a@30&ox05b_b@31 interfaces under i2c@0. However, interfaces ox05b_c@32&ox05b_d@33 under i2c@0 and ox05b_c@32&ox05b_d@33 under i2c@1 can display a transient video stream, and then the dqueue buffer fail message is displayed, and the video stream is aborted.
Therefore, please check whether the corresponding device tree configuration is correct. Thanks
the trace is as follow(ox05b_c@32 on i2c@1): allen_1107.txt (4.5 MB)