240 lines
17 KiB
Markdown
240 lines
17 KiB
Markdown
<!-- page 392 -->
|
|
|
|
# Chapter 10. Fast Role Swap (FRS)
|
|
|
|
## 10.1. Introduction
|
|
|
|
A Fast Role Swap (FRS) is like a Power Role Swap but is done much faster and without initial Message exchanges to
|
|
start the Power Role process. FRS is designed for use by charge-through accessories. A Charge-Through Accessory
|
|
is a USB PD-capable DRP Hub or Device that meets all the following:
|
|
|
|
- Capable of receiving power from an External Power Supply.
|
|
- Capable of receiving power from an upstream Host (e.g., notebook, tablet, phone).
|
|
- Capable of supplying power to the upstream Host when powered by an external supply.
|
|
- Powers its internal circuitry from whichever power Source is active.
|
|
- Capable of powering any downstream ports from whichever power Source is active.
|
|
|
|
For a Charge-Through Accessory to be an FRS-capable Charge-Through Accessory, it must also meet the following:
|
|
|
|
- Capable of powering its internal circuitry and downstream ports when receiving 5V from an upstream Host
|
|
at 15W or less. If higher voltage or more current is required to complete the swap and function, then FRS
|
|
will not work.
|
|
|
|
When an FRS-capable Charge-Through Accessory is supplying power to the upstream Host, the loss of the External
|
|
Supply triggers the FRS mechanism. If the upstream Host also supports and is initialized for FRS, an FRS-capable
|
|
Charge-Through Accessory will quickly swap power roles with the Host, causing the Host to become the power
|
|
Source, without disrupting ongoing data connections or Device functionality. This transition relies on temporary
|
|
internal power storage within the accessory to maintain power within the accessory and continue providing power
|
|
to any downstream ports during the swap.
|
|
|
|
FRS ensures power continuity by enabling the Host to apply `vSafe5V` to VBUS when it detects VBUS drooping
|
|
to or below `vSafe5V` after receiving a valid Fast Role Swap signal. The Fast Role Swap AMS (Atomic Messaging
|
|
Sequence) is used in parallel to the power swap on VBUS to reestablish correct Source/Sink power roles and to
|
|
properly configure the USB-C Rp/Rd terminations.
|
|
|
|
Figure 10.1 shows an example power flow direction before and after an FRS. In this example, an external power
|
|
Source is powering a Host and a bus-powered accessory through the Charge-Through Accessory. When external
|
|
power is lost, the FRS event occurs, and the Charge-Through Accessory and the bus-powered accessory are then
|
|
powered by the Host.
|
|
|
|
**Figure 10.1. Power Flow Before and After an FRS**
|
|
|
|

|
|
|
|
## 10.2. FRS Initialization
|
|
|
|
Prior to an FRS event, the accessory providing power to an upstream Host is the Initial Source and the upstream
|
|
Host receiving power is the Initial Sink.
|
|
|
|
<!-- page 393 -->
|
|
|
|
The Initial Sink **Shall** only be initialized for FRS and respond to a Fast Role Swap signal when the following conditions
|
|
are true:
|
|
|
|
1. An Explicit Contract is established between the Initial Source and the Initial Sink.
|
|
2. Initial Sink has sent a `Get_Sink_Cap` Message and received the Sink Capabilities from the Initial Source
|
|
with at least one of the Fast Role Swap bits set in the 5V Fixed Supply PDO.
|
|
3. The Initial Sink is capable of sourcing the current (`iNewFrsSnk`) indicated by the Initial Source in the Fast
|
|
Role Swap bits of the `Sink_Capabilities` Message.
|
|
|
|
Rules for the Initial Sink FRS initialization are:
|
|
|
|
- The Initial Sink Should check for condition 2 as soon as practical.
|
|
- When either condition 1 or 2 is not met, the Initial Sink **Shall** not initialize for FRS and **Shall** not respond
|
|
to an FRS signal.
|
|
- When condition 1 or 2 is met but condition 3 is not met, the Initial Sink May initialize for FRS.
|
|
- When all three conditions are met, the Initial Sink Should initialize for FRS.
|
|
|
|
When initialized for FRS, the Initial Sink is ready to respond to an FRS signal. At initialization:
|
|
|
|
- the Initial Sink **Shall** disable Type-C disconnect detection and **Shall** become the VCONN Source if it is
|
|
required to support VCONN otherwise (i.e., USB 3, DisplayPort Alt Mode, etc.). This avoids requiring a
|
|
VCONN Swap during the FRS event.
|
|
- If the Initial Sink would not be required to Source VCONN as a Source normally (e.g., USB2 only), then it
|
|
is not required to perform a VCONN Swap.
|
|
|
|
Note: The Initial Source is unaware whether the Initial Sink is initialized for FRS or not and will attempt to signal FRS
|
|
on external power loss regardless of the Initial Sink's initialization.
|
|
|
|
## 10.3. FRS Sequence
|
|
|
|
Figure 10.2, Figure 10.3, and Figure 10.4 illustrate the FRS sequence. Figure 10.2 shows the Signaling and response
|
|
activity diagrams of an FRS. Figure 10.3 and Figure 10.4 show the relative timing diagrams for a slow/long FRS
|
|
event and a fast/short FRS event. Each figure shows a corresponding numbered event that matches between the
|
|
activity diagrams, the timing diagrams, and the numbered sequence in the text following the figures.
|
|
|
|
The Initial Source follows the 'Signal FRS' activity diagram shown in Figure 10.2 when external power loss is detected
|
|
and the Initial Sink follows the 'FRS Signal Received' activity diagram when it detects the FRS Signal. To swap
|
|
power quickly, without waiting for Message exchanges, the power activity happens in parallel to, and generally faster
|
|
than, the messaging on CC. To show this, each activity diagram is broken into swim lanes for Power/Control and
|
|
CC Signaling and shows both sequential activity paths and parallel paths. Due to the parallel nature of activity, the
|
|
numbered steps aren't always sequential through the diagram and text.
|
|
|
|
<!-- page 394 -->
|
|
|
|
**Figure 10.2. FRS Signaling and Receiving Activity Diagrams**
|
|
|
|

