8#ifndef __CROS_EC_USB_PD_TCPM_H
9#define __CROS_EC_USB_PD_TCPM_H
27 EC_ERROR_UNIMPLEMENTED = 2,
29 EC_ERROR_OVERFLOW = 3,
37 EC_ERROR_ACCESS_DENIED = 7,
39 EC_ERROR_NOT_POWERED = 8,
41 EC_ERROR_NOT_CALIBRATED = 9,
55 EC_ERROR_PARAM_COUNT = 20,
57 EC_ERROR_NOT_HANDLED = 21,
59 EC_ERROR_UNCHANGED = 22,
61 EC_ERROR_MEMORY_ALLOCATION = 23,
64 EC_ERROR_VBOOT_SIGNATURE = 0x1000,
65 EC_ERROR_VBOOT_SIG_MAGIC = 0x1001,
66 EC_ERROR_VBOOT_SIG_SIZE = 0x1002,
67 EC_ERROR_VBOOT_SIG_ALGORITHM = 0x1003,
68 EC_ERROR_VBOOT_HASH_ALGORITHM = 0x1004,
69 EC_ERROR_VBOOT_SIG_OFFSET = 0x1005,
70 EC_ERROR_VBOOT_DATA_SIZE = 0x1006,
73 EC_ERROR_VBOOT_KEY = 0x1100,
74 EC_ERROR_VBOOT_KEY_MAGIC = 0x1101,
75 EC_ERROR_VBOOT_KEY_SIZE = 0x1102,
78 EC_ERROR_VBOOT_DATA = 0x1200,
79 EC_ERROR_VBOOT_DATA_VERIFY = 0x1201,
82 EC_ERROR_INTERNAL_FIRST = 0x10000,
83 EC_ERROR_INTERNAL_LAST = 0x1FFFF
93 uint8_t fw_version_string[8];
94 uint64_t fw_version_number;
99#define PD_RETRY_COUNT 3
102#define PD_T_TCPC_TX_TIMEOUT (100 * MSEC_US)
111 enum tcpc_cc_voltage_status
113 TYPEC_CC_VOLT_OPEN = 0,
114 TYPEC_CC_VOLT_RA = 1,
115 TYPEC_CC_VOLT_RD = 2,
116 TYPEC_CC_VOLT_RP_DEF = 5,
117 TYPEC_CC_VOLT_RP_1_5 = 6,
118 TYPEC_CC_VOLT_RP_3_0 = 7,
137 TYPEC_RP_RESERVED = 3,
147 PD_CC_UFP_AUDIO_ACC = 2,
148 PD_CC_UFP_DEBUG_ACC = 3,
149 PD_CC_UFP_ATTACHED = 4,
152 PD_CC_DFP_ATTACHED = 5,
153 PD_CC_DFP_DEBUG_ACC = 6,
187 PD_ROLE_DISCONNECTED = 2,
192 PD_ROLE_VCONN_OFF = 0,
193 PD_ROLE_VCONN_SRC = 1,
200 enum tcpc_cc_polarity
214 POLARITY_CC1_DTS = 2,
215 POLARITY_CC2_DTS = 3,
229 static inline enum tcpc_cc_polarity polarity_rm_dts(
enum tcpc_cc_polarity polarity)
231 static_assert(POLARITY_COUNT == 4);
232 return (
enum tcpc_cc_polarity)(polarity & (1 << 0));
235 enum tcpm_transmit_type
238 TCPC_TX_SOP_PRIME = 1,
239 TCPC_TX_SOP_PRIME_PRIME = 2,
240 TCPC_TX_SOP_DEBUG_PRIME = 3,
241 TCPC_TX_SOP_DEBUG_PRIME_PRIME = 4,
242 TCPC_TX_HARD_RESET = 5,
243 TCPC_TX_CABLE_RESET = 6,
244 TCPC_TX_BIST_MODE_2 = 7
247 enum tcpc_transmit_complete
250 TCPC_TX_COMPLETE_SUCCESS = 0,
251 TCPC_TX_COMPLETE_DISCARDED = 1,
252 TCPC_TX_COMPLETE_FAILED = 2,
294 int (*
get_cc)(
enum tcpc_cc_voltage_status* cc1,
enum tcpc_cc_voltage_status* cc2);
342#ifdef CONFIG_USB_PD_DECODE_SOP
403 int (*
transmit)(
enum tcpm_transmit_type type, uint16_t header,
const uint32_t* data);
439#ifdef CONFIG_USB_PD_DUAL_ROLE_AUTO_TOGGLE
459#ifdef CONFIG_USBC_PPC
499#ifdef CONFIG_USB_PD_TCPC_LOW_POWER
512#ifdef CONFIG_USB_PD_FRS_TCPC
533#ifdef CONFIG_CMD_TCPC_DUMP
541 enum tcpc_alert_polarity
543 TCPC_ALERT_ACTIVE_LOW,
544 TCPC_ALERT_ACTIVE_HIGH,
552 enum tcpc_alert_polarity pol;
558 static inline int cc_is_rp(
enum tcpc_cc_voltage_status cc)
560 return (cc == TYPEC_CC_VOLT_RP_DEF) || (cc == TYPEC_CC_VOLT_RP_1_5) || (cc == TYPEC_CC_VOLT_RP_3_0);
566 static inline int cc_is_open(
enum tcpc_cc_voltage_status cc1,
enum tcpc_cc_voltage_status cc2)
568 return cc1 == TYPEC_CC_VOLT_OPEN && cc2 == TYPEC_CC_VOLT_OPEN;
574 static inline int cc_is_snk_dbg_acc(
enum tcpc_cc_voltage_status cc1,
enum tcpc_cc_voltage_status cc2)
576 return cc1 == TYPEC_CC_VOLT_RD && cc2 == TYPEC_CC_VOLT_RD;
579 static inline uint8_t board_get_src_dts_polarity()
592 static inline int cc_is_src_dbg_acc(
enum tcpc_cc_voltage_status cc1,
enum tcpc_cc_voltage_status cc2)
594 return cc_is_rp(cc1) && cc_is_rp(cc2);
600 static inline int cc_is_audio_acc(
enum tcpc_cc_voltage_status cc1,
enum tcpc_cc_voltage_status cc2)
602 return cc1 == TYPEC_CC_VOLT_RA && cc2 == TYPEC_CC_VOLT_RA;
608 static inline int cc_is_at_least_one_rd(
enum tcpc_cc_voltage_status cc1,
enum tcpc_cc_voltage_status cc2)
610 return cc1 == TYPEC_CC_VOLT_RD || cc2 == TYPEC_CC_VOLT_RD;
616 static inline int cc_is_only_one_rd(
enum tcpc_cc_voltage_status cc1,
enum tcpc_cc_voltage_status cc2)
618 return cc_is_at_least_one_rd(cc1, cc2) && cc1 != cc2;
627 uint16_t tcpc_get_alert_status(
void);
635 void board_set_tcpc_power_mode(
int mode) __attribute__((weak));
649 void tcpc_alert_clear();
658 int tcpc_run(
int evt);
667 int board_tcpc_post_init() __attribute__((weak));
Define assertions helpers.
Definition: usb_pd_tcpm.h:87
Definition: usb_pd_tcpm.h:548
Definition: usb_pd_tcpm.h:268
int(* select_rp_value)(int rp)
Definition: usb_pd_tcpm.h:322
int(* get_chip_info)(int live, struct ec_response_pd_chip_info **info)
Definition: usb_pd_tcpm.h:457
int(* set_vconn)(int enable)
Definition: usb_pd_tcpm.h:363
int(* set_rx_enable)(int enable)
Definition: usb_pd_tcpm.h:380
int(* get_vbus_level)(enum vbus_level level)
Definition: usb_pd_tcpm.h:303
int(* get_snk_ctrl)(int *sinking)
Definition: usb_pd_tcpm.h:468
int(* set_snk_ctrl)(int enable)
Definition: usb_pd_tcpm.h:477
void(* dump_registers)()
Definition: usb_pd_tcpm.h:537
int(* set_msg_header)(int power_role, int data_role)
Definition: usb_pd_tcpm.h:373
int(* init)()
Definition: usb_pd_tcpm.h:276
int(* debug_accessory)(int enable)
Definition: usb_pd_tcpm.h:430
int(* transmit)(enum tcpm_transmit_type type, uint16_t header, const uint32_t *data)
Definition: usb_pd_tcpm.h:403
int(* set_src_ctrl)(int enable)
Definition: usb_pd_tcpm.h:496
void(* tcpc_enable_auto_discharge_disconnect)(int enable)
Definition: usb_pd_tcpm.h:423
void(* tcpc_alert)()
Definition: usb_pd_tcpm.h:409
int(* sop_prime_enable)(int enable)
Definition: usb_pd_tcpm.h:353
void(* tcpc_discharge_vbus)(int enable)
Definition: usb_pd_tcpm.h:416
int(* get_cc)(enum tcpc_cc_voltage_status *cc1, enum tcpc_cc_voltage_status *cc2)
Definition: usb_pd_tcpm.h:294
int(* enter_low_power_mode)()
Definition: usb_pd_tcpm.h:509
int(* get_vbus_voltage)(int *vbus)
Definition: usb_pd_tcpm.h:313
int(* release)()
Definition: usb_pd_tcpm.h:284
int(* get_message)(uint32_t *payload, uint32_t *head)
Definition: usb_pd_tcpm.h:391
int(* set_cc)(int pull)
Definition: usb_pd_tcpm.h:331
int(* get_src_ctrl)(int *sourcing)
Definition: usb_pd_tcpm.h:487
int(* set_polarity)(enum tcpc_cc_polarity polarity)
Definition: usb_pd_tcpm.h:340
int(* debug_detach)()
Definition: usb_pd_tcpm.h:437
int(* drp_toggle)()
Definition: usb_pd_tcpm.h:446
int(* handle_fault)(int fault)
Definition: usb_pd_tcpm.h:531
int(* set_frs_enable)(int enable)
Definition: usb_pd_tcpm.h:520