Search code examples
clinuxdriverembedded-linux

Writing MIPI CSI Driver


I'm trying to mimic what arducam does https://www.arducam.com/product/arducam-1mp4-quadrascopic-camera-bundle-kit-for-raspberry-pi-nvidia-jetson-nano-xavier-nx-four-ov9782-global-shutter-color-camera-modules-and-camarray-camera-hat-b0331/

So I have got an FPGA that does combine 4 camera streams and output them into one big frame buffer CSI MIPI. The problem right now is with the platform either Linux or TDA4 from texas instruments which don't support video4linux. But that's not an issue, I would like to know actually how would one write a V4L driver that separates that big frame into 4 virtual cameras in linux ?


Solution

  • Vision Components supplies open-source linux device drivers for their line of MIPI-CSI cameras. If you need to write device drivers, you at least can look at a reference. They interface to a Lattice FPGA that they configure with i2c over a variety of platforms. Lattice sells very small form factor FPGAs and provides a MIPI-CSI IP core you can use if you're interested in developing your own camera.

    This may be a template you can explore.. https://www.vision-components.com/fileadmin/external/documentation/software/vc_mipi_driver_list/index.html

    https://www.latticesemi.com/csi2rx