15#ifndef ZEPHYR_INCLUDE_DRIVERS_USBC_USBC_TCPC_H_ 
   16#define ZEPHYR_INCLUDE_DRIVERS_USBC_USBC_TCPC_H_ 
  241        __ASSERT(api->
init != NULL,
 
  242                 "Callback pointer should not be NULL");
 
  244        return api->
init(dev);
 
  265        if (api->
get_cc == NULL) {
 
  269        return api->
get_cc(dev, cc1, cc2);
 
  330        __ASSERT(api->
set_cc != NULL,
 
  331                 "Callback pointer should not be NULL");
 
  333        return api->
set_cc(dev, pull);
 
  353                 "Callback pointer should not be NULL");
 
  375                 "Callback pointer should not be NULL");
 
  454        return api->
set_roles(dev, power_role, data_role);
 
  543                 "Callback pointer should not be NULL");
 
  613                 "Callback pointer should not be NULL");
 
irp cc
Definition: asm-macro-32-bit-gnu.h:10
 
static __pinned_data struct init_record * rp
Definition: main.c:137
 
#define ENOSYS
Definition: errno.h:83
 
pd_packet_type
Power Delivery packet type See USB Type-C Port Controller Interface Specification,...
Definition: usbc_pd.h:873
 
static int tcpc_clear_status_register(const struct device *dev, enum tcpc_status_reg reg, uint32_t mask)
Clears a TCPC status register.
Definition: usbc_tcpc.h:655
 
static int tcpc_set_debug_accessory(const struct device *dev, bool enable)
Manual control of TCPC DebugAccessory control.
Definition: usbc_tcpc.h:705
 
static 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.
Definition: usbc_tcpc.h:195
 
static 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.
Definition: usbc_tcpc.h:681
 
static 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.
Definition: usbc_tcpc.h:177
 
static bool tcpc_get_src_ctrl(const struct device *dev)
Queries the current sourcing state of the TCPC.
Definition: usbc_tcpc.h:791
 
static 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.
Definition: usbc_tcpc.h:204
 
static bool tcpc_is_rx_pending_msg(const struct device *dev, enum pd_packet_type *type)
Tests if a received Power Delivery message is pending.
Definition: usbc_tcpc.h:467
 
static int tcpc_set_vconn(const struct device *dev, bool enable)
Enables or disables VCONN.
Definition: usbc_tcpc.h:418
 
static 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.
Definition: usbc_tcpc.h:304
 
static int tcpc_vconn_discharge(const struct device *dev, bool enable)
Discharges VCONN.
Definition: usbc_tcpc.h:393
 
static 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.
Definition: usbc_tcpc.h:282
 
static int tcpc_get_status_register(const struct device *dev, enum tcpc_status_reg reg, int32_t *status)
Gets a status register.
Definition: usbc_tcpc.h:629
 
int(* tcpc_vconn_discharge_cb_t)(const struct device *dev, enum tc_cc_polarity pol, bool enable)
Definition: usbc_tcpc.h:121
 
tcpc_alert
TCPC Alert bits.
Definition: usbc_tcpc.h:39
 
static int tcpc_set_cc_polarity(const struct device *dev, enum tc_cc_polarity polarity)
Sets the polarity of the CC lines.
Definition: usbc_tcpc.h:536
 
void(* tcpc_alert_handler_cb_t)(const struct device *dev, void *data, enum tcpc_alert alert)
Definition: usbc_tcpc.h:123
 
static 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.
Definition: usbc_tcpc.h:258
 
static int tcpc_is_cc_rp(enum tc_cc_voltage_state cc)
Returns whether the sink has detected a Rp resistor on the other side.
Definition: usbc_tcpc.h:168
 
static 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.
Definition: usbc_tcpc.h:605
 
int(* tcpc_vconn_control_cb_t)(const struct device *dev, enum tc_cc_polarity pol, bool enable)
Definition: usbc_tcpc.h:119
 
static int tcpc_receive_data(const struct device *dev, struct pd_msg *buf)
Retrieves the Power Delivery message from the TCPC.
Definition: usbc_tcpc.h:491
 
static int tcpc_get_chip_info(const struct device *dev, struct tcpc_chip_info *chip_info)
Gets the TCPC firmware version.
Definition: usbc_tcpc.h:837
 
static int tcpc_transmit_data(const struct device *dev, struct pd_msg *msg)
Transmits a Power Delivery message.
Definition: usbc_tcpc.h:558
 
static 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.
Definition: usbc_tcpc.h:443
 
static int tcpc_set_rx_enable(const struct device *dev, bool enable)
Enables the reception of SOP* message types.
Definition: usbc_tcpc.h:515
 
static 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.
Definition: usbc_tcpc.h:222
 
static int tcpc_dump_std_reg(const struct device *dev)
Dump a set of TCPC registers.
Definition: usbc_tcpc.h:580
 
