Zephyr Project API  3.1.0
A Scalable Open Source RTOS
usbc_pd.h File Reference

USBC Power Delivery API used for USBC 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. See Section 6.4.2 Request Message. 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. See Table 6-75 Value Parameters Parameter Name: MaxExtendedMsgLegacyLen. More...
 
#define PD_MAX_EXTENDED_MSG_LEN   260
 Maximum length of an Extended Message in bytes. See Table 6-75 Value Parameters Parameter Name: MaxExtendedMsgLen. More...
 
#define PD_MAX_EXTENDED_MSG_CHUNK_LEN   26
 Maximum length of a Chunked Message in bytes. When one of both Port Partners do not support Extended Messages of Data Size greater than PD_MAX_EXTENDED_MSG_LEGACY_LEN then the Protocol Layer supports a Chunking mechanism to break larger Messages into smaller Chunks of size PD_MAX_EXTENDED_MSG_CHUNK_LEN. See Table 6-75 Value Parameters Parameter Name: MaxExtendedMsgChunkLen. More...
 
#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. More...
 
#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. More...
 
#define PD_V_SAFE_0V_MAX_MV   800
 VBUS maximum safe operating voltage at "zero volts". See Table 7-24 Common Source/Sink Electrical Parameters Parameter Name: vSafe0V. More...
 
#define PD_V_SAFE_5V_MIN_MV   4750
 VBUS minimum safe operating voltage at 5V. See Table 7-24 Common Source/Sink Electrical Parameters Parameter Name: vSafe5V. More...
 
#define PD_T_SAFE_0V_MAX_MS   650
 Time to reach PD_V_SAFE_0V_MV max in milliseconds. See Table 7-24 Common Source/Sink Electrical Parameters Parameter Name: tSafe0V. More...
 
#define PD_T_SAFE_5V_MAX_MS   275
 Time to reach PD_V_SAFE_5V_MV max in milliseconds. See Table 7-24 Common Source/Sink Electrical Parameters Parameter Name: tSafe5V. More...
 
#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. More...
 
#define PD_CONVERT_PD_HEADER_COUNT_TO_BYTES(c)   ((c) << 2)
 Convert PD Header data object count to bytes. More...
 
#define PD_CONVERT_MA_TO_FIXED_PDO_CURRENT(c)   ((c) / 10)
 Convert milliamps to Fixed PDO Current in 10mA units. More...
 
#define PD_CONVERT_MV_TO_FIXED_PDO_VOLTAGE(v)   ((v) / 50)
 Convert millivolts to Fixed PDO Voltage in 50mV units. More...
 
#define PD_CONVERT_FIXED_PDO_CURRENT_TO_MA(c)   ((c) * 10)
 Convert a Fixed PDO Current from 10mA units to milliamps. More...
 
#define PD_CONVERT_FIXED_PDO_VOLTAGE_TO_MV(v)   ((v) * 50)
 Convert a Fixed PDO Voltage from 50mV units to millivolts. Used for converting pd_fixed_supply_pdo_source.voltage and pd_fixed_supply_pdo_sink.voltage. More...
 
#define PD_CONVERT_MA_TO_VARIABLE_PDO_CURRENT(c)   ((c) / 10)
 Convert milliamps to Variable PDO Current in 10ma units. More...
 
#define PD_CONVERT_MV_TO_VARIABLE_PDO_VOLTAGE(v)   ((v) / 50)
 Convert millivolts to Variable PDO Voltage in 50mV units. More...
 
#define PD_CONVERT_VARIABLE_PDO_CURRENT_TO_MA(c)   ((c) * 10)
 Convert a Variable PDO Current from 10mA units to milliamps. More...
 
#define PD_CONVERT_VARIABLE_PDO_VOLTAGE_TO_MV(v)   ((v) * 50)
 Convert a Variable PDO Voltage from 50mV units to millivolts. More...
 
#define PD_CONVERT_MW_TO_BATTERY_PDO_POWER(c)   ((c) / 250)
 Convert milliwatts to Battery PDO Power in 250mW units. More...
 
#define PD_CONVERT_MV_TO_BATTERY_PDO_VOLTAGE(v)   ((v) / 50)
 Convert milliwatts to Battery PDO Voltage in 50mV units. More...
 
#define PD_CONVERT_BATTERY_PDO_POWER_TO_MW(c)   ((c) * 250)
 Convert a Battery PDO Power from 250mW units to milliwatts. More...
 
#define PD_CONVERT_BATTERY_PDO_VOLTAGE_TO_MV(v)   ((v) * 50)
 Convert a Battery PDO Voltage from 50mV units to millivolts. More...
 
#define PD_CONVERT_MA_TO_AUGMENTED_PDO_CURRENT(c)   ((c) / 50)
 Convert milliamps to Augmented PDO Current in 50mA units. More...
 
#define PD_CONVERT_MV_TO_AUGMENTED_PDO_VOLTAGE(v)   ((v) / 100)
 Convert millivolts to Augmented PDO Voltage in 100mV units. More...
 
#define PD_CONVERT_AUGMENTED_PDO_CURRENT_TO_MA(c)   ((c) * 50)
 Convert an Augmented PDO Current from 50mA units to milliamps. More...
 
#define PD_CONVERT_AUGMENTED_PDO_VOLTAGE_TO_MV(v)   ((v) * 100)
 Convert an Augmented PDO Voltage from 100mV units to millivolts. More...
 

Enumerations

enum  pdo_src_type { PDO_FIXED = 0 , PDO_BATTERY = 1 , PDO_VARIABLE = 2 , PDO_AUGMENTED = 3 }
 Power Data Object Source 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

USBC Power Delivery API used for USBC drivers.

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