Zephyr API Documentation  3.5.0
A Scalable Open Source RTOS
3.5.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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
25#include <zephyr/types.h>
26#include <zephyr/device.h>
27#include <errno.h>
28
29#include "usbc_tc.h"
30#include "usbc_pd.h"
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
78};
79
96};
97
110
111 union {
116 };
117};
118
119typedef int (*tcpc_vconn_control_cb_t)(const struct device *dev,
120 enum tc_cc_polarity pol, bool enable);
121typedef int (*tcpc_vconn_discharge_cb_t)(const struct device *dev,
122 enum tc_cc_polarity pol, bool enable);
123typedef void (*tcpc_alert_handler_cb_t)(const struct device *dev, void *data,
124 enum tcpc_alert alert);
125
126__subsystem struct tcpc_driver_api {
127 int (*init)(const struct device *dev);
128 int (*get_cc)(const struct device *dev, enum tc_cc_voltage_state *cc1,
129 enum tc_cc_voltage_state *cc2);
130 int (*select_rp_value)(const struct device *dev, enum tc_rp_value rp);
131 int (*get_rp_value)(const struct device *dev, enum tc_rp_value *rp);
132 int (*set_cc)(const struct device *dev, enum tc_cc_pull pull);
134 void (*set_vconn_cb)(const struct device *dev, tcpc_vconn_control_cb_t vconn_cb);
135 int (*vconn_discharge)(const struct device *dev, bool enable);
136 int (*set_vconn)(const struct device *dev, bool enable);
137 int (*set_roles)(const struct device *dev, enum tc_power_role power_role,
138 enum tc_data_role data_role);
139 int (*receive_data)(const struct device *dev, struct pd_msg *msg);
140 bool (*is_rx_pending_msg)(const struct device *dev, enum pd_packet_type *type);
141 int (*set_rx_enable)(const struct device *dev, bool enable);
142 int (*set_cc_polarity)(const struct device *dev, enum tc_cc_polarity polarity);
143 int (*transmit_data)(const struct device *dev, struct pd_msg *msg);
144 int (*dump_std_reg)(const struct device *dev);
145 void (*alert_handler_cb)(const struct device *dev, void *data, enum tcpc_alert alert);
146 int (*get_status_register)(const struct device *dev, enum tcpc_status_reg reg,
147 int32_t *status);
148 int (*clear_status_register)(const struct device *dev, enum tcpc_status_reg reg,
149 uint32_t mask);
150 int (*mask_status_register)(const struct device *dev, enum tcpc_status_reg reg,
151 uint32_t mask);
152 int (*set_debug_accessory)(const struct device *dev, bool enable);
153 int (*set_debug_detach)(const struct device *dev);
154 int (*set_drp_toggle)(const struct device *dev, bool enable);
155 bool (*get_snk_ctrl)(const struct device *dev);
156 bool (*get_src_ctrl)(const struct device *dev);
157 int (*get_chip_info)(const struct device *dev, struct tcpc_chip_info *chip_info);
158 int (*set_low_power_mode)(const struct device *dev, bool enable);
159 int (*sop_prime_enable)(const struct device *dev, bool enable);
160 int (*set_bist_test_mode)(const struct device *dev, bool enable);
161 int (*set_alert_handler_cb)(const struct device *dev, tcpc_alert_handler_cb_t handler,
162 void *data);
163};
164
168static inline int tcpc_is_cc_rp(enum tc_cc_voltage_state cc)
169{
170 return (cc == TC_CC_VOLT_RP_DEF) || (cc == TC_CC_VOLT_RP_1A5) ||
172}
173
177static inline int tcpc_is_cc_open(enum tc_cc_voltage_state cc1,
178 enum tc_cc_voltage_state cc2)
179{
180 return (cc1 < TC_CC_VOLT_RD) && (cc2 < TC_CC_VOLT_RD);
181}
182
187 enum tc_cc_voltage_state cc2)
188{
189 return cc1 == TC_CC_VOLT_RD && cc2 == TC_CC_VOLT_RD;
190}
191
196 enum tc_cc_voltage_state cc2)
197{
198 return tcpc_is_cc_rp(cc1) && tcpc_is_cc_rp(cc2);
199}
200
204static inline int tcpc_is_cc_audio_acc(enum tc_cc_voltage_state cc1,
205 enum tc_cc_voltage_state cc2)
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 enum tc_cc_voltage_state cc2)
224{
225 return tcpc_is_cc_at_least_one_rd(cc1, cc2) && cc1 != cc2;
226}
227
236static inline int tcpc_init(const struct device *dev)
237{
238 const struct tcpc_driver_api *api =
239 (const struct tcpc_driver_api *)dev->api;
240
241 __ASSERT(api->init != NULL,
242 "Callback pointer should not be NULL");
243
244 return api->init(dev);
245}
246
258static inline int tcpc_get_cc(const struct device *dev,
259 enum tc_cc_voltage_state *cc1,
260 enum tc_cc_voltage_state *cc2)
261{
262 const struct tcpc_driver_api *api =
263 (const struct tcpc_driver_api *)dev->api;
264
265 if (api->get_cc == NULL) {
266 return -ENOSYS;
267 }
268
269 return api->get_cc(dev, cc1, cc2);
270}
271
282static inline int tcpc_select_rp_value(const struct device *dev, enum tc_rp_value rp)
283{
284 const struct tcpc_driver_api *api =
285 (const struct tcpc_driver_api *)dev->api;
286
287 if (api->select_rp_value == NULL) {
288 return -ENOSYS;
289 }
290
291 return api->select_rp_value(dev, rp);
292}
293
304static inline int tcpc_get_rp_value(const struct device *dev, enum tc_rp_value *rp)
305{
306 const struct tcpc_driver_api *api =
307 (const struct tcpc_driver_api *)dev->api;
308
309 if (api->get_rp_value == NULL) {
310 return -ENOSYS;
311 }
312
313 return api->get_rp_value(dev, rp);
314}
315
325static inline int tcpc_set_cc(const struct device *dev, enum tc_cc_pull pull)
326{
327 const struct tcpc_driver_api *api =
328 (const struct tcpc_driver_api *)dev->api;
329
330 __ASSERT(api->set_cc != NULL,
331 "Callback pointer should not be NULL");
332
333 return api->set_cc(dev, pull);
334}
335
346static inline void tcpc_set_vconn_cb(const struct device *dev,
348{
349 const struct tcpc_driver_api *api =
350 (const struct tcpc_driver_api *)dev->api;
351
352 __ASSERT(api->set_vconn_cb != NULL,
353 "Callback pointer should not be NULL");
354
355 return api->set_vconn_cb(dev, vconn_cb);
356}
357
368static inline void tcpc_set_vconn_discharge_cb(const struct device *dev,
370{
371 const struct tcpc_driver_api *api =
372 (const struct tcpc_driver_api *)dev->api;
373
374 __ASSERT(api->set_vconn_discharge_cb != NULL,
375 "Callback pointer should not be NULL");
376
377 return api->set_vconn_discharge_cb(dev, cb);
378}
379
393static inline int tcpc_vconn_discharge(const struct device *dev, bool enable)
394{
395 const struct tcpc_driver_api *api =
396 (const struct tcpc_driver_api *)dev->api;
397
398 if (api->vconn_discharge == NULL) {
399 return -ENOSYS;
400 }
401
402 return api->vconn_discharge(dev, enable);
403}
404
418static inline int tcpc_set_vconn(const struct device *dev, bool enable)
419{
420 const struct tcpc_driver_api *api =
421 (const struct tcpc_driver_api *)dev->api;
422
423 if (api->set_vconn == NULL) {
424 return -ENOSYS;
425 }
426
427 return api->set_vconn(dev, enable);
428}
429
443static inline int tcpc_set_roles(const struct device *dev,
444 enum tc_power_role power_role,
445 enum tc_data_role data_role)
446{
447 const struct tcpc_driver_api *api =
448 (const struct tcpc_driver_api *)dev->api;
449
450 if (api->set_roles == NULL) {
451 return -ENOSYS;
452 }
453
454 return api->set_roles(dev, power_role, data_role);
455}
456
467static inline bool tcpc_is_rx_pending_msg(const struct device *dev,
468 enum pd_packet_type *type)
469{
470 const struct tcpc_driver_api *api =
471 (const struct tcpc_driver_api *)dev->api;
472
473 if (api->is_rx_pending_msg == NULL) {
474 return -ENOSYS;
475 }
476
477 return api->is_rx_pending_msg(dev, type);
478}
479
491static inline int tcpc_receive_data(const struct device *dev,
492 struct pd_msg *buf)
493{
494 const struct tcpc_driver_api *api =
495 (const struct tcpc_driver_api *)dev->api;
496
497 if (api->receive_data == NULL) {
498 return -ENOSYS;
499 }
500
501 return api->receive_data(dev, buf);
502}
503
515static inline int tcpc_set_rx_enable(const struct device *dev, bool enable)
516{
517 const struct tcpc_driver_api *api =
518 (const struct tcpc_driver_api *)dev->api;
519
520 if (api->set_rx_enable == NULL) {
521 return -ENOSYS;
522 }
523
524 return api->set_rx_enable(dev, enable);
525}
526
536static inline int tcpc_set_cc_polarity(const struct device *dev,
537 enum tc_cc_polarity polarity)
538{
539 const struct tcpc_driver_api *api =
540 (const struct tcpc_driver_api *)dev->api;
541
542 __ASSERT(api->set_cc_polarity != NULL,
543 "Callback pointer should not be NULL");
544
545 return api->set_cc_polarity(dev, polarity);
546}
547
558static inline int tcpc_transmit_data(const struct device *dev,
559 struct pd_msg *msg)
560{
561 const struct tcpc_driver_api *api =
562 (const struct tcpc_driver_api *)dev->api;
563
564 if (api->transmit_data == NULL) {
565 return -ENOSYS;
566 }
567
568 return api->transmit_data(dev, msg);
569}
570
580static inline int tcpc_dump_std_reg(const struct device *dev)
581{
582 const struct tcpc_driver_api *api =
583 (const struct tcpc_driver_api *)dev->api;
584
585 if (api->dump_std_reg == NULL) {
586 return -ENOSYS;
587 }
588
589 return api->dump_std_reg(dev);
590}
591
605static inline int tcpc_set_alert_handler_cb(const struct device *dev,
607 void *data)
608{
609 const struct tcpc_driver_api *api =
610 (const struct tcpc_driver_api *)dev->api;
611
612 __ASSERT(api->set_alert_handler_cb != NULL,
613 "Callback pointer should not be NULL");
614
615 return api->set_alert_handler_cb(dev, handler, data);
616}
617
629static inline int tcpc_get_status_register(const struct device *dev,
630 enum tcpc_status_reg reg,
631 int32_t *status)
632{
633 const struct tcpc_driver_api *api =
634 (const struct tcpc_driver_api *)dev->api;
635
636 if (api->get_status_register == NULL) {
637 return -ENOSYS;
638 }
639
640 return api->get_status_register(dev, reg, status);
641}
642
655static inline int tcpc_clear_status_register(const struct device *dev,
656 enum tcpc_status_reg reg,
657 uint32_t mask)
658{
659 const struct tcpc_driver_api *api =
660 (const struct tcpc_driver_api *)dev->api;
661
662 if (api->clear_status_register == NULL) {
663 return -ENOSYS;
664 }
665
666 return api->clear_status_register(dev, reg, mask);
667}
668
681static inline int tcpc_mask_status_register(const struct device *dev,
682 enum tcpc_status_reg reg,
683 uint32_t mask)
684{
685 const struct tcpc_driver_api *api =
686 (const struct tcpc_driver_api *)dev->api;
687
688 if (api->mask_status_register == NULL) {
689 return -ENOSYS;
690 }
691
692 return api->mask_status_register(dev, reg, mask);
693}
694
705static inline int tcpc_set_debug_accessory(const struct device *dev,
706 bool enable)
707{
708 const struct tcpc_driver_api *api =
709 (const struct tcpc_driver_api *)dev->api;
710
711 if (api->set_debug_accessory == NULL) {
712 return -ENOSYS;
713 }
714
715 return api->set_debug_accessory(dev, enable);
716}
717
727static inline int tcpc_set_debug_detach(const struct device *dev)
728{
729 const struct tcpc_driver_api *api =
730 (const struct tcpc_driver_api *)dev->api;
731
732 if (api->set_debug_detach == NULL) {
733 return -ENOSYS;
734 }
735
736 return api->set_debug_detach(dev);
737}
738
749static inline int tcpc_set_drp_toggle(const struct device *dev, bool enable)
750{
751 const struct tcpc_driver_api *api =
752 (const struct tcpc_driver_api *)dev->api;
753
754 if (api->set_drp_toggle == NULL) {
755 return -ENOSYS;
756 }
757
758 return api->set_drp_toggle(dev, enable);
759}
760
770static inline bool tcpc_get_snk_ctrl(const struct device *dev)
771{
772 const struct tcpc_driver_api *api =
773 (const struct tcpc_driver_api *)dev->api;
774
775 if (api->get_snk_ctrl == NULL) {
776 return -ENOSYS;
777 }
778
779 return api->get_snk_ctrl(dev);
780}
781
791static inline bool tcpc_get_src_ctrl(const struct device *dev)
792{
793 const struct tcpc_driver_api *api =
794 (const struct tcpc_driver_api *)dev->api;
795
796 if (api->get_src_ctrl == NULL) {
797 return -ENOSYS;
798 }
799
800 return api->get_src_ctrl(dev);
801}
802
814static inline int tcpc_set_bist_test_mode(const struct device *dev,
815 bool enable)
816{
817 const struct tcpc_driver_api *api =
818 (const struct tcpc_driver_api *)dev->api;
819
820 if (api->set_bist_test_mode == NULL) {
821 return -ENOSYS;
822 }
823
824 return api->set_bist_test_mode(dev, enable);
825}
826
837static inline int tcpc_get_chip_info(const struct device *dev,
838 struct tcpc_chip_info *chip_info)
839{
840 const struct tcpc_driver_api *api =
841 (const struct tcpc_driver_api *)dev->api;
842
843 if (api->get_chip_info == NULL) {
844 return -ENOSYS;
845 }
846
847 return api->get_chip_info(dev, chip_info);
848}
849
860static inline int tcpc_set_low_power_mode(const struct device *dev,
861 bool enable)
862{
863 const struct tcpc_driver_api *api =
864 (const struct tcpc_driver_api *)dev->api;
865
866 if (api->set_low_power_mode == NULL) {
867 return -ENOSYS;
868 }
869
870 return api->set_low_power_mode(dev, enable);
871}
872
883static inline int tcpc_sop_prime_enable(const struct device *dev,
884 bool enable)
885{
886 const struct tcpc_driver_api *api =
887 (const struct tcpc_driver_api *)dev->api;
888
889 if (api->sop_prime_enable == NULL) {
890 return -ENOSYS;
891 }
892
893 return api->sop_prime_enable(dev, enable);
894}
895
900#ifdef __cplusplus
901}
902#endif
903
904#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: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.
Definition: usbc_tcpc.h:814
tcpc_status_reg
TCPC Status register.
Definition: usbc_tcpc.h:83
@ TCPC_ALERT_EXTENDED_STATUS
Extended status changed.
Definition: usbc_tcpc.h:70
@ TCPC_ALERT_TRANSMIT_MSG_DISCARDED
Reset or SOP* message transmission not sent due to an incoming receive message.
Definition: usbc_tcpc.h:54
@ TCPC_ALERT_CC_STATUS
CC status changed.
Definition: usbc_tcpc.h:41
@ TCPC_ALERT_EXTENDED
An extended interrupt event has occurred.
Definition: usbc_tcpc.h:75
@ TCPC_ALERT_BEGINNING_MSG_STATUS
Receive buffer register changed.
Definition: usbc_tcpc.h:68
@ TCPC_ALERT_MSG_STATUS
Receive Buffer register changed.
Definition: usbc_tcpc.h:45
@ TCPC_ALERT_HARD_RESET_RECEIVED
Received Hard Reset message.
Definition: usbc_tcpc.h:47
@ TCPC_ALERT_TRANSMIT_MSG_SUCCESS
Reset or SOP* message transmission successful.
Definition: usbc_tcpc.h:56
@ TCPC_ALERT_VBUS_ALARM_HI
A high-voltage alarm has occurred.
Definition: usbc_tcpc.h:58
@ TCPC_ALERT_VBUS_SNK_DISCONNECT
The TCPC in Attached.SNK state has detected a sink disconnect.
Definition: usbc_tcpc.h:66
@ TCPC_ALERT_POWER_STATUS
Power status changed.
Definition: usbc_tcpc.h:43
@ TCPC_ALERT_VBUS_ALARM_LO
A low-voltage alarm has occurred.
Definition: usbc_tcpc.h:60
@ TCPC_ALERT_VENDOR_DEFINED
A vendor defined alert has been detected.
Definition: usbc_tcpc.h:77
@ TCPC_ALERT_FAULT_STATUS
A fault has occurred.
Definition: usbc_tcpc.h:62
@ TCPC_ALERT_TRANSMIT_MSG_FAILED
SOP* message transmission not successful.
Definition: usbc_tcpc.h:49
@ TCPC_ALERT_RX_BUFFER_OVERFLOW
TCPC RX buffer has overflowed.
Definition: usbc_tcpc.h:64
@ TCPC_FAULT_STATUS
The Fault Status register.
Definition: usbc_tcpc.h:89
@ TCPC_VENDOR_DEFINED_STATUS
The Vendor Defined Status register.
Definition: usbc_tcpc.h:95
@ TCPC_EXTENDED_ALERT_STATUS
The Extended Alert Status register.
Definition: usbc_tcpc.h:93
@ TCPC_POWER_STATUS
The Power Status register.
Definition: usbc_tcpc.h:87
@ TCPC_CC_STATUS
The CC Status register.
Definition: usbc_tcpc.h:85
@ TCPC_EXTENDED_STATUS
The Extended Status register.
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
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
#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:381
void * data
Address of the device instance private data.
Definition: device.h:391
const void * api
Address of the API structure exposed by the device instance.
Definition: device.h:387
Power Delivery message.
Definition: usbc_pd.h:1040
TCPC Chip Information.
Definition: usbc_tcpc.h:101
uint16_t product_id
Product Id.
Definition: usbc_tcpc.h:105
uint8_t min_req_fw_version_string[8]
Minimum Required firmware version string.
Definition: usbc_tcpc.h:113
uint64_t fw_version_number
Firmware version number.
Definition: usbc_tcpc.h:109
uint64_t min_req_fw_version_number
Minimum Required firmware version number.
Definition: usbc_tcpc.h:115
uint16_t device_id
Device Id.
Definition: usbc_tcpc.h:107
uint16_t vendor_id
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
USB-C Power Delivery API used for USB-C drivers.
USB Type-C Cable and Connector API used for USB-C drivers.