Zephyr API Documentation 4.0.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
usbc_tcpc.h
Go to the documentation of this file.
1/*
2 * Copyright 2022 The Chromium OS Authors
3 * SPDX-License-Identifier: Apache-2.0
4 */
5
15#ifndef ZEPHYR_INCLUDE_DRIVERS_USBC_USBC_TCPC_H_
16#define ZEPHYR_INCLUDE_DRIVERS_USBC_USBC_TCPC_H_
17
27#include <zephyr/types.h>
28#include <zephyr/device.h>
29#include <errno.h>
30
31#include "usbc_tc.h"
32#include "usbc_pd.h"
33
34#ifdef __cplusplus
35extern "C" {
36#endif
37
81
101
122
123typedef int (*tcpc_vconn_control_cb_t)(const struct device *dev, enum tc_cc_polarity pol,
124 bool enable);
125typedef int (*tcpc_vconn_discharge_cb_t)(const struct device *dev, enum tc_cc_polarity pol,
126 bool enable);
127typedef void (*tcpc_alert_handler_cb_t)(const struct device *dev, void *data,
128 enum tcpc_alert alert);
129
130__subsystem struct tcpc_driver_api {
131 int (*init)(const struct device *dev);
132 int (*get_cc)(const struct device *dev, enum tc_cc_voltage_state *cc1,
133 enum tc_cc_voltage_state *cc2);
134 int (*select_rp_value)(const struct device *dev, enum tc_rp_value rp);
135 int (*get_rp_value)(const struct device *dev, enum tc_rp_value *rp);
136 int (*set_cc)(const struct device *dev, enum tc_cc_pull pull);
138 void (*set_vconn_cb)(const struct device *dev, tcpc_vconn_control_cb_t vconn_cb);
139 int (*vconn_discharge)(const struct device *dev, bool enable);
140 int (*set_vconn)(const struct device *dev, bool enable);
141 int (*set_roles)(const struct device *dev, enum tc_power_role power_role,
142 enum tc_data_role data_role);
143 int (*get_rx_pending_msg)(const struct device *dev, struct pd_msg *msg);
144 int (*set_rx_enable)(const struct device *dev, bool enable);
145 int (*set_cc_polarity)(const struct device *dev, enum tc_cc_polarity polarity);
146 int (*transmit_data)(const struct device *dev, struct pd_msg *msg);
147 int (*dump_std_reg)(const struct device *dev);
148 void (*alert_handler_cb)(const struct device *dev, void *data, enum tcpc_alert alert);
149 int (*get_status_register)(const struct device *dev, enum tcpc_status_reg reg,
150 uint32_t *status);
151 int (*clear_status_register)(const struct device *dev, enum tcpc_status_reg reg,
152 uint32_t mask);
153 int (*mask_status_register)(const struct device *dev, enum tcpc_status_reg reg,
154 uint32_t mask);
155 int (*set_debug_accessory)(const struct device *dev, bool enable);
156 int (*set_debug_detach)(const struct device *dev);
157 int (*set_drp_toggle)(const struct device *dev, bool enable);
158 int (*get_snk_ctrl)(const struct device *dev);
159 int (*set_snk_ctrl)(const struct device *dev, bool enable);
160 int (*get_src_ctrl)(const struct device *dev);
161 int (*set_src_ctrl)(const struct device *dev, bool enable);
162 int (*get_chip_info)(const struct device *dev, struct tcpc_chip_info *chip_info);
163 int (*set_low_power_mode)(const struct device *dev, bool enable);
164 int (*sop_prime_enable)(const struct device *dev, bool enable);
165 int (*set_bist_test_mode)(const struct device *dev, bool enable);
166 int (*set_alert_handler_cb)(const struct device *dev, tcpc_alert_handler_cb_t handler,
167 void *data);
168};
169
173static inline int tcpc_is_cc_rp(enum tc_cc_voltage_state cc)
174{
175 return (cc == TC_CC_VOLT_RP_DEF) || (cc == TC_CC_VOLT_RP_1A5) || (cc == TC_CC_VOLT_RP_3A0);
176}
177
181static inline int tcpc_is_cc_open(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2)
182{
183 return (cc1 < TC_CC_VOLT_RD) && (cc2 < TC_CC_VOLT_RD);
184}
185
190{
191 return cc1 == TC_CC_VOLT_RD && cc2 == TC_CC_VOLT_RD;
192}
193
198{
199 return tcpc_is_cc_rp(cc1) && tcpc_is_cc_rp(cc2);
200}
201
206{
207 return cc1 == TC_CC_VOLT_RA && cc2 == TC_CC_VOLT_RA;
208}
209
214 enum tc_cc_voltage_state cc2)
215{
216 return cc1 == TC_CC_VOLT_RD || cc2 == TC_CC_VOLT_RD;
217}
218
223{
224 return tcpc_is_cc_at_least_one_rd(cc1, cc2) && cc1 != cc2;
225}
226
236static inline int tcpc_init(const struct device *dev)
237{
238 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
239
240 __ASSERT(api->init != NULL, "Callback pointer should not be NULL");
241
242 return api->init(dev);
243}
244
256static inline int tcpc_get_cc(const struct device *dev, enum tc_cc_voltage_state *cc1,
257 enum tc_cc_voltage_state *cc2)
258{
259 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
260
261 if (api->get_cc == NULL) {
262 return -ENOSYS;
263 }
264
265 return api->get_cc(dev, cc1, cc2);
266}
267
278static inline int tcpc_select_rp_value(const struct device *dev, enum tc_rp_value rp)
279{
280 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
281
282 if (api->select_rp_value == NULL) {
283 return -ENOSYS;
284 }
285
286 return api->select_rp_value(dev, rp);
287}
288
299static inline int tcpc_get_rp_value(const struct device *dev, enum tc_rp_value *rp)
300{
301 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
302
303 if (api->get_rp_value == NULL) {
304 return -ENOSYS;
305 }
306
307 return api->get_rp_value(dev, rp);
308}
309
319static inline int tcpc_set_cc(const struct device *dev, enum tc_cc_pull pull)
320{
321 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
322
323 __ASSERT(api->set_cc != NULL, "Callback pointer should not be NULL");
324
325 return api->set_cc(dev, pull);
326}
327
338static inline void tcpc_set_vconn_cb(const struct device *dev, tcpc_vconn_control_cb_t vconn_cb)
339{
340 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
341
342 __ASSERT(api->set_vconn_cb != NULL, "Callback pointer should not be NULL");
343
344 api->set_vconn_cb(dev, vconn_cb);
345}
346
357static inline void tcpc_set_vconn_discharge_cb(const struct device *dev,
359{
360 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
361
362 __ASSERT(api->set_vconn_discharge_cb != NULL, "Callback pointer should not be NULL");
363
364 api->set_vconn_discharge_cb(dev, cb);
365}
366
380static inline int tcpc_vconn_discharge(const struct device *dev, bool enable)
381{
382 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
383
384 if (api->vconn_discharge == NULL) {
385 return -ENOSYS;
386 }
387
388 return api->vconn_discharge(dev, enable);
389}
390
404static inline int tcpc_set_vconn(const struct device *dev, bool enable)
405{
406 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
407
408 if (api->set_vconn == NULL) {
409 return -ENOSYS;
410 }
411
412 return api->set_vconn(dev, enable);
413}
414
428static inline int tcpc_set_roles(const struct device *dev, enum tc_power_role power_role,
429 enum tc_data_role data_role)
430{
431 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
432
433 if (api->set_roles == NULL) {
434 return -ENOSYS;
435 }
436
437 return api->set_roles(dev, power_role, data_role);
438}
439
453static inline int tcpc_get_rx_pending_msg(const struct device *dev, struct pd_msg *buf)
454{
455 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
456
457 __ASSERT(api->get_rx_pending_msg != NULL, "Callback pointer should not be NULL");
458
459 return api->get_rx_pending_msg(dev, buf);
460}
461
473static inline int tcpc_set_rx_enable(const struct device *dev, bool enable)
474{
475 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
476
477 if (api->set_rx_enable == NULL) {
478 return -ENOSYS;
479 }
480
481 return api->set_rx_enable(dev, enable);
482}
483
493static inline int tcpc_set_cc_polarity(const struct device *dev, enum tc_cc_polarity polarity)
494{
495 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
496
497 __ASSERT(api->set_cc_polarity != NULL, "Callback pointer should not be NULL");
498
499 return api->set_cc_polarity(dev, polarity);
500}
501
512static inline int tcpc_transmit_data(const struct device *dev, struct pd_msg *msg)
513{
514 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
515
516 if (api->transmit_data == NULL) {
517 return -ENOSYS;
518 }
519
520 return api->transmit_data(dev, msg);
521}
522
532static inline int tcpc_dump_std_reg(const struct device *dev)
533{
534 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
535
536 if (api->dump_std_reg == NULL) {
537 return -ENOSYS;
538 }
539
540 return api->dump_std_reg(dev);
541}
542
556static inline int tcpc_set_alert_handler_cb(const struct device *dev,
557 tcpc_alert_handler_cb_t handler, void *data)
558{
559 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
560
561 __ASSERT(api->set_alert_handler_cb != NULL, "Callback pointer should not be NULL");
562
563 return api->set_alert_handler_cb(dev, handler, data);
564}
565
577static inline int tcpc_get_status_register(const struct device *dev, enum tcpc_status_reg reg,
578 uint32_t *status)
579{
580 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
581
582 if (api->get_status_register == NULL) {
583 return -ENOSYS;
584 }
585
586 return api->get_status_register(dev, reg, status);
587}
588
601static inline int tcpc_clear_status_register(const struct device *dev, enum tcpc_status_reg reg,
602 uint32_t mask)
603{
604 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
605
606 if (api->clear_status_register == NULL) {
607 return -ENOSYS;
608 }
609
610 return api->clear_status_register(dev, reg, mask);
611}
612
625static inline int tcpc_mask_status_register(const struct device *dev, enum tcpc_status_reg reg,
626 uint32_t mask)
627{
628 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
629
630 if (api->mask_status_register == NULL) {
631 return -ENOSYS;
632 }
633
634 return api->mask_status_register(dev, reg, mask);
635}
636
647static inline int tcpc_set_debug_accessory(const struct device *dev, bool enable)
648{
649 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
650
651 if (api->set_debug_accessory == NULL) {
652 return -ENOSYS;
653 }
654
655 return api->set_debug_accessory(dev, enable);
656}
657
667static inline int tcpc_set_debug_detach(const struct device *dev)
668{
669 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
670
671 if (api->set_debug_detach == NULL) {
672 return -ENOSYS;
673 }
674
675 return api->set_debug_detach(dev);
676}
677
688static inline int tcpc_set_drp_toggle(const struct device *dev, bool enable)
689{
690 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
691
692 if (api->set_drp_toggle == NULL) {
693 return -ENOSYS;
694 }
695
696 return api->set_drp_toggle(dev, enable);
697}
698
708static inline int tcpc_get_snk_ctrl(const struct device *dev)
709{
710 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
711
712 if (api->get_snk_ctrl == NULL) {
713 return -ENOSYS;
714 }
715
716 return api->get_snk_ctrl(dev);
717}
718
727static inline int tcpc_set_snk_ctrl(const struct device *dev, bool enable)
728{
729 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
730
731 if (api->set_snk_ctrl == NULL) {
732 return -ENOSYS;
733 }
734
735 return api->set_snk_ctrl(dev, enable);
736}
737
747static inline int tcpc_get_src_ctrl(const struct device *dev)
748{
749 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
750
751 if (api->get_src_ctrl == NULL) {
752 return -ENOSYS;
753 }
754
755 return api->get_src_ctrl(dev);
756}
757
766static inline int tcpc_set_src_ctrl(const struct device *dev, bool enable)
767{
768 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
769
770 if (api->set_src_ctrl == NULL) {
771 return -ENOSYS;
772 }
773
774 return api->set_src_ctrl(dev, enable);
775}
776
788static inline int tcpc_set_bist_test_mode(const struct device *dev, bool enable)
789{
790 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
791
792 if (api->set_bist_test_mode == NULL) {
793 return -ENOSYS;
794 }
795
796 return api->set_bist_test_mode(dev, enable);
797}
798
809static inline int tcpc_get_chip_info(const struct device *dev, struct tcpc_chip_info *chip_info)
810{
811 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
812
813 if (api->get_chip_info == NULL) {
814 return -ENOSYS;
815 }
816
817 return api->get_chip_info(dev, chip_info);
818}
819
830static inline int tcpc_set_low_power_mode(const struct device *dev, bool enable)
831{
832 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
833
834 if (api->set_low_power_mode == NULL) {
835 return -ENOSYS;
836 }
837
838 return api->set_low_power_mode(dev, enable);
839}
840
852static inline int tcpc_sop_prime_enable(const struct device *dev, bool enable)
853{
854 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
855
856 if (api->sop_prime_enable == NULL) {
857 return -ENOSYS;
858 }
859
860 return api->sop_prime_enable(dev, enable);
861}
862
867#ifdef __cplusplus
868}
869#endif
870
871#endif /* ZEPHYR_INCLUDE_DRIVERS_USBC_USBC_TCPC_H_ */
irp cc
Definition asm-macro-32-bit-gnu.h:10
System error numbers.
#define ENOSYS
Function not implemented.
Definition errno.h:82
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:601
static int tcpc_set_debug_accessory(const struct device *dev, bool enable)
Manual control of TCPC DebugAccessory control.
Definition usbc_tcpc.h:647
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:197
static int tcpc_get_src_ctrl(const struct device *dev)
Queries the current sourcing state of the TCPC.
Definition usbc_tcpc.h:747
static int tcpc_get_snk_ctrl(const struct device *dev)
Queries the current sinking state of the TCPC.
Definition usbc_tcpc.h:708
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:625
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:181
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:205
static int tcpc_set_vconn(const struct device *dev, bool enable)
Enables or disables VCONN.
Definition usbc_tcpc.h:404
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:299
static int tcpc_get_rx_pending_msg(const struct device *dev, struct pd_msg *buf)
Retrieves the Power Delivery message from the TCPC.
Definition usbc_tcpc.h:453
static int tcpc_vconn_discharge(const struct device *dev, bool enable)
Discharges VCONN.
Definition usbc_tcpc.h:380
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:278
int(* tcpc_vconn_discharge_cb_t)(const struct device *dev, enum tc_cc_polarity pol, bool enable)
Definition usbc_tcpc.h:125
tcpc_alert
TCPC Alert bits.
Definition usbc_tcpc.h:41
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:493
void(* tcpc_alert_handler_cb_t)(const struct device *dev, void *data, enum tcpc_alert alert)
Definition usbc_tcpc.h:127
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:256
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:173
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:556
static int tcpc_set_snk_ctrl(const struct device *dev, bool enable)
Set the VBUS sinking state of the TCPC.
Definition usbc_tcpc.h:727
int(* tcpc_vconn_control_cb_t)(const struct device *dev, enum tc_cc_polarity pol, bool enable)
Definition usbc_tcpc.h:123
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:809
static int tcpc_transmit_data(const struct device *dev, struct pd_msg *msg)
Transmits a Power Delivery message.
Definition usbc_tcpc.h:512
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:428
static int tcpc_set_src_ctrl(const struct device *dev, bool enable)
Set the VBUS sourcing state of the TCPC.
Definition usbc_tcpc.h:766
static int tcpc_set_rx_enable(const struct device *dev, bool enable)
Enables the reception of SOP* message types.
Definition usbc_tcpc.h:473
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:532
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:830
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:357
static int tcpc_set_drp_toggle(const struct device *dev, bool enable)
Enable TCPC auto dual role toggle.
Definition usbc_tcpc.h:688
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:189
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:338
static int tcpc_set_debug_detach(const struct device *dev)
Detach from a debug connection.
Definition usbc_tcpc.h:667
static int tcpc_sop_prime_enable(const struct device *dev, bool enable)
Enables the reception of SOP Prime and optionally SOP Double Prime messages.
Definition usbc_tcpc.h:852
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:319
static int tcpc_set_bist_test_mode(const struct device *dev, bool enable)
Controls the BIST Mode of the TCPC.
Definition usbc_tcpc.h:788
static int tcpc_get_status_register(const struct device *dev, enum tcpc_status_reg reg, uint32_t *status)
Gets a status register.
Definition usbc_tcpc.h:577
tcpc_status_reg
TCPC Status register.
Definition usbc_tcpc.h:85
@ TCPC_ALERT_EXTENDED_STATUS
Extended status changed.
Definition usbc_tcpc.h:72
@ TCPC_ALERT_TRANSMIT_MSG_DISCARDED
Reset or SOP* message transmission not sent due to an incoming receive message.
Definition usbc_tcpc.h:56
@ TCPC_ALERT_CC_STATUS
CC status changed.
Definition usbc_tcpc.h:43
@ TCPC_ALERT_EXTENDED
An extended interrupt event has occurred.
Definition usbc_tcpc.h:77
@ TCPC_ALERT_BEGINNING_MSG_STATUS
Receive buffer register changed.
Definition usbc_tcpc.h:70
@ TCPC_ALERT_MSG_STATUS
Receive Buffer register changed.
Definition usbc_tcpc.h:47
@ TCPC_ALERT_HARD_RESET_RECEIVED
Received Hard Reset message.
Definition usbc_tcpc.h:49
@ TCPC_ALERT_TRANSMIT_MSG_SUCCESS
Reset or SOP* message transmission successful.
Definition usbc_tcpc.h:58
@ TCPC_ALERT_VBUS_ALARM_HI
A high-voltage alarm has occurred.
Definition usbc_tcpc.h:60
@ TCPC_ALERT_VBUS_SNK_DISCONNECT
The TCPC in Attached.SNK state has detected a sink disconnect.
Definition usbc_tcpc.h:68
@ TCPC_ALERT_POWER_STATUS
Power status changed.
Definition usbc_tcpc.h:45
@ TCPC_ALERT_VBUS_ALARM_LO
A low-voltage alarm has occurred.
Definition usbc_tcpc.h:62
@ TCPC_ALERT_VENDOR_DEFINED
A vendor defined alert has been detected.
Definition usbc_tcpc.h:79
@ TCPC_ALERT_FAULT_STATUS
A fault has occurred.
Definition usbc_tcpc.h:64
@ TCPC_ALERT_TRANSMIT_MSG_FAILED
SOP* message transmission not successful.
Definition usbc_tcpc.h:51
@ TCPC_ALERT_RX_BUFFER_OVERFLOW
TCPC RX buffer has overflowed.
Definition usbc_tcpc.h:66
@ TCPC_FAULT_STATUS
The Fault Status register.
Definition usbc_tcpc.h:93
@ TCPC_ALERT_STATUS
The Altert register.
Definition usbc_tcpc.h:87
@ TCPC_VENDOR_DEFINED_STATUS
The Vendor Defined Status register.
Definition usbc_tcpc.h:99
@ TCPC_EXTENDED_ALERT_STATUS
The Extended Alert Status register.
Definition usbc_tcpc.h:97
@ TCPC_POWER_STATUS
The Power Status register.
Definition usbc_tcpc.h:91
@ TCPC_CC_STATUS
The CC Status register.
Definition usbc_tcpc.h:89
@ TCPC_EXTENDED_STATUS
The Extended Status register.
Definition usbc_tcpc.h:95
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
Port partner is applying Rp (0.5A)
Definition usbc_tc.h:316
@ TC_CC_VOLT_RA
Port partner is applying Ra.
Definition usbc_tc.h:312
@ TC_CC_VOLT_RD
Port partner is applying Rd.
Definition usbc_tc.h:314
@ TC_CC_VOLT_RP_3A0
Port partner is applying Rp (3.0A)
Definition usbc_tc.h:320
@ TC_CC_VOLT_RP_1A5
Definition usbc_tc.h:318
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__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:411
void * data
Address of the device instance private data.
Definition device.h:421
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:417
Power Delivery message.
Definition usbc_pd.h:1040
TCPC Chip Information.
Definition usbc_tcpc.h:105
uint16_t product_id
Product Id.
Definition usbc_tcpc.h:109
uint8_t min_req_fw_version_string[8]
Minimum Required firmware version string.
Definition usbc_tcpc.h:117
uint64_t fw_version_number
Firmware version number.
Definition usbc_tcpc.h:113
uint64_t min_req_fw_version_number
Minimum Required firmware version number.
Definition usbc_tcpc.h:119
uint16_t device_id
Device Id.
Definition usbc_tcpc.h:111
uint16_t vendor_id
Vendor Id.
Definition usbc_tcpc.h:107
Definition usbc_tcpc.h:130
int(* init)(const struct device *dev)
Definition usbc_tcpc.h:131
int(* vconn_discharge)(const struct device *dev, bool enable)
Definition usbc_tcpc.h:139
int(* set_debug_accessory)(const struct device *dev, bool enable)
Definition usbc_tcpc.h:155
int(* get_rx_pending_msg)(const struct device *dev, struct pd_msg *msg)
Definition usbc_tcpc.h:143
int(* dump_std_reg)(const struct device *dev)
Definition usbc_tcpc.h:147
int(* get_status_register)(const struct device *dev, enum tcpc_status_reg reg, uint32_t *status)
Definition usbc_tcpc.h:149
int(* select_rp_value)(const struct device *dev, enum tc_rp_value rp)
Definition usbc_tcpc.h:134
void(* alert_handler_cb)(const struct device *dev, void *data, enum tcpc_alert alert)
Definition usbc_tcpc.h:148
void(* set_vconn_discharge_cb)(const struct device *dev, tcpc_vconn_discharge_cb_t cb)
Definition usbc_tcpc.h:137
int(* set_snk_ctrl)(const struct device *dev, bool enable)
Definition usbc_tcpc.h:159
int(* set_rx_enable)(const struct device *dev, bool enable)
Definition usbc_tcpc.h:144
int(* set_cc)(const struct device *dev, enum tc_cc_pull pull)
Definition usbc_tcpc.h:136
int(* set_roles)(const struct device *dev, enum tc_power_role power_role, enum tc_data_role data_role)
Definition usbc_tcpc.h:141
int(* sop_prime_enable)(const struct device *dev, bool enable)
Definition usbc_tcpc.h:164
int(* clear_status_register)(const struct device *dev, enum tcpc_status_reg reg, uint32_t mask)
Definition usbc_tcpc.h:151
int(* get_snk_ctrl)(const struct device *dev)
Definition usbc_tcpc.h:158
int(* get_src_ctrl)(const struct device *dev)
Definition usbc_tcpc.h:160
int(* set_vconn)(const struct device *dev, bool enable)
Definition usbc_tcpc.h:140
int(* set_src_ctrl)(const struct device *dev, bool enable)
Definition usbc_tcpc.h:161
int(* set_cc_polarity)(const struct device *dev, enum tc_cc_polarity polarity)
Definition usbc_tcpc.h:145
int(* get_chip_info)(const struct device *dev, struct tcpc_chip_info *chip_info)
Definition usbc_tcpc.h:162
int(* transmit_data)(const struct device *dev, struct pd_msg *msg)
Definition usbc_tcpc.h:146
int(* set_low_power_mode)(const struct device *dev, bool enable)
Definition usbc_tcpc.h:163
int(* mask_status_register)(const struct device *dev, enum tcpc_status_reg reg, uint32_t mask)
Definition usbc_tcpc.h:153
int(* set_debug_detach)(const struct device *dev)
Definition usbc_tcpc.h:156
int(* get_rp_value)(const struct device *dev, enum tc_rp_value *rp)
Definition usbc_tcpc.h:135
void(* set_vconn_cb)(const struct device *dev, tcpc_vconn_control_cb_t vconn_cb)
Definition usbc_tcpc.h:138
int(* set_alert_handler_cb)(const struct device *dev, tcpc_alert_handler_cb_t handler, void *data)
Definition usbc_tcpc.h:166
int(* get_cc)(const struct device *dev, enum tc_cc_voltage_state *cc1, enum tc_cc_voltage_state *cc2)
Definition usbc_tcpc.h:132
int(* set_drp_toggle)(const struct device *dev, bool enable)
Definition usbc_tcpc.h:157
int(* set_bist_test_mode)(const struct device *dev, bool enable)
Definition usbc_tcpc.h:165
USB-C Power Delivery API used for USB-C drivers.
USB Type-C Cable and Connector API used for USB-C drivers.