HID I2C Driver Stack

[This documentation is preliminary and is subject to change.]

The HID I2C driver stack consists of existing and new components supplied by Microsoft, as well as components provided by the I2C silicon manufacturer. The following illustration depicts the stack and these components.

HID over I2C driver stack

The I2C Controller Driver

The I2C controller driver exposes a Serial Peripheral Bus (SPB) IOCTL interface to perform read and write operations. This driver provides the actual controller intrinsics (for example, I2C). The SPB Class Extension, on behalf of the controller driver, handles all interaction with the resource hub and implements necessary queues to manage simultaneous targets.

Note  The HID I2C driver will not function on systems that do not have an I2C bus that is compatible with the SPB platform. Contact your system manufacturer to determine whether the I2C bus on your device system is compatible with the SPB platform.

The GPIO Controller Driver

The General Purpose Input/Output (GPIO) controller delivers interrupts from the device over GPIO. This is often a simple slave component that uses GPIO pins to signal Windows of new data or other events. GPIO can also control the device by approaches other than the I2C channel.

The Resource Hub

Connections on a SoC platform are typically non-discoverable, because there are no standards for device enumeration on the buses that are used on SoC. As a result, these devices must be statically defined in the Advanced Configuration and Power Interface (ACPI). Furthermore, components often have multiple dependencies spanning multiple buses, as opposed to a strict branching tree structure.

The resource hub is a proxy that manages the connections among all devices and bus controllers. The HIDI2C driver uses the resource hub to reroute device-open requests to the appropriate controller driver. For more information about the resource hub, refer to the Connection IDs for SPB Connected Devices topic.

 

 

Send comments about this topic to Microsoft

Build date: 4/28/2012