Hello together.,
I am currently trying to implement 8 IMX662 cameras over FPD-Link III. I am able to stream 8 streams simultaneously on mode0. Sadly this is not possible with mode1. One camera running mode1 on each CSI interface works fine, if i start a second camera on the same CSI interface an error gets printed to the nvargus-deamon log. The error I am getting from nvargus is very unclear and I am not sure how I should debug this any further.
pixel clk
Correct me if I am wrong, as far as I can tell the pixel clock values seems to be right (Nvidia docs):
L4T Version: L4T 35.5.0
SoM: Orin NX
Sensor output: 0,594 Gbps
SerDes output: 1,6 Gbps
Lanes: 4
Mode0
BPP: 10
pix_clk_hz = 0,594 * 10⁹ / 10 * 4
= 237600000
serdes_pix_clk_hz = 1,6 * 10⁹ / 10 * 4
= 640000000
Mode1
BPP: 12
pix_clk_hz = 0,594 * 10⁹ / 12 * 4
= 198000000
serdes_pix_clk_hz = 1,6 * 10⁹ / 12 * 4
= 533333333
(Rounded to 530000000
)
nvargus-deamon log
root@test-desktop:/home/test# /usr/sbin/nvargus-daemon
=== NVIDIA Libargus Camera Service (0.99.33)=== Listening for connections...=== gst-launch-1.0[4953]: Connection established (FFFF91A62900)=== gst-launch-1.0[4949]: Connection established (FFFF90A60900)=== gst-launch-1.0[4951]: Connection established (FFFF81FF7900)=== gst-launch-1.0[4947]: Connection established (FFFF80FF5900)=== gst-launch-1.0[4948]: Connection established (FFFF7BFFB900)=== gst-launch-1.0[4954]: Connection established (FFFF7B7FA900)=== gst-launch-1.0[4952]: Connection established (FFFF7AFF9900)=== gst-launch-1.0[4950]: Connection established (FFFF7A7F8900)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module3
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module4
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module5
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module6
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module7
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
=== gst-launch-1.0[4953]: CameraProvider initialized (0xffff8c6d7340)=== gst-launch-1.0[4949]: CameraProvider initialized (0xffff84000c20)=== gst-launch-1.0[4951]: CameraProvider initialized (0xffff7c000c20)=== gst-launch-1.0[4948]: CameraProvider initialized (0xffff70000c20)=== gst-launch-1.0[4954]: CameraProvider initialized (0xffff68000c20)=== gst-launch-1.0[4947]: CameraProvider initialized (0xffff74000c20)=== gst-launch-1.0[4950]: CameraProvider initialized (0xffff60000c20)=== gst-launch-1.0[4952]: CameraProvider initialized (0xffff6c000c20)SCF: Error BadValue: NvPHSSendThroughputHints (in src/common/CameraPowerHint.cpp, function sendCameraPowerHint(), line 56)
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
SCF: Error InvalidState: (propagating from src/services/capture/FusaCaptureViCsiHw.cpp, function openViCsi(), line 391)
SCF: Error InvalidState: (propagating from src/services/capture/CaptureServiceDeviceViCsi.cpp, function setMode(), line 470)
SCF: Error InvalidState: (propagating from src/services/capture/CaptureRecord.cpp, function updateMode(), line 467)
SCF: Error InvalidState: (propagating from src/services/capture/CaptureServiceDevice.cpp, function issueCaptures(), line 1355)
SCF: Error InvalidState: (propagating from src/common/Utils.cpp, function workerThread(), line 114)
SCF: Error InvalidState: Worker thread CaptureScheduler frameStart failed (in src/common/Utils.cpp, function workerThread(), line 133)
SCF: Error Timeout: (propagating from src/api/Buffer.cpp, function waitForUnlock(), line 644)
SCF: Error Timeout: (propagating from src/components/CaptureContainerImpl.cpp, function returnBuffer(), line 426)
SCF: Error InvalidState: Capture Scheduler not running (in src/services/capture/CaptureServiceDevice.cpp, function addNewItemToSchedule(), line 1004)
SCF: Error InvalidState: (propagating from src/services/capture/CaptureService.cpp, function addRequest(), line 411)
SCF: Error InvalidState: (propagating from src/components/stages/SensorCaptureStage.cpp, function doHandleRequest(), line 87)
SCF: Error InvalidState: (propagating from src/components/stages/OrderedStage.cpp, function doExecute(), line 158)
SCF: Error InvalidState: Sending critical error event for Session 5
(in src/api/Session.cpp, function sendErrorEvent(), line 1039)
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
SCF: Error InvalidState: Capture Scheduler not running (in src/services/capture/CaptureServiceDevice.cpp, function addNewItemToSchedule(), line 1004)
SCF: Error InvalidState: (propagating from src/services/capture/CaptureService.cpp, function addRequest(), line 411)
SCF: Error InvalidState: (propagating from src/components/stages/SensorCaptureStage.cpp, function doHandleRequest(), line 87)
SCF: Error InvalidState: (propagating from src/components/stages/OrderedStage.cpp, function doExecute(), line 158)
SCF: Error InvalidState: Sending critical error event for Session 6
(in src/api/Session.cpp, function sendErrorEvent(), line 1039)
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
SCF: Error InvalidState: Capture Scheduler not running (in src/services/capture/CaptureServiceDevice.cpp, function addNewItemToSchedule(), line 1004)
SCF: Error InvalidState: (propagating from src/services/capture/CaptureService.cpp, function addRequest(), line 411)
SCF: Error InvalidState: (propagating from src/components/stages/SensorCaptureStage.cpp, function doHandleRequest(), line 87)
SCF: Error InvalidState: (propagating from src/components/stages/OrderedStage.cpp, function doExecute(), line 158)
SCF: Error InvalidState: Sending critical error event for Session 2
(in src/api/Session.cpp, function sendErrorEvent(), line 1039)
SCF: Error InvalidState: Capture Scheduler not running (in src/services/capture/CaptureServiceDevice.cpp, function addNewItemToSchedule(), line 1004)
SCF: Error InvalidState: (propagating from src/services/capture/CaptureService.cpp, function addRequest(), line 411)
SCF: Error InvalidState: (propagating from src/components/stages/SensorCaptureStage.cpp, function doHandleRequest(), line 87)
SCF: Error InvalidState: (propagating from src/components/stages/OrderedStage.cpp, function doExecute(), line 158)
SCF: Error InvalidState: Sending critical error event for Session 7
(in src/api/Session.cpp, function sendErrorEvent(), line 1039)
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
SCF: Error InvalidState: Capture Scheduler not running (in src/services/capture/CaptureServiceDevice.cpp, function addNewItemToSchedule(), line 1004)
SCF: Error InvalidState: (propagating from src/services/capture/CaptureService.cpp, function addRequest(), line 411)
SCF: Error InvalidState: (propagating from src/components/stages/SensorCaptureStage.cpp, function doHandleRequest(), line 87)
SCF: Error InvalidState: (propagating from src/components/stages/OrderedStage.cpp, function doExecute(), line 158)
SCF: Error InvalidState: Sending critical error event for Session 0
(in src/api/Session.cpp, function sendErrorEvent(), line 1039)
SCF: Error InvalidState: 1 buffers still pending during EGLStreamProducer destruction (in src/services/gl/EGLStreamProducer.cpp, function freeBuffers(), line 300)
SCF: Error InvalidState: 1 buffers still pending during EGLStreamProducer destruction (in src/services/gl/EGLStreamProducer.cpp, function freeBuffers(), line 300)
SCF: Error InvalidState: 1 buffers still pending during EGLStreamProducer destruction (in src/services/gl/EGLStreamProducer.cpp, function freeBuffers(), line 300)
SCF: Error InvalidState: 1 buffers still pending during EGLStreamProducer destruction (in src/services/gl/EGLStreamProducer.cpp, function freeBuffers(), line 300)
SCF: Error InvalidState: 1 buffers still pending during EGLStreamProducer destruction (in src/services/gl/EGLStreamProducer.cpp, function freeBuffers(), line 300)
SCF: Error InvalidState: 2 buffers still pending during EGLStreamProducer destruction (in src/services/gl/EGLStreamProducer.cpp, function freeBuffers(), line 300)
gst script
#!/bin/bash
gst-launch-1.0 nvarguscamerasrc sensor-id=$1 sensor-mode=$2 ! 'video/x-raw(memory:NVMM), width=(int)1936, height=(int)1096, format=(string)NV12, framerate=(fraction)25/1' ! nvvidconv ! queue ! fpsdisplaysink video-sink=xvimagesink
nvargus_nvraw --lps
nvargus_nvraw version 1.14.0
Number of supported sensor entries 16
Entry Source Mode Uniquename Resolution FR BitDepth Mode
Index Index Index CSI Dyn Type
0 0 0 jakku_0_imx662 1936x1096 90 10 10 Bayer
1 0 1 jakku_0_imx662 968x 548 90 12 12 Bayer
2 1 0 jakku_0_imx662 1936x1096 90 10 10 Bayer
3 1 1 jakku_0_imx662 968x 548 90 12 12 Bayer
4 2 0 jakku_0_imx662 1936x1096 90 10 10 Bayer
5 2 1 jakku_0_imx662 968x 548 90 12 12 Bayer
6 3 0 jakku_0_imx662 1936x1096 90 10 10 Bayer
7 3 1 jakku_0_imx662 968x 548 90 12 12 Bayer
8 4 0 jakku_0_imx662 1936x1096 90 10 10 Bayer
9 4 1 jakku_0_imx662 968x 548 90 12 12 Bayer
10 5 0 jakku_0_imx662 1936x1096 90 10 10 Bayer
11 5 1 jakku_0_imx662 968x 548 90 12 12 Bayer
12 6 0 jakku_0_imx662 1936x1096 90 10 10 Bayer
13 6 1 jakku_0_imx662 968x 548 90 12 12 Bayer
14 7 0 jakku_0_imx662 1936x1096 90 10 10 Bayer
15 7 1 jakku_0_imx662 968x 548 90 12 12 Bayer
Devicetree
/ {
cam_i2cmux {
i2c@0 { // AB
sony_imx662_ab_p0: sony_imx662_p0@10 {
status = "disabled";
compatible = "sony,imx662";
/* I2C device address */
reg = <0x10>;
/* V4L2 device node location */
devnode = "video0";
/* Physical dimensions of sensor */
physical_w = "5.841";
physical_h = "7.714";
sensor_model = "imx662";
/* Other Settings */
use_decibel_gain = "false";
use_sensor_mode_id = "true";
delayed_gain = "true";
mode0 { /* IMX586_MODE_1920x1080_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_a";
vc_id = "0";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "6";
/* Data readout */
active_w = "1936";
active_h = "1096";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "10";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "237600000";
serdes_pix_clk_hz = "640000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
mode1 { /* IMX662_MODE_960x540_2x2_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_a";
vc_id = "0";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "6";
/* Data readout */
active_w = "968";
active_h = "548";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "12";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "198000000";
serdes_pix_clk_hz = "530000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
ports {
status="okay";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
status="okay";
reg = <0>;
imx662_vc_out0: endpoint {
status="okay";
vc-id = <0>;
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&cam_csi_in0>;
};
};
};
};
sony_imx662_ab_p1: sony_imx662_p1@11 {
status = "disabled";
compatible = "sony,imx662";
/* I2C device address */
reg = <0x11>;
/* V4L2 device node location */
devnode = "video1";
/* Physical dimensions of sensor */
physical_w = "5.841";
physical_h = "7.714";
sensor_model = "imx662";
/* Other Settings */
use_decibel_gain = "false";
use_sensor_mode_id = "true";
delayed_gain = "true";
mode0 { /* IMX586_MODE_1920x1080_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_a";
vc_id = "1";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "6";
/* Data readout */
active_w = "1936";
active_h = "1096";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "10";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "237600000";
serdes_pix_clk_hz = "640000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
mode1 { /* IMX662_MODE_960x540_2x2_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_a";
vc_id = "1";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "6";
/* Data readout */
active_w = "968";
active_h = "548";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "12";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "198000000";
serdes_pix_clk_hz = "530000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
ports {
status="okay";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
status="okay";
reg = <0>;
imx662_vc_out1: endpoint {
status="okay";
vc-id = <1>;
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&cam_csi_in1>;
};
};
};
};
sony_imx662_ab_p2: sony_imx662_p2@12 {
status = "disabled";
compatible = "sony,imx662";
/* I2C device address */
reg = <0x12>;
/* V4L2 device node location */
devnode = "video2";
/* Physical dimensions of sensor */
physical_w = "5.841";
physical_h = "7.714";
sensor_model = "imx662";
/* Other Settings */
use_decibel_gain = "false";
use_sensor_mode_id = "true";
delayed_gain = "true";
mode0 { /* IMX586_MODE_1920x1080_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_a";
vc_id = "2";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "6";
/* Data readout */
active_w = "1936";
active_h = "1096";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "10";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "237600000";
serdes_pix_clk_hz = "640000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
mode1 { /* IMX662_MODE_960x540_2x2_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_a";
vc_id = "2";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "6";
/* Data readout */
active_w = "968";
active_h = "548";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "12";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "198000000";
serdes_pix_clk_hz = "530000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
ports {
status="okay";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
status="okay";
reg = <0>;
imx662_vc_out2: endpoint {
status="okay";
vc-id = <2>;
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&cam_csi_in2>;
};
};
};
};
sony_imx662_ab_p3: sony_imx662_p3@13 {
status = "disabled";
compatible = "sony,imx662";
/* I2C device address */
reg = <0x13>;
/* V4L2 device node location */
devnode = "video3";
/* Physical dimensions of sensor */
physical_w = "5.841";
physical_h = "7.714";
sensor_model = "imx662";
/* Other Settings */
use_decibel_gain = "false";
use_sensor_mode_id = "true";
delayed_gain = "true";
mode0 { /* IMX586_MODE_1920x1080_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_a";
vc_id = "3";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "6";
/* Data readout */
active_w = "1936";
active_h = "1096";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "10";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "237600000";
serdes_pix_clk_hz = "640000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
mode1 { /* IMX662_MODE_960x540_2x2_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_a";
vc_id = "3";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "6";
/* Data readout */
active_w = "968";
active_h = "548";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "12";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "198000000";
serdes_pix_clk_hz = "530000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
ports {
status="okay";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
status="okay";
reg = <0>;
imx662_vc_out3: endpoint {
status="okay";
vc-id = <3>;
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&cam_csi_in3>;
};
};
};
};
};
i2c@1 { // CD
sony_imx662_cd_p0: sony_imx662_p0@10 {
status = "disabled";
compatible = "sony,imx662";
/* I2C device address */
reg = <0x10>;
/* V4L2 device node location */
devnode = "video4";
/* Physical dimensions of sensor */
physical_w = "5.841";
physical_h = "7.714";
sensor_model = "imx662";
/* Other Settings */
use_decibel_gain = "false";
use_sensor_mode_id = "true";
delayed_gain = "true";
mode0 { /* IMX586_MODE_1920x1080_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_c";
vc_id = "0";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "0";
/* Data readout */
active_w = "1936";
active_h = "1096";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "10";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "237600000";
serdes_pix_clk_hz = "640000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
mode1 { /* IMX662_MODE_960x540_2x2_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_c";
vc_id = "0";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "0";
/* Data readout */
active_w = "968";
active_h = "548";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "12";
readout_orientation = "0";
line_length = "2376"; // "2500";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "198000000";
serdes_pix_clk_hz = "530000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
ports {
status="okay";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
status="okay";
reg = <0>;
imx662_vc_out4: endpoint {
status="okay";
vc-id = <0>;
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&cam_csi_in4>;
};
};
};
};
sony_imx662_cd_p1: sony_imx662_p1@11 {
status = "disabled";
compatible = "sony,imx662";
/* I2C device address */
reg = <0x11>;
/* V4L2 device node location */
devnode = "video5";
/* Physical dimensions of sensor */
physical_w = "5.841";
physical_h = "7.714";
sensor_model = "imx662";
/* Other Settings */
use_decibel_gain = "false";
use_sensor_mode_id = "true";
delayed_gain = "true";
mode0 { /* IMX586_MODE_1920x1080_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_c";
vc_id = "1";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "0";
/* Data readout */
active_w = "1936";
active_h = "1096";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "10";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "237600000";
serdes_pix_clk_hz = "640000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
mode1 { /* IMX662_MODE_960x540_2x2_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_c";
vc_id = "1";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "0";
/* Data readout */
active_w = "968";
active_h = "548";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "12";
readout_orientation = "0";
line_length = "2376"; // "2500";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "198000000";
serdes_pix_clk_hz = "530000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
ports {
status="okay";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
status="okay";
reg = <0>;
imx662_vc_out5: endpoint {
status="okay";
vc-id = <1>;
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&cam_csi_in5>;
};
};
};
};
sony_imx662_cd_p2: sony_imx662_p2@12 {
status = "disabled";
compatible = "sony,imx662";
/* I2C device address */
reg = <0x12>;
/* V4L2 device node location */
devnode = "video6";
/* Physical dimensions of sensor */
physical_w = "5.841";
physical_h = "7.714";
sensor_model = "imx662";
/* Other Settings */
use_decibel_gain = "false";
use_sensor_mode_id = "true";
delayed_gain = "true";
mode0 { /* IMX586_MODE_1920x1080_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_c";
vc_id = "2";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "0";
/* Data readout */
active_w = "1936";
active_h = "1096";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "10";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "237600000";
serdes_pix_clk_hz = "640000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
mode1 { /* IMX662_MODE_960x540_2x2_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_c";
vc_id = "2";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "0";
/* Data readout */
active_w = "968";
active_h = "548";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "12";
readout_orientation = "0";
line_length = "2376"; // "2500";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "198000000";
serdes_pix_clk_hz = "530000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
ports {
status="okay";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
status="okay";
reg = <0>;
imx662_vc_out6: endpoint {
status="okay";
vc-id = <2>;
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&cam_csi_in6>;
};
};
};
};
sony_imx662_cd_p3: sony_imx662_p3@13 {
status = "disabled";
compatible = "sony,imx662";
/* I2C device address */
reg = <0x13>;
/* V4L2 device node location */
devnode = "video7";
/* Physical dimensions of sensor */
physical_w = "5.841";
physical_h = "7.714";
sensor_model = "imx662";
/* Other Settings */
use_decibel_gain = "false";
use_sensor_mode_id = "true";
delayed_gain = "true";
mode0 { /* IMX586_MODE_1920x1080_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_c";
vc_id = "3";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "0";
/* Data readout */
active_w = "1936";
active_h = "1096";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "10";
readout_orientation = "0";
line_length = "2376"; // "2376";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "237600000";
serdes_pix_clk_hz = "640000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
mode1 { /* IMX662_MODE_960x540_2x2_25FPS */
/* Nvidia CSI */
mclk_khz = "24000";
num_lanes = "4";
tegra_sinterface = "serial_c";
vc_id = "3";
phy_mode = "DPHY";
discontinuous_clk = "no"; /* yes? */
dpcm_enable = "false";
cil_settletime = "0";
lane_polarity = "0";
/* Data readout */
active_w = "968";
active_h = "548";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "12";
readout_orientation = "0";
line_length = "2376"; // "2500";
/* Datarate & clock */
mclk_multiplier = "80"; /* depricated */
pix_clk_hz = "198000000";
serdes_pix_clk_hz = "530000000";
/* Gain in dB */
inherent_gain = "1";
gain_factor = "1";
min_gain_val = "1"; /* 1.00 dB */
max_gain_val = "72"; /* 72 dB */
default_gain = "1";
step_gain_val = "3"; /* 0.3 */
/* HDR */
min_hdr_ratio = "1"; /* Default, if no HDR */
max_hdr_ratio = "1"; /* Default, if no HDR */
/* Framerate */
framerate_factor = "1";
min_framerate = "1"; /* 1.00 fps */
max_framerate = "90"; /* 90 fps */
step_framerate = "1";
default_framerate = "25"; /* 25 fps */
/* Exposure */
exposure_factor = "1000000";
min_exp_time = "32"; /* us */
max_exp_time = "39840"; /* us */
step_exp_time = "32";
default_exp_time = "32"; /* us */
/* EBD */
embedded_metadata_height = "1";
};
ports {
status="okay";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
status="okay";
reg = <0>;
imx662_vc_out7: endpoint {
status="okay";
vc-id = <3>;
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&cam_csi_in7>;
};
};
};
};
};
};
};