Driver development historically has been a cumbersome and expensive burden for designers of systems for smartphones, personal computers, wearables, the IoT, automobiles and other devices. In the absence of common drivers, information about the properties of each external component must be hard-coded in a custom driver that is vendor- and hardware-specific relative to the given platform.
The MIPI Discovery and Configuration (MIPI DisCo℠) specifications are intended to simplify component design and integration by providing a uniform software architecture that works with a device’s host OS to enumerate controllers, buses and components that support various MIPI Alliance protocols. The growing suite of DisCo class specifications includes MIPI DisCo℠ for I3C, MIPI DisCo℠ for NIDnT, MIPI DisCo℠ for SoundWire and now MIPI DisCo℠ for Imaging, with the publication of version 1.0 earlier this year.
The DisCo base specification is used in conjunction with class specifications (or “profiles”), which define the capabilities of specific devices and controllers, such as number of data ports and maximum clock frequency of devices. In this way, the vendor- and hardware-independent DisCo specifications eliminate the hassle of developing and implementing drivers for external devices, leading to dramatic reductions in both time to market and development cost for system vendors.
For example, supporting camera and image sensors connected via MIPI Camera Serial Interface 2 (CSI-2®) on a generic operating system (OS) has traditionally required, among other things, defining a firmware interface to convey information about the devices present in the system and how they are connected. Solutions in this space have remained often specific to both the OS and the system-on-chip (SoC) vendor, leading to an explosion in the amount of work needed to support different combinations of firmware interfaces, hardware platforms and OSs, as well as to maintain this support. The existing solutions have also been lacking in support for different hardware topologies.
DisCo for Imaging enables system developers to easily discover cameras and other devices that are connected via MIPI CSI-2, the high-speed protocol for transmission of still and video images from image sensors to application processors. Originally introduced in 2005, CSI-2 is the world’s most widely implemented embedded camera and imaging interface, suitable for far-ranging application spaces such as mobile, augmented and virtual reality, drones, the IoT, medical devices, industrial systems, automobiles and client devices such as tablets, notebooks and all-in-ones.
The cameras and other imaging devices used in embedded systems, and also increasingly on laptop computers and other devices, are complex—typically consisting of various individual components, including image sensors, lenses, lens voice coil motors (VCMs), flash light-emitting diodes (LEDs) and image signal processors (ISPs). DisCo for Imaging delivers a common mechanism for exposing the discovery and configuration properties used to describe these devices, and the CSI-2 bus connections between them, to software within the system. The specification supports components connected via current and former versions of CSI-2.
DisCo for Imaging uses a set of structured properties in Advanced Configuration and Power Interface (ACPI) firmware that is widely used—especially in the PC industry—to enumerate devices and functions, describe their capabilities, and manage their power states. DisCo for Imaging leverages both the ACPI _DSD property and data extensions, as well as the ACPI 6.4_CRS generic serial bus connection descriptor, to define what information is conveyed from the ACPI firmware to the OS related to the image sensors and how that information is formatted. DisCo and ACPI are complementary; there is no functional overlap between the specifications. For example, power management and general purpose input/output (GPIO) are strictly the domain of ACPI and not addressed in the MIPI specification.
Implementation of DisCo for Imaging is intended to simplify software driver stacks and allow platform firmware to describe camera components in an OS-agnostic manner. The common, architecturally defined form of DisCo for Imaging is designed to be recognized by most major OSs, including Android, Mac OS X, Microsoft Windows and Linux. These properties are intended to remove any need to implement vendor-specific solutions that often impede supporting multiple OSs. Should a hardware component have additional requirements, the MIPI DisCo for Imaging specification retains the ability for component vendors to provide additional vendor-specific capabilities.
Other specifications and toolsets available to aid in CSI-2 implementation include the MIPI Camera Command Set (CCS℠), which is supported by DisCo for Imaging, and CCS Tools, a suite of code tools such as CCS Static Data that help developers rapidly integrate image sensors.
Like other specifications from the MIPI Software Working Group, DisCo for Imaging is available to MIPI Alliance members and nonmembers. Companies interested in shaping the future of the DisCo specifications are invited to join MIPI Alliance and participate in the working group. Please reach out to software@mipi.org for more information.