SLVUCR8A September 2023 – March 2024 TPS25751
The 'GPPI' Task can be used to cause the PD controller to issue these types of USB PD Get messages:
The PD controller does not have dedicated registers to store the response to these messages. The host must get that response from the DATAX register associated with this Task.
The host must NOT use 'GPPI' to send Get_Sink_Capabilities or Get_Source_Capabilities messages, because the USB PD spec requires specific actions be taken by the PD controller any time those messages are received. While executing the 'GPPI' Task, the PD controller does not parse the returned message to carry out those checks. Instead, the host must use 'GSkC' to send Get_Sink_Capabilities and 'GSrC' to send Get_Source_Capabilities messages.
This Task is defined to enable supporting any new Get message that can be defined by USB PD in the future.
Description | The 'GPPI' Task instructs PD Controller to issue a specific USB PDmessage to the Port Partner at the first opportunity while maintaining policyengine compliance. | |||
---|---|---|---|---|
INPUT DATAX | Bit | Name | Description | |
15 | Reserved | |||
14:13 | FrameType | |||
00b | SOP | |||
01b | SOP' | |||
10b | SOP'' | |||
11b | Reserved | |||
12:8 | NumBytes | |||
7 | Reserved | |||
6:5 | MessageCategory | |||
00b | Control message (no payload) | |||
01b | Data message (requires payload) | |||
10b | Extended message (requires payload) | |||
11b | Reserved | |||
4:0 | MessageType | This field must be the MessageType as defined in the USB PD specification. It specifies the Type of message the PD controller will send. | ||
OUTPUT DATAX | Byte 1: Standard Task Return Code. | |||
Task Completion | The 'GPPI' Task completes either when the appropriate message is received or the Task otherwise fails. The 'GPPI' Task shall be considered rejected if:
The 'GPPI' Task shall be aborted when the Rx Buffer is locked. The Rx Buffer is locked after data from a receive message is placed in the DATAX register. The Rx Buffer is unlocked after disconnect and by the 'MBRd' Task. | |||
Side Effects | If necessary, the PD controller can issue a VCONN_Swap in order to send the requested message to a Cable Plug.
If the PD controller is in the sink power role and it reads Rp = SinkTxNG, it will wait until Rp = SinkTxOK before initiating the atomic message sequence requested by this 'GPPI' Task. This can cause an non-deterministic delay in completing the Task. | |||
Additional Information | The PD controller will continue trying to execute this Task until it times out or aborts as described above. The host can want to issue the 'ABRT' Task if the process takes too long. Some scenarios where this can happen are:
The host must wait until CMDx reads as 0 or INT_EVENT1.CmdComplete is asserted before issuing the 'MBRd' 4CC Task to read the Rx Buffer after issuing this 'GPPI' Task. While executing the 'GPPI' Task, the PD controller uses the same shared buffer that is used to store other extended messages. Therefore, the host must not use the 'GPPI' Task when any other atomic message sequence is ongoing. To read the PD response received as a result of issuing the 'GPPI' Task after it is completed, the host must use the 'MBRd' 4CC command. The 'MBRd' Task must also be used to unlock the Rx Buffer for other incoming message. |