We've recently migrated from capturing from an ISI based pipeline to using the ISP. The aim is to perform the debayer in h/w instead of software.
The ISI version of the driver works and can support two instances of our sensor on two separate 4-line mipi-csi2 interfaces. The resolution and bit depths aren't scary either (1920x1200, 8 or 10-bit).
The ISP version of the driver is the same as the ISI version apart from opening up the additional ioctl's required by the vvcam service. The sensor interface driver/lib which links vvcam also appears to start successfully and runs successfully. Adapted xml and json config files seem correct too.
The isp_media_server works for one or two instances of our sensor, installing all the correct system drivers and sensor drivers (imx8_media_dev, our driver, vvcam_video, vvcam_dwp, and vvcam_isp). It reports no errors and installs a /dev/videoX instance per sensor correctly.
Using gstreamer or the video_test tool work too and kick off the correct sensor in the correct mode. However, what we get out is wrong.
Attached is a capture from video_test that was output to a monitor. It looks like the mipi setup isn't correct when it's done indirectly through isp_media_server instead of using the ISI/device tree approach. It appears to be missing SOF headers and misaligns the capture.
Here are the versions we use:
- Varascite SOM based imx8mp
- Kirkstone yocto build
- Kernel v5.15.60
- isp-imx-4.2.2.18.0
- kernel-module-isp-vvcam-4.2.2.18.0
Any pointers to where these settings are configured would be great. My assumption was the device tree, though apart from disabling ISI and enabling ISP, this has not changed.
Many thanks.
- Oliver