We are implementing some driver modifications based on the Leopard Imaging IMX377 driver, since that is almost unusable demo code.
We are experiencing weird bandwidth limitation issues - it seems that the sensor can be run only at half speed. We got working 3x 2lane CSI RAW capture, and 1x 4 lane CSI RAW was working situation initially with the LI driver, LI claiming that multiple RAW are not possible.
But when we run an ISP process, eg a SCF based camera-daemon + gstreamer pipeline (e.g. to show a live image), then we are able to capture 2 more RAW streams. By the strace we see that nvcamera-daemon is using some secret calls to configure the VI or ensure some ISOBW.
How can we achieve the same configuration without using any ISP related code (Argus or SCF/camera_daemon)?
The error which is presented to us is:
[ 841.797075] tegra-vi4 15700000.vi: master error
Looking to sources, it refers to about 6-7 conditions, from which 4 are non-resolveable because the Parker TRM is limited and does not show which bits belong to the specific conditions.
Does this relate to some VI clocking, MC clocking, or any special setup?
The device tree does list proper values for the VI BW allocation, and dump from sysfs does show increased allocation when multiple RAW captures are ran, but it still fails.
DTSI:
tegra-camera-platform {
num_csi_lanes = <12>;
max_lane_speed = <1440000>;
min_bits_per_pixel = <12>;
vi_peak_byte_per_pixel = <2>;
vi_bw_margin_pct = <25>;
max_pixel_rate = <1200000>;
isp_peak_byte_per_pixel = <5>;
isp_bw_margin_pct = <25>;
The first four lines show a 12 lane x 1440mbit/s I/O with 12 into 16 bpp memory writes. And it does not work.
Where can we find a proper CSI driver development guide ?
Our use case is three simultaneous 12 MPx @ 35 fps (12bit RAW)