1. V4L2 Device Tree support
Most of SoCs, supported by V4L2 use ARM CPU cores. Information about board hardware configuration on ARM is currently specified using Flattened Device Tree images. This made DT support in V4L2 necessary. Initial DT binding
RFC has been submitted to the linux-media mailing list in July 2012. The first
parser implementation with usage examples followed in September. Unfortunately, later I have been distracted by other work, and Sylwester Nawrocki has kindly and courageously picked up this development. The last version of his
documentation and
parser have been included in the mainline and are appearing in the 3.10 Linux kernel. Sylwester deserves every imaginable credit for this work. Unfortunately, there is no (official) way to specify multiple patch authors in the kernel at the moment.
2. V4L2 clock helpers
A typical SoC camera implementation consists of a camera sensor connected to an SoC camera interface. Camera sensors as well as other video data sources like TV decoders, usually require a "master clock" input. It is also common for such sensors to even not respond to I2C commands as long as the master clock is off. Many SoC camera interfaces have a dedicated pin to provide this clock, alternatively it can be supplied by a stand-alone oscillator. This clock has to be actively managed by the sensor driver, preferably using the standard Linux kernel clock API. This would be especially beneficial with a DT hardware description. The implementation of clock providers by generic drivers is, however, only possible if the platform implements the Common Clock Framework. Since not all ARM platforms support CCF yet, it has been decided to implement temporary simple V4L2 clock helpers, which would be replaced by proper CCF implementations as it becomes available. The last
version of V4L2 clock helpers has been submitted to the mailing list in April 2013 and is currently under review. It is hoped, that this work will be included in the 3.11 kernel.
3. V4L2 asynchronous device probing
Due to the above mentioned clock dependency it is usually only possible to probe (typically I2C, less commonly SPI, etc.) devices like camera sensors after the SoC camera interface has successfully been probed and has turned on the master clock to the sensor. To achieve this currently V4L2 doesn't allow traditional I2C device registration from platform data (or DT). Instead SoC camera interfaces have to trigger dependent (I2C) device registration once they are ready to supply clock to them. This doesn't fit the DT concept very well, where we want to let camera sensors be listed just like all other I2C devices as subnodes of their respective I2C adapter DT nodes. To allow this the V4L2 subsystem has to be extended to support asynchronous device probing. Patches to implement that have been developed in parallel with V4L2 DT support and clock helpers, their last
version along with usage examples has been published in the same thread with V4L2 clock helpers above. This work is also targeted to the 3.11 kernel.
All this work benefits a lot from thorough reviews of fellow V4L2 developers.