|
|
|
|
<!-- page 395 -->
|
|
|
|
**Figure 10.3. FRS Sequence with VBUS Starting at Voltage > vSafe5V (long discharge)**
|
|
|
|

|
|
|
|
**Figure 10.4. FRS Sequence with VBUS starting at vSafe5V (short or no discharge)**
|
|
|
|

|
|
|
|
<!-- page 396 -->
|
|
|
|
## 10.4. Initial Source/New Sink
|
|
|
|
An FRS Request is signaled by the Initial Source when it has lost external power and needs the Initial Sink to provide
|
|
power to VBUS. The Initial Source Should signal the FRS as soon as it is aware that it has lost power. The following
|
|
steps describe the behavior shown in the 'Signal FRS' activity diagram in Figure 10.2 and the timing diagram shown
|
|
in Figure 10.3 and Figure 10.4 match the numbers indicated in the figures.
|
|
|
|
#### Power and Control
|
|
|
|
1. The Initial Source detects external power loss.
|
|
2. The Initial Source **Shall** discard any pending messages and start sending the FRS Signal. The FRS Signal
|
|
is transmitted by pulling the CC line below `vFRSwapCableTx` for at least `tFRSwapTx`.
|
|
3. At the same time as starting the FRS Signal, the Initial Source **Shall** stop Sourcing VBUS and **Shall** start
|
|
sinking current ≤ `iSnkStdby` from VBUS. While VBUS ≥ `vSafe5V` (max), the New Sink **Shall** Sink enough
|
|
current to discharge to `vSafe5V` (max) within `tSafe5V`.
|
|
4. Wait for VBUS ≤ `vSafe5V` (max) and initialize the `SnkFRSwapTimer` with `tSnkFRSwap` and start the timer.
|
|
VBUS may already be ≤ `vSafe5V` (max) when this step is reached.
|
|
5. The New Sink **Shall** continue to pull current to discharge VBUS to `vSafe5V` (min) during `SnkFRSwapTimer`.
|
|
This prevents the process from stalling where the New Source's threshold for `vSafe5V` (max) might be lower
|
|
than the New Sink's threshold. The New Source might begin to Source VBUS before reaching `vSafe5V`
|
|
(min) resulting in VBUS staying above `vSafe5V` (min). If VBUS falls below `vSafe5V` (min), the New Sink is
|
|
no longer required to discharge VBUS.
|
|
6. `iSnkStdby` is the (max) current that can be drawn until `tSnkFRSwap` after both the FRS Signal was started
|
|
and VBUS < `vSafe5V` (max).
|
|
7. After `tSnkFRSwap`, the New Sink **Shall** Sink current ≤ `iNewFrsSnk`. `iNewFrsSnk` is the current set by the
|
|
FRS bits in the New Sink's Sink Capabilities initially provided to the Initial Sink. The New Sink **Shall** Sink
|
|
current ≤ `iNewFrsSnk` until it has detected the New Source's Rp termination.
|
|
8. When the `PS_RDY` Message from the New Source is received, the New Sink is now in an Implicit Contract
|
|
and **Shall** enable Type-C disconnect detection.
|
|
9. The New Sink **Shall** limit the Sink current based on the Implicit Contract until an Explicit Contract is established.
|
|
10. Once an Explicit Contract is established, normal operation resumes.
|
|
|
|
#### CC Signaling
|
|
|
|
11. The FRS **Shall** be signaled by pulling low on CC for a length `tFRSwapTx` and the `FRSResponseTimer` is
|
|
initialized with `tFRSResponse` and started.
|
|
12. After sending the FRS Signal, the Initial Source waits to receive an `FR_Swap` Message. If the `FR_Swap`
|
|
Message is not received and responded to within expiration of `FRSResponseTimer`, the New Sink **Shall**
|
|
go to errorRecovery.
|
|
13. The New Sink **Shall** send an `Accept` Message in response to the `FR_Swap` Message within `tReceiverResponse`.
|
|
14. When both the `GoodCRC` Message response following the `Accept` Message has been received and VBUS
|
|
≤ `vSafe5V` (max), the New Sink **Shall** assert Rd and send a `PS_RDY` Message within `tFRSwap5V`. The
|
|
Port Power Role field of the `PS_RDY` Message **Shall** be set to Sink.
|
|
15. After sending the `PS_RDY`, the New Sink **Shall** wait for a `PS_RDY` Message from the New Source.
|
|
|
|
<!-- page 397 -->
|
|
|
|
16. After the `PS_RDY` Message is received from the New Source, the New Sink waits to enter an Explicit
|
|
Contract with the New Source.
|
|
|
|
### 10.4.1. Initial Sink/New Source
|
|
|
|
An Initial Sink, when initialized for FRS, monitors for the FRS Signal from the Initial Source and disables Type-C
|
|
disconnect detection via VBUS. The Initial Sink **Shall** also be ready to Source VBUS as soon as the FRS Signal
|
|
is received. When the FRS Signal is received, the Initial Sink follows the FRS Signal Received activity diagram
|
|
shown in Figure 10.2.
|
|
|
|
#### Power and Control
|
|
|
|
1. The FRS signal is received by the Initial Sink for at least `tFRSwapRx`.
|
|
2. The Initial Sink becomes the New Source and **Shall** immediately stop sinking current from VBUS.
|
|
3. At the same time, the New Source **Shall** discard any pending messages.
|
|
4. Wait for VBUS ≤ `vSafe5V` (max) and then proceed.
|
|
5. The New Source Should immediately start sourcing VBUS at `vSafe5V` and `iNewFrsSnk` and **Shall** start
|
|
sourcing within `tSrcFRSwap` of VBUS ≤ `vSafe5V` (min).
|
|
6. When the `PS_RDY` Message from the New Sink is received, the New Source **Shall** Source VBUS based
|
|
on the Implicit Contract at a Type-C current ≥ `iNewFrsSnk`.
|
|
7. After sending a `PS_RDY` Message, the New Source **Shall** enable Type-C disconnect detection.
|
|
8. Once an Explicit Contract is established, normal operation resumes.
|
|
|
|
#### CC Signaling
|
|
|
|
9. The New Source responds to the FRS signal by sending the `FR_Swap` Message within `tFRSwapInit` of
|
|
completing the detection.
|
|
10. After sending the `FR_Swap` Message, the New Source waits for an `Accept` Message. If the `Accept` Message
|
|
is not received and responded to with a `GoodCRC` Message within `tSenderResponse` time, the New Source
|
|
**Shall** go to ErrorRecovery.
|
|
11. After receiving the `Accept` Message, the New Source initalizes the `PSSourceOffTimer` with `tPSSourceOff`
|
|
and waits to receive a `PS_RDY` Message. If the `PS_RDY` Message is not received and responded to with
|
|
a `GoodCRC` Message when the `PSSourceOffTimer` expires, the New Source **Shall** go to ErrorRecovery.
|
|
If the FRS Signal was received while in SPR Mode, the SPR `tPSSourceOff` time is used. If the FRS Signal
|
|
was received while in EPR Mode, the EPR `tPSSourceOff` time is used.
|
|
12. After receiving the `PS_RDY` Message and responding with a `GoodCRC` Message and VBUS ≤ `vSafe5V`
|
|
(max), the New Source **Shall** assert Rp termination for a Type-C current ≥ `iNewFrsSnk`, and send a `PS_RDY`
|
|
Message within `tFRSwapComplete` of sending the `GoodCRC` Message. The Port Power Role field of the
|
|
`PS_RDY` Message **Shall** be set to Source.
|
|
13. After sending the `PS_RDY` Message, the New Source **Shall** establish an Explicit Contract. Note: the New
|
|
Source May query the Cable Plug with a `Discovery_Identity` Message prior to sending Source Capabilities.
|
|
|
|
### 10.4.2. Constraints During FRS
|
|
|
|
- The FRS process is considered an AMS. No other messages may be exchanged until all messages in the
|
|
Fast Role Swap sequences have been completed and an Explicit Contract has been established. If any
|
|
Unexpected Message is received by either the Source or the Sink, the recipient **Shall** go to ErrorRecovery.
|
|
- If any step in the sequence is missed or delayed, the Initial Source (now New Sink) May run out of internal
|
|
power and disconnect.
|
|
|
|
<!-- page 398 -->
|
|
|
|
## 10.5. FRS Parameters
|
|
|
|
**Table 10.1. FRS Timers**
|
|
|
|
| Timer Name | Timer Parameter | Description |
|
|
| --- | --- | --- |
|
|
| `FRSResponseTimer` | `tFRSResponse` | Timer to enforce `tFRSResponse` time. |
|
|
| `SnkFRSwapTimer` | `tSnkFRSwap` | Timer to enforce `tSnkFRSwap` time. |
|
|
|
|
**Table 10.2. FRS Parameters**
|
|
|
|
| Parameter Name | Min Value | Nom Value | Max Value | Unit | Description |
|
|
| --- | --- | --- | --- | --- | --- |
|
|
| `iNewFrsSink` | | | Default USB | A | Maximum current the New Sink can draw during a Fast Role Swap until the New Source applies Rp.<br>Matches the required Fast Role Swap required USB Type-C Current field of the Fixed Supply PDO of the Initial Source's `Sink_Capabilities` Message. |
|
|
| `iNewFrsSink` | | | 1.5 | A | Maximum current the New Sink can draw during a Fast Role Swap until the New Source applies Rp.<br>Matches the required Fast Role Swap required USB Type-C Current field of the Fixed Supply PDO of the Initial Source's `Sink_Capabilities` Message. |
|
|
| `iNewFrsSink` | | | 3.0 | A | Maximum current the New Sink can draw during a Fast Role Swap until the New Source applies Rp.<br>Matches the required Fast Role Swap required USB Type-C Current field of the Fixed Supply PDO of the Initial Source's `Sink_Capabilities` Message. |
|
|
| `tFRSResponse` | | | 50 | ms | Interval for the Initial Source to receive an `FR_Swap` Message from the Initial Sink after sending an FRS Signal.<br>**Start**: the leading edge of the FRS Signal.<br>**End**: the last bit of the `FR_Swap` Message EOP has been transmitted |
|
|
| `tFRSwap5V` | | | 15 | ms | Interval for the New Sink to assert Rd and send a `PS_RDY` Message indicating it has completed the swap from the Initial Source.<br>**Start**: The later of (both have occurred):<br>• The last bit of the `GoodCRC` Message response EOP following the Accept Message has been transmitted.<br>• VBUS ≤ `vSafe5V`.<br>**End**: the first bit of the `PS_RDY` Message Preamble has been transmitted. |
|
|
| `tFRSwapComplete` | | | 15 | ms | Interval for the New Source to assert Rp and send a `PS_RDY` Message indicating it has completed the swap from the Initial Sink.<br>**Start**: The later of (both have occurred):<br>• The last bit of the `GoodCRC` response EOP following the New Sink's `PS_RDY` Message has been transmitted.<br>• New Source is sourcing VBUS at `vSafe5V`.<br>**End**: first bit of the response `PS_RDY` Message Preamble has been transmitted. |
|
|
| `tFRSwapInit` | | | 15 | ms | Interval for the Initial Sink to send an `FR_Swap` Message after detecting an FRS Signal.<br>**Start**: the detection of an FRS signal.<br>**End**: the last bit of the `FR_Swap` Message EOP has been transmitted. |
|
|
| `tFRSwapRx` | 30 | | 50 | μs | FRS signal receive duration. Duration of the FRS signal to be detected as valid by the Initial Sink.<br>**Start**: falling edge of CC low |
|
|
| `tFRSwapTx` | 60 | | 120 | μs | FRS signal transmit duration. Duration of the Initial Source driving CC low to signal an FRS.<br>**Start**: falling edge of CC low by driving with a resistance to ground of `rFRSwapTx`.<br>**End**: rising edge of CC when removing the `rFRSwapTx` resistance. |
|
|
|
|
<!-- page 399 -->
|
|
|
|
| Parameter Name | Min Value | Nom Value | Max Value | Unit | Description |
|
|
| --- | --- | --- | --- | --- | --- |
|
|
| `tSnkFRSwap` | | | 200 | μs | Wait time during an FRS before the New Sink can draw up to `iNewFrsSink`.<br>**Start**: The later of (both have occurred):<br>• Start of the FRS signal.<br>• VBUS falling below `vSafe5V` (min). |
|
|
| `tSrcFRSwap` | | | 150 | μs | Interval for the New Source to be actively sourcing VBUS at `vSafe5V` and `iNewFrsSink`.<br>**Start**: VBUS ≤ `vSafe5V` (max). |
|
|
| `rFRSwapTx` | | | 5 | Ω | FRS Signal transmit driver pull-down resistance. Resistance is between the CC pin and ground. |
|
|
| `vFRSwapCableTx` | 490 | 520 | 550 | mV | FRS Request voltage detection threshold. |
|