1 March 2019
MIPI Software – A Conversation with Software Working Group Chair Rob Gough
Q: Software is a relatively new area for MIPI. Why was it added and how does it help the mobile ecosystem and developers?
MIPI Alliance formed the Software Working Group in 2014 to foster easier software integration of MIPI-compliant components and devices in mobile and other devices, such as IoT.
The group’s charter is to define specifications that provide a common software approach when loading drivers to manage different types of components from different vendors. It began by creating the Discovery and Configuration Base Architecture (MIPI DisCoSM), a uniform approach to discovering and describing components and devices. Since then, the group has been developing a portfolio of class specifications based on DisCo, as well as supporting other MIPI interface protocols.
For mobile developers, for example, DisCo and the MIPI class specifications eliminate the need to rewrite or update drivers for every device, platform and operating system and can include characteristics such as maximum clock frequency and types of data ports. This cuts development time, accelerates time to market, and allows for smaller and more efficient systems. Also, to support the ecosystem, we make all our software and class specifications available to all developers within and outside of MIPI Alliance.
Q: You mentioned the DisCo base specification and the class specifications. Can you tell us more about how these work together? Also, DisCo is based on ACPI -- what advantages does that offer?
The MIPI DisCo Base Specification is the common framework for conveying the properties of MIPI-compliant devices and components to operating systems (OS layer). DisCo is based on ACPI (Advanced Configuration and Power Interface), which is widely used in the PC industry for enumerating devices and functions, describing their capabilities and managing their power states. ACPI is natively supported in Linux, so Android distributions can include ACPI support. Because so many systems are already ACPI-compliant, developers can implement DisCo easily without having to adopt another standard. Additionally, the majority of DisCo content contains ACPI Device Specific Data (DSD) properties; there is a high level of compatibility with Device Tree, an alternative to ACPI.
MIPI DisCoSM for SoundWire® streamlines the software integration of MIPI SoundWire-compliant components such as amplifiers, microphones and audio codecs that are built into smartphones, tablets, mobile and desktop PCs, vehicles and IoT devices. It allows developers to easily discover and use MIPI SoundWire drivers.
MIPI DisCo for NIDnTSM (Narrow Interface for Debug and Test) extends the DisCo framework to this key MIPI interface for system development. MIPI NIDnTSM allows for the reuse of existing external interfaces on a target system for access to basic debug, trace and hardware test capabilities. MIPI DisCo for NIDnT provides a common way for debug and test system (DTS) software to discover the NIDnT capabilities implemented on a target system. Once the DTS has this information, it can configure the capabilities to allow the reuse of external interfaces.
Q: Following the release of MIPI I3C, the Software Working Group developed the MIPI I3C Host Controller Interface. How does that help developers implement I3C?
MIPI I3C® provides a high-performance, low-power interface between sensors and application processors. This helps to streamline the integration of many new types of sensors in mobile and other devices.
However, the proliferation of sensors also creates significant design challenges for software developers. The MIPI I3C HCISM (Host Controller Interface) minimizes the software development required to integrate environmental, motion, biometric and other sensors in a device using an I3C bus.
The I3C HCI defines a common set of capabilities for the I3C host controller and its software interface to the system. The solution allows for the building of a common software driver interface for MIPI I3C-compliant host controllers from different vendors. The code written to integrate I3C with the system bus in one instance can be reused in others, so it's not necessary to write separate drivers for all I3C host controllers. As a result, developers no longer need to implement separate drivers for hardware from all of these vendors.
Q: What’s in the works for the group in 2019? How can people get involved in software specification development?
Currently the group is working on a couple of I3C-related projects, a DisCo class specification, as well as an update to the I3C HCI interface. We’re also seeking input on needs and requirements for a DisCo-based specification to address cameras and imaging, as well as working on efforts to streamline the DisCo firmware development and integration process.
MIPI Contributor members can join the working group by subscribing through the member area of the website. We're also looking for non-members to participate. If you would like to contribute, please contact us at email@example.com for more information.
Q: What would you like for people to know about MIPI’s software efforts?
A key part of the MIPI Software Working Group’s work is collaborating with other MIPI working groups to understand their software integration requirements. Through joint efforts, we can develop specifications and other resources that help target industries more easily integrate MIPI specifications.
Q: What do you like to do for fun when you’re not working on MIPI specifications?
I also represent my employer in other standards bodies including the PCI-SIG and the UEFI Forum working on interfaces between hardware and software, with a focus on I/O and power management.
Outside of work, I take on small- to medium-sized remodelling projects, partnering with my wife, and helping our six children with homework and life navigation - they range in age from first grade to grad school and marriage. I also keep my bicycle in decent mechanical condition so that it can keep me in good physical condition, plus it is my main means of commuting to work.
Rob Gough is a platform software architect with Intel corporation. He has worked with industry specification bodies including ACPI, UEFI, and the PCI SIG for the last 15+ years, was a charter member and chief technical contributor of the MIPI Software Working Group and took over the chair role in March of 2016.