summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Hurst <shurst@google.com>2020-05-04 11:49:39 -0700
committerCommit Bot <commit-bot@chromium.org>2020-05-09 02:42:22 +0000
commit4b38876725070d564ea784f08aa1f1c816230849 (patch)
tree6b6f78ea8251b1706ad6fe1800530e04cbe76b23
parentdd5c0437677814b24f24628da23725ea731db03c (diff)
downloadchrome-ec-4b38876725070d564ea784f08aa1f1c816230849.tar.gz
TCPMv2: Guard all VCONN function with CONFIG_USBC_VCONN macro
Guard all VCONN related function that are ued in the Policy Engine with the CONFIG_USBC_VCONN macro. BUG=b:155656668 BRANCH=none TEST=make -j buildall Signed-off-by: Sam Hurst <shurst@google.com> Change-Id: Ib46622126a577950d46b15af649c260a0790634a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2180426 Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Denis Brockus <dbrockus@chromium.org>
-rw-r--r--common/usbc/usb_pe_drp_sm.c54
-rw-r--r--common/usbc/usb_tc_drp_acc_trysrc_sm.c7
-rw-r--r--include/usb_tc_sm.h3
3 files changed, 45 insertions, 19 deletions
diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c
index 1f3528788f..6e3e76764c 100644
--- a/common/usbc/usb_pe_drp_sm.c
+++ b/common/usbc/usb_pe_drp_sm.c
@@ -340,6 +340,21 @@ static const char * const pe_state_names[] = {
extern const char **pe_state_names;
#endif
+#ifndef CONFIG_USBC_VCONN
+enum usb_pe_state PE_VCS_EVALUATE_SWAP_NOT_SUPPORTED;
+enum usb_pe_state PE_VCS_SEND_SWAP_NOT_SUPPORTED;
+enum usb_pe_state PE_VCS_WAIT_FOR_VCONN_SWAP_NOT_SUPPORTED;
+enum usb_pe_state PE_VCS_TURN_ON_VCONN_SWAP_NOT_SUPPORTED;
+enum usb_pe_state PE_VCS_TURN_OFF_VCONN_SWAP_NOT_SUPPORTED;
+enum usb_pe_state PE_VCS_SEND_PS_RDY_SWAP_NOT_SUPPORTED;
+#define PE_VCS_EVALUATE_SWAP PE_VCS_EVALUATE_SWAP_NOT_SUPPORTED
+#define PE_VCS_SEND_SWAP PE_VCS_SEND_SWAP_NOT_SUPPORTED
+#define PE_VCS_WAIT_FOR_VCONN_SWAP PE_VCS_WAIT_FOR_VCONN_SWAP_NOT_SUPPORTED
+#define PE_VCS_TURN_ON_VCONN_SWAP PE_VCS_TURN_ON_VCONN_SWAP_NOT_SUPPORTED
+#define PE_VCS_TURN_OFF_VCONN_SWAP PE_VCS_TURN_OFF_VCONN_SWAP_NOT_SUPPORTED
+#define PE_VCS_SEND_PS_RDY_SWAP PE_VCS_SEND_PS_RDY_SWAP_NOT_SUPPORTED
+#endif /* CONFIG_USBC_VCONN */
+
/*
* NOTE:
* DO_PORT_DISCOVERY_START is not actually a vdm command. It is used
@@ -775,15 +790,20 @@ void pe_invalidate_explicit_contract(int port)
*/
static bool pe_can_send_sop_prime(int port)
{
- if (PE_CHK_FLAG(port, PE_FLAGS_EXPLICIT_CONTRACT))
- if (prl_get_rev(port, TCPC_TX_SOP) == PD_REV20)
+ if (IS_ENABLED(CONFIG_USBC_VCONN)) {
+ if (PE_CHK_FLAG(port, PE_FLAGS_EXPLICIT_CONTRACT)) {
+ if (prl_get_rev(port, TCPC_TX_SOP) == PD_REV20)
+ return tc_is_vconn_src(port) &&
+ pe[port].data_role == PD_ROLE_DFP;
+ else
+ return tc_is_vconn_src(port);
+ } else {
return tc_is_vconn_src(port) &&
- pe[port].data_role == PD_ROLE_DFP;
- else
- return tc_is_vconn_src(port);
- else
- return tc_is_vconn_src(port) &&
- pe[port].power_role == PD_ROLE_SOURCE;
+ pe[port].power_role == PD_ROLE_SOURCE;
+ }
+ } else {
+ return false;
+ }
}
/*
@@ -851,14 +871,16 @@ void pe_report_error(int port, enum pe_error e, enum tcpm_transmit_type type)
*
* TODO(b/150774779): TCPMv2: Improve pe_error documentation
*/
- if (get_state_pe(port) == PE_SRC_SEND_CAPABILITIES ||
+ if ((get_state_pe(port) == PE_SRC_SEND_CAPABILITIES ||
get_state_pe(port) == PE_SRC_TRANSITION_SUPPLY ||
get_state_pe(port) == PE_PRS_SRC_SNK_WAIT_SOURCE_ON ||
get_state_pe(port) == PE_SRC_DISABLED ||
get_state_pe(port) == PE_SRC_DISCOVERY ||
get_state_pe(port) == PE_VDM_REQUEST ||
- get_state_pe(port) == PE_VDM_IDENTITY_REQUEST_CBL ||
- get_state_pe(port) == PE_VCS_SEND_PS_RDY_SWAP) {
+ get_state_pe(port) == PE_VDM_IDENTITY_REQUEST_CBL) ||
+ (IS_ENABLED(CONFIG_USBC_VCONN) &&
+ get_state_pe(port) == PE_VCS_SEND_PS_RDY_SWAP)
+ ) {
PE_SET_FLAG(port, PE_FLAGS_PROTOCOL_ERROR);
return;
}
@@ -987,7 +1009,8 @@ test_export_static enum usb_pe_state get_state_pe(const int port)
static bool common_src_snk_dpm_requests(int port)
{
- if (PE_CHK_DPM_REQUEST(port, DPM_REQUEST_VCONN_SWAP)) {
+ if (IS_ENABLED(CONFIG_USBC_VCONN) &&
+ PE_CHK_DPM_REQUEST(port, DPM_REQUEST_VCONN_SWAP)) {
PE_CLR_DPM_REQUEST(port, DPM_REQUEST_VCONN_SWAP);
set_state_pe(port, PE_VCS_SEND_SWAP);
return true;
@@ -1230,7 +1253,8 @@ static bool pe_attempt_port_discovery(int port)
}
}
- if (PE_CHK_FLAG(port, PE_FLAGS_VCONN_SWAP_TO_ON)) {
+ if (IS_ENABLED(CONFIG_USBC_VCONN) &&
+ PE_CHK_FLAG(port, PE_FLAGS_VCONN_SWAP_TO_ON)) {
PE_CLR_FLAG(port, PE_FLAGS_VCONN_SWAP_TO_ON);
if (!tc_is_vconn_src(port)) {
@@ -4792,6 +4816,7 @@ static void pe_vdm_response_exit(int port)
PE_CLR_FLAG(port, PE_FLAGS_INTERRUPTIBLE_AMS);
}
+#ifdef CONFIG_USBC_VCONN
/*
* PE_VCS_Evaluate_Swap
*/
@@ -5141,6 +5166,7 @@ static void pe_vcs_send_ps_rdy_swap_run(int port)
}
}
}
+#endif /* CONFIG_USBC_VCONN */
/*
* PE_DR_SNK_Get_Sink_Cap
@@ -5472,6 +5498,7 @@ static const struct usb_state pe_states[] = {
.entry = pe_frs_snk_src_start_ams_entry,
.parent = &pe_states[PE_PRS_FRS_SHARED],
},
+#ifdef CONFIG_USBC_VCONN
[PE_VCS_EVALUATE_SWAP] = {
.entry = pe_vcs_evaluate_swap_entry,
.run = pe_vcs_evaluate_swap_run,
@@ -5496,6 +5523,7 @@ static const struct usb_state pe_states[] = {
.entry = pe_vcs_send_ps_rdy_swap_entry,
.run = pe_vcs_send_ps_rdy_swap_run,
},
+#endif /* CONFIG_USBC_VCONN */
[PE_DO_PORT_DISCOVERY] = {
.entry = pe_do_port_discovery_entry,
.run = pe_do_port_discovery_run,
diff --git a/common/usbc/usb_tc_drp_acc_trysrc_sm.c b/common/usbc/usb_tc_drp_acc_trysrc_sm.c
index 88b42e0343..dde26301a9 100644
--- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c
+++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c
@@ -1412,12 +1412,13 @@ void pd_request_vconn_swap(int port)
}
#endif
-#ifdef CONFIG_USBC_VCONN
int tc_is_vconn_src(int port)
{
- return TC_CHK_FLAG(port, TC_FLAGS_VCONN_ON);
+ if (IS_ENABLED(CONFIG_USBC_VCONN))
+ return TC_CHK_FLAG(port, TC_FLAGS_VCONN_ON);
+ else
+ return 0;
}
-#endif
static __maybe_unused int reset_device_and_notify(int port)
{
diff --git a/include/usb_tc_sm.h b/include/usb_tc_sm.h
index 7f5ae8bde7..b6ed917d4d 100644
--- a/include/usb_tc_sm.h
+++ b/include/usb_tc_sm.h
@@ -232,7 +232,6 @@ int tc_src_power_on(int port);
*/
int tc_check_vconn_swap(int port);
-#ifdef CONFIG_USBC_VCONN
/**
* Checks if VCONN is being sourced.
*
@@ -258,8 +257,6 @@ void pd_request_vconn_swap_on(int port);
* @param port USB_C port number
*/
void pd_request_vconn_swap_off(int port);
-#endif
-
/**
* Returns the polarity of a Sink.