Title: One CSI to rule them all: Multi-camera streaming on Linux
Preferred Format: Regular Talk
Abstract:
In many embedded camera applications, such as surround view and in-cabin monitoring the need to use multiple CSI cameras simultaneously has become common. Many SoCs feature a single CSI-RX that receives data from multiple cameras. Data from each camera source is sent to distinct locations in DDR. The filtering of data is done by the CSI-RX hardware on the basis of a virtual channel field in the MIPI CSI-2 packet header. While MIPI CSI-2 natively supports this multiplexing, the challenge lies in orchestrating per-stream routing, synchronization, and DMA handling in software. Managing concurrent multi-camera streams becomes increasingly complex with the addition of more cameras. Fortunately, Linux kernel frameworks like V4L2 and Media Controller enable reusing the same driver across multiple sensors. With the addition of new multi-stream APIs, each camera stream can be independently configured, started, and stopped.
In this talk we will walk through a generic minimal driver that will demonstrate the use the use of newly added multi-stream API in the Linux media frameworks, while we use Texas Instruments AM62A + FPD-Link SerDes for the demo, the approach is generic and adaptable across various platforms.
Speaker Bio:
Rishikesh Donadkar is an Embedded Linux Engineer at Texas Instruments with 1.5 years of experience. His primary area of expertise lies in Linux multimedia, with a focus on Cameras, Audio, and Image Signal Processors. He participated in Google Summer of Code 2022 with the libcamera organization and has been an active open source contributor and enthusiast since.