ORIN NX – Camera driver bring‑up fails despite active MIPI lanes (MAX96716 + RAW12)

ORIN NX – Camera driver bring‑up fails despite active MIPI lanes (MAX96716 + RAW12)
11maomengda
36m
Hi NVIDIA team,
We are currently performing camera driver development on Jetson Orin NX (JetPack 6.x)​ and are facing a streaming failure during the bring‑up stage.

  1. Hardware topology
    Image Sensor

    Serializer (GMSL2)

    MAX96716 Deserializer

    Orin NX CSI PHY1 / CIL0(CSI2/3 4lane)

  2. Capture command
    v4l2-ctl -V
    –set-fmt-video=width=2064,height=1552
    –set-ctrl bypass_mode=0,sensor_mode=0
    –stream-mmap
    -d /dev/video4

  3. Kernel traces (/sys/kernel/debug/tracing/trace)
    kworker/4:1-56 [004] … 275.820290: rtcpu_nvcsi_intr: tstamp:9388234033 class:GLOBAL type:PHY_INTR0 phy:1 cil:0 st:0 vc:0 status:0x10000000
    kworker/4:1-56 [004] … 275.820290: rtcpu_nvcsi_intr: tstamp:9388234750 class:GLOBAL type:PHY_INTR0 phy:1 cil:0 st:0 vc:0 status:0x10000000

a. Does status:0x10000000indicate a normal PHY condition, or does it imply a CSI protocol issue?
b. With active MIPI lanes and PHY interrupts, what are the most common reasons for VI failing to dequeue frames?
c. Are there any known caveats for MAX96724 + Orin NX + JetPack 6.x​ during driver bring‑up?
d.Which additional debug traces (VI / NVCSI / RTCPU) do you recommend enabling?
Any guidance would be greatly appreciated.
Thanks!

  1. my dts
    // SPDX-License-Identifier: GPL-2.0-only
    // SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.

/dts-v1/;
/plugin/;

define CAM1_PWDN TEGRA234_MAIN_GPIO(AC, 0)

define IMU_INT1 TEGRA234_AON_GPIO(GG, 0)
define IMU_INT3 TEGRA234_AON_GPIO(CC, 2)
define VB1940_TRIGER TEGRA234_MAIN_GPIO(H, 0)

include
include
include

