Hardware design: USB Type-C systems
Here are some example designs for USB Type-C systems.
A typical USB Type-C system has these components:
- USB Dual-Role controller is capable of operating either in host role or in function/device/peripheral role. This component is integrated into SoC.
- Battery Charging 1.2 detection might be integrated in certain SoCs. Some SoC vendors provide a PMIC module that implements detection logic, others implement in software. Windows 10 Mobile supports all those options. Contact your SoC vendor to get details about this component.
- Type-C -PD Port controller manages CC pins on the USB Type-C connector. Supports BMC encoding/decoding of power delivery messages. This component isn't integrated in most SoCs.
- Mux SuperSpeed USB pairs to a port on the controller depending on the orientation detected by Type-C port controller. Mux SuperSpeed pairs and possibly SBU lines elsewhere (usually the Display module) when entering an alternate mode.
- VBus/VConn source is required. Most PMICs implement VBus/VConn control. Contact your SoC/PMIC vendor for details.
USB Type-C system design with an embedded controller
In addition to the components in the preceding list, a USB Type-C system can have an embedded controller. This intelligent microcontroller that acts as the Type-C and Power Delivery policy manager for the system.
Here's an example of a USB Type-C system with an embedded controller:
Here's another view:
For a system that has an embedded controller, load the Microsoft provided in-box driver. UcmUcsi.sys implements USB Type-C Connector System Software Interface (UCSI) Specification.
UCSI driver. For information about the device stacks loaded for the driver, see Drivers for supporting USB Type-C components for systems with embedded controllers.
For a system that has an embedded controller that uses non-ACPI transport.
USB Type-C system design
Here's an example of a USB Type-C system for a mobile device that doesn't have an embedded controller:
Here's another view:
For the preceding design, implement a driver that communicates with the connector and keeps the operating system informed about USB Type-C events on the connector.
Write a USB Type-C connector driver