diff options
Diffstat (limited to 'driver/tcpm')
-rw-r--r-- | driver/tcpm/anx7447.c | 2 | ||||
-rw-r--r-- | driver/tcpm/anx74xx.c | 2 | ||||
-rw-r--r-- | driver/tcpm/anx7688.c | 2 | ||||
-rw-r--r-- | driver/tcpm/ps8xxx.c | 2 | ||||
-rw-r--r-- | driver/tcpm/rt1718s.c | 28 | ||||
-rw-r--r-- | driver/tcpm/rt1718s.h | 9 | ||||
-rw-r--r-- | driver/tcpm/tcpci.c | 2 |
7 files changed, 39 insertions, 8 deletions
diff --git a/driver/tcpm/anx7447.c b/driver/tcpm/anx7447.c index 79f08ee655..4760596eae 100644 --- a/driver/tcpm/anx7447.c +++ b/driver/tcpm/anx7447.c @@ -664,7 +664,7 @@ static int anx7447_mux_set(const struct usb_mux *me, mux_state_t mux_state, *ack_required = false; /* This driver treats safe mode as none */ - if (mux_state == USB_PD_MUX_SAFE_MODE) + if (mux_state & USB_PD_MUX_SAFE_MODE) mux_state = USB_PD_MUX_NONE; cc_direction = mux_state & USB_PD_MUX_POLARITY_INVERTED; diff --git a/driver/tcpm/anx74xx.c b/driver/tcpm/anx74xx.c index e6ad23c25a..9e3a975754 100644 --- a/driver/tcpm/anx74xx.c +++ b/driver/tcpm/anx74xx.c @@ -400,7 +400,7 @@ static int anx74xx_tcpm_mux_set(const struct usb_mux *me, mux_state_t mux_state, *ack_required = false; /* This driver treats safe mode as none */ - if (mux_state == USB_PD_MUX_SAFE_MODE) + if (mux_state & USB_PD_MUX_SAFE_MODE) mux_state = USB_PD_MUX_NONE; if (!(mux_state & ~USB_PD_MUX_POLARITY_INVERTED)) { diff --git a/driver/tcpm/anx7688.c b/driver/tcpm/anx7688.c index 6ad8a16ff4..277edd0217 100644 --- a/driver/tcpm/anx7688.c +++ b/driver/tcpm/anx7688.c @@ -154,7 +154,7 @@ static int anx7688_mux_set(const struct usb_mux *me, mux_state_t mux_state, *ack_required = false; /* This driver treats safe mode as none */ - if (mux_state == USB_PD_MUX_SAFE_MODE) + if (mux_state & USB_PD_MUX_SAFE_MODE) mux_state = USB_PD_MUX_NONE; rv = mux_read(me, TCPC_REG_CONFIG_STD_OUTPUT, ®); diff --git a/driver/tcpm/ps8xxx.c b/driver/tcpm/ps8xxx.c index 9eb3b40b2b..0818b328bf 100644 --- a/driver/tcpm/ps8xxx.c +++ b/driver/tcpm/ps8xxx.c @@ -1118,7 +1118,7 @@ static int ps8xxx_mux_set(const struct usb_mux *me, mux_state_t mux_state, bool *ack_required) { /* This driver treats safe mode as none */ - if (mux_state == USB_PD_MUX_SAFE_MODE) + if (mux_state & USB_PD_MUX_SAFE_MODE) mux_state = USB_PD_MUX_NONE; if (product_id[me->usb_port] == PS8751_PRODUCT_ID && diff --git a/driver/tcpm/rt1718s.c b/driver/tcpm/rt1718s.c index e8ee85368a..a1cdf06c9a 100644 --- a/driver/tcpm/rt1718s.c +++ b/driver/tcpm/rt1718s.c @@ -551,15 +551,37 @@ __overridable int board_rt1718s_set_snk_enable(int port, int enable) return EC_SUCCESS; } +__overridable int board_rt1718s_set_src_enable(int port, int enable) +{ + return EC_SUCCESS; +} + static int rt1718s_tcpm_set_snk_ctrl(int port, int enable) { int rv; - rv = board_rt1718s_set_snk_enable(port, enable); + /* The order matters. Board hook should run after the tcpm call to + * prevent the GPIO config auto-reload overwriting a wrong value. + */ + rv = tcpci_tcpm_set_snk_ctrl(port, enable); + if (rv) + return rv; + + return board_rt1718s_set_snk_enable(port, enable); +} + +static int rt1718s_tcpm_set_src_ctrl(int port, int enable) +{ + int rv; + + /* The order matters. Board hook should run after the tcpm call to + * prevent the GPIO config auto-reload overwriting a wrong value. + */ + rv = tcpci_tcpm_set_src_ctrl(port, enable); if (rv) return rv; - return tcpci_tcpm_set_snk_ctrl(port, enable); + return board_rt1718s_set_src_enable(port, enable); } static void rt1718s_alert(int port) @@ -806,7 +828,7 @@ const struct tcpm_drv rt1718s_tcpm_drv = { #endif .get_chip_info = &tcpci_get_chip_info, .set_snk_ctrl = &rt1718s_tcpm_set_snk_ctrl, - .set_src_ctrl = &tcpci_tcpm_set_src_ctrl, + .set_src_ctrl = &rt1718s_tcpm_set_src_ctrl, #ifdef CONFIG_USB_PD_TCPC_LOW_POWER .enter_low_power_mode = &rt1718s_enter_low_power_mode, #endif diff --git a/driver/tcpm/rt1718s.h b/driver/tcpm/rt1718s.h index d14e2bd498..d036c6901a 100644 --- a/driver/tcpm/rt1718s.h +++ b/driver/tcpm/rt1718s.h @@ -274,4 +274,13 @@ int rt1718s_sw_reset(int port); * @return EC_SUCCESS if success, EC_ERROR_UNKNOWN otherwise. */ __override_proto int board_rt1718s_set_snk_enable(int port, int enable); + +/** + * Board hook for rt1718s_set_src_enable + * + * @param port USB-C port + * @param enable enable/disable source + * @return EC_SUCCESS if success, EC_ERROR_UNKNOWN otherwise. + */ +__override_proto int board_rt1718s_set_src_enable(int port, int enable); #endif /* __CROS_EC_USB_PD_TCPM_MT6370_H */ diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c index b78cfbb74c..ffadcab8c0 100644 --- a/driver/tcpm/tcpci.c +++ b/driver/tcpm/tcpci.c @@ -1635,7 +1635,7 @@ int tcpci_tcpm_mux_set(const struct usb_mux *me, mux_state_t mux_state, *ack_required = false; /* This driver treats safe mode as none */ - if (mux_state == USB_PD_MUX_SAFE_MODE) + if (mux_state & USB_PD_MUX_SAFE_MODE) mux_state = USB_PD_MUX_NONE; /* Parameter is port only */ |