summaryrefslogtreecommitdiff
path: root/driver/tcpm
diff options
context:
space:
mode:
authorIvan Chen <yulunchen@google.com>2023-05-17 03:32:45 +0000
committerIvan Chen <yulunchen@google.com>2023-05-17 03:32:45 +0000
commitd7c9c6beb03ee5725232b9ac3bfe4825e1e227cb (patch)
tree3a0d6776c0e76e325d1b087cd51a850cb871358e /driver/tcpm
parent8641442366bd7c2c133e302a57f904dfac3c896b (diff)
parentb34dc2ae9022e2fbb57ae6477891ff32954c62fd (diff)
downloadchrome-ec-firmware-brya-14505.B-main.tar.gz
Merge remote-tracking branch cros/main into firmware-brya-14505.B-mainfirmware-brya-14505.B-main
Generated by: util/update_release_branch.py --board brya firmware-brya-14505.B-main Relevant changes: git log --oneline 8641442366..b34dc2ae90 -- board/brya board/brya util/getversion.sh BRANCH=None TEST=`make -j buildall` Force-Relevant-Builds: all Change-Id: I63149b4c1782b3ed57f2556755901c21f5f1e3e9 Signed-off-by: Ivan Chen <yulunchen@google.com>
Diffstat (limited to 'driver/tcpm')
-rw-r--r--driver/tcpm/anx7447.c2
-rw-r--r--driver/tcpm/anx74xx.c2
-rw-r--r--driver/tcpm/anx7688.c2
-rw-r--r--driver/tcpm/ps8xxx.c2
-rw-r--r--driver/tcpm/rt1718s.c28
-rw-r--r--driver/tcpm/rt1718s.h9
-rw-r--r--driver/tcpm/tcpci.c2
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, &reg);
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 */