static int tcpc_set_low_power_mode(const struct device *dev, bool enable)
Instructs the TCPC to enter or exit low power mode.
Definition: usbc_tcpc.h:860
 
static void tcpc_set_vconn_discharge_cb(const struct device *dev, tcpc_vconn_discharge_cb_t cb)
Sets a callback that can enable or discharge VCONN if the TCPC is unable to or the system is configur...
Definition: usbc_tcpc.h:368
 
static int tcpc_set_drp_toggle(const struct device *dev, bool enable)
Enable TCPC auto dual role toggle.
Definition: usbc_tcpc.h:749
 
static 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.
Definition: usbc_tcpc.h:186
 
static bool tcpc_get_snk_ctrl(const struct device *dev)
Queries the current sinking state of the TCPC.
Definition: usbc_tcpc.h:770
 
static 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...
Definition: usbc_tcpc.h:346
 
static int tcpc_set_debug_detach(const struct device *dev)
Detach from a debug connection.
Definition: usbc_tcpc.h:727
 
static int tcpc_sop_prime_enable(const struct device *dev, bool enable)
Enables the reception of SOP Prime messages.
Definition: usbc_tcpc.h:883
 
static 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.
Definition: usbc_tcpc.h:213
 
static int tcpc_init(const struct device *dev)
Initializes the TCPC.
Definition: usbc_tcpc.h:236
 
static 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.
Definition: usbc_tcpc.h:325
 
static 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.
Definition: usbc_tcpc.h:814
 
tcpc_status_reg
TCPC Status register.
Definition: usbc_tcpc.h:83
 
@ TCPC_ALERT_EXTENDED_STATUS
Definition: usbc_tcpc.h:70
 
@ TCPC_ALERT_TRANSMIT_MSG_DISCARDED
Definition: usbc_tcpc.h:54
 
@ TCPC_ALERT_CC_STATUS
Definition: usbc_tcpc.h:41
 
@ TCPC_ALERT_EXTENDED
Definition: usbc_tcpc.h:75
 
@ TCPC_ALERT_BEGINNING_MSG_STATUS
Definition: usbc_tcpc.h:68
 
@ TCPC_ALERT_MSG_STATUS
Definition: usbc_tcpc.h:45
 
@ TCPC_ALERT_HARD_RESET_RECEIVED
Definition: usbc_tcpc.h:47
 
@ TCPC_ALERT_TRANSMIT_MSG_SUCCESS
Definition: usbc_tcpc.h:56
 
@ TCPC_ALERT_VBUS_ALARM_HI
Definition: usbc_tcpc.h:58
 
@ TCPC_ALERT_VBUS_SNK_DISCONNECT
Definition: usbc_tcpc.h:66
 
@ TCPC_ALERT_POWER_STATUS
Definition: usbc_tcpc.h:43
 
@ TCPC_ALERT_VBUS_ALARM_LO
Definition: usbc_tcpc.h:60
 
@ TCPC_ALERT_VENDOR_DEFINED
Definition: usbc_tcpc.h:77
 
@ TCPC_ALERT_FAULT_STATUS
Definition: usbc_tcpc.h:62
 
@ TCPC_ALERT_TRANSMIT_MSG_FAILED
Definition: usbc_tcpc.h:49
 
@ TCPC_ALERT_RX_BUFFER_OVERFLOW
Definition: usbc_tcpc.h:64
 
@ TCPC_FAULT_STATUS
Definition: usbc_tcpc.h:89
 
@ TCPC_VENDOR_DEFINED_STATUS
Definition: usbc_tcpc.h:95
 
@ TCPC_EXTENDED_ALERT_STATUS
Definition: usbc_tcpc.h:93
 
@ TCPC_POWER_STATUS
Definition: usbc_tcpc.h:87
 
@ TCPC_CC_STATUS
Definition: usbc_tcpc.h:85
 
@ TCPC_EXTENDED_STATUS
Definition: usbc_tcpc.h:91
 
tc_cc_pull
CC pull resistors.
Definition: usbc_tc.h:352
 
tc_rp_value
Pull-Up resistor values.
Definition: usbc_tc.h:338
 
tc_cc_voltage_state
CC Voltage status.
Definition: usbc_tc.h:308
 
tc_data_role
Power Delivery Data Role.
Definition: usbc_tc.h:389
 
tc_power_role
Power Delivery Power Role.
Definition: usbc_tc.h:379
 
tc_cc_polarity
Polarity of the CC lines.
Definition: usbc_tc.h:401
 
@ TC_CC_VOLT_RP_DEF
Definition: usbc_tc.h:316
 
@ TC_CC_VOLT_RA
Definition: usbc_tc.h:312
 
@ TC_CC_VOLT_RD
Definition: usbc_tc.h:314
 
