Zephyr API Documentation  3.6.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
80};
81
98};
99
112
113 union {
118 };
119};
120
121typedef int (*tcpc_vconn_control_cb_t)(const struct device *dev,
122 enum tc_cc_polarity pol, bool enable);
123typedef int (*tcpc_vconn_discharge_cb_t)(const struct device *dev,
124 enum tc_cc_polarity pol, bool enable);
125typedef void (*tcpc_alert_handler_cb_t)(const struct device *dev, void *data,
126 enum tcpc_alert alert);
127
128__subsystem struct tcpc_driver_api {
129 int (*init)(const struct device *dev);
130 int (*get_cc)(const struct device *dev, enum tc_cc_voltage_state *cc1,
131 enum tc_cc_voltage_state *cc2);
132 int (*select_rp_value)(const struct device *dev, enum tc_rp_value rp);
133 int (*get_rp_value)(const struct device *dev, enum tc_rp_value *rp);
134 int (*set_cc)(const struct device *dev, enum tc_cc_pull pull);
136 void (*set_vconn_cb)(const struct device *dev, tcpc_vconn_control_cb_t vconn_cb);
137 int (*vconn_discharge)(const struct device *dev, bool enable);
138 int (*set_vconn)(const struct device *dev, bool enable);
139 int (*set_roles)(const struct device *dev, enum tc_power_role power_role,
140 enum tc_data_role data_role);
141 int (*get_rx_pending_msg)(const struct device *dev, struct pd_msg *msg);
142 int (*set_rx_enable)(const struct device *dev, bool enable);
143 int (*set_cc_polarity)(const struct device *dev, enum tc_cc_polarity polarity);
144 int (*transmit_data)(const struct device *dev, struct pd_msg *msg);
145 int (*dump_std_reg)(const struct device *dev);
146 void (*alert_handler_cb)(const struct device *dev, void *data, enum tcpc_alert alert);
147 int (*get_status_register)(const struct device *dev, enum tcpc_status_reg reg,
148 int32_t *status);
149 int (*clear_status_register)(const struct device *dev, enum tcpc_status_reg reg,
150 uint32_t mask);
151 int (*mask_status_register)(const struct device *dev, enum tcpc_status_reg reg,
152 uint32_t mask);
153 int (*set_debug_accessory)(const struct device *dev, bool enable);
154 int (*set_debug_detach)(const struct device *dev);
155 int (*set_drp_toggle)(const struct device *dev, bool enable);
156 int (*get_snk_ctrl)(const struct device *dev);
157 int (*get_src_ctrl)(const struct device *dev);
158 int (*get_chip_info)(const struct device *dev, struct tcpc_chip_info *chip_info);
159 int (*set_low_power_mode)(const struct device *dev, bool enable);
160 int (*sop_prime_enable)(const struct device *dev, bool enable);
161 int (*set_bist_test_mode)(const struct device *dev, bool enable);
162 int (*set_alert_handler_cb)(const struct device *dev, tcpc_alert_handler_cb_t handler,
163 void *data);
164};
165
169static inline int tcpc_is_cc_rp(enum tc_cc_voltage_state cc)
170{
171 return (cc == TC_CC_VOLT_RP_DEF) || (cc == TC_CC_VOLT_RP_1A5) ||
173}
174
178static inline int tcpc_is_cc_open(enum tc_cc_voltage_state cc1,
179 enum tc_cc_voltage_state cc2)
180{
181 return (cc1 < TC_CC_VOLT_RD) && (cc2 < TC_CC_VOLT_RD);
182}
183
188 enum tc_cc_voltage_state cc2)
189{
190 return cc1 == TC_CC_VOLT_RD && cc2 == TC_CC_VOLT_RD;
191}
192
197 enum tc_cc_voltage_state cc2)
198{
199 return tcpc_is_cc_rp(cc1) && tcpc_is_cc_rp(cc2);
200}
201
205static inline int tcpc_is_cc_audio_acc(enum tc_cc_voltage_state cc1,
206 enum tc_cc_voltage_state cc2)
207{
208 return cc1 == TC_CC_VOLT_RA && cc2 == TC_CC_VOLT_RA;
209}
210
215 enum tc_cc_voltage_state cc2)
216{
217 return cc1 == TC_CC_VOLT_RD || cc2 == TC_CC_VOLT_RD;
218}
219
224 enum tc_cc_voltage_state cc2)
225{
226 return tcpc_is_cc_at_least_one_rd(cc1, cc2) && cc1 != cc2;
227}
228
238static inline int tcpc_init(const struct device *dev)
239{
240 const struct tcpc_driver_api *api =
241 (const struct tcpc_driver_api *)dev->api;
242
243 __ASSERT(api->init != NULL,
244 "Callback pointer should not be NULL");
245
246 return api->init(dev);
247}
248
260static inline int tcpc_get_cc(const struct device *dev,
261 enum tc_cc_voltage_state *cc1,
262 enum tc_cc_voltage_state *cc2)
263{
264 const struct tcpc_driver_api *api =
265 (const struct tcpc_driver_api *)dev->api;
266
267 if (api->get_cc == NULL) {
268 return -ENOSYS;
269 }
270
271 return api->get_cc(dev, cc1, cc2);
272}
273
284static inline int tcpc_select_rp_value(const struct device *dev, enum tc_rp_value rp)
285{
286 const struct tcpc_driver_api *api =
287 (const struct tcpc_driver_api *)dev->api;
288
289 if (api->select_rp_value == NULL) {
290 return -ENOSYS;
291 }
292
293 return api->select_rp_value(dev, rp);
294}
295
306static inline int tcpc_get_rp_value(const struct device *dev, enum tc_rp_value *rp)
307{
308 const struct tcpc_driver_api *api =
309 (const struct tcpc_driver_api *)dev->api;
310
311 if (api->get_rp_value == NULL) {
312 return -ENOSYS;
313 }
314
315 return api->get_rp_value(dev, rp);
316}
317
327static inline int tcpc_set_cc(const struct device *dev, enum tc_cc_pull pull)
328{
329 const struct tcpc_driver_api *api =
330 (const struct tcpc_driver_api *)dev->api;
331
332 __ASSERT(api->set_cc != NULL,
333 "Callback pointer should not be NULL");
334
335 return api->set_cc(dev, pull);
336}
337
348static inline void tcpc_set_vconn_cb(const struct device *dev,
350{
351 const struct tcpc_driver_api *api =
352 (const struct tcpc_driver_api *)dev->api;
353
354 __ASSERT(api->set_vconn_cb != NULL,
355 "Callback pointer should not be NULL");
356
357 return api->set_vconn_cb(dev, vconn_cb);
358}
359
370static inline void tcpc_set_vconn_discharge_cb(const struct device *dev,
372{
373 const struct tcpc_driver_api *api =
374 (const struct tcpc_driver_api *)dev->api;
375
376 __ASSERT(api->set_vconn_discharge_cb != NULL,
377 "Callback pointer should not be NULL");
378
379 return api->set_vconn_discharge_cb(dev, cb);
380}
381
395static inline int tcpc_vconn_discharge(const struct device *dev, bool enable)
396{
397 const struct tcpc_driver_api *api =
398 (const struct tcpc_driver_api *)dev->api;
399
400 if (api->vconn_discharge == NULL) {
401 return -ENOSYS;
402 }
403
404 return api->vconn_discharge(dev, enable);
405}
406
420static inline int tcpc_set_vconn(const struct device *dev, bool enable)
421{
422 const struct tcpc_driver_api *api =
423 (const struct tcpc_driver_api *)dev->api;
424
425 if (api->set_vconn == NULL) {
426 return -ENOSYS;
427 }
428
429 return api->set_vconn(dev, enable);
430}
431
445static inline int tcpc_set_roles(const struct device *dev,
446 enum tc_power_role power_role,
447 enum tc_data_role data_role)
448{
449 const struct tcpc_driver_api *api =
450 (const struct tcpc_driver_api *)dev->api;
451
452 if (api->set_roles == NULL) {
453 return -ENOSYS;
454 }
455
456 return api->set_roles(dev, power_role, data_role);
457}
458
472static inline int tcpc_get_rx_pending_msg(const struct device *dev, struct pd_msg *buf)
473{
474 const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api;
475
476 __ASSERT(api->get_rx_pending_msg != NULL, "Callback pointer should not be NULL");
477
478 return api->get_rx_pending_msg(dev, buf);
479}
480
492static inline int tcpc_set_rx_enable(const struct device *dev, bool enable)
493{
494 const struct tcpc_driver_api *api =
495 (const struct tcpc_driver_api *)dev->api;
496
497 if (api->set_rx_enable == NULL) {
498 return -ENOSYS;
499 }
500
501 return api->set_rx_enable(dev, enable);
502}
503
513static inline int tcpc_set_cc_polarity(const struct device *dev,
514 enum tc_cc_polarity polarity)
515{
516 const struct tcpc_driver_api *api =
517 (const struct tcpc_driver_api *)dev->api;
518
519 __ASSERT(api->set_cc_polarity != NULL,
520 "Callback pointer should not be NULL");
521
522 return api->set_cc_polarity(dev, polarity);
523}
524
535static inline int tcpc_transmit_data(const struct device *dev,
536 struct pd_msg *msg)
537{
538 const struct tcpc_driver_api *api =
539 (const struct tcpc_driver_api *)dev->api;
540
541 if (api->transmit_data == NULL) {
542 return -ENOSYS;
543 }
544
545 return api->transmit_data(dev, msg);
546}
547
557static inline int tcpc_dump_std_reg(const struct device *dev)
558{
559 const struct tcpc_driver_api *api =
560 (const struct tcpc_driver_api *)dev->api;
561
562 if (api->dump_std_reg == NULL) {
563 return -ENOSYS;
564 }
565
566 return api->dump_std_reg(dev);
567}
568
582static inline int tcpc_set_alert_handler_cb(const struct device *dev,
584 void *data)
585{
586 const struct tcpc_driver_api *api =
587 (const struct tcpc_driver_api *)dev->api;
588
589 __ASSERT(api->set_alert_handler_cb != NULL,
590 "Callback pointer should not be NULL");
591
592 return api->set_alert_handler_cb(dev, handler, data);
593}
594
606static inline int tcpc_get_status_register(const struct device *dev,
607 enum tcpc_status_reg reg,
608 int32_t *status)
609{
610 const struct tcpc_driver_api *api =
611 (const struct tcpc_driver_api *)dev->api;
612
613 if (api->get_status_register == NULL) {
614 return -ENOSYS;
615 }
616
617 return api->get_status_register(dev, reg, status);
618}
619
632static inline int tcpc_clear_status_register(const struct device *dev,
633 enum tcpc_status_reg reg,
634 uint32_t mask)
635{
636 const struct tcpc_driver_api *api =
637 (const struct tcpc_driver_api *)dev->api;
638
639 if (api->clear_status_register == NULL) {
640 return -ENOSYS;
641 }
642
643 return api->clear_status_register(dev, reg, mask);
644}
645
658static inline int tcpc_mask_status_register(const struct device *dev,
659 enum tcpc_status_reg reg,
660 uint32_t mask)
661{
662 const struct tcpc_driver_api *api =
663 (const struct tcpc_driver_api *)dev->api;
664
665 if (api->mask_status_register == NULL) {
666 return -ENOSYS;
667 }
668
669 return api->mask_status_register(dev, reg, mask);
670}
671
682static inline int tcpc_set_debug_accessory(const struct device *dev,
683 bool enable)
684{
685 const struct tcpc_driver_api *api =
686 (const struct tcpc_driver_api *)dev->api;
687
688 if (api->set_debug_accessory == NULL) {
689 return -ENOSYS;
690 }
691
692 return api->set_debug_accessory(dev, enable);
693}
694
704static inline int tcpc_set_debug_detach(const struct device *dev)
705{
706 const struct tcpc_driver_api *api =
707 (const struct tcpc_driver_api *)dev->api;
708
709 if (api->set_debug_detach == NULL) {
710 return -ENOSYS;
711 }
712
713 return api->set_debug_detach(dev);
714}
715
726static inline int tcpc_set_drp_toggle(const struct device *dev, bool enable)
727{
728 const struct tcpc_driver_api *api =
729 (const struct tcpc_driver_api *)dev->api;
730
731 if (api->set_drp_toggle == NULL) {
732 return -ENOSYS;
733 }
734
735 return api->set_drp_toggle(dev, enable);
736}
737
747static inline int tcpc_get_snk_ctrl(const struct device *dev)
748{
749 const struct tcpc_driver_api *api =
750 (const struct tcpc_driver_api *)dev->api;
751
752 if (api->get_snk_ctrl == NULL) {
753 return -ENOSYS;
754 }
755
756 return api->get_snk_ctrl(dev);
757}
758
768static inline int tcpc_get_src_ctrl(const struct device *dev)
769{
770 const struct tcpc_driver_api *api =
771 (const struct tcpc_driver_api *)dev->api;
772
773 if (api->get_src_ctrl == NULL) {
774 return -ENOSYS;
775 }
776
777 return api->get_src_ctrl(dev);
778}
779
791static inline int tcpc_set_bist_test_mode(const struct device *dev,
792 bool enable)
793{
794 const struct tcpc_driver_api *api =
795 (const struct tcpc_driver_api *)dev->api;
796
797 if (api->set_bist_test_mode == NULL) {
798 return -ENOSYS;
799 }
800
801 return api->set_bist_test_mode(dev, enable);
802}
803
814static inline int tcpc_get_chip_info(const struct device *dev,
815 struct tcpc_chip_info *chip_info)
816{
817 const struct tcpc_driver_api *api =
818 (const struct tcpc_driver_api *)dev->api;
819
820 if (api->get_chip_info == NULL) {
821 return -ENOSYS;
822 }
823
824 return api->get_chip_info(dev, chip_info);
825}
826
837static inline int tcpc_set_low_power_mode(const struct device *dev,
838 bool enable)
839{
840 const struct tcpc_driver_api *api =
841 (const struct tcpc_driver_api *)dev->api;
842
843 if (api->set_low_power_mode == NULL) {
844 return -ENOSYS;
845 }
846
847 return api->set_low_power_mode(dev, enable);
848}
849
860static inline int tcpc_sop_prime_enable(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->sop_prime_enable == NULL) {
867 return -ENOSYS;
868 }
869
870 return api->sop_prime_enable(dev, enable);
871}
872
877#ifdef __cplusplus
878}
879#endif
880
881#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
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:632
static int tcpc_set_debug_accessory(const struct device *dev, bool enable)
Manual control of TCPC DebugAccessory control.
Definition: usbc_tcpc.h:682
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:196
static int tcpc_get_src_ctrl(const struct device *dev)
Queries the current sourcing state of the TCPC.
Definition: usbc_tcpc.h:768
static int tcpc_get_snk_ctrl(const struct device *dev)
Queries the current sinking state of the TCPC.
Definition: usbc_tcpc.h:747
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:658
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:178
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:420
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:306
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:472
static int tcpc_vconn_discharge(const struct device *dev, bool enable)
Discharges VCONN.
Definition: usbc_tcpc.h:395
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:284
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:606
int(* tcpc_vconn_discharge_cb_t)(const struct device *dev, enum tc_cc_polarity pol, bool enable)
Definition: usbc_tcpc.h:123
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:513
void(* tcpc_alert_handler_cb_t)(const struct device *dev, void *data, enum tcpc_alert alert)
Definition: usbc_tcpc.h:125
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:260
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:169
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:582
int(* tcpc_vconn_control_cb_t)(const struct device *dev, enum tc_cc_polarity pol, bool enable)
Definition: usbc_tcpc.h:121
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:814
static int tcpc_transmit_data(const struct device *dev, struct pd_msg *msg)
Transmits a Power Delivery message.
Definition: usbc_tcpc.h:535
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:445
static int tcpc_set_rx_enable(const struct device *dev, bool enable)
Enables the reception of SOP* message types.
Definition: usbc_tcpc.h:492
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:223
static int tcpc_dump_std_reg(const struct device *dev)
Dump a set of TCPC registers.
Definition: usbc_tcpc.h:557
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:837
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:370
static int tcpc_set_drp_toggle(const struct device *dev, bool enable)
Enable TCPC auto dual role toggle.
Definition: usbc_tcpc.h:726
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:187
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:348
static int tcpc_set_debug_detach(const struct device *dev)
Detach from a debug connection.
Definition: usbc_tcpc.h:704
static int tcpc_sop_prime_enable(const struct device *dev, bool enable)
Enables the reception of SOP Prime messages.
Definition: usbc_tcpc.h:860
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:214
static int tcpc_init(const struct device *dev)
Initializes the TCPC.
Definition: usbc_tcpc.h:238
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:327
static int tcpc_set_bist_test_mode(const struct device *dev, bool enable)
Controls the BIST Mode of the TCPC.
Definition: usbc_tcpc.h:791
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:91
@ TCPC_VENDOR_DEFINED_STATUS
The Vendor Defined Status register.
Definition: usbc_tcpc.h:97
@ TCPC_EXTENDED_ALERT_STATUS
The Extended Alert Status register.
Definition: usbc_tcpc.h:95
@ TCPC_POWER_STATUS
The Power Status register.
Definition: usbc_tcpc.h:89
@ TCPC_CC_STATUS
The CC Status register.
Definition: usbc_tcpc.h:87
@ TCPC_EXTENDED_STATUS
The Extended Status register.
Definition: usbc_tcpc.h:93
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
__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:399
void * data
Address of the device instance private data.
Definition: device.h:409
const void * api
Address of the API structure exposed by the device instance.
Definition: device.h:405
Power Delivery message.
Definition: usbc_pd.h:1040
TCPC Chip Information.
Definition: usbc_tcpc.h:103
uint16_t product_id
Product Id.
Definition: usbc_tcpc.h:107
uint8_t min_req_fw_version_string[8]
Minimum Required firmware version string.
Definition: usbc_tcpc.h:115
uint64_t fw_version_number
Firmware version number.
Definition: usbc_tcpc.h:111
uint64_t min_req_fw_version_number
Minimum Required firmware version number.
Definition: usbc_tcpc.h:117
uint16_t device_id
Device Id.
Definition: usbc_tcpc.h:109
uint16_t vendor_id
Vendor Id.
Definition: usbc_tcpc.h:105
Definition: usbc_tcpc.h:128
int(* init)(const struct device *dev)
Definition: usbc_tcpc.h:129
int(* vconn_discharge)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:137
int(* set_debug_accessory)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:153
int(* get_rx_pending_msg)(const struct device *dev, struct pd_msg *msg)
Definition: usbc_tcpc.h:141
int(* dump_std_reg)(const struct device *dev)
Definition: usbc_tcpc.h:145
int(* select_rp_value)(const struct device *dev, enum tc_rp_value rp)
Definition: usbc_tcpc.h:132
void(* alert_handler_cb)(const struct device *dev, void *data, enum tcpc_alert alert)
Definition: usbc_tcpc.h:146
void(* set_vconn_discharge_cb)(const struct device *dev, tcpc_vconn_discharge_cb_t cb)
Definition: usbc_tcpc.h:135
int(* set_rx_enable)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:142
int(* set_cc)(const struct device *dev, enum tc_cc_pull pull)
Definition: usbc_tcpc.h:134
int(* set_roles)(const struct device *dev, enum tc_power_role power_role, enum tc_data_role data_role)
Definition: usbc_tcpc.h:139
int(* sop_prime_enable)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:160
int(* clear_status_register)(const struct device *dev, enum tcpc_status_reg reg, uint32_t mask)
Definition: usbc_tcpc.h:149
int(* get_snk_ctrl)(const struct device *dev)
Definition: usbc_tcpc.h:156
int(* get_src_ctrl)(const struct device *dev)
Definition: usbc_tcpc.h:157
int(* set_vconn)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:138
int(* set_cc_polarity)(const struct device *dev, enum tc_cc_polarity polarity)
Definition: usbc_tcpc.h:143
int(* get_chip_info)(const struct device *dev, struct tcpc_chip_info *chip_info)
Definition: usbc_tcpc.h:158
int(* get_status_register)(const struct device *dev, enum tcpc_status_reg reg, int32_t *status)
Definition: usbc_tcpc.h:147
int(* transmit_data)(const struct device *dev, struct pd_msg *msg)
Definition: usbc_tcpc.h:144
int(* set_low_power_mode)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:159
int(* mask_status_register)(const struct device *dev, enum tcpc_status_reg reg, uint32_t mask)
Definition: usbc_tcpc.h:151
int(* set_debug_detach)(const struct device *dev)
Definition: usbc_tcpc.h:154
int(* get_rp_value)(const struct device *dev, enum tc_rp_value *rp)
Definition: usbc_tcpc.h:133
void(* set_vconn_cb)(const struct device *dev, tcpc_vconn_control_cb_t vconn_cb)
Definition: usbc_tcpc.h:136
int(* set_alert_handler_cb)(const struct device *dev, tcpc_alert_handler_cb_t handler, void *data)
Definition: usbc_tcpc.h:162
int(* get_cc)(const struct device *dev, enum tc_cc_voltage_state *cc1, enum tc_cc_voltage_state *cc2)
Definition: usbc_tcpc.h:130
int(* set_drp_toggle)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:155
int(* set_bist_test_mode)(const struct device *dev, bool enable)
Definition: usbc_tcpc.h:161
USB-C Power Delivery API used for USB-C drivers.
USB Type-C Cable and Connector API used for USB-C drivers.