Hi forum,
I am developing my own modules using imx390, ub954 and ub953. For now I can get 8 device nodes in /dev, and I can also open 6 cameras( video0 to video5). But when I tried to open last two cameras, i2c channel cannot detect serdes and cameras.
Hardware should be working, because I also have developed 4-camera version, the camera connected to last MIPI lanes can be opened.
This is my dtsi file
i2c@3 {
imx390_g@1b {
compatible = “nvidia,imx390”;
/* I2C device address */
reg = <0x1b>;
/* V4L2 device node location */
devnode = "video6";
/* Physical dimensions of sensor */
physical_w = "3.674";
physical_h = "2.738";
sensor_model = "imx390";
/* Define any required hw resources needed by driver */
/* ie. clocks, io pins, power sources */
/* 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";*/
/* if true, delay gain setting by one frame to be in sync with exposure */
delayed_gain = "true";
mode0 { // IMX390_MODE_1920X1080
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_g";
phy_mode = "DPHY";
vc_id = "0";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "12";
csi_pixel_bit_depth = "12";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "1936";
active_h = "1100";
readout_orientation = "0";
line_length = "3300";
inherent_gain = "1";
mclk_multiplier = "25";
pix_clk_hz = "111375000";
serdes_pix_clk_hz = "833333333";
gain_factor = "10";
min_gain_val = "0"; /* dB */
max_gain_val = "300"; /* dB */
step_gain_val = "3"; /* 0.3 */
default_gain = "0";
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 = "59"; /*us, 2 lines*/
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";/* us */
embedded_metadata_height = "1";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
imx390_imx390_out6: endpoint {
vc-id = <0>;
port-index = <5>;
bus-width = <4>;
remote-endpoint = <&imx390_csi_in6>;
};
};
};
};
imx390_h@1c {
compatible = "nvidia,imx390";
/* I2C device address */
reg = <0x1c>;
/* V4L2 device node location */
devnode = "video7";
/* Physical dimensions of sensor */
physical_w = "3.674";
physical_h = "2.738";
sensor_model = "imx390";
/* Define any required hw resources needed by driver */
/* ie. clocks, io pins, power sources */
/* 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";*/
/* if true, delay gain setting by one frame to be in sync with exposure */
delayed_gain = "true";
mode0 { // IMX390_MODE_1920X1080
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_g";
phy_mode = "DPHY";
vc_id = "1";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "12";
csi_pixel_bit_depth = "12";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "1936";
active_h = "1100";
readout_orientation = "0";
line_length = "3300";
inherent_gain = "1";
mclk_multiplier = "25";
pix_clk_hz = "111375000";
serdes_pix_clk_hz = "833333333";
gain_factor = "10";
min_gain_val = "0"; /* dB */
max_gain_val = "300"; /* dB */
step_gain_val = "3"; /* 0.3 */
default_gain = "0";
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 = "59"; /*us, 2 lines*/
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";/* us */
embedded_metadata_height = "1";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
imx390_imx390_out7: endpoint {
vc-id = <1>;
port-index = <5>;
bus-width = <4>;
remote-endpoint = <&imx390_csi_in7>;
};
};
};
};
};
};
};
};
Does anyone have any ideas?
Thanks in advence.