The MIPI Alliance’s MIPI I3C Host Controller Interface (HCI) v1.0 defines the building of a common software driver interface to support compliant MIPI I3C host controller (master device) hardware implementations from multiple vendors to more easily integrate value-added features for smartphones, wearables, Internet of Things (IoT), automotive and more. Smartphones and other devices have a rapidly increasing number of mechanical, motion, biometric and environmental sensors, a proliferation that creates significant design challenges, especially for software developers. For example, without a common method for interfacing to MIPI I3C, every host controller must have its own system software or driver to support that piece of hardware. Every host controller implementation may also provide a different set of features and optimizations.
MIPI I3C HCI defines a common set of capabilities for the host controller and the software interface, allowing for the building of class definitions based on a common set of features. The definition allows for vendor-specific extensions and optimizations, defining several optimizations based on typical usage. For example, the combo command feature allows for the efficient one-shot transfer of write and then read transfers on the bus. Another example is auto command, which provides an efficient way to read a large data buffer related to in-band interrupt.
Other features include:
- Support for MIPI I3C main master device operation on the I3C bus
- Two modes of operation: Direct data interface support (PIO mode), with programmable buffer depths for the transmit/response and data buffer, and DMA interface support (DMA mode) to support scatter gather transfers for data buffers
- Power-efficient operation of the host controller, which helps maximize battery life in mobile devices such as wearables and smartphones
- Support for I3C data rates, including I2C fast mode (up to 400Kbps), I2C fast mode+ (up to 1Mbps) and I3C SDR (up to 12.5Mbps)
- Support for extended capabilities, including vendor-specific ones, to enable more sophisticated hardware or additional functionality.