TCPC
Overview
TCPC (USB Type-C Port Controller) The TCPC is a device used to simplify the implementation of a USB-C system by providing the following three function:
VBUS and VCONN control USB Type-C: The TCPC may provide a Source device, the mechanism to control VBUS sourcing, and a Sink device, the mechanism to control VBUS sinking. A similar mechanism is provided for the control of VCONN.
CC control and sensing: The TCPC implements logic for controlling the CC pin pull-up and pull-down resistors. It also provides a way to sense and report what resistors are present on the CC pin.
Power Delivery message reception and transmission USB Power Delivery: The TCPC sends and receives messages constructed in the TCPM and places them on the CC lines.
TCPC API
The TCPC device driver functions as the liaison between the TCPC device and the application software; this is accomplished by the Zephyr’s API provided by the device driver that’s used to communicate with and control the TCPC device.
Configuration Options
Related configuration options:
API Reference
- group usb_type_c
USB Type-C.
Defines
-
TC_V_SINK_DISCONNECT_MIN_MV
VBUS minimum for a sink disconnect detection. See Table 4-3 VBUS Sink Characteristics.
-
TC_V_SINK_DISCONNECT_MAX_MV
VBUS maximum for a sink disconnect detection. See Table 4-3 VBUS Sink Characteristics.
-
TC_T_VBUS_ON_MAX_MS
From entry to Attached.SRC until VBUS reaches the minimum vSafe5V threshold as measured at the source’s receptacle See Table 4-29 VBUS and VCONN Timing Parameters.
-
TC_T_VBUS_OFF_MAX_MS
From the time the Sink is detached until the Source removes VBUS and reaches vSafe0V (See USB PD). See Table 4-29 VBUS and VCONN Timing Parameters.
-
TC_T_VCONN_ON_MAX_MS
From the time the Source supplied VBUS in the Attached.SRC state. See Table 4-29 VBUS and VCONN Timing Parameters.
-
TC_T_VCONN_ON_PA_MAX_MS
From the time a Sink with accessory support enters the PoweredAccessory state until the Sink sources minimum VCONN voltage (see Table 4-5) See Table 4-29 VBUS and VCONN Timing Parameters.
-
TC_T_VCONN_OFF_MAX_MS
From the time that a Sink is detached or as directed until the VCONN supply is disconnected. See Table 4-29 VBUS and VCONN Timing Parameters.
-
TC_T_SINK_ADJ_MAX_MS
Response time for a Sink to adjust its current consumption to be in the specified range due to a change in USB Type-C Current advertisement See Table 4-29 VBUS and VCONN Timing Parameters.
-
TC_T_DRP_MIN_MS
The minimum period a DRP shall complete a Source to Sink and back advertisement See Table 4-30 DRP Timing Parameters.
-
TC_T_DRP_MAX_MS
The maximum period a DRP shall complete a Source to Sink and back advertisement See Table 4-30 DRP Timing Parameters.
-
TC_T_DRP_TRANSITION_MIN_MS
The minimum time a DRP shall complete transitions between Source and Sink roles during role resolution See Table 4-30 DRP Timing Parameters.
-
TC_T_DRP_TRANSITION_MAX_MS
The maximum time a DRP shall complete transitions between Source and Sink roles during role resolution See Table 4-30 DRP Timing Parameters.
-
TC_T_DRP_TRY_MIN_MS
Minimum wait time associated with the Try.SRC state. See Table 4-30 DRP Timing Parameters.
-
TC_T_DRP_TRY_MAX_MS
Maximum wait time associated with the Try.SRC state. See Table 4-30 DRP Timing Parameters.
-
TC_T_DRP_TRY_WAIT_MIN_MS
Minimum wait time associated with the Try.SNK state. See Table 4-30 DRP Timing Parameters.
-
TC_T_DRP_TRY_WAIT_MAX_MS
Maximum wait time associated with the Try.SNK state. See Table 4-30 DRP Timing Parameters.
-
TC_T_TRY_TIMEOUT_MIN_MS
Minimum timeout for transition from Try.SRC to TryWait.SNK. See Table 4-30 DRP Timing Parameters.
-
TC_T_TRY_TIMEOUT_MAX_MS
Maximum timeout for transition from Try.SRC to TryWait.SNK. See Table 4-30 DRP Timing Parameters.
-
TC_T_VPD_DETACH_MIN_MS
Minimum Time for a DRP to detect that the connected Charge-Through VCONNPowered USB Device has been detached, after VBUS has been removed. See Table 4-30 DRP Timing Parameters.
-
TC_T_VPD_DETACH_MAX_MS
Maximum Time for a DRP to detect that the connected Charge-Through VCONNPowered USB Device has been detached, after VBUS has been removed. See Table 4-30 DRP Timing Parameters.
-
TC_T_CC_DEBOUNCE_MIN_MS
Minimum time a port shall wait before it can determine it is attached See Table 4-31 CC Timing.
-
TC_T_CC_DEBOUNCE_MAX_MS
Maximum time a port shall wait before it can determine it is attached See Table 4-31 CC Timing.
-
TC_T_PD_DEBOUNCE_MIN_MS
Minimum time a Sink port shall wait before it can determine it is detached due to the potential for USB PD signaling on CC as described in the state definitions. See Table 4-31 CC Timing.
-
TC_T_PD_DEBOUNCE_MAX_MS
Maximum time a Sink port shall wait before it can determine it is detached due to the potential for USB PD signaling on CC as described in the state definitions. See Table 4-31 CC Timing.
-
TC_T_TRY_CC_DEBOUNCE_MIN_MS
Minimum Time a port shall wait before it can determine it is re-attached during the try-wait process. See Table 4-31 CC Timing.
-
TC_T_TRY_CC_DEBOUNCE_MAX_MS
Maximum Time a port shall wait before it can determine it is re-attached during the try-wait process. See Table 4-31 CC Timing.
-
TC_T_ERROR_RECOVERY_SELF_POWERED_MIN_MS
Minimum time a self-powered port shall remain in the ErrorRecovery state. See Table 4-31 CC Timing.
-
TC_T_ERROR_RECOVERY_SOURCE_MIN_MS
Minimum time a source shall remain in the ErrorRecovery state if it was sourcing VCONN in the previous state. See Table 4-31 CC Timing.
-
TC_T_RP_VALUE_CHANGE_MIN_MS
Minimum time a Sink port shall wait before it can determine there has been a change in Rp where CC is not BMC Idle or the port is unable to detect BMC Idle. See Table 4-31 CC Timing.
-
TC_T_RP_VALUE_CHANGE_MAX_MS
Maximum time a Sink port shall wait before it can determine there has been a change in Rp where CC is not BMC Idle or the port is unable to detect BMC Idle. See Table 4-31 CC Timing.
-
TC_T_SRC_DISCONNECT_MIN_MS
Minimum time a Source shall detect the SRC.Open state. The Source should detect the SRC.Open state as quickly as practical. See Table 4-31 CC Timing.
-
TC_T_SRC_DISCONNECT_MAX_MS
Maximum time a Source shall detect the SRC.Open state. The Source should detect the SRC.Open state as quickly as practical. See Table 4-31 CC Timing.
-
TC_T_NO_TOGGLE_CONNECT_MIN_MS
Minimum time to detect connection when neither Port Partner is toggling. See Table 4-31 CC Timing.
-
TC_T_NO_TOGGLE_CONNECT_MAX_MS
Maximum time to detect connection when neither Port Partner is toggling. See Table 4-31 CC Timing.
-
TC_T_ONE_PORT_TOGGLE_CONNECT_MIN_MS
Minimum time to detect connection when one Port Partner is toggling 0ms … dcSRC.DRP max * tDRP max + 2 * tNoToggleConnect). See Table 4-31 CC Timing.
-
TC_T_ONE_PORT_TOGGLE_CONNECT_MAX_MS
Maximum time to detect connection when one Port Partner is toggling 0ms … dcSRC.DRP max * tDRP max + 2 * tNoToggleConnect). See Table 4-31 CC Timing.
-
TC_T_TWO_PORT_TOGGLE_CONNECT_MIN_MS
Minimum time to detect connection when both Port Partners are toggling (0ms … 5 * tDRP max + 2 * tNoToggleConnect). See Table 4-31 CC Timing.
-
TC_T_TWO_PORT_TOGGLE_CONNECT_MAX_MS
Maximum time to detect connection when both Port Partners are toggling (0ms … 5 * tDRP max + 2 * tNoToggleConnect). See Table 4-31 CC Timing.
-
TC_T_VPDCTDD_MIN_US
Minimum time for a Charge-Through VCONN-Powered USB Device to detect that the Charge-Through source has disconnected from CC after VBUS has been removed, transition to CTUnattached.VPD, and re-apply its Rp termination advertising 3.0 A on the host port CC. See Table 4-31 CC Timing.
-
TC_T_VPDCTDD_MAX_MS
Maximum time for a Charge-Through VCONN-Powered USB Device to detect that the Charge-Through source has disconnected from CC after VBUS has been removed, transition to CTUnattached.VPD, and re-apply its Rp termination advertising 3.0 A on the host port CC. See Table 4-31 CC Timing.
-
TC_T_VPDDISABLE_MIN_MS
Minimum time for a Charge-Through VCONN-Powered USB Device shall remain in CTDisabled.VPD state. See Table 4-31 CC Timing.
Enums
-
enum tc_cc_voltage_state
CC Voltage status.
Values:
-
enumerator TC_CC_VOLT_OPEN = 0
No port partner connection
-
enumerator TC_CC_VOLT_RA = 1
Port partner is applying Ra
-
enumerator TC_CC_VOLT_RD = 2
Port partner is applying Rd
-
enumerator TC_CC_VOLT_RP_DEF = 5
Port partner is applying Rp (0.5A)
-
enumerator TC_CC_VOLT_RP_1A5 = 6
-
enumerator TC_CC_VOLT_RP_3A0 = 7
Port partner is applying Rp (3.0A)
-
enumerator TC_CC_VOLT_OPEN = 0
-
enum tc_vbus_level
VBUS level voltages.
Values:
-
enumerator TC_VBUS_SAFE0V = 0
VBUS is less than vSafe0V max
-
enumerator TC_VBUS_PRESENT = 1
VBUS is at least vSafe5V min
-
enumerator TC_VBUS_REMOVED = 2
VBUS is less than vSinkDisconnect max
-
enumerator TC_VBUS_SAFE0V = 0
-
enum tc_rp_value
Pull-Up resistor values.
Values:
-
enumerator TC_RP_USB = 0
Pull-Up resistor for a current of 900mA
-
enumerator TC_RP_1A5 = 1
Pull-Up resistor for a current of 1.5A
-
enumerator TC_RP_3A0 = 2
Pull-Up resistor for a current of 3.0A
-
enumerator TC_RP_RESERVED = 3
No Pull-Up resistor is applied
-
enumerator TC_RP_USB = 0
-
enum tc_cc_pull
CC pull resistors.
Values:
-
enumerator TC_CC_RA = 0
Ra Pull-Down resistor
-
enumerator TC_CC_RP = 1
Rp Pull-Up resistor
-
enumerator TC_CC_RD = 2
Rd Pull-Down resistor
-
enumerator TC_CC_OPEN = 3
No CC resistor
-
enumerator TC_RA_RD = 4
Ra and Rd Pull-Down resistor
-
enumerator TC_CC_RA = 0
-
enum tc_power_role
Power Delivery Power Role.
Values:
-
enumerator TC_ROLE_SINK = 0
Power role is a sink
-
enumerator TC_ROLE_SOURCE = 1
Power role is a source
-
enumerator TC_ROLE_SINK = 0
-
enum tc_data_role
Power Delivery Data Role.
Values:
-
enumerator TC_ROLE_UFP = 0
Data role is an Upstream Facing Port
-
enumerator TC_ROLE_DFP = 1
Data role is a Downstream Facing Port
-
enumerator TC_ROLE_DISCONNECTED = 2
Port is disconnected
-
enumerator TC_ROLE_UFP = 0
-
enum tc_cc_polarity
Polarity of the CC lines.
Values:
-
enumerator TC_POLARITY_CC1 = 0
Use CC1 IO for Power Delivery communication
-
enumerator TC_POLARITY_CC2 = 1
Use CC2 IO for Power Delivery communication
-
enumerator TC_POLARITY_CC1 = 0
-
enum tc_cc_states
Possible port partner connections based on CC line states.
Values:
-
enumerator TC_CC_NONE = 0
No port partner attached
-
enumerator TC_CC_UFP_NONE = 1
From DFP perspective No UFP accessory connected
-
enumerator TC_CC_UFP_AUDIO_ACC = 2
UFP Audio accessory connected
-
enumerator TC_CC_UFP_DEBUG_ACC = 3
UFP Debug accessory connected
-
enumerator TC_CC_UFP_ATTACHED = 4
Plain UFP attached
-
enumerator TC_CC_DFP_ATTACHED = 5
From UFP perspective Plain DFP attached
-
enumerator TC_CC_DFP_DEBUG_ACC = 6
DFP debug accessory connected
-
enumerator TC_CC_NONE = 0
-
TC_V_SINK_DISCONNECT_MIN_MV
- group usb_type_c_port_controller_api
USB Type-C Port Controller API.
Typedefs
-
typedef void (*tcpc_alert_handler_cb_t)(const struct device *dev, void *data, enum tcpc_alert alert)
Enums
-
enum tcpc_alert
TCPC Alert bits.
Values:
-
enumerator TCPC_ALERT_CC_STATUS
CC status changed
-
enumerator TCPC_ALERT_POWER_STATUS
Power status changed
-
enumerator TCPC_ALERT_MSG_STATUS
Receive Buffer register changed
-
enumerator TCPC_ALERT_HARD_RESET_RECEIVED
Received Hard Reset message
-
enumerator TCPC_ALERT_TRANSMIT_MSG_FAILED
SOP* message transmission not successful
-
enumerator TCPC_ALERT_TRANSMIT_MSG_DISCARDED
Reset or SOP* message transmission not sent due to an incoming receive message
-
enumerator TCPC_ALERT_TRANSMIT_MSG_SUCCESS
Reset or SOP* message transmission successful
-
enumerator TCPC_ALERT_VBUS_ALARM_HI
A high-voltage alarm has occurred
-
enumerator TCPC_ALERT_VBUS_ALARM_LO
A low-voltage alarm has occurred
-
enumerator TCPC_ALERT_FAULT_STATUS
A fault has occurred. Read the FAULT_STATUS register
-
enumerator TCPC_ALERT_RX_BUFFER_OVERFLOW
TCPC RX buffer has overflowed
-
enumerator TCPC_ALERT_VBUS_SNK_DISCONNECT
The TCPC in Attached.SNK state has detected a sink disconnect
-
enumerator TCPC_ALERT_BEGINNING_MSG_STATUS
Receive buffer register changed
-
enumerator TCPC_ALERT_EXTENDED_STATUS
Extended status changed
-
enumerator TCPC_ALERT_EXTENDED
An extended interrupt event has occurred. Read the alert_extended register
-
enumerator TCPC_ALERT_VENDOR_DEFINED
A vendor defined alert has been detected
-
enumerator TCPC_ALERT_CC_STATUS
-
enum tcpc_status_reg
TCPC Status register.
Values:
-
enumerator TCPC_CC_STATUS
The CC Status register
-
enumerator TCPC_POWER_STATUS
The Power Status register
-
enumerator TCPC_FAULT_STATUS
The Fault Status register
-
enumerator TCPC_EXTENDED_STATUS
The Extended Status register
-
enumerator TCPC_EXTENDED_ALERT_STATUS
The Extended Alert Status register
-
enumerator TCPC_VENDOR_DEFINED_STATUS
The Vendor Defined Status register
-
enumerator TCPC_CC_STATUS
Functions
-
static inline int tcpc_is_cc_rp(enum tc_cc_voltage_state cc)
Returns whether the sink has detected a Rp resistor on the other side.
-
static inline int tcpc_is_cc_open(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2)
Returns true if both CC lines are completely open.
-
static inline int tcpc_is_cc_snk_dbg_acc(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2)
Returns true if we detect the port partner is a snk debug accessory.
-
static inline int tcpc_is_cc_src_dbg_acc(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2)
Returns true if we detect the port partner is a src debug accessory.
-
static inline int tcpc_is_cc_audio_acc(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2)
Returns true if the port partner is an audio accessory.
-
static inline int tcpc_is_cc_at_least_one_rd(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2)
Returns true if the port partner is presenting at least one Rd.
-
static inline int tcpc_is_cc_only_one_rd(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2)
Returns true if the port partner is presenting Rd on only one CC line.
-
static inline int tcpc_init(const struct device *dev)
Initializes the TCPC.
- Parameters
dev – Runtime device structure
- Returns
0 on success
- Returns
-EIO on failure
-
static inline int tcpc_get_cc(const struct device *dev, enum tc_cc_voltage_state *cc1, enum tc_cc_voltage_state *cc2)
Reads the status of the CC lines.
- Parameters
dev – Runtime device structure
cc1 – A pointer where the CC1 status is written
cc2 – A pointer where the CC2 status is written
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline void tcpc_set_vbus_measure_cb(const struct device *dev, tcpc_vbus_cb_t vbus_cb)
Sets a callback that can measure the value of VBUS if the TCPC is unable to or the system is configured in a way that does not use the VBUS measurement and detection capabilities of the TCPC.
The callback is called in tcpc_check_vbus_level and tcpc_get_vbus functions if vbus_cb isn’t NULL.
- Parameters
dev – Runtime device structure
vbus_cb – pointer to callback function that returns a voltage measurement
-
static inline void tcpc_set_discharge_vbus_cb(const struct device *dev, tcpc_discharge_vbus_cb_t discharge_vbus_cb)
Sets a callback that can discharge VBUS if the TCPC is unable to or the system is configured in a way that does not use the discharge VBUS capabilities of the TCPC.
The callback is called in tcpc_set_discharge_vbus functions if discharge_vbus_cb isn’t NULL.
- Parameters
dev – Runtime device structure
discharge_vbus_cb – pointer to callback function that discharges VBUS
-
static inline bool tcpc_check_vbus_level(const struct device *dev, enum tc_vbus_level level)
Checks if VBUS is at a particular level.
- Parameters
dev – Runtime device structure
level – The level voltage to check against
- Returns
true if VBUS is at the level voltage
- Returns
false if VBUS is not at that level voltage
-
static inline int tcpc_get_vbus(const struct device *dev, int *vbus_meas)
Reads and returns VBUS measured in mV.
This function uses the TCPC to measure VBUS if possible or calls the callback function set by tcpc_set_vbus_measure_callback. In the event that the TCPC can measure VBUS and the VBUS callback measuring function is set, this function uses the callback function.
- Parameters
dev – Runtime device structure
vbus_meas – pointer where the measured VBUS voltage is stored
- Returns
0 on success
- Returns
-EIO on failure
-
static inline int tcpc_select_rp_value(const struct device *dev, enum tc_rp_value rp)
Sets the value of CC pull up resistor used when operating as a Source.
- Parameters
dev – Runtime device structure
rp – Value of the Pull-Up Resistor.
- Returns
0 on success
- Returns
-ENOSYS
- Returns
-EIO on failure
-
static inline int tcpc_get_rp_value(const struct device *dev, enum tc_rp_value *rp)
Gets the value of the CC pull up resistor used when operating as a Source.
- Parameters
dev – Runtime device structure
rp – pointer where the value of the Pull-Up Resistor is stored
- Returns
0 on success
- Returns
-ENOSYS
- Returns
-EIO on failure
-
static inline int tcpc_set_cc(const struct device *dev, enum tc_cc_pull pull)
Sets the CC pull resistor and sets the role as either Source or Sink.
- Parameters
dev – Runtime device structure
pull – The pull resistor to set
- Returns
0 on success
- Returns
-EIO on failure
-
static inline void tcpc_set_vconn_cb(const struct device *dev, tcpc_vconn_control_cb_t vconn_cb)
Sets a callback that can enable or disable VCONN if the TCPC is unable to or the system is configured in a way that does not use the VCONN control capabilities of the TCPC.
The callback is called in the tcpc_set_vconn function if vconn_cb isn’t NULL
- Parameters
dev – Runtime device structure
vconn_cb – pointer to the callback function that controls vconn
-
static inline int tcpc_set_vconn(const struct device *dev, bool enable)
Enables or disables VCONN.
This function uses the TCPC to measure VCONN if possible or calls the callback function set by tcpc_set_vconn_cb
- Parameters
dev – Runtime device structure
enable – VCONN is enabled when true, it’s disabled
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_set_roles(const struct device *dev, enum tc_power_role power_role, enum tc_data_role data_role)
Sets the Power and Data Role of the PD message header.
This function only needs to be called once per data / power role change
- Parameters
dev – Runtime device structure
power_role – current power role
data_role – current data role
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline bool tcpc_is_rx_pending_msg(const struct device *dev, enum pd_packet_type *type)
Tests if a received Power Delivery message is pending.
- Parameters
dev – Runtime device structure
type – pointer to where message type is written. Can be NULL
- Returns
true if message is pending, else false
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_receive_data(const struct device *dev, struct pd_msg *buf)
Retrieves the Power Delivery message from the TCPC.
- Parameters
dev – Runtime device structure
buf – pointer where the pd_buf pointer is written
- Returns
Greater or equal to 0 is the number of bytes received
- Returns
-EIO on failure
- Returns
-EFAULT on buf being NULL
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_set_rx_enable(const struct device *dev, bool enable)
Enables the reception of SOP* message types.
- Parameters
dev – Runtime device structure
enable – Enable Power Delivery when true, else it’s disabled
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_set_cc_polarity(const struct device *dev, enum tc_cc_polarity polarity)
Sets the polarity of the CC lines.
- Parameters
dev – Runtime device structure
polarity – Polarity of the cc line
- Returns
0 on success
- Returns
-EIO on failure
-
static inline int tcpc_transmit_data(const struct device *dev, struct pd_msg *msg)
Transmits a Power Delivery message.
- Parameters
dev – Runtime device structure
msg – Power Delivery message to transmit
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_dump_std_reg(const struct device *dev)
Dump a set of TCPC registers.
- Parameters
dev – Runtime device structure
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_set_alert_handler_cb(const struct device *dev, tcpc_alert_handler_cb_t handler, void *data)
Sets the alert function that’s called when an interrupt is triggered due to an alert bit.
Calling this function enables the particular alert bit
- Parameters
dev – Runtime device structure
handler – The callback function called when the bit is set
data – user data passed to the callback
- Returns
0 on success
- Returns
-EINVAL on failure
-
static inline int tcpc_get_status_register(const struct device *dev, enum tcpc_status_reg reg, int32_t *status)
Gets a status register.
- Parameters
dev – Runtime device structure
reg – The status register to read
status – Pointer where the status is stored
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_clear_status_register(const struct device *dev, enum tcpc_status_reg reg, uint32_t mask)
Clears a TCPC status register.
- Parameters
dev – Runtime device structure
reg – The status register to read
mask – A bit mask of the status register to clear. A status bit is cleared when it’s set to 1.
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_mask_status_register(const struct device *dev, enum tcpc_status_reg reg, uint32_t mask)
Sets the mask of a TCPC status register.
- Parameters
dev – Runtime device structure
reg – The status register to read
mask – A bit mask of the status register to mask. The status bit is masked if it’s 0, else it’s unmasked.
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_set_discharge_vbus(const struct device *dev, bool enable)
Enables discharge TypeC VBUS on Source / Sink disconnect and power role swap.
- Parameters
dev – Runtime device structure
enable – The TypeC VBUS is discharged on disconnect or power role swap when true
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_enable_auto_discharge_disconnect(const struct device *dev, bool enable)
TCPC automatically discharge TypeC VBUS on Source / Sink disconnect an power role swap.
- Parameters
dev – Runtime device structure
enable – The TCPC automatically discharges VBUS on disconnect or power role swap
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_set_debug_accessory(const struct device *dev, bool enable)
Manual control of TCPC DebugAccessory control.
- Parameters
dev – Runtime device structure
enable – Enable Debug Accessory when true, else it’s disabled
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_set_debug_detach(const struct device *dev)
Detach from a debug connection.
- Parameters
dev – Runtime device structure
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_set_drp_toggle(const struct device *dev, bool enable)
Enable TCPC auto dual role toggle.
- Parameters
dev – Runtime device structure
enable – Auto dual role toggle is active when true, else it’s disabled
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline bool tcpc_get_snk_ctrl(const struct device *dev)
Queries the current sinking state of the TCPC.
- Parameters
dev – Runtime device structure
- Returns
true if sinking power
- Returns
false if not sinking power
- Returns
-ENOSYS if not implemented
-
static inline bool tcpc_get_src_ctrl(const struct device *dev)
Queries the current sourcing state of the TCPC.
- Parameters
dev – Runtime device structure
- Returns
true if sourcing power
- Returns
false if not sourcing power
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_set_bist_test_mode(const struct device *dev, bool enable)
Controls the BIST Mode of the TCPC. It disables RX alerts while the mode is active.
- Parameters
dev – Runtime device structure
enable – The TCPC enters BIST TEST Mode when true
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_get_chip_info(const struct device *dev, struct tcpc_chip_info *chip_info)
Gets the TCPC firmware version.
- Parameters
dev – Runtime device structure
chip_info – Pointer to TCPC chip info where the version is stored
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_set_low_power_mode(const struct device *dev, bool enable)
Instructs the TCPC to enter or exit low power mode.
- Parameters
dev – Runtime device structure
enable – The TCPC enters low power mode when true, else it exits it
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
static inline int tcpc_sop_prime_enable(const struct device *dev, bool enable)
Enables the reception of SOP Prime messages.
- Parameters
dev – Runtime device structure
enable – Can receive SOP Prime messages when true, else it can not
- Returns
0 on success
- Returns
-EIO on failure
- Returns
-ENOSYS if not implemented
-
struct tcpc_chip_info
- #include <usbc_tcpc.h>
TCPC Chip Information.
Public Members
-
uint16_t vendor_id
Vendor Id
-
uint16_t product_id
Product Id
-
uint16_t device_id
Device Id
-
uint64_t fw_verion_number
Firmware version number
-
uint8_t min_req_fw_version_string[8]
Minimum Required firmware version string
-
uint64_t min_req_fw_version_number
Minimum Required firmware version number
-
uint16_t vendor_id
-
struct tcpc_driver_api
- #include <usbc_tcpc.h>
-
typedef void (*tcpc_alert_handler_cb_t)(const struct device *dev, void *data, enum tcpc_alert alert)
- group usb_power_delivery
USB Power Delivery.
Defines
-
PD_MAX_EXTENDED_MSG_LEGACY_LEN
Maximum length of a non-Extended Message in bytes. See Table 6-75 Value Parameters Parameter Name: MaxExtendedMsgLegacyLen.
-
PD_MAX_EXTENDED_MSG_LEN
Maximum length of an Extended Message in bytes. See Table 6-75 Value Parameters Parameter Name: MaxExtendedMsgLen.
-
PD_MAX_EXTENDED_MSG_CHUNK_LEN
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.
-
PD_T_TYPEC_SINK_WAIT_CAP_MIN_MS
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.
-
PD_T_TYPEC_SINK_WAIT_CAP_MAX_MS
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.
-
PD_V_SAFE_0V_MAX_MV
VBUS maximum safe operating voltage at “zero volts”. See Table 7-24 Common Source/Sink Electrical Parameters Parameter Name: vSafe0V.
-
PD_V_SAFE_5V_MIN_MV
VBUS minimum safe operating voltage at 5V. See Table 7-24 Common Source/Sink Electrical Parameters Parameter Name: vSafe5V.
-
PD_T_SAFE_0V_MAX_MS
Time to reach PD_V_SAFE_0V_MV max in milliseconds. See Table 7-24 Common Source/Sink Electrical Parameters Parameter Name: tSafe0V.
-
PD_T_SAFE_5V_MAX_MS
Time to reach PD_V_SAFE_5V_MV max in milliseconds. See Table 7-24 Common Source/Sink Electrical Parameters Parameter Name: tSafe5V.
-
PD_CONVERT_BYTES_TO_PD_HEADER_COUNT(c)
Convert bytes to PD Header data object count, where a data object is 4-bytes.
- Parameters
c – number of bytes to convert
-
PD_CONVERT_PD_HEADER_COUNT_TO_BYTES(c)
Convert PD Header data object count to bytes.
- Parameters
c – number of PD Header data objects
-
PD_CONVERT_MA_TO_FIXED_PDO_CURRENT(c)
Convert milliamps to Fixed PDO Current in 10mA units.
- Parameters
c – Current in milliamps
-
PD_CONVERT_MV_TO_FIXED_PDO_VOLTAGE(v)
Convert millivolts to Fixed PDO Voltage in 50mV units.
- Parameters
v – Voltage in millivolts
-
PD_CONVERT_FIXED_PDO_CURRENT_TO_MA(c)
Convert a Fixed PDO Current from 10mA units to milliamps.
- Parameters
c – Fixed PDO current in 10mA units.
-
PD_CONVERT_FIXED_PDO_VOLTAGE_TO_MV(v)
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.
- Parameters
v – Fixed PDO voltage in 50mV units.
-
PD_CONVERT_MA_TO_VARIABLE_PDO_CURRENT(c)
Convert milliamps to Variable PDO Current in 10ma units.
- Parameters
c – Current in milliamps
-
PD_CONVERT_MV_TO_VARIABLE_PDO_VOLTAGE(v)
Convert millivolts to Variable PDO Voltage in 50mV units.
- Parameters
v – Voltage in millivolts
-
PD_CONVERT_VARIABLE_PDO_CURRENT_TO_MA(c)
Convert a Variable PDO Current from 10mA units to milliamps.
- Parameters
c – Variable PDO current in 10mA units.
-
PD_CONVERT_VARIABLE_PDO_VOLTAGE_TO_MV(v)
Convert a Variable PDO Voltage from 50mV units to millivolts.
- Parameters
v – Variable PDO voltage in 50mV units.
-
PD_CONVERT_MW_TO_BATTERY_PDO_POWER(c)
Convert milliwatts to Battery PDO Power in 250mW units.
- Parameters
c – Power in milliwatts
-
PD_CONVERT_MV_TO_BATTERY_PDO_VOLTAGE(v)
Convert milliwatts to Battery PDO Voltage in 50mV units.
- Parameters
v – Voltage in millivolts
-
PD_CONVERT_BATTERY_PDO_POWER_TO_MW(c)
Convert a Battery PDO Power from 250mW units to milliwatts.
- Parameters
c – Power in 250mW units.
-
PD_CONVERT_BATTERY_PDO_VOLTAGE_TO_MV(v)
Convert a Battery PDO Voltage from 50mV units to millivolts.
- Parameters
v – Voltage in 50mV units.
-
PD_CONVERT_MA_TO_AUGMENTED_PDO_CURRENT(c)
Convert milliamps to Augmented PDO Current in 50mA units.
- Parameters
c – Current in milliamps
-
PD_CONVERT_MV_TO_AUGMENTED_PDO_VOLTAGE(v)
Convert millivolts to Augmented PDO Voltage in 100mV units.
- Parameters
v – Voltage in millivolts
-
PD_CONVERT_AUGMENTED_PDO_CURRENT_TO_MA(c)
Convert an Augmented PDO Current from 50mA units to milliamps.
- Parameters
c – Augmented PDO current in 50mA units.
-
PD_CONVERT_AUGMENTED_PDO_VOLTAGE_TO_MV(v)
Convert an Augmented PDO Voltage from 100mV units to millivolts.
- Parameters
v – Augmented PDO voltage in 100mV units.
Enums
-
enum pdo_src_type
Power Data Object Source Type Table 6-7 Power Data Object.
PDO - Power Data Object RDO - Request Data Object
Values:
-
enumerator PDO_FIXED = 0
Fixed supply (Vmin = Vmax)
-
enumerator PDO_BATTERY = 1
Battery
-
enumerator PDO_VARIABLE = 2
Variable Supply (non-Battery)
-
enumerator PDO_AUGMENTED = 3
Augmented Power Data Object (APDO)
-
enumerator PDO_FIXED = 0
-
enum pd_frs_type
Fast Role Swap Required for USB Type-C current.
Values:
-
enumerator FRS_NOT_SUPPORTED
Fast Swap not supported
-
enumerator FRS_DEFAULT_USB_POWER
Default USB Power
-
enumerator FRS_1P5A_5V
1.5A @ 5V
-
enumerator FRS_3P0A_5V
3.0A @ 5V
-
enumerator FRS_NOT_SUPPORTED
-
enum pd_rev_type
Protocol revision.
Values:
-
enumerator PD_REV10 = 0
PD revision 1.0
-
enumerator PD_REV20 = 1
PD revision 2.0
-
enumerator PD_REV30 = 2
PD revision 3.0
-
enumerator PD_REV10 = 0
-
enum pd_packet_type
Power Delivery packet type See USB Type-C Port Controller Interface Specification, Revision 2.0, Version 1.2, Table 4-38 TRANSMIT Register Definition.
Values:
-
enumerator PD_PACKET_SOP = 0
Port Partner message
-
enumerator PD_PACKET_SOP_PRIME = 1
Cable Plug message
-
enumerator PD_PACKET_PRIME_PRIME = 2
Cable Plug message far end
-
enumerator PD_PACKET_DEBUG_PRIME = 3
Currently undefined in the PD specification
-
enumerator PD_PACKET_DEBUG_PRIME_PRIME = 4
Currently undefined in the PD specification
-
enumerator PD_PACKET_TX_HARD_RESET = 5
Hard Reset message to the Port Partner
-
enumerator PD_PACKET_CABLE_RESET = 6
Cable Reset message to the Cable
-
enumerator PD_PACKET_TX_BIST_MODE_2 = 7
BIST_MODE_2 message to the Port Partner
-
enumerator PD_PACKET_MSG_INVALID = 0xf
USED ONLY FOR RECEPTION OF UNKNOWN MSG TYPES
-
enumerator PD_PACKET_SOP = 0
-
enum pd_ctrl_msg_type
Control Message type See Table 6-5 Control Message Types.
Values:
-
enumerator PD_CTRL_GOOD_CRC = 1
0 Reserved GoodCRC Message
-
enumerator PD_CTRL_GOTO_MIN = 2
GotoMin Message
-
enumerator PD_CTRL_ACCEPT = 3
Accept Message
-
enumerator PD_CTRL_REJECT = 4
Reject Message
-
enumerator PD_CTRL_PING = 5
Ping Message
-
enumerator PD_CTRL_PS_RDY = 6
PS_RDY Message
-
enumerator PD_CTRL_GET_SOURCE_CAP = 7
Get_Source_Cap Message
-
enumerator PD_CTRL_GET_SINK_CAP = 8
Get_Sink_Cap Message
-
enumerator PD_CTRL_DR_SWAP = 9
DR_Swap Message
-
enumerator PD_CTRL_PR_SWAP = 10
PR_Swap Message
-
enumerator PD_CTRL_VCONN_SWAP = 11
VCONN_Swap Message
-
enumerator PD_CTRL_WAIT = 12
Wait Message
-
enumerator PD_CTRL_SOFT_RESET = 13
Soft Reset Message
-
enumerator PD_CTRL_DATA_RESET = 14
Used for REV 3.0 Data_Reset Message
-
enumerator PD_CTRL_DATA_RESET_COMPLETE = 15
Data_Reset_Complete Message
-
enumerator PD_CTRL_NOT_SUPPORTED = 16
Not_Supported Message
-
enumerator PD_CTRL_GET_SOURCE_CAP_EXT = 17
Get_Source_Cap_Extended Message
-
enumerator PD_CTRL_GET_STATUS = 18
Get_Status Message
-
enumerator PD_CTRL_FR_SWAP = 19
FR_Swap Message
-
enumerator PD_CTRL_GET_PPS_STATUS = 20
Get_PPS_Status Message
-
enumerator PD_CTRL_GET_COUNTRY_CODES = 21
Get_Country_Codes Message
-
enumerator PD_CTRL_GET_SINK_CAP_EXT = 22
Get_Sink_Cap_Extended Message
-
enumerator PD_CTRL_GOOD_CRC = 1
-
enum pd_data_msg_type
Data message type See Table 6-6 Data Message Types.
Values:
-
enumerator PD_DATA_SOURCE_CAP = 1
0 Reserved Source_Capabilities Message
-
enumerator PD_DATA_REQUEST = 2
Request Message
-
enumerator PD_DATA_BIST = 3
BIST Message
-
enumerator PD_DATA_SINK_CAP = 4
Sink Capabilities Message
-
enumerator PD_DATA_BATTERY_STATUS = 5
5-14 Reserved for REV 2.0
-
enumerator PD_DATA_ALERT = 6
Alert Message
-
enumerator PD_DATA_GET_COUNTRY_INFO = 7
Get Country Info Message
-
enumerator PD_DATA_ENTER_USB = 8
8-14 Reserved for REV 3.0 Enter USB message
-
enumerator PD_DATA_VENDOR_DEF = 15
Vendor Defined Message
-
enumerator PD_DATA_SOURCE_CAP = 1
-
enum pd_ext_msg_type
Extended message type for REV 3.0 See Table 6-48 Extended Message Types.
Values:
-
enumerator PD_EXT_SOURCE_CAP = 1
0 Reserved Source_Capabilities_Extended Message
-
enumerator PD_EXT_STATUS = 2
Status Message
-
enumerator PD_EXT_GET_BATTERY_CAP = 3
Get_Battery_Cap Message
-
enumerator PD_EXT_GET_BATTERY_STATUS = 4
Get_Battery_Status Message
-
enumerator PD_EXT_BATTERY_CAP = 5
Battery_Capabilities Message
-
enumerator PD_EXT_GET_MANUFACTURER_INFO = 6
Get_Manufacturer_Info Message
-
enumerator PD_EXT_MANUFACTURER_INFO = 7
Manufacturer_Info Message
-
enumerator PD_EXT_SECURITY_REQUEST = 8
Security_Request Message
-
enumerator PD_EXT_SECURITY_RESPONSE = 9
Security_Response Message
-
enumerator PD_EXT_FIRMWARE_UPDATE_REQUEST = 10
Firmware_Update_Request Message
-
enumerator PD_EXT_FIRMWARE_UPDATE_RESPONSE = 11
Firmware_Update_Response Message
-
enumerator PD_EXT_PPS_STATUS = 12
PPS_Status Message
-
enumerator PD_EXT_COUNTRY_INFO = 13
Country_Codes Message
-
enumerator PD_EXT_COUNTRY_CODES = 14
Country_Info Message
-
enumerator PD_EXT_SOURCE_CAP = 1
-
union pd_header
- #include <usbc_pd.h>
Build a PD message header See Table 6-1 Message Header.
Public Members
-
uint16_t message_type
Type of message
-
uint16_t port_data_role
Port Data role
-
uint16_t specification_revision
Specification Revision
-
uint16_t port_power_role
Port Power Role
-
uint16_t message_id
Message ID
-
uint16_t number_of_data_objects
Number of Data Objects
-
uint16_t extended
Extended Message
-
uint16_t raw_value
-
uint16_t message_type
-
union pd_ext_header
- #include <usbc_pd.h>
Build an extended message header See Table 6-3 Extended Message Header.
Public Members
-
uint16_t data_size
Number of total bytes in data block
-
uint16_t reserved0
Reserved
-
uint16_t request_chunk
1 for a chunked message, else 0
-
uint16_t chunk_number
Chunk number when chkd = 1, else 0
-
uint16_t chunked
1 for chunked messages
-
struct pd_ext_header.[anonymous] [anonymous]
-
uint16_t raw_value
Raw PD Ext Header value
-
uint16_t data_size
-
union pd_fixed_supply_pdo_source
- #include <usbc_pd.h>
Create a Fixed Supply PDO Source value See Table 6-9 Fixed Supply PDO - Source.
Public Members
-
uint32_t max_current
Maximum Current in 10mA units
-
uint32_t voltage
Voltage in 50mV units
-
uint32_t peak_current
Peak Current
-
uint32_t reserved0
Reserved – Shall be set to zero.
-
uint32_t unchunked_ext_msg_supported
Unchunked Extended Messages Supported
-
uint32_t dual_role_data
Dual-Role Data
-
uint32_t usb_comms_capable
USB Communications Capable
-
uint32_t unconstrained_power
Unconstrained Power
-
uint32_t usb_suspend_supported
USB Suspend Supported
-
uint32_t dual_role_power
Dual-Role Power
-
enum pdo_src_type type
Fixed supply. SET TO PDO_FIXED
-
struct pd_fixed_supply_pdo_source.[anonymous] [anonymous]
-
uint32_t raw_value
Raw PDO value
-
uint32_t max_current
-
union pd_fixed_supply_pdo_sink
- #include <usbc_pd.h>
Create a Fixed Supply PDO Sink value See Table 6-14 Fixed Supply PDO - Sink.
Public Members
-
uint32_t operational_current
Operational Current in 10mA units
-
uint32_t voltage
Voltage in 50mV units
-
uint32_t reserved0
Reserved – Shall be set to zero.
-
enum pd_frs_type frs_required
Fast Role Swap required USB Type-C Current
-
uint32_t dual_role_data
Dual-Role Data
-
uint32_t usb_comms_capable
USB Communications Capable
-
uint32_t unconstrained_power
Unconstrained Power
-
uint32_t higher_capability
Higher Capability
-
uint32_t dual_role_power
Dual-Role Power
-
enum pdo_src_type type
Fixed supply. SET TO PDO_FIXED
-
struct pd_fixed_supply_pdo_sink.[anonymous] [anonymous]
-
uint32_t raw_value
Raw PDO value
-
uint32_t operational_current
-
union pd_variable_supply_pdo_source
- #include <usbc_pd.h>
Create a Variable Supply PDO Source value See Table 6-11 Variable Supply (non-Battery) PDO - Source.
Public Members
-
uint32_t max_current
Maximum Current in 10mA units
-
uint32_t min_voltage
Minimum Voltage in 50mV units
-
uint32_t max_voltage
Maximum Voltage in 50mV units
-
enum pdo_src_type type
Variable supply. SET TO PDO_VARIABLE
-
struct pd_variable_supply_pdo_source.[anonymous] [anonymous]
-
uint32_t raw_value
Raw PDO value
-
uint32_t max_current
-
union pd_variable_supply_pdo_sink
- #include <usbc_pd.h>
Create a Variable Supply PDO Sink value See Table 6-15 Variable Supply (non-Battery) PDO - Sink.
Public Members
-
uint32_t operational_current
operational Current in 10mA units
-
uint32_t min_voltage
Minimum Voltage in 50mV units
-
uint32_t max_voltage
Maximum Voltage in 50mV units
-
enum pdo_src_type type
Variable supply. SET TO PDO_VARIABLE
-
struct pd_variable_supply_pdo_sink.[anonymous] [anonymous]
-
uint32_t raw_value
Raw PDO value
-
uint32_t operational_current
-
union pd_battery_supply_pdo_source
- #include <usbc_pd.h>
Create a Battery Supply PDO Source value See Table 6-12 Battery Supply PDO - Source.
Public Members
-
uint32_t max_power
Maximum Allowable Power in 250mW units
-
uint32_t min_voltage
Minimum Voltage in 50mV units
-
uint32_t max_voltage
Maximum Voltage in 50mV units
-
enum pdo_src_type type
Battery supply. SET TO PDO_BATTERY
-
struct pd_battery_supply_pdo_source.[anonymous] [anonymous]
-
uint32_t raw_value
Raw PDO value
-
uint32_t max_power
-
union pd_battery_supply_pdo_sink
- #include <usbc_pd.h>
Create a Battery Supply PDO Sink value See Table 6-16 Battery Supply PDO - Sink.
Public Members
-
uint32_t operational_power
Operational Power in 250mW units
-
uint32_t min_voltage
Minimum Voltage in 50mV units
-
uint32_t max_voltage
Maximum Voltage in 50mV units
-
enum pdo_src_type type
Battery supply. SET TO PDO_BATTERY
-
struct pd_battery_supply_pdo_sink.[anonymous] [anonymous]
-
uint32_t raw_value
Raw PDO value
-
uint32_t operational_power
-
union pd_augmented_supply_pdo_source
- #include <usbc_pd.h>
Create Augmented Supply PDO Source value See Table 6-13 Programmable Power Supply APDO - Source.
Public Members
-
uint32_t max_current
Maximum Current in 50mA increments
-
uint32_t reserved0
Reserved – Shall be set to zero
-
uint32_t min_voltage
Minimum Voltage in 100mV increments
-
uint32_t reserved1
Reserved – Shall be set to zero
-
uint32_t max_voltage
Maximum Voltage in 100mV increments
-
uint32_t reserved2
Reserved – Shall be set to zero
-
uint32_t pps_power_limited
PPS Power Limited
-
uint32_t reserved3
00b – Programmable Power Supply 01b…11b - Reserved, Shall Not be used Setting as reserved because it defaults to 0 when not set.
-
enum pdo_src_type type
Augmented Power Data Object (APDO). SET TO PDO_AUGMENTED
-
struct pd_augmented_supply_pdo_source.[anonymous] [anonymous]
-
uint32_t raw_value
Raw PDO value
-
uint32_t max_current
-
union pd_augmented_supply_pdo_sink
- #include <usbc_pd.h>
Create Augmented Supply PDO Sink value See Table 6-17 Programmable Power Supply APDO - Sink.
Public Members
-
uint32_t max_current
Maximum Current in 50mA increments
-
uint32_t reserved0
Reserved – Shall be set to zero
-
uint32_t min_voltage
Minimum Voltage in 100mV increments
-
uint32_t reserved1
Reserved – Shall be set to zero
-
uint32_t max_voltage
Maximum Voltage in 100mV increments
-
uint32_t reserved2
Reserved – Shall be set to zero
-
uint32_t reserved3
00b – Programmable Power Supply 01b…11b - Reserved, Shall Not be used Setting as reserved because it defaults to 0 when not set.
-
enum pdo_src_type type
Augmented Power Data Object (APDO). SET TO PDO_AUGMENTED
-
struct pd_augmented_supply_pdo_sink.[anonymous] [anonymous]
-
uint32_t raw_value
Raw PDO value
-
uint32_t max_current
-
union pd_rdo
- #include <usbc_pd.h>
The Request Data Object (RDO) Shall be returned by the Sink making a request for power. See Section 6.4.2 Request Message.
Public Members
-
uint32_t min_or_max_operating_current
Operating Current 10mA units NOTE: If Give Back Flag is zero, this field is the Maximum Operating Current. If Give Back Flag is one, this field is the Minimum Operating Current.
-
uint32_t operating_current
Operating current in 10mA units
Operating Current 50mA units
-
uint32_t reserved0
Reserved - Shall be set to zero.
-
uint32_t unchunked_ext_msg_supported
Unchunked Extended Messages Supported
-
uint32_t no_usb_suspend
No USB Suspend
-
uint32_t usb_comm_capable
USB Communications Capable
-
uint32_t cap_mismatch
Capability Mismatch
-
uint32_t giveback
Give Back Flag
-
uint32_t object_pos
Object Position (000b is Reserved and Shall Not be used)
-
uint32_t reserved1
Reserved - Shall be set to zero.
-
struct pd_rdo.[anonymous] fixed
Create a Fixed RDO value See Table 6-19 Fixed and Variable Request Data Object.
-
struct pd_rdo.[anonymous] variable
Create a Variable RDO value See Table 6-19 Fixed and Variable Request Data Object.
-
uint32_t min_operating_power
Minimum Operating Power in 250mW units
-
uint32_t operating_power
Operating power in 250mW units
-
struct pd_rdo.[anonymous] battery
Create a Battery RDO value See Table 6-20 Battery Request Data Object.
-
uint32_t output_voltage
Output Voltage in 20mV units
-
uint32_t reserved2
Reserved - Shall be set to zero
-
uint32_t reserved3
Reserved - Shall be set to zero.
-
struct pd_rdo.[anonymous] augmented
Create an Augmented RDO value See Table 6-22 Programmable Request Data Object.
-
uint32_t raw_value
Raw RDO value
-
uint32_t min_or_max_operating_current
-
struct pd_msg
- #include <usbc_pd.h>
Power Delivery message.
-
PD_MAX_EXTENDED_MSG_LEGACY_LEN