We are using TX2 on a custom hardware to capture images from a SDI-CSI2 bridge which can receive input from two different cameras. Camera1 uses 4 lanes whereas Camera2 requires 2 lanes.
I have created a new device tree file, added them as two modules (each module has multiple modes) which gives me two video nodes.
With this configuration everything was working as expected on R28.1.
We wanted to use UART7 which fails to load on R28.1 and it is fixed in R28.2 so I have updated to R28.2.
In this release when we capture video using v4l2-ctl, we are seeing 1 or 2 partial/corrupted frames at the beginning. They are mostly at the beginning afaict. The hardware used is same in both cases, only change is the L4T release.
There are no error messages in kernel logs and the trace looks normal as well except for rtos_queue_peek_from_isr_failed msg in between.
kworker/5:1-105 [005] ...1 235.960389: rtos_queue_peek_from_isr_failed: tstamp:7627865816 queue:0x0b4a3c58
kworker/5:1-105 [005] ...1 235.960466: rtcpu_start: tstamp:7627866702
kworker/5:1-105 [005] ...1 236.016114: rtcpu_vinotify_handle_msg: tstamp:7629916548 tag:CSIMUX_STREAM channel:0xff frame:0 vi_tstamp:3334948820 data:0x00000001
kworker/5:1-105 [005] ...1 236.064117: rtcpu_vinotify_handle_msg: tstamp:7630741111 tag:CHANSEL_PXL_SOF channel:0x00 frame:0 vi_tstamp:3335773264 data:0x00000001
kworker/5:1-105 [005] ...1 236.064118: rtcpu_vinotify_handle_msg: tstamp:7630741292 tag:ATOMP_FS channel:0x00 frame:0 vi_tstamp:3335773269 data:0x00000000
kworker/5:1-105 [005] ...1 236.064119: rtcpu_vinotify_handle_msg: tstamp:7631082610 tag:CHANSEL_LOAD_FRAMED channel:0x01 frame:0 vi_tstamp:3336114903 data:0x08000000
kworker/5:1-105 [005] ...1 236.064120: rtcpu_vinotify_handle_msg: tstamp:7631340824 tag:CHANSEL_PXL_EOF channel:0x00 frame:0 vi_tstamp:3336373107 data:0x04370002
kworker/5:1-105 [005] ...1 236.064121: rtcpu_vinotify_handle_msg: tstamp:7631343176 tag:ATOMP_FE channel:0x00 frame:0 vi_tstamp:3336375421 data:0x00000000
kworker/5:1-105 [005] ...1 236.064122: rtcpu_vinotify_handle_msg: tstamp:7631366107 tag:CHANSEL_PXL_SOF channel:0x00 frame:0 vi_tstamp:3336398262 data:0x00000001
kworker/5:1-105 [005] ...1 236.064123: rtcpu_vinotify_handle_msg: tstamp:7631366252 tag:ATOMP_FS channel:0x00 frame:0 vi_tstamp:3336398269 data:0x00000000
kworker/5:1-105 [005] ...1 236.116119: rtcpu_vinotify_handle_msg: tstamp:7631706554 tag:CHANSEL_LOAD_FRAMED channel:0x01 frame:0 vi_tstamp:3336738849 data:0x08000000
kworker/5:1-105 [005] ...1 236.116122: rtcpu_vinotify_handle_msg: tstamp:7631965824 tag:CHANSEL_PXL_EOF channel:0x00 frame:0 vi_tstamp:3336998106 data:0x04370002
kworker/5:1-105 [005] ...1 236.116123: rtcpu_vinotify_handle_msg: tstamp:7631968176 tag:ATOMP_FE channel:0x00 frame:0 vi_tstamp:3337000420 data:0x00000000
kworker/5:1-105 [005] ...1 236.116124: rtcpu_vinotify_handle_msg: tstamp:7631991090 tag:CHANSEL_PXL_SOF channel:0x00 frame:0 vi_tstamp:3337023261 data:0x00000001
kworker/5:1-105 [005] ...1 236.116125: rtcpu_vinotify_handle_msg: tstamp:7631991248 tag:ATOMP_FS channel:0x00 frame:0 vi_tstamp:3337023267 data:0x00000000
kworker/5:1-105 [005] ...1 236.116126: rtcpu_vinotify_handle_msg: tstamp:7632332106 tag:CHANSEL_LOAD_FRAMED channel:0x01 frame:0 vi_tstamp:3337364398 data:0x08000000
kworker/5:1-105 [005] ...1 236.116126: rtcpu_vinotify_handle_msg: tstamp:7632590823 tag:CHANSEL_PXL_EOF channel:0x00 frame:0 vi_tstamp:3337623105 data:0x04370002
kworker/5:1-105 [005] ...1 236.116127: rtcpu_vinotify_handle_msg: tstamp:7632593175 tag:ATOMP_FE channel:0x00 frame:0 vi_tstamp:3337625419 data:0x00000000
kworker/5:1-105 [005] ...1 236.116128: rtcpu_vinotify_handle_msg: tstamp:7632616100 tag:CHANSEL_PXL_SOF channel:0x00 frame:0 vi_tstamp:3337648260 data:0x00000001
kworker/5:1-105 [005] ...1 236.116129: rtcpu_vinotify_handle_msg: tstamp:7632616247 tag:ATOMP_FS channel:0x00 frame:0 vi_tstamp:3337648266 data:0x00000000
kworker/5:1-105 [005] ...1 236.116131: rtos_queue_peek_from_isr_failed: tstamp:7632866660 queue:0x0b4a3c58
kworker/5:1-105 [005] ...1 236.116132: rtcpu_vinotify_handle_msg: tstamp:7632957138 tag:CHANSEL_LOAD_FRAMED channel:0x01 frame:0 vi_tstamp:3337989432 data:0x08000000
kworker/5:1-105 [005] ...1 236.116133: rtcpu_vinotify_handle_msg: tstamp:7633215819 tag:CHANSEL_PXL_EOF channel:0x00 frame:0 vi_tstamp:3338248103 data:0x04370002
kworker/5:1-105 [005] ...1 236.116134: rtcpu_vinotify_handle_msg: tstamp:7633218172 tag:ATOMP_FE channel:0x00 frame:0 vi_tstamp:3338250418 data:0x00000000
kworker/5:1-105 [005] ...1 236.116135: rtcpu_vinotify_handle_msg: tstamp:7633241087 tag:CHANSEL_PXL_SOF channel:0x00 frame:0 vi_tstamp:3338273258 data:0x00000001
kworker/5:1-105 [005] ...1 236.116136: rtcpu_vinotify_handle_msg: tstamp:7633241252 tag:ATOMP_FS channel:0x00 frame:0 vi_tstamp:3338273265 data:0x00000000
I noticed quite a few things have changed wrt vi and nvcsi files in kernel especially,
- attempting to calculate cil_settle time from the device tree.
- changes to mipi calibration sequence
- accessing of mode properties access (using different indices as opposed to s_data->mode)
I think these changes are not taking all use-cases into consideration (eg if you have multiple modules in dt file as in my case).
I have tried using default values for these timing parameters (which was the case in R28.1) but still seeing the same issue. My understanding is that it is to do with some timing parameters.
Any suggestions on what could be the issue and how to debug further?