/ {
overlay-name = “Jetson Camera SM3S23NQx2 SDT2NNO1x2 module”;
jetson-header-name = “Jetson 24pin CSI Connector”;
compatible = JETSON_COMPATIBLE_P3768;

fragment@0 {
target-path = “/”;
overlay {
tegra-capture-vi {
num-channels = ;
ports {
#address-cells = ;
#size-cells = ;
port@0 {
reg = ;
jetson_vi_in0: endpoint {
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
port@1 {
reg = ;
jetson_vi_in1: endpoint {
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
port@2 {
reg = ;
jetson_vi_in2: endpoint {
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
port@3 {
reg = ;
jetson_vi_in3: endpoint {
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
port@4 {
reg = ;
jetson_vi_in4: endpoint {
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
port@5 {
reg = ;
jetson_vi_in5: endpoint {
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
};
};
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 = ;
    max_lane_speed = ;
    min_bits_per_pixel = ;
    vi_peak_byte_per_pixel = ;
    vi_bw_margin_pct = ;
    max_pixel_rate = ;
    isp_peak_byte_per_pixel = ;
    isp_bw_margin_pct = ;
    /
    *
  • 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 vendor.
    */
    modules {
    module0 {
    status = “okay”;
    badge = “cam0_bottomleft”;
    position = “bottomleft”;
    orientation = “1”;
    drivernode0 {
    status = “okay”;
    pcl_id = “v4l2_sensor”;
    sysfs-device-tree = “/sys/firmware/devicetree/base/bus@0/i2c@3160000/cam_0@20”;
    };
    };
    module1 {
    status = “okay”;
    badge = “cam1_bottomright”;
    position = “bottomright”;
    orientation = “1”;
    drivernode0 {
    status = “okay”;
    pcl_id = “v4l2_sensor”;
    sysfs-device-tree = “/sys/firmware/devicetree/base/bus@0/i2c@3160000/cam_1@21”;
    };
    };
    module2 {
    status = “okay”;
    badge = “cam2_centerleft”;
    position = “centerleft”;
    orientation = “1”;
    drivernode0 {
    status = “okay”;
    pcl_id = “v4l2_sensor”;
    sysfs-device-tree = “/sys/firmware/devicetree/base/bus@0/i2c@3160000/cam_2@22”;
    };
    };
    module3 {
    status = “okay”;
    badge = “cam3_centerright”;
    position = “centerright”;
    orientation = “1”;
    drivernode0 {
    status = “okay”;
    pcl_id = “v4l2_sensor”;
    sysfs-device-tree = “/sys/firmware/devicetree/base/bus@0/i2c@3160000/cam_3@23”;
    };
    };
    module4 {
    status = “okay”;
    badge = “cam4_topleft”;
    position = “topleft”;
    orientation = “1”;
    drivernode0 {
    status = “okay”;
    pcl_id = “v4l2_sensor”;
    sysfs-device-tree =“/sys/firmware/devicetree/base/bus@0/i2c@3160000/cam_4@24”;
    };
    };
    module5 {
    status = “okay”;
    badge = “cam5_topright”;
    position = “topright”;
    orientation = “1”;
    drivernode0 {
    status = “okay”;
    pcl_id = “v4l2_sensor”;
    sysfs-device-tree =“/sys/firmware/devicetree/base/bus@0/i2c@3160000/cam_5@25”;
    };
    };
    };
    };
    bus@0 {
    host1x@13e00000 {
    nvcsi@15a00000 {
    num-channels = ;
    #address-cells = ;
    #size-cells = ;
    status = “okay”;
    channel@0 {
    reg = ;
    status = “okay”;
    ports {
    #address-cells = ;
    #size-cells = ;
    status = “okay”;
    port@0 {
    reg = ;
    status = “okay”;
    jetson_csi_in0: endpoint@0 {
    status = “okay”;
    port-index = ;
    bus-width = ;
    remote-endpoint = ;
    };
    };
    port@1 {
    reg = ;
    status = “okay”;
    jetson_csi_out0: endpoint@1 {
    status = “okay”;
    remote-endpoint = ;
    };
    };
    };
    };
    channel@1 {
    reg = ;
    status = “okay”;
    ports {
    #address-cells = ;
    #size-cells = ;
    status = “okay”;
    port@0 {
    reg = ;
    status = “okay”;
    jetson_csi_in1: endpoint@2 {
    status = “okay”;
    port-index = ;
    bus-width = ;
    remote-endpoint = ;
    };
    };
    port@1 {
    reg = ;
    status = “okay”;
    jetson_csi_out1: endpoint@3 {
    status = “okay”;
    remote-endpoint = ;
    };
    };
    };
    };
    channel@2 {
    reg = ;
    status = “okay”;
    ports {
    #address-cells = ;
    #size-cells = ;
    status = “okay”;
    port@0 {
    reg = ;
    status = “okay”;
    jetson_csi_in2: endpoint@4 {
    status = “okay”;
    port-index = ;
    bus-width = ;
    remote-endpoint = ;
    };
    };
    port@1 {
    status = “okay”;
    reg = ;
    jetson_csi_out2: endpoint@5 {
    status = “okay”;
    remote-endpoint = ;
    };
    };
    };
    };
    channel@3 {
    reg = ;
    status = “okay”;
    ports {
    #address-cells = ;
    #size-cells = ;
    status = “okay”;
    port@0 {
    reg = ;
    status = “okay”;
    jetson_csi_in3: endpoint@6 {
    status = “okay”;
    port-index = ;
    bus-width = ;
    remote-endpoint = ;
    };
    };
    port@1 {
    reg = ;
    status = “okay”;
    jetson_csi_out3: endpoint@7 {
    status = “okay”;
    remote-endpoint = ;
    };
    };
    };
    };
    channel@4 {
    reg = ;
    status = “okay”;
    ports {
    #address-cells = ;
    #size-cells = ;
    status = “okay”;
    port@0 {
    reg = ;
    status = “okay”;
    jetson_csi_in4: endpoint@8 {
    status = “okay”;
    port-index = ;
    bus-width = ;
    remote-endpoint = ;
    };
    };
    port@1 {
    reg = ;
    status = “okay”;
    jetson_csi_out4: endpoint@9 {
    status = “okay”;
    remote-endpoint = ;
    };
    };
    };
    };
    channel@5 {
    reg = ;
    status = “okay”;
    ports {
    #address-cells = ;
    #size-cells = ;
    status = “okay”;
    port@0 {
    reg = ;
    status = “okay”;
    jetson_csi_in5: endpoint@10 {
    status = “okay”;
    port-index = ;
    bus-width = ;
    remote-endpoint = ;
    };
    };
    port@1 {
    reg = ;
    status = “okay”;
    jetson_csi_out5: endpoint@11 {
    status = “okay”;
    remote-endpoint = ;
    };
    };
    };
    };
    };
    };
    i2c@3160000 {
    bmi088@70 {
    compatible = “bmi,bmi088”;
    accel_i2c_addr = ;
    status = “okay”;
    reg = ;
    accel_irq-gpios = ;
    gyro_irq-gpios = ;
    triger-gpios = ;
    accel_matrix = [01 00 00 00 01 00 00 00 01];
    gyro_matrix = [01 00 00 00 01 00 00 00 01];
    timestamps = , ;
    timestamp-names = “accelerometer”, “gyroscope”;
    };
    bmi08a@18 {
    compatible = “bmi08xa”;
    status = “okay”;
    reg = ;
    };
    bmi08g@68 {
    compatible = “bmi08xg”;
    status = “okay”;
    reg = ;
    };
    max96712_0@4e {
    status = “okay”;
    compatible = “nvidia,max96712_0”;
    reg = ;
    };
    max96712_1@d4 {
    status = “okay”;
    compatible = “nvidia,max96712_1”;
    reg = ;
    };
    cam_5@25 {
    status = “okay”;
    compatible = “sensing,sgx-raw-gmsl2-5”;
    reg = ;
    def_addr = ;
    devnode = “video5”;

/* Physical dimensions of sensor */
physical_w = “15.0”;
physical_h = “12.5”;

sensor_model =“sgx-raw-gmsl2”;

/* 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 = “false”;

/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = “true”;

clocks = ,
;
clock-names = “extperiph1”, “pllp_grtba”;
mclk = “extperiph1”;
der_id = ;//
reset-gpios = ;

mode0 {/mode 2064x1552@30fps/
status = “okay”;
mclk_khz = “24000”;
num_lanes = “4”;
tegra_sinterface = “serial_c”;
phy_mode = “DPHY”;
vc_id = “1”;
discontinuous_clk = “no”;
dpcm_enable = “false”;
cil_settletime = “0”;
lane_polarity = “0”;
dynamic_pixel_bit_depth = “12”;
csi_pixel_bit_depth = “12”;
mode_type = “bayer”;
pixel_phase = “rggb”;

active_w = “2064”;
active_h = “1552”;
readout_orientation = “0”;
line_length = “2400”;
inherent_gain = “1”;
pix_clk_hz = “240000000”;
serdes_pix_clk_hz = “560000000”;

gain_factor = “10”;
min_gain_val = “10”; /* 1.00x /
max_gain_val = “480”; /
22x /
step_gain_val = “5”;
default_gain = “10”; /
1.00x /
min_hdr_ratio = “1”;
max_hdr_ratio = “1”;
framerate_factor = “1000000”;
min_framerate = “30000000”;
max_framerate = “30000000”;
step_framerate = “30000000”;
default_framerate = “30000000”;
exposure_factor = “1000000”;
min_exp_time = “12”; /us, 2 lines
/
max_exp_time = “19000”;
step_exp_time = “1”;
default_exp_time = “19000”;/ us */
embedded_metadata_height = “0”;
};
ports {
#address-cells = ;
#size-cells = ;

port@0 {
reg = ;
mipi_cam_out5: endpoint {
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
};
};
cam_4@24 {
status = “okay”;
compatible = “sensing,sgx-raw-gmsl2-4”;
reg = ;
def_addr = ;
devnode = “video4”;

/* Physical dimensions of sensor */
physical_w = “15.0”;
physical_h = “12.5”;

sensor_model =“sgx-raw-gmsl2”;

/* 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 = “false”;

/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = “true”;

clocks = ,
;
clock-names = “extperiph1”, “pllp_grtba”;
mclk = “extperiph1”;
der_id = ;//
reset-gpios = ;

mode0 {/mode 2064x1552@30fps/
status = “okay”;
mclk_khz = “24000”;
num_lanes = “4”;
tegra_sinterface = “serial_c”;
phy_mode = “DPHY”;
vc_id = “0”;
discontinuous_clk = “no”;
dpcm_enable = “false”;
cil_settletime = “0”;
lane_polarity = “0”;
dynamic_pixel_bit_depth = “12”;
csi_pixel_bit_depth = “12”;
mode_type = “bayer”;
pixel_phase = “rggb”;

active_w = “2064”;
active_h = “1552”;
readout_orientation = “0”;
line_length = “2400”;
inherent_gain = “1”;
pix_clk_hz = “240000000”;
serdes_pix_clk_hz = “560000000”;

gain_factor = “10”;
min_gain_val = “10”; /* 1.00x /
max_gain_val = “480”; /
22x /
step_gain_val = “5”;
default_gain = “10”; /
1.00x /
min_hdr_ratio = “1”;
max_hdr_ratio = “1”;
framerate_factor = “1000000”;
min_framerate = “30000000”;
max_framerate = “30000000”;
step_framerate = “30000000”;
default_framerate = “30000000”;
exposure_factor = “1000000”;
min_exp_time = “12”; /us, 2 lines
/
max_exp_time = “19000”;
step_exp_time = “1”;
default_exp_time = “19000”;/ us */
embedded_metadata_height = “0”;
};
ports {
#address-cells = ;
#size-cells = ;

port@0 {
reg = ;
mipi_cam_out4: endpoint {
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
};
};
cam_3@23 {
status = “okay”;
compatible = “sensing,sgx-raw-gmsl2-3”;
reg = ;
def_addr = ;
devnode = “video3”;

/* Physical dimensions of sensor */
physical_w = “15.0”;
physical_h = “12.5”;

sensor_model =“sgx-raw-gmsl2”;

/* 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 = “false”;

/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = “true”;

clocks = ,
;
clock-names = “extperiph1”, “pllp_grtba”;
mclk = “extperiph1”;
der_id = ;//
reset-gpios = ;

mode0 {/mode 2560x1984@30fps/
status = “okay”;
mclk_khz = “24000”;
num_lanes = “4”;
tegra_sinterface = “serial_a”;
phy_mode = “DPHY”;
vc_id = “3”;
discontinuous_clk = “no”;
dpcm_enable = “false”;
cil_settletime = “0”;
lane_polarity = “6”;
dynamic_pixel_bit_depth = “16”;
csi_pixel_bit_depth = “16”;
mode_type = “yuv”;
pixel_phase = “uyvy”;

active_w = “2560”;
active_h = “1984”;
readout_orientation = “0”;
line_length = “2800”;
inherent_gain = “1”;
//mclk_multiplier = “3.01”;
pix_clk_hz = “240000000”;
serdes_pix_clk_hz = “560000000”;

gain_factor = “100”;
min_gain_val = “100”; /* dB /
max_gain_val = “400”; /
dB /
step_gain_val = “1”; /
0.1 /
default_gain = “100”;
min_hdr_ratio = “1”;
max_hdr_ratio = “1”;
framerate_factor = “1000000”;
min_framerate = “30000000”;
max_framerate = “30000000”;
step_framerate = “1”;
default_framerate = “30000000”;
exposure_factor = “1000000”;
min_exp_time = “40”; /us, 2 lines
/
max_exp_time = “10000”;
step_exp_time = “1”;
default_exp_time = “10000”;/ us */
embedded_metadata_height = “0”;
};
ports {
#address-cells = ;
#size-cells = ;

port@0 {
reg = ;
mipi_cam_out3: endpoint {
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
};
};
cam_2@22 {
status = “okay”;
compatible = “sensing,sgx-raw-gmsl2-2”;
reg = ;
def_addr = ;
devnode = “video2”;

/* Physical dimensions of sensor */
physical_w = “15.0”;
physical_h = “12.5”;

sensor_model =“sgx-raw-gmsl2”;

/* 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 = “false”;

/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = “true”;

clocks = ,
;
clock-names = “extperiph1”, “pllp_grtba”;
mclk = “extperiph1”;
der_id = ;//
reset-gpios = ;
mode0 {/mode 2560x1984@30fps/
status = “okay”;
mclk_khz = “24000”;
num_lanes = “4”;
tegra_sinterface = “serial_a”;
phy_mode = “DPHY”;
vc_id = “2”;
discontinuous_clk = “no”;
dpcm_enable = “false”;
cil_settletime = “0”;
lane_polarity = “6”;
dynamic_pixel_bit_depth = “16”;
csi_pixel_bit_depth = “16”;
mode_type = “yuv”;
pixel_phase = “uyvy”;

active_w = “2560”;
active_h = “1984”;
readout_orientation = “0”;
line_length = “2800”;
inherent_gain = “1”;
pix_clk_hz = “240000000”;
serdes_pix_clk_hz = “560000000”;

gain_factor = “100”;
min_gain_val = “100”; /* dB /
max_gain_val = “400”; /
dB /
step_gain_val = “1”; /
0.1 /
default_gain = “100”;
min_hdr_ratio = “1”;
max_hdr_ratio = “1”;
framerate_factor = “1000000”;
min_framerate = “30000000”;
max_framerate = “30000000”;
step_framerate = “1”;
default_framerate = “30000000”;
exposure_factor = “1000000”;
min_exp_time = “40”; /
4 * 8.992μs = 35.968 μs /
max_exp_time = “10000”;
step_exp_time = “1”;
default_exp_time = “10000”; /
μs */
embedded_metadata_height = “0”;
};
ports {
#address-cells = ;
#size-cells = ;

port@0 {
reg = ;
mipi_cam_out2: endpoint {
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
};
};
cam_1@21 {
status = “okay”;
compatible = “sensing,sgx-raw-gmsl2-1”;
reg = ;
def_addr = ;
devnode = “video1”;

/* Physical dimensions of sensor */
physical_w = “15.0”;
physical_h = “12.5”;

sensor_model =“sgx-raw-gmsl2”;

/* 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 = “false”;

/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = “true”;

clocks = ,
;
clock-names = “extperiph1”, “pllp_grtba”;
mclk = “extperiph1”;
der_id = ;//
reset-gpios = ;

mode0 {/mode 2064x1552@30fps/
status = “okay”;
mclk_khz = “24000”;
num_lanes = “4”;
tegra_sinterface = “serial_a”;
phy_mode = “DPHY”;
vc_id = “1”;
discontinuous_clk = “no”;
dpcm_enable = “false”;
cil_settletime = “0”;
lane_polarity = “6”;
dynamic_pixel_bit_depth = “10”;
csi_pixel_bit_depth = “10”;
mode_type = “bayer”;
pixel_phase = “rggb”;

active_w = “2064”;
active_h = “1552”;
readout_orientation = “0”;
line_length = “2400”;
inherent_gain = “1”;
pix_clk_hz = “240000000”;
serdes_pix_clk_hz = “560000000”;

gain_factor = “10”;
min_gain_val = “10”; /* 1.00x /
max_gain_val = “480”; /
22x /
step_gain_val = “5”;
default_gain = “10”; /
1.00x /
min_hdr_ratio = “1”;
max_hdr_ratio = “1”;
framerate_factor = “1000000”;
min_framerate = “30000000”;
max_framerate = “30000000”;
step_framerate = “30000000”;
default_framerate = “30000000”;
exposure_factor = “1000000”;
min_exp_time = “12”; /us, 2 lines
/
max_exp_time = “19000”;
step_exp_time = “1”;
default_exp_time = “19000”;/ us */
embedded_metadata_height = “0”;
};
ports {
#address-cells = ;
#size-cells = ;

port@0 {
reg = ;
mipi_cam_out1: endpoint {
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
};
};
cam_0@20 {
status = “okay”;
compatible = “sensing,sgx-raw-gmsl2-0”;
reg = ;
def-addr = ;
channel = ;
devnode = “video0”;

/* Physical dimensions of sensor */
physical_w = “15.0”;
physical_h = “12.5”;

sensor_model =“sgx-raw-gmsl2”;

/* 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 = “false”;

/* enable CID_SENSOR_MODE_ID for sensor modes selection */
use_sensor_mode_id = “true”;

clocks = ,
;
clock-names = “extperiph1”, “pllp_grtba”;
mclk = “extperiph1”;
der_id = ;//
reset-gpios = ;

mode0 {/mode 2064x1552@30fps/
status = “okay”;
mclk_khz = “24000”;
num_lanes = “4”;
tegra_sinterface = “serial_a”;
phy_mode = “DPHY”;
lane_polarity = “6”;
vc_id = “0”;

discontinuous_clk = “no”;
dpcm_enable = “false”;
cil_settletime = “0”;
csi_pixel_bit_depth = “12”;
mode_type = “bayer”;
pixel_phase = “bggr”;

active_w = “240”;
active_h = “4097”;
readout_orientation = “0”;
line_length = “240”;
inherent_gain = “1”;

pix_clk_hz = “74250000”;
serdes_pix_clk_hz = “375000000”;

gain_factor = “10”;
min_gain_val = “0”; /* 0dB /
max_gain_val = “300”; /
30dB /
step_gain_val = “3”; /
0.3 */
default_gain = “0”;

min_hdr_ratio = “1”;
max_hdr_ratio = “1”;

framerate_factor = “1000000”;
min_framerate = “30000000”; /* 1.5 /
max_framerate = “30000000”; /
30 */
step_framerate = “1”;
default_framerate= “30000000”;

exposure_factor = “1000000”;
min_exp_time = “30”; /* us /
max_exp_time = “660000”; /
us /
step_exp_time = “1”;
default_exp_time = “33334”;/
us */

embedded_metadata_height = “0”;
};
ports {
#address-cells = ;
#size-cells = ;
status = “okay”;
port@0 {
reg = ;
status = “okay”;
mipi_cam_out0: endpoint {
status = “okay”;
vc-id = ;
port-index = ;
bus-width = ;
remote-endpoint = ;
};
};
};
};
};
};
};
};
};

Hello @2309200691!

Based on the title and content of your topic, it looks like it may receive better visibility and feedback in a different category. We took the liberty of moving it for you.

If this was an incorrect assessment, please send me a direct message.

Disclaimer: this moderation suggestion and message were generated with AI assistance.

Why the port-index and bus-width are all blank?

Thanks

camera_overlay.txt (26.3 KB)
I’m truly sorry. This is the attachment of my device tree.

Your device tree shows 4 cameras connect to CSI-0/1 and 2 cameras connect to CSI-2/3 doesn’t like your descritption.

BTW, need add lane_polarity=6 to CSI-0/1