summaryrefslogtreecommitdiff
path: root/driver/tcpm
diff options
context:
space:
mode:
Diffstat (limited to 'driver/tcpm')
-rw-r--r--driver/tcpm/nct38xx.c5
-rw-r--r--driver/tcpm/rt1718s.c6
-rw-r--r--driver/tcpm/rt1718s.h9
3 files changed, 13 insertions, 7 deletions
diff --git a/driver/tcpm/nct38xx.c b/driver/tcpm/nct38xx.c
index 120749fb62..3c4565cfd5 100644
--- a/driver/tcpm/nct38xx.c
+++ b/driver/tcpm/nct38xx.c
@@ -115,11 +115,6 @@ static int nct38xx_init(int port)
/* Set FRS direction for SNK detect, if FRS is enabled */
if (tcpm_tcpc_has_frs_control(port)) {
- reg = TCPC_REG_DEV_CAP_2_SNK_FR_SWAP;
- rv = tcpc_write(port, TCPC_REG_DEV_CAP_2, reg);
- if (rv)
- return rv;
-
reg = TCPC_REG_CONFIG_EXT_1_FR_SWAP_SNK_DIR;
rv = tcpc_write(port, TCPC_REG_CONFIG_EXT_1, reg);
if (rv)
diff --git a/driver/tcpm/rt1718s.c b/driver/tcpm/rt1718s.c
index 3d4303a8b7..e8ee85368a 100644
--- a/driver/tcpm/rt1718s.c
+++ b/driver/tcpm/rt1718s.c
@@ -7,6 +7,7 @@
* RT1718S TCPC Driver
*/
+#include "battery.h"
#include "console.h"
#include "driver/tcpm/rt1718s.h"
#include "driver/tcpm/tcpci.h"
@@ -261,6 +262,11 @@ static int rt1718s_init(int port)
{
static bool need_sw_reset = true;
+ /* Do not reset the TCPC when device is no battery connected, otherwise
+ * the SINK GPIO to the PPC may be reset, and cause a brown-out.
+ */
+ need_sw_reset &= battery_is_present() == BP_YES;
+
if (!system_jumped_late() && need_sw_reset) {
RETURN_ERROR(rt1718s_sw_reset(port));
need_sw_reset = false;
diff --git a/driver/tcpm/rt1718s.h b/driver/tcpm/rt1718s.h
index 76bbfd48a8..d14e2bd498 100644
--- a/driver/tcpm/rt1718s.h
+++ b/driver/tcpm/rt1718s.h
@@ -92,9 +92,14 @@
#define RT1718S_ENA_SRC_VBUS_CTRL 0xE1
#define RT1718S_FAULT_OC1_VBUS_CTRL 0xE3
#define RT1718S_GPIO1_VBUS_CTRL 0xEA
-#define RT1718S_GPIO1_VBUS_CTRL_FRS_RX_VBUS BIT(6)
+#define RT1718S_GPIO_VBUS_CTRL_FRS_RX_VBUS BIT(6)
+#define RT1718S_GPIO_VBUS_CTRL_FRS_TX_VBUS BIT(5)
+#define RT1718S_GPIO_VBUS_CTRL_ENA_SRC_HV_VBUS_GPIO BIT(4)
+#define RT1718S_GPIO_VBUS_CTRL_ENA_SRC_VBUS_GPIO BIT(3)
+#define RT1718S_GPIO_VBUS_CTRL_DIS_SRC_VBUS_GPIO BIT(2)
+#define RT1718S_GPIO_VBUS_CTRL_ENA_SNK_VBUS_GPIO BIT(1)
+#define RT1718S_GPIO_VBUS_CTRL_DIS_SNK_VBUS_GPIO BIT(0)
#define RT1718S_GPIO2_VBUS_CTRL 0xEB
-#define RT1718S_GPIO2_VBUS_CTRL_FRS_RX_VBUS BIT(6)
#define RT1718S_VBUS_CTRL_EN 0xEC
#define RT1718S_VBUS_CTRL_EN_GPIO2_VBUS_PATH_EN BIT(7)
#define RT1718S_VBUS_CTRL_EN_GPIO1_VBUS_PATH_EN BIT(6)