Zephyr Project API 3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
usbc_pd.h File Reference

USB-C Power Delivery API used for USB-C drivers. More...

#include <zephyr/types.h>

Go to the source code of this file.

Data Structures

union  pd_header
 Build a PD message header See Table 6-1 Message Header. More...
 
union  pd_ext_header
 Build an extended message header See Table 6-3 Extended Message Header. More...
 
union  pd_fixed_supply_pdo_source
 Create a Fixed Supply PDO Source value See Table 6-9 Fixed Supply PDO - Source. More...
 
union  pd_fixed_supply_pdo_sink
 Create a Fixed Supply PDO Sink value See Table 6-14 Fixed Supply PDO - Sink. More...
 
union  pd_variable_supply_pdo_source
 Create a Variable Supply PDO Source value See Table 6-11 Variable Supply (non-Battery) PDO - Source. More...
 
union  pd_variable_supply_pdo_sink
 Create a Variable Supply PDO Sink value See Table 6-15 Variable Supply (non-Battery) PDO - Sink. More...
 
union  pd_battery_supply_pdo_source
 Create a Battery Supply PDO Source value See Table 6-12 Battery Supply PDO - Source. More...
 
union  pd_battery_supply_pdo_sink
 Create a Battery Supply PDO Sink value See Table 6-16 Battery Supply PDO - Sink. More...
 
union  pd_augmented_supply_pdo_source
 Create Augmented Supply PDO Source value See Table 6-13 Programmable Power Supply APDO - Source. More...
 
union  pd_augmented_supply_pdo_sink
 Create Augmented Supply PDO Sink value See Table 6-17 Programmable Power Supply APDO - Sink. More...
 
union  pd_rdo
 The Request Data Object (RDO) Shall be returned by the Sink making a request for power. More...
 
struct  pd_msg
 Power Delivery message. More...
 

Macros

#define PD_MAX_EXTENDED_MSG_LEGACY_LEN   26
 Maximum length of a non-Extended Message in bytes.
 
#define PD_MAX_EXTENDED_MSG_LEN   260
 Maximum length of an Extended Message in bytes.
 
#define PD_MAX_EXTENDED_MSG_CHUNK_LEN   26
 Maximum length of a Chunked Message in bytes.
 
#define PD_T_TYPEC_SINK_WAIT_CAP_MIN_MS   310
 Minimum time a sink shall wait for a Source_Capabilities message before sending a Hard Reset See Table 6-61 Time Values Parameter Name: tTypeCSinkWaitCap.
 
#define PD_T_TYPEC_SINK_WAIT_CAP_MAX_MS   620
 Minimum time a sink shall wait for a Source_Capabilities message before sending a Hard Reset See Table 6-61 Time Values Parameter Name: tTypeCSinkWaitCap.
 
#define PD_V_SAFE_0V_MAX_MV   800
 VBUS maximum safe operating voltage at "zero volts".
 
#define PD_V_SAFE_5V_MIN_MV   4750
 VBUS minimum safe operating voltage at 5V.
 
#define PD_T_SAFE_0V_MAX_MS   650
 Time to reach PD_V_SAFE_0V_MV max in milliseconds.
 
#define PD_T_SAFE_5V_MAX_MS   275
 Time to reach PD_V_SAFE_5V_MV max in milliseconds.
 
#define PD_T_TX_TIMEOUT_MS   100
 Time to wait for TCPC to complete transmit.
 
#define PD_T_HARD_RESET_COMPLETE_MIN_MS   4
 Minimum time a Hard Reset must complete.
 
#define PD_T_HARD_RESET_COMPLETE_MAX_MS   5
 Maximum time a Hard Reset must complete.
 
#define PD_T_SENDER_RESPONSE_MIN_MS   24
 Minimum time a response must be sent from a Port Partner See Table 6-68 Time Values.
 
#define PD_T_SENDER_RESPONSE_NOM_MS   27
 Nomiminal time a response must be sent from a Port Partner See Table 6-68 Time Values.
 
#define PD_T_SENDER_RESPONSE_MAX_MS   30
 Maximum time a response must be sent from a Port Partner See Table 6-68 Time Values.
 
