USB-C is a flexible connector supporting multiple data rates, protocols, and power in either direction.
From the system, USB PD requires a complex state machine as USB PD can operate in many different modes. This includes but isn't limited to:
For a more complete list of USB-C Power Delivery features, see the USB-C PD spec.
The image below shows a block diagram of a typical USB-C setup.
The CONFIG_PLATFORM_EC_USBC option enables USB-C support on the Chromebook. See Kconfig.usbc for sub-options related to this feature.
The following sub-components must be configured for correct operation of USB-C: