I promise you that the challenges of going with CSI are much greater than USB. While there are CSI cameras available that will work on DB410C and other 96boards, there are no Android HALs that I’ve seen to support them, which means that at best, you are still starting at V4L2.
This means that your challenges will include one of the following paths;
- duplicating the V4L2 driver from the debian kernel to the android kernel, followed by developing an android HAL to use a V4L2 interface,
- writing an android HAL that bypasses V4L2 (since you are worried about editing an existing android hal, this option is not going to be an option for you).
Note that in the case of a USB/UVC camera, the first half of option (1) has already been done for you, since the kernel already supports (as long as the configuration parameters are enabled at build time) these cameras.
Further, in the grand scheme of things, I think that more people will find it more useful to have further development towards an Android HAL working with V4L2, since this improves flexibility and choice, whereas CSI camera drivers are unique to each sensor, thus limiting camera selection to those particular sensors for which there are available drivers and on the hardware for which they are developed. For instance, a CSI camera driver is going to be as much a driver for the SoC’s CSI interface as it will be for the specific sensor, which means that if you want to switch to an SBC with a different SoC, you would have to do that work all over again.
Anyway, good luck!