@ TC_CC_VOLT_RP_3A0
Definition: usbc_tc.h:320
 
@ TC_CC_VOLT_RP_1A5
Definition: usbc_tc.h:318
 
#define bool
Definition: stdbool.h:13
 
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
 
__INT32_TYPE__ int32_t
Definition: stdint.h:74
 
__UINT64_TYPE__ uint64_t
Definition: stdint.h:91
 
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
 
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
 
Runtime device structure (in ROM) per driver instance.
Definition: device.h:378
 
const void * api
Definition: device.h:384
 
Power Delivery message.
Definition: usbc_pd.h:1040
 
TCPC Chip Information.
Definition: usbc_tcpc.h:101
 
uint16_t product_id
Definition: usbc_tcpc.h:105
 
uint8_t min_req_fw_version_string[8]
Definition: usbc_tcpc.h:113
 
uint64_t fw_verion_number
Definition: usbc_tcpc.h:109
 
uint64_t min_req_fw_version_number
Definition: usbc_tcpc.h:115
 
uint16_t device_id
Definition: usbc_tcpc.h:107
 
uint16_t vendor_id
Definition: usbc_tcpc.h:103
 
Definition: usbc_tcpc.h:126
 
int(* init)(const struct device *dev)
Definition: usbc_tcpc.h:127
 
int(* vconn_discharge)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:135
 
int(* set_debug_accessory)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:152
 
int(* dump_std_reg)(const struct device *dev)
Definition: usbc_tcpc.h:144
 
int(* select_rp_value)(const struct device *dev, enum tc_rp_value rp)
Definition: usbc_tcpc.h:130
 
void(* alert_handler_cb)(const struct device *dev, void *data, enum tcpc_alert alert)
Definition: usbc_tcpc.h:145
 
void(* set_vconn_discharge_cb)(const struct device *dev, tcpc_vconn_discharge_cb_t cb)
Definition: usbc_tcpc.h:133
 
int(* set_rx_enable)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:141
 
int(* set_cc)(const struct device *dev, enum tc_cc_pull pull)
Definition: usbc_tcpc.h:132
 
int(* set_roles)(const struct device *dev, enum tc_power_role power_role, enum tc_data_role data_role)
Definition: usbc_tcpc.h:137
 
int(* sop_prime_enable)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:159
 
int(* clear_status_register)(const struct device *dev, enum tcpc_status_reg reg, uint32_t mask)
Definition: usbc_tcpc.h:148
 
bool(* get_snk_ctrl)(const struct device *dev)
Definition: usbc_tcpc.h:155
 
bool(* is_rx_pending_msg)(const struct device *dev, enum pd_packet_type *type)
Definition: usbc_tcpc.h:140
 
int(* receive_data)(const struct device *dev, struct pd_msg *msg)
Definition: usbc_tcpc.h:139
 
int(* set_vconn)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:136
 
int(* set_cc_polarity)(const struct device *dev, enum tc_cc_polarity polarity)
Definition: usbc_tcpc.h:142
 
int(* get_chip_info)(const struct device *dev, struct tcpc_chip_info *chip_info)
Definition: usbc_tcpc.h:157
 
bool(* get_src_ctrl)(const struct device *dev)
Definition: usbc_tcpc.h:156
 
int(* get_status_register)(const struct device *dev, enum tcpc_status_reg reg, int32_t *status)
Definition: usbc_tcpc.h:146
 
int(* transmit_data)(const struct device *dev, struct pd_msg *msg)
Definition: usbc_tcpc.h:143
 
int(* set_low_power_mode)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:158
 
int(* mask_status_register)(const struct device *dev, enum tcpc_status_reg reg, uint32_t mask)
Definition: usbc_tcpc.h:150
 
int(* set_debug_detach)(const struct device *dev)
Definition: usbc_tcpc.h:153
 
int(* get_rp_value)(const struct device *dev, enum tc_rp_value *rp)
Definition: usbc_tcpc.h:131
 
void(* set_vconn_cb)(const struct device *dev, tcpc_vconn_control_cb_t vconn_cb)
Definition: usbc_tcpc.h:134
 
int(* set_alert_handler_cb)(const struct device *dev, tcpc_alert_handler_cb_t handler, void *data)
Definition: usbc_tcpc.h:161
 
int(* get_cc)(const struct device *dev, enum tc_cc_voltage_state *cc1, enum tc_cc_voltage_state *cc2)
Definition: usbc_tcpc.h:128
 
int(* set_drp_toggle)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:154
 
int(* set_bist_test_mode)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:160
 
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
 
static void msg(uint64_t c64)
Definition: main.c:17
 
static void handler(struct k_timer *timer)
Definition: main.c:19
 
USB-C Power Delivery API used for USB-C drivers.
 
USB Type-C Cable and Connector API used for USB-C drivers.