diff options
-rw-r--r-- | common/usb_pd_protocol.c | 3 | ||||
-rw-r--r-- | common/usbc/usb_tc_drp_acc_trysrc_sm.c | 3 | ||||
-rw-r--r-- | driver/tcpm/tcpci.c | 6 | ||||
-rw-r--r-- | fuzz/usb_pd_fuzz.c | 8 | ||||
-rw-r--r-- | include/driver/tcpm/tcpm.h | 20 |
5 files changed, 29 insertions, 11 deletions
diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c index 9004246296..5d883760dd 100644 --- a/common/usb_pd_protocol.c +++ b/common/usb_pd_protocol.c @@ -438,8 +438,7 @@ static void set_vconn(int port, int enable) * * See b/72961003 and b/180973460 */ - if (IS_ENABLED(CONFIG_USB_PD_TCPC_VCONN)) - tcpm_set_vconn(port, enable); + tcpm_set_vconn(port, enable); if (IS_ENABLED(CONFIG_USBC_PPC_VCONN) && enable) ppc_set_vconn(port, 1); diff --git a/common/usbc/usb_tc_drp_acc_trysrc_sm.c b/common/usbc/usb_tc_drp_acc_trysrc_sm.c index 82f8f001b5..6d9e2a7e60 100644 --- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c +++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c @@ -1778,8 +1778,7 @@ static void set_vconn(int port, int enable) * * See b/72961003 and b/180973460 */ - if (IS_ENABLED(CONFIG_USB_PD_TCPC_VCONN)) - tcpm_set_vconn(port, enable); + tcpm_set_vconn(port, enable); if (IS_ENABLED(CONFIG_USBC_PPC_VCONN) && enable) ppc_set_vconn(port, 1); diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c index 36f4cf4085..24a24d45df 100644 --- a/driver/tcpm/tcpci.c +++ b/driver/tcpm/tcpci.c @@ -645,12 +645,6 @@ int tcpci_tcpm_set_vconn(int port, int enable) if (rv) return rv; - if (IS_ENABLED(CONFIG_USB_PD_DECODE_SOP)) { - rv = tcpci_tcpm_sop_prime_enable(port, enable); - if (rv) - return rv; - } - reg &= ~TCPC_REG_POWER_CTRL_VCONN(1); reg |= TCPC_REG_POWER_CTRL_VCONN(enable); return tcpc_write(port, TCPC_REG_POWER_CTRL, reg); diff --git a/fuzz/usb_pd_fuzz.c b/fuzz/usb_pd_fuzz.c index 89babff09b..205360015a 100644 --- a/fuzz/usb_pd_fuzz.c +++ b/fuzz/usb_pd_fuzz.c @@ -36,6 +36,11 @@ static int mock_tcpm_set_polarity(int port, enum tcpc_cc_polarity polarity) return EC_SUCCESS; } +static __maybe_unused int mock_tcpm_sop_prime_enable(int port, bool enable) +{ + return EC_SUCCESS; +} + static int mock_tcpm_set_vconn(int port, int enable) { return EC_SUCCESS; } static int mock_tcpm_set_msg_header(int port, int power_role, int data_role) { return EC_SUCCESS; } @@ -131,6 +136,9 @@ static const struct tcpm_drv mock_tcpm_drv = { .select_rp_value = &mock_tcpm_select_rp_value, .set_cc = &mock_tcpm_set_cc, .set_polarity = &mock_tcpm_set_polarity, +#ifdef CONFIG_USB_PD_DECODE_SOP + .sop_prime_enable = &mock_tcpm_sop_prime_enable, +#endif .set_vconn = &mock_tcpm_set_vconn, .set_msg_header = &mock_tcpm_set_msg_header, .set_rx_enable = &mock_tcpm_set_rx_enable, diff --git a/include/driver/tcpm/tcpm.h b/include/driver/tcpm/tcpm.h index 092b266784..3464ce04e1 100644 --- a/include/driver/tcpm/tcpm.h +++ b/include/driver/tcpm/tcpm.h @@ -204,7 +204,15 @@ static inline int tcpm_sop_prime_enable(int port, bool enable) static inline int tcpm_set_vconn(int port, int enable) { - return tcpc_config[port].drv->set_vconn(port, enable); +#ifdef CONFIG_USB_PD_TCPC_VCONN + int rv; + + rv = tcpc_config[port].drv->set_vconn(port, enable); + if (rv) + return rv; +#endif + + return tcpm_sop_prime_enable(port, enable); } static inline int tcpm_set_msg_header(int port, int power_role, int data_role) @@ -445,6 +453,16 @@ int tcpm_set_cc(int port, int pull); int tcpm_set_polarity(int port, enum tcpc_cc_polarity polarity); /** + * Enable SOP' message transmit/receive. + * + * @param port Type-C port number + * @param enable Enable/Disable SOP' and SOP'' messages + * + * @return EC_SUCCESS or error + */ +int tcpm_sop_prime_enable(int port, int enable); + +/** * Set Vconn. * * @param port Type-C port number |