many questions… let me try to answer them.
Yes, the firmware release is ‘full’. There are features in the firmware that we aren’t using in the Linaro release. But there is no difference between the firmware release from Linaro and the one from Thundercom. In fact, the firmware release from Linaro is just the same , since we receive the firmware from Thundercomm, and publish them.
‘firmware’ for CSI is vague. in fact ‘firmware’ itself is vague. Can you please describe what you want to do with CSI? e.g. which image sensor do you want to use? what images features do you expect for your application (resolution, cropping, resize, …)?
For us, firmware typically means ‘some blob’ that does not run on the main application processor. e.g. GPU firmware runs on the GPU, DSP firmware runs on the hexagon, … A full camera use case requires (from a high level view) the following software component:
- Linux kernel drivers for CSI engine, e.g. the serial link where bytes are moved from the sensor to the application processor memory
- Linux kernel drivers for I2C, to control the sensor (configuration)
- A driver for the image sensor connected to the board. This can be a Linux kernel driver , or it can be a user space driver as well, as it’s the case with Qualcomm Camera (proprietary) solution.
- Drivers for the Qualcomm ISP, which is doing image processing (resize, crop, but also RAW bayer rasterization).
Some image sensors have integrate ISP, and deliver YUV images onto CSI, some don’t. Sometimes , th e camera application expects the RAW Bayer data, not the YUV… So we need to understand your use case.
Qualcomm kernel, e.g. msm-4.9, has full support for Camera. But in that case, they use a simple camera driver in the kernel, and have most of the camera features impletemented in some proprietary form in the user space. In theory, you should be able to pick the kernel patches from msm-4.9 that QCOM camera user space needs, and port that over to Linaro kernel, and get things to work there. But that means you have to deal with the proprietary user space libs/apps accordingly.
It’s a bit of a mess, it’s undeniable… We are planning to add CSI drivers support in the Linaro release (not in the very short term, probably a few months away from that), but you would only get RAW Bayer data (from RAW Bayer sensor), or YUV (if you are using a sensor with integrated ISP).