#define PD_T_SPR_PS_TRANSITION_MIN_MS   450
 Minimum SPR Mode time for a power supply to transition to a new level See Table 6-68 Time Values.
 
#define PD_T_SPR_PS_TRANSITION_NOM_MS   500
 Nominal SPR Mode time for a power supply to transition to a new level See Table 6-68 Time Values.
 
#define PD_T_SPR_PS_TRANSITION_MAX_MS   550
 Maximum SPR Mode time for a power supply to transition to a new level See Table 6-68 Time Values.
 
#define PD_T_EPR_PS_TRANSITION_MIN_MS   830
 Minimum EPR Mode time for a power supply to transition to a new level See Table 6-68 Time Values.
 
#define PD_T_EPR_PS_TRANSITION_NOM_MS   925
 Nominal EPR Mode time for a power supply to transition to a new level See Table 6-68 Time Values.
 
#define PD_T_EPR_PS_TRANSITION_MAX_MS   1020
 Maximum EPR Mode time for a power supply to transition to a new level See Table 6-68 Time Values.
 
#define PD_T_SINK_REQUEST_MIN_MS   100
 Minimum time to wait before sending another request after receiving a Wait message See Table 6-68 Time Values.
 
#define PD_T_CHUNKING_NOT_SUPPORTED_MIN_MS   40
 Minimum time to wait before sending a Not_Supported message after receiving a Chunked message See Table 6-68 Time Values.
 
#define PD_T_CHUNKING_NOT_SUPPORTED_NOM_MS   45
 Nominal time to wait before sending a Not_Supported message after receiving a Chunked message See Table 6-68 Time Values.
 
#define PD_T_CHUNKING_NOT_SUPPORTED_MAX_MS   50
 Maximum time to wait before sending a Not_Supported message after receiving a Chunked message See Table 6-68 Time Values.
 
#define PD_CONVERT_BYTES_TO_PD_HEADER_COUNT(c)   ((c) >> 2)
 Convert bytes to PD Header data object count, where a data object is 4-bytes.
 
#define PD_CONVERT_PD_HEADER_COUNT_TO_BYTES(c)   ((c) << 2)
 Convert PD Header data object count to bytes.
 
#define SINK_TX_OK   TC_RP_3A0
 Collision avoidance Rp values in REV 3.0 Sink Transmit "OK".
 
#define SINK_TX_NG   TC_RP_1A5
 Collision avoidance Rp values in REV 3.0 Sink Transmit "NO GO".
 
#define PD_GET_EXT_HEADER(c)   ((c) & 0xffff)
 Used to get extended header from the first 32-bit word of the message.
 
#define PDO_MAX_DATA_OBJECTS   7
 PDO - Power Data Object RDO - Request Data Object.
 
#define PD_CONVERT_MA_TO_FIXED_PDO_CURRENT(c)   ((c) / 10)
 Convert milliamps to Fixed PDO Current in 10mA units.
 
#define PD_CONVERT_MV_TO_FIXED_PDO_VOLTAGE(v)   ((v) / 50)
 Convert millivolts to Fixed PDO Voltage in 50mV units.
 
#define PD_CONVERT_FIXED_PDO_CURRENT_TO_MA(c)   ((c) * 10)
 Convert a Fixed PDO Current from 10mA units to milliamps.
 
#define PD_CONVERT_FIXED_PDO_VOLTAGE_TO_MV(v)   ((v) * 50)
 Convert a Fixed PDO Voltage from 50mV units to millivolts.
 
#define PD_CONVERT_MA_TO_VARIABLE_PDO_CURRENT(c)   ((c) / 10)
 Convert milliamps to Variable PDO Current in 10ma units.
 
#define PD_CONVERT_MV_TO_VARIABLE_PDO_VOLTAGE(v)   ((v) / 50)
 Convert millivolts to Variable PDO Voltage in 50mV units.
 
#define PD_CONVERT_VARIABLE_PDO_CURRENT_TO_MA(c)   ((c) * 10)
 Convert a Variable PDO Current from 10mA units to milliamps.
 
#define PD_CONVERT_VARIABLE_PDO_VOLTAGE_TO_MV(v)   ((v) * 50)
 Convert a Variable PDO Voltage from 50mV units to millivolts.
 
#define PD_CONVERT_MW_TO_BATTERY_PDO_POWER(c)   ((c) / 250)
 Convert milliwatts to Battery PDO Power in 250mW units.
 
#define PD_CONVERT_MV_TO_BATTERY_PDO_VOLTAGE(v)   ((v) / 50)
 Convert milliwatts to Battery PDO Voltage in 50mV units.
 
#define PD_CONVERT_BATTERY_PDO_POWER_TO_MW(c)   ((c) * 250)
 Convert a Battery PDO Power from 250mW units to milliwatts.
 
#define PD_CONVERT_BATTERY_PDO_VOLTAGE_TO_MV(v)   ((v) * 50)
 Convert a Battery PDO Voltage from 50mV units to millivolts.
 
#define PD_CONVERT_MA_TO_AUGMENTED_PDO_CURRENT(c)   ((c) / 50)
 Convert milliamps to Augmented PDO Current in 50mA units.
 
#define PD_CONVERT_MV_TO_AUGMENTED_PDO_VOLTAGE(v)   ((v) / 100)
 Convert millivolts to Augmented PDO Voltage in 100mV units.
 
#define PD_CONVERT_AUGMENTED_PDO_CURRENT_TO_MA(c)   ((c) * 50)
 Convert an Augmented PDO Current from 50mA units to milliamps.
 
#define PD_CONVERT_AUGMENTED_PDO_VOLTAGE_TO_MV(v)   ((v) * 100)
 Convert an Augmented PDO Voltage from 100mV units to millivolts.
 
#define NUM_SOP_STAR_TYPES   (PD_PACKET_DEBUG_PRIME_PRIME + 1)
 Number of valid Transmit Types.
 
USB PD 3.1 Rev 1.6, Table 6-70 Counter Parameters
#define PD_N_CAPS_COUNT   50
 The CapsCounter is used to count the number of Source_Capabilities Messages which have been sent by a Source at power up or after a Hard Reset.
 
#define PD_N_HARD_RESET_COUNT   2
 The HardResetCounter is used to retry the Hard Reset whenever there is no response from the remote device (see Section 6.6.6) Parameter Name: nHardResetCounter.
 
USB PD 3.1 Rev 1.6, Table 6-68 Time Values
#define PD_T_NO_RESPONSE_MIN_MS   4500
 The NoResponseTimer is used by the Policy Engine in a Source to determine that its Port Partner is not responding after a Hard Reset.
 
#define PD_T_NO_RESPONSE_MAX_MS   5500
 The NoResponseTimer is used by the Policy Engine in a Source to determine that its Port Partner is not responding after a Hard Reset.
 
#define PD_T_PS_HARD_RESET_MIN_MS   25
 Min time the Source waits to ensure that the Sink has had sufficient time to process Hard Reset Signaling before turning off its power supply to VBUS Parameter Name: tPSHardReset.
 
#define PD_T_PS_HARD_RESET_MAX_MS   35
 Max time the Source waits to ensure that the Sink has had sufficient time to process Hard Reset Signaling before turning off its power supply to VBUS Parameter Name: tPSHardReset.
 
#define PD_T_SINK_TX_MIN_MS   16
 Minimum time a Source waits after changing Rp from SinkTxOk to SinkTxNG before initiating an AMS by sending a Message.
 
#define PD_T_SINK_TX_MAX_MS   20
 Maximum time a Source waits after changing Rp from SinkTxOk to SinkTxNG before initiating an AMS by sending a Message.
 
#define PD_T_TYPEC_SEND_SOURCE_CAP_MIN_MS   100
 Minimum time a source shall wait before sending a Source_Capabilities message while the following is true: 1) The Port is Attached.
 
#define PD_T_TYPEC_SEND_SOURCE_CAP_MAX_MS   200
 Maximum time a source shall wait before sending a Source_Capabilities message while the following is true: 1) The Port is Attached.
 

Enumerations

enum  pdo_type { PDO_FIXED = 0 , PDO_BATTERY = 1 , PDO_VARIABLE = 2 , PDO_AUGMENTED = 3 }
 Power Data Object Type Table 6-7 Power Data Object. More...
 
enum  pd_frs_type { FRS_NOT_SUPPORTED , FRS_DEFAULT_USB_POWER , FRS_1P5A_5V , FRS_3P0A_5V }
 Fast Role Swap Required for USB Type-C current. More...
 
enum  pd_rev_type { PD_REV10 = 0 , PD_REV20 = 1 , PD_REV30 = 2 }
 Protocol revision. More...
 
enum  pd_packet_type {
  PD_PACKET_SOP = 0 , PD_PACKET_SOP_PRIME = 1 , PD_PACKET_PRIME_PRIME = 2 , PD_PACKET_DEBUG_PRIME = 3 ,
  PD_PACKET_DEBUG_PRIME_PRIME = 4 , PD_PACKET_TX_HARD_RESET = 5 , PD_PACKET_CABLE_RESET = 6 , PD_PACKET_TX_BIST_MODE_2 = 7 ,
  PD_PACKET_MSG_INVALID = 0xf
}
 Power Delivery packet type See USB Type-C Port Controller Interface Specification, Revision 2.0, Version 1.2, Table 4-38 TRANSMIT Register Definition. More...
 
enum  pd_ctrl_msg_type {
  PD_CTRL_GOOD_CRC = 1 , PD_CTRL_GOTO_MIN = 2 , PD_CTRL_ACCEPT = 3 , PD_CTRL_REJECT = 4 ,
  PD_CTRL_PING = 5 , PD_CTRL_PS_RDY = 6 , PD_CTRL_GET_SOURCE_CAP = 7 , PD_CTRL_GET_SINK_CAP = 8 ,
  PD_CTRL_DR_SWAP = 9 , PD_CTRL_PR_SWAP = 10 , PD_CTRL_VCONN_SWAP = 11 , PD_CTRL_WAIT = 12 ,
  PD_CTRL_SOFT_RESET = 13 , PD_CTRL_DATA_RESET = 14 , PD_CTRL_DATA_RESET_COMPLETE = 15 , PD_CTRL_NOT_SUPPORTED = 16 ,
  PD_CTRL_GET_SOURCE_CAP_EXT = 17 , PD_CTRL_GET_STATUS = 18 , PD_CTRL_FR_SWAP = 19 , PD_CTRL_GET_PPS_STATUS = 20 ,
  PD_CTRL_GET_COUNTRY_CODES = 21 , PD_CTRL_GET_SINK_CAP_EXT = 22
}
 Control Message type See Table 6-5 Control Message Types. More...
 
enum  pd_data_msg_type {
  PD_DATA_SOURCE_CAP = 1 , PD_DATA_REQUEST = 2 , PD_DATA_BIST = 3 , PD_DATA_SINK_CAP = 4 ,
  PD_DATA_BATTERY_STATUS = 5 , PD_DATA_ALERT = 6 , PD_DATA_GET_COUNTRY_INFO = 7 , PD_DATA_ENTER_USB = 8 ,
  PD_DATA_VENDOR_DEF = 15
}
 Data message type See Table 6-6 Data Message Types. More...
 
enum  pd_ext_msg_type {
  PD_EXT_SOURCE_CAP = 1 , PD_EXT_STATUS = 2 , PD_EXT_GET_BATTERY_CAP = 3 , PD_EXT_GET_BATTERY_STATUS = 4 ,
  PD_EXT_BATTERY_CAP = 5 , PD_EXT_GET_MANUFACTURER_INFO = 6 , PD_EXT_MANUFACTURER_INFO = 7 , PD_EXT_SECURITY_REQUEST = 8 ,
  PD_EXT_SECURITY_RESPONSE = 9 , PD_EXT_FIRMWARE_UPDATE_REQUEST = 10 , PD_EXT_FIRMWARE_UPDATE_RESPONSE = 11 , PD_EXT_PPS_STATUS = 12 ,
  PD_EXT_COUNTRY_INFO = 13 , PD_EXT_COUNTRY_CODES = 14
}
 Extended message type for REV 3.0 See Table 6-48 Extended Message Types. More...
 
enum  usbpd_cc_pin { USBPD_CC_PIN_1 = 0 , USBPD_CC_PIN_2 = 1 }
 Active PD CC pin. More...
 

Detailed Description

USB-C Power Delivery API used for USB-C drivers.

The information in this file was taken from the USB PD Specification Revision 3.0, Version 2.0