I would like to know how to configure higher MCLK in ORIN`s device tree in a way that I can interface at MIPI source higher than 1500 Msps per lane in CPHY. With the following setup, I can capture video with argus/gstreamer at 1500Msps without any issue.
i2c@31e0000 {
//
// define camera 0
//
mycam_cam0: mycam_a@1a { // increments for each camera
status = "okay";
compatible = "mycam0";
// I2C device address
reg = <0x1a>; // increments for each camera
// V4L2 device node location
devnode = "video0"; // increments for each camera
// Physical dimensions of sensor
physical_w = "3.680";
physical_h = "2.760";
mclk = "extperiph1";
use_sensor_mode_id = "true";
reset-gpios = <&tegra_main_gpio CAM0_PWDN GPIO_ACTIVE_HIGH>;
...
mode0 {
mclk_khz = "24000";
mclk_multiplier = "10";
num_lanes = "4";
phy_mode = "CPHY";
tegra_sinterface = "serial_a";
discontinuous_clk = "no";
cil_settletime = "0";
....
I would like to configure it at 3500Msps, but could not achieved even with the target of 1800Msps. It seems like changing mclk_multiplier doesn`t help me to increase MIPI Speed.
My Question is: How I can modify the MIPI CPHY speeds to higher values?
This what I got when I set my sensors MIPI speed to 1800Msps per lane.
I fixed the issue by finding a sweet spot for pix_clk_hz. Thank you.
Now I am having difficulties with stability of my capture. After 5-20mins, I am loosing my camera and the following outputs are getting generated. Can you help me how I can debug this?
CONSUMER: ERROR OCCURRED
ERROR: from element /GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0: TIMEOUT
Additional debug info:
Argus Error Status
Execution ended after 0:01:36.855881135
Setting pipeline to NULL ...
GST_ARGUS: Cleaning up
CONSUMER: ERROR OCCURRED
ERROR: from element /GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0: TIMEOUT
Additional debug info:
Argus Error Status
Execution ended after 0:01:54.073866248
Setting pipeline to NULL ...
GST_ARGUS: Cleaning up
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
Freeing pipeline ...
(Argus) Error InvalidState: Argus client is exiting with 2 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 366)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
user@user:~/Downloads$ Freeing pipeline ...
(Argus) Error InvalidState: Argus client is exiting with 2 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 366)
Here are outputs with additional relevant info. I do have 4 Camera inputs coming from a SERDES. Just after 5-20 mins, I am starting to loose my camera captures one by one in 2 mins. The only gstreamer output I got is already provided above.
What would be your comment?
v4l2-ctl --stream-mmap --set-ctrl bypass_mode=0
VIDIOC_S_EXT_CTRLS: failed: Device or resource busy
bypass_mode: Device or resource busy
VIDIOC_REQBUFS returned -1 (Device or resource busy)
I don`t have embedded data line in DT and we disabled embedded meta data from Imager. Imager sends only RAW12 data. It seems like setting the SerDes at high speeds caused the CSI Errors. Therefore we reduced the speed to around 2400MHz. With proper setting of pix_clk_hz, I could get somewhat stable capture that can take more than 10hrs (still some times it fails in 3hrs).
Eventually Argus gets fail and my capture gets terminated. The trace log I captured consistently when this happens is noted below. What would be your comment?