Zephyr Project API  3.3.0
A Scalable Open Source RTOS
USB-C Device API

USB-C Device APIs. More...

Macros

#define FIXED_5V_100MA_RDO   0x1100280a
 This Request Data Object (RDO) value can be returned from the policy_cb_get_rdo if 5V@100mA with the following options are sufficient for the Sink to operate. More...
 

Enumerations

enum  usbc_policy_request_t {
  REQUEST_NOP , REQUEST_TC_DISABLED , REQUEST_TC_ERROR_RECOVERY , REQUEST_TC_END ,
  REQUEST_PE_DR_SWAP , REQUEST_PE_HARD_RESET_SEND , REQUEST_PE_SOFT_RESET_SEND , REQUEST_PE_GET_SRC_CAPS
}
 Device Policy Manager requests. More...
 
enum  usbc_policy_notify_t {
  MSG_ACCEPT_RECEIVED , MSG_REJECTED_RECEIVED , MSG_DISCARDED , MSG_NOT_SUPPORTED_RECEIVED ,
  DATA_ROLE_IS_UFP , DATA_ROLE_IS_DFP , PD_CONNECTED , NOT_PD_CONNECTED ,
  TRANSITION_PS , PORT_PARTNER_NOT_RESPONSIVE , PROTOCOL_ERROR , SNK_TRANSITION_TO_DEFAULT ,
  HARD_RESET_RECEIVED , POWER_CHANGE_0A0 , POWER_CHANGE_DEF , POWER_CHANGE_1A5 ,
  POWER_CHANGE_3A0 , SENDER_RESPONSE_TIMEOUT , SOURCE_CAPABILITIES_RECEIVED
}
 Device Policy Manager notifications. More...
 
enum  usbc_policy_check_t {
  CHECK_POWER_ROLE_SWAP , CHECK_DATA_ROLE_SWAP_TO_DFP , CHECK_DATA_ROLE_SWAP_TO_UFP , CHECK_SNK_AT_DEFAULT_LEVEL ,
  CHECK_VCONN_CONTROL
}
 Device Policy Manager checks. More...
 
enum  usbc_policy_wait_t { WAIT_SINK_REQUEST , WAIT_POWER_ROLE_SWAP , WAIT_DATA_ROLE_SWAP , WAIT_VCONN_SWAP }
 Device Policy Manager Wait message notifications. More...
 

Functions

int usbc_start (const struct device *dev)
 Start the USB-C Subsystem. More...
 
int usbc_suspend (const struct device *dev)
 Suspend the USB-C Subsystem. More...
 
int usbc_request (const struct device *dev, const enum usbc_policy_request_t req)
 Make a request of the USB-C Subsystem. More...
 
void usbc_set_dpm_data (const struct device *dev, void *dpm_data)
 Set pointer to Device Policy Manager (DPM) data. More...
 
void * usbc_get_dpm_data (const struct device *dev)
 Get pointer to Device Policy Manager (DPM) data. More...
 
void usbc_set_vconn_control_cb (const struct device *dev, const tcpc_vconn_control_cb_t cb)
 Set the callback used to set VCONN control. More...
 
void usbc_set_vconn_discharge_cb (const struct device *dev, const tcpc_vconn_discharge_cb_t cb)
 Set the callback used to discharge VCONN. More...
 
void usbc_set_policy_cb_check (const struct device *dev, const policy_cb_check_t cb)
 Set the callback used to check a policy. More...
 
void usbc_set_policy_cb_notify (const struct device *dev, const policy_cb_notify_t cb)
 Set the callback used to notify Device Policy Manager of a policy change. More...
 
void usbc_set_policy_cb_wait_notify (const struct device *dev, const policy_cb_wait_notify_t cb)
 Set the callback used to notify Device Policy Manager of WAIT message reception. More...
 
void usbc_set_policy_cb_get_snk_cap (const struct device *dev, const policy_cb_get_snk_cap_t cb)
 Set the callback used to get the Sink Capabilities. More...
 
void usbc_set_policy_cb_set_src_cap (const struct device *dev, const policy_cb_set_src_cap_t cb)
 Set the callback used to store the received Port Partner's Source Capabilities. More...
 
void usbc_set_policy_cb_get_rdo (const struct device *dev, const policy_cb_get_rdo_t cb)
 Set the callback used to get the Request Data Object (RDO) More...
 
void usbc_set_policy_cb_is_snk_at_default (const struct device *dev, const policy_cb_is_snk_at_default_t cb)
 Set the callback used to check if the sink power supply is at the default level. More...
 

Detailed Description

USB-C Device APIs.

Macro Definition Documentation

◆ FIXED_5V_100MA_RDO

#define FIXED_5V_100MA_RDO   0x1100280a

#include <include/zephyr/usb_c/usbc.h>

This Request Data Object (RDO) value can be returned from the policy_cb_get_rdo if 5V@100mA with the following options are sufficient for the Sink to operate.

The RDO is configured as follows: Maximum operating current 100mA Operating current 100mA Unchunked Extended Messages Not Supported No USB Suspend Not USB Communications Capable No capability mismatch Don't giveback Object position 1 (5V PDO)

Enumeration Type Documentation

◆ usbc_policy_check_t

#include <include/zephyr/usb_c/usbc.h>

Device Policy Manager checks.

Enumerator
CHECK_POWER_ROLE_SWAP 

Check if Power Role Swap is allowed

CHECK_DATA_ROLE_SWAP_TO_DFP 

Check if Data Role Swap to DFP is allowed

CHECK_DATA_ROLE_SWAP_TO_UFP 

Check if Data Role Swap to UFP is allowed

CHECK_SNK_AT_DEFAULT_LEVEL 

Check if Sink is at default level

CHECK_VCONN_CONTROL 

Check if should control VCONN

◆ usbc_policy_notify_t

#include <include/zephyr/usb_c/usbc.h>

Device Policy Manager notifications.

Enumerator
MSG_ACCEPT_RECEIVED 

Power Delivery Accept message was received

MSG_REJECTED_RECEIVED 

Power Delivery Reject message was received

MSG_DISCARDED 

Power Delivery discarded the message being transmited

MSG_NOT_SUPPORTED_RECEIVED 

Power Delivery Not Supported message was received

DATA_ROLE_IS_UFP 

Data Role has been set to Upstream Facing Port (UFP)

DATA_ROLE_IS_DFP 

Data Role has been set to Downstream Facing Port (DFP)

PD_CONNECTED 

A PD Explicit Contract is in place

NOT_PD_CONNECTED 

No PD Explicit Contract is in place

TRANSITION_PS 

Transition the Power Supply

PORT_PARTNER_NOT_RESPONSIVE 

Port partner is not responsive

PROTOCOL_ERROR 

Protocol Error occurred

SNK_TRANSITION_TO_DEFAULT 

Transition the Sink to default

HARD_RESET_RECEIVED 

Hard Reset Received

POWER_CHANGE_0A0 

Sink SubPower state at 0V

POWER_CHANGE_DEF 

Sink SubPower state a 5V / 500mA

POWER_CHANGE_1A5 

Sink SubPower state a 5V / 1.5A

POWER_CHANGE_3A0 

Sink SubPower state a 5V / 3A

SENDER_RESPONSE_TIMEOUT 

Sender Response Timeout

SOURCE_CAPABILITIES_RECEIVED 

Source Capabilities Received

◆ usbc_policy_request_t

#include <include/zephyr/usb_c/usbc.h>

Device Policy Manager requests.

Enumerator
REQUEST_NOP 

No request

REQUEST_TC_DISABLED 

Request Type-C layer to transition to Disabled State

REQUEST_TC_ERROR_RECOVERY 

Request Type-C layer to transition to Error Recovery State

REQUEST_TC_END 

End of Type-C requests

REQUEST_PE_DR_SWAP 

Request Policy Engine layer to perform a Data Role Swap

REQUEST_PE_HARD_RESET_SEND 

Request Policy Engine layer to send a hard reset

REQUEST_PE_SOFT_RESET_SEND 

Request Policy Engine layer to send a soft reset

REQUEST_PE_GET_SRC_CAPS 

Request Policy Engine layer to get Source Capabilities from port partner

◆ usbc_policy_wait_t

#include <include/zephyr/usb_c/usbc.h>

Device Policy Manager Wait message notifications.

Enumerator
WAIT_SINK_REQUEST 

The port partner is unable to meet the sink request at this time

WAIT_POWER_ROLE_SWAP 

The port partner is unable to do a Power Role Swap at this time

WAIT_DATA_ROLE_SWAP 

The port partner is unable to do a Data Role Swap at this time

WAIT_VCONN_SWAP 

The port partner is unable to do a VCONN Swap at this time

Function Documentation

◆ usbc_get_dpm_data()

void * usbc_get_dpm_data ( const struct device dev)

#include <include/zephyr/usb_c/usbc.h>

Get pointer to Device Policy Manager (DPM) data.

Parameters
devRuntime device structure
Return values
pointerto dpm data that was set with usbc_set_dpm_data
NULLif dpm data was not set

◆ usbc_request()

int usbc_request ( const struct device dev,
const enum usbc_policy_request_t  req 
)

#include <include/zephyr/usb_c/usbc.h>

Make a request of the USB-C Subsystem.

Parameters
devRuntime device structure
reqrequest
Return values
0on success

◆ usbc_set_dpm_data()

void usbc_set_dpm_data ( const struct device dev,
void *  dpm_data 
)

#include <include/zephyr/usb_c/usbc.h>

Set pointer to Device Policy Manager (DPM) data.

Parameters
devRuntime device structure
dpm_datapointer to dpm data

◆ usbc_set_policy_cb_check()

void usbc_set_policy_cb_check ( const struct device dev,
const policy_cb_check_t  cb 
)

#include <include/zephyr/usb_c/usbc.h>

Set the callback used to check a policy.

Parameters
devRuntime device structure
cbcallback

◆ usbc_set_policy_cb_get_rdo()

void usbc_set_policy_cb_get_rdo ( const struct device dev,
const policy_cb_get_rdo_t  cb 
)

#include <include/zephyr/usb_c/usbc.h>

Set the callback used to get the Request Data Object (RDO)

Parameters
devRuntime device structure
cbcallback

◆ usbc_set_policy_cb_get_snk_cap()

void usbc_set_policy_cb_get_snk_cap ( const struct device dev,
const policy_cb_get_snk_cap_t  cb 
)

#include <include/zephyr/usb_c/usbc.h>

Set the callback used to get the Sink Capabilities.

Parameters
devRuntime device structure
cbcallback

◆ usbc_set_policy_cb_is_snk_at_default()

void usbc_set_policy_cb_is_snk_at_default ( const struct device dev,
const policy_cb_is_snk_at_default_t  cb 
)

#include <include/zephyr/usb_c/usbc.h>

Set the callback used to check if the sink power supply is at the default level.

Parameters
devRuntime device structure
cbcallback

◆ usbc_set_policy_cb_notify()

void usbc_set_policy_cb_notify ( const struct device dev,
const policy_cb_notify_t  cb 
)

#include <include/zephyr/usb_c/usbc.h>

Set the callback used to notify Device Policy Manager of a policy change.

Parameters
devRuntime device structure
cbcallback

◆ usbc_set_policy_cb_set_src_cap()

void usbc_set_policy_cb_set_src_cap ( const struct device dev,
const policy_cb_set_src_cap_t  cb 
)

#include <include/zephyr/usb_c/usbc.h>

Set the callback used to store the received Port Partner's Source Capabilities.

Parameters
devRuntime device structure
cbcallback

◆ usbc_set_policy_cb_wait_notify()

void usbc_set_policy_cb_wait_notify ( const struct device dev,
const policy_cb_wait_notify_t  cb 
)

#include <include/zephyr/usb_c/usbc.h>

Set the callback used to notify Device Policy Manager of WAIT message reception.

Parameters
devRuntime device structure
cbcallback

◆ usbc_set_vconn_control_cb()

void usbc_set_vconn_control_cb ( const struct device dev,
const tcpc_vconn_control_cb_t  cb 
)

#include <include/zephyr/usb_c/usbc.h>

Set the callback used to set VCONN control.

Parameters
devRuntime device structure
cbVCONN control callback

◆ usbc_set_vconn_discharge_cb()

void usbc_set_vconn_discharge_cb ( const struct device dev,
const tcpc_vconn_discharge_cb_t  cb 
)

#include <include/zephyr/usb_c/usbc.h>

Set the callback used to discharge VCONN.

Parameters
devRuntime device structure
cbVCONN discharge callback

◆ usbc_start()

int usbc_start ( const struct device dev)

#include <include/zephyr/usb_c/usbc.h>

Start the USB-C Subsystem.

Parameters
devRuntime device structure
Return values
0on success

◆ usbc_suspend()

int usbc_suspend ( const struct device dev)

#include <include/zephyr/usb_c/usbc.h>

Suspend the USB-C Subsystem.

Parameters
devRuntime device structure
Return values
0on success