Users want to be able to charge external devices using their Chromebook USB ports, e.g. charge a phone from their Chromebook. We want to provide a fast charging experience to end-users, so we prefer to offer high power charging when possible.
For explanations of calculations see rest of doc.
Total current needed for external USB devices at 5V:
((Number of Type-C Ports) * (1800mA)) + 1500mA + ((Number of Type-A Ports) * (900mA)) + 600mA§
§ The additional 600mA can be omitted if BC1.2 is not supported for Type-A
If a daughter board has 1 Type-A (supporting BC 1.2) and 1 Type-C, the max potential current load at 5V is Type-A Vbus (1500mA) + Type-C Vbus (3000mA) + Type-C Vconn (300mA) = 4800mA
For Type-A ports, the BC 1.2 Specification adds higher power modes on top of the USB 3.2 Specification. While BC 1.2 support isn't required, it is preferred, as it allows end-users to charge their devices more quickly.
BC 1.2 Specification defines multiple modes of operation including, but not limited to:
For detection logic of each mode (e.g. on the D+ and D- pins) and nuance of power/current power requirements, see full BC 1.2 Specification.
Without BC 1.2 support, the max power requirements match that of a Standard Downstream Port (SDP) as defined by various specification (e.g. USB 3.2 Specification).
If BC 1.2 is supported on a ChromeOS device, then the first Type-A port in use will act as a CDP, providing a maximum current of 1.5A while also enabling USB data. All other Type-A ports will only be SDP, providing a maximum current of 900mA.
Note that the CDP Type-A port allocation is dynamic; the first Type-A port to draw more than 900mA gets to be the CDP, with a maximum current of 1.5A. Then all other Type-A ports get downgraded to the lower, 900mA current limit (i.e. SDP) while the first Type-A port maintains a current draw of more than 900mA. In practice, this means that the first Type-A device plugged in gets to consume 1.5A and any Type-A device inserted after that will only get 900mA.
Once the Type-A device drawing 1.5A stops pulling more than 900mA or is physically removed, then the extra 600mA (as well as CDP advertisement) becomes available to any Type-A port. In practice, Type-A devices only determine current limits when they are first inserted, so any Type-A device that is still plugged in when the 1.5A device is removed will not notice that it can pull more current. This means that the first Type-A device inserted after removing the original 1.5A device gets access to 1.5A.
The allocation of the one CDP Type-A port is unaffected by user interaction with Type-C ports. Once a Type-A port has been claimed as CDP, inserting a Type-C device will not revoke the CDP status of the Type-A port.
For example, the below sequence of events illustrates the above Type-A policy if BC 1.2 is supported:
phone @ 1.5A.phone @ 1.5A and mouse @ 900mA.mouse @ 900ma.mouse @ 900ma and battery pack @ 1.5A.The total current needed for all Type-A ports at 5V is:
if (BC1.2_Supported)
(# Type-A Ports)*(900mA) + 600mA
else
(# Type-A Ports)*(900mA)
USB Type-C allows for dynamic negotiation of high power contracts; this is accomplished through varying CC resistors and/or USB-C Power Delivery (PD). More in-depth information can be found in the USB Type-C Specification (section 4.5.2.3) and the USB PD Specification. CC resistor contracts can range from 500mA/5V to 3A/5V, while PD contracts can range from 0mA/3.3V to 5A/20V.
Note: Behavior outlined here is only implemented in the TCPMv2 Device Policy Manager (DPM) when a board defines a non-zero maximum number of 3A ports supported through CONFIG_USB_PD_3A_PORTS.
ChromeOS devices currently source power to external USB devices at 5V with a typical current of 1.5A for each Type-C port. In certain scenarios, a Type-C port can source up to 3A @ 5V.
ChromeOS prefers that the first PD-capable Type-C device that requires 3A should get 3A guaranteed at 5V. Once the maximum supported number of PD-capable Type-C device has claimed 3A, then other PD-capable Type-C devices will only be offered a maximum of 1.5A.
If Fast Role Swap (FRS) is supported and a sourcing port partner reports requiring 3A after a fast role swap, then this port should be allocated 3A if no more PD-capable sinks require 3A, and FRS detection may be enabled. Once a PD-capable device that requires 3A is inserted, the FRS port may have FRS detection disabled if the maximum number of 3A ports has been reached.
If there are no PD-capable Type-C devices requiring 3A and no FRS ports requiring 3A, then the first non-PD device will be given 3A until a PD-capable device that requires 3A is inserted, or until an FRS source that requires 3A is inserted.
Devices will indicate they require 3A operating current in their sink capabilities, and this will be used as the trigger to let the EC know to offer that port a 3A source contract. FRS source partners will also indicate the need for 3A in their sink capabilities, under their Fast Role Swap required current.
This policy is laid out in the following flow chart. Current policy for the “next” port allocation is to select the lowest port number any time more than one port meets criteria to receive 3A.
Port balancing will occur when:
Inserting a Type-A device does not affect the power assignment for Type-C ports; only Type-C devices affect the power of Type-C ports.
For example, the below sequence of events illustrates the above Type-C policy with a board with a maximum number of 1 3A-ports supported:
keyboard @ 1.5A.keyboard @ 3A.keyboard @ 3A and mouse @ 1.5A.keyboard @ 3A and mouse @ 1.5A and hub @ 1.5A.keyboard @ 1.5A and mouse @ 1.5A and hub @ 1.5A and phone @ 3A.keyboard @ 1.5A and mouse @ 1.5A and hub @ 1.5A and phone @ 3A and tablet @ 1.5A.keyboard @ 1.5A and mouse @ 1.5A and hub @ 1.5A and tablet @ 3A.keyboard @ 1.5A and mouse @ 1.5A and hub @ 1.5A and tablet @ 3A; dock FRS detection disabledkeyboard @ 1.5A and mouse @ 1.5A and hub @ 1.5A; dock FRS detection enabledkeyboard @ 1.5A and mouse @ 3A and hub @ 1.5A.keyboard @ 3A and hub @ 1.5A.Note: Not all released Chromebooks implement the above policy due to pre-existing hardware design constraints.
Type-C ports also need to provide an additional 300mA @ 5V (1.5W) for Vconn on every port. Note: the 1.5W for Vconn may also be supplied at other voltages, such as 455mA @ 3.3V instead.
The total current needed for all Type-C ports at 5V is:
((Number of Type-C Ports) * (1500mA + 300mA)) + 1500mA
The total maximum current needed for a single Type-C port at 5V is (3000mA + 300mA) = 3.3A. This max current for a single port is especially relevant for sizing the daughter board ribbon cable appropriately.