diff options
-rw-r--r-- | common/usbc/usb_tc_drp_acc_trysrc_sm.c | 17 | ||||
-rw-r--r-- | driver/tcpm/tcpci.c | 17 | ||||
-rw-r--r-- | driver/tcpm/tcpci.h | 3 | ||||
-rw-r--r-- | driver/tcpm/tcpm.h | 7 | ||||
-rw-r--r-- | include/usb_pd_tcpm.h | 4 |
5 files changed, 17 insertions, 31 deletions
diff --git a/common/usbc/usb_tc_drp_acc_trysrc_sm.c b/common/usbc/usb_tc_drp_acc_trysrc_sm.c index 51207a9acb..dea25931a2 100644 --- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c +++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c @@ -1739,7 +1739,7 @@ static void tc_unattached_snk_run(const int port) * Set RC.CC2=10b (Rd) */ tcpm_enable_auto_discharge_disconnect(port, 0); - tcpm_set_connection(port, TYPEC_CC_RD, 0, NULL); + tcpm_set_connection(port, TYPEC_CC_RD, 0); set_state_tc(port, TC_DRP_AUTO_TOGGLE); return; } @@ -2503,7 +2503,7 @@ static void tc_unattached_src_run(const int port) * Set RC.CC2=01b (Rp) */ tcpm_enable_auto_discharge_disconnect(port, 0); - tcpm_set_connection(port, TYPEC_CC_RP, 0, NULL); + tcpm_set_connection(port, TYPEC_CC_RP, 0); set_state_tc(port, TC_DRP_AUTO_TOGGLE); } #endif @@ -2872,7 +2872,6 @@ static __maybe_unused void check_drp_connection(const int port) { enum pd_drp_next_states next_state; enum tcpc_cc_voltage_status cc1, cc2; - int prev_drp; TC_CLR_FLAG(port, TC_FLAGS_CHECK_CONNECTION); @@ -2896,9 +2895,8 @@ static __maybe_unused void check_drp_connection(const int port) * Set RC.DRP=0 * Set TCPC_CONTROl.PlugOrientation */ - tcpm_set_connection(port, TYPEC_CC_RD, 1, &prev_drp); - if (prev_drp) - tcpm_enable_auto_discharge_disconnect(port, 1); + tcpm_set_connection(port, TYPEC_CC_RD, 1); + tcpm_enable_auto_discharge_disconnect(port, 1); set_state_tc(port, TC_UNATTACHED_SNK); break; case DRP_TC_UNATTACHED_SRC: @@ -2908,9 +2906,8 @@ static __maybe_unused void check_drp_connection(const int port) * Set RC.DRP=0 * Set TCPC_CONTROl.PlugOrientation */ - tcpm_set_connection(port, TYPEC_CC_RP, 1, &prev_drp); - if (prev_drp) - tcpm_enable_auto_discharge_disconnect(port, 1); + tcpm_set_connection(port, TYPEC_CC_RP, 1); + tcpm_enable_auto_discharge_disconnect(port, 1); set_state_tc(port, TC_UNATTACHED_SRC); break; @@ -2927,7 +2924,7 @@ static __maybe_unused void check_drp_connection(const int port) (PD_ROLE_DEFAULT(port) == PD_ROLE_SOURCE) ? TYPEC_CC_RP : TYPEC_CC_RD, - 0, NULL); + 0); set_state_tc(port, TC_DRP_AUTO_TOGGLE); break; #endif diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c index d45b1323c4..4cc686f92c 100644 --- a/driver/tcpm/tcpci.c +++ b/driver/tcpm/tcpci.c @@ -409,21 +409,11 @@ int tcpci_tcpc_drp_toggle(int port) int tcpci_tcpc_set_connection(int port, enum tcpc_cc_pull pull, - int connect, - int *prev_drp) + int connect) { int rv; int role; - /* Get the ROLE CONTROL value */ - rv = tcpc_read(port, TCPC_REG_ROLE_CTRL, &role); - if (rv) - return rv; - - /* if optional prev_drp is present then save the current DRP state */ - if (prev_drp) - *prev_drp = !!(role & TCPC_REG_ROLE_CTRL_DRP_MASK); - /* * Disconnecting will set the following and then return * Set RC.DRP=1b (DRP) @@ -436,6 +426,11 @@ int tcpci_tcpc_set_connection(int port, return EC_SUCCESS; } + /* Get the ROLE CONTROL value */ + rv = tcpc_read(port, TCPC_REG_ROLE_CTRL, &role); + if (rv) + return rv; + if (role & TCPC_REG_ROLE_CTRL_DRP_MASK) { enum tcpc_cc_pull cc1_pull, cc2_pull; enum tcpc_cc_voltage_status cc1, cc2; diff --git a/driver/tcpm/tcpci.h b/driver/tcpm/tcpci.h index 9c9fa111e9..d400c4dee2 100644 --- a/driver/tcpm/tcpci.h +++ b/driver/tcpm/tcpci.h @@ -226,8 +226,7 @@ int tcpci_tcpm_release(int port); #ifdef CONFIG_USB_PD_DUAL_ROLE_AUTO_TOGGLE int tcpci_set_role_ctrl(int port, int toggle, int rp, int pull); int tcpci_tcpc_drp_toggle(int port); -int tcpci_tcpc_set_connection(int port, enum tcpc_cc_pull pull, - int connect, int *prev_drp); +int tcpci_tcpc_set_connection(int port, enum tcpc_cc_pull pull, int connect); #endif #ifdef CONFIG_USB_PD_TCPC_LOW_POWER int tcpci_enter_low_power_mode(int port); diff --git a/driver/tcpm/tcpm.h b/driver/tcpm/tcpm.h index c62235eec9..f97bb39b9c 100644 --- a/driver/tcpm/tcpm.h +++ b/driver/tcpm/tcpm.h @@ -180,16 +180,13 @@ static inline int tcpm_set_cc(int port, int pull) static inline int tcpm_set_connection(int port, enum tcpc_cc_pull pull, - int connect, - int *prev_drp) + int connect) { const struct tcpm_drv *tcpc = tcpc_config[port].drv; if (IS_ENABLED(CONFIG_USB_PD_DUAL_ROLE_AUTO_TOGGLE) && tcpc->set_connection) - return tcpc->set_connection(port, pull, connect, prev_drp); - else if (prev_drp) - *prev_drp = 0; + return tcpc->set_connection(port, pull, connect); return EC_SUCCESS; } diff --git a/include/usb_pd_tcpm.h b/include/usb_pd_tcpm.h index 5b160b46b5..60a50f0f2e 100644 --- a/include/usb_pd_tcpm.h +++ b/include/usb_pd_tcpm.h @@ -341,14 +341,12 @@ struct tcpm_drv { * @param port Type-C port number * @param pull enum tcpc_cc_pull of CC lines * @param connect Connect(1) or Disconnect(0) - * @param prev_drp optional output of previous DRP value * * @return EC_SUCCESS or error */ int (*set_connection)(int port, enum tcpc_cc_pull pull, - int connect, - int *prev_drp); + int connect); #ifdef CONFIG_USB_PD_DUAL_ROLE_AUTO_TOGGLE /** |