Training
Module
Troubleshoot device driver failures - Training
This module focuses on the role of device drivers and troubleshooting problems that pertain to them.
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This article describes the driver stack for devices that support HID over the I2C transport.
The HID I2C driver stack consists of existing and new components supplied by Microsoft, and components provided by the I2C silicon manufacturer. The following illustration depicts the stack and these components.
Windows 8 provides an interface for low-power, simple buses to communicate effectively with the operating system. This interface is referred to as simple peripheral bus (SPB), and it supports buses like Inter-Integrated Circuit (I2C) and Serial Peripheral Interface (SPI). For more information about SPB, see Simple Peripheral Buses.
Windows 8 provides a KMDF-based HID miniport driver that implements version 1.0 of the protocol specification for HID over I2C. This driver is named HIDI2C.sys. Windows loads this driver based on a compatible ID match, which is exposed by the Advanced Configuration and Power Interface (ACPI). The driver ensures that apps that use HID IOCTLs application level compatibility for software that uses the HID IOCTLs and API set. A device asserts the host when it requires attention or has data. However, before the assertion occurs, a GPIO connection must exist.
Note The HIDI2C.sys device driver supports only the I2C bus. It doesn't support SPI, SMBUS, or other low-power buses in Windows 8.
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 doesn't function on systems that don't 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 General Purpose Input/Output (GPIO) controller delivers interrupts from the device over GPIO. This controller is often a simple subordinate 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.
Connections on a SoC platform are typically nondiscoverable, 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, see Connection IDs for SPB Connected Devices.
Training
Module
Troubleshoot device driver failures - Training
This module focuses on the role of device drivers and troubleshooting problems that pertain to them.