summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Brockus <dbrockus@chromium.org>2019-10-02 09:43:25 -0600
committerCommit Bot <commit-bot@chromium.org>2019-10-09 18:53:24 +0000
commit47da5b783fae3f8720974199d0c4f920023ebe59 (patch)
tree0111952e4a3fd9568112a9cd19c563f79489ed55
parentd5787acbc5069839a226cb5b6d5c3f2ab95c7a3a (diff)
downloadchrome-ec-47da5b783fae3f8720974199d0c4f920023ebe59.tar.gz
trembyle: board specific fast switch enable/disable
Added board specific tcpc FRS enable/disable to work around timing issues that we found with trembyle. Also added some of the bringup debug settings BUG=b:138599218 BRANCH=none TEST=make buildall -j Change-Id: Ia16db22a9c2b3a47a4273ea1350a5ea58b78f5aa Signed-off-by: Denis Brockus <dbrockus@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1847174 Commit-Queue: Edward Hill <ecgh@chromium.org> Reviewed-by: Edward Hill <ecgh@chromium.org>
-rw-r--r--baseboard/zork/baseboard.c16
-rw-r--r--baseboard/zork/baseboard.h5
-rw-r--r--board/trembyle/gpio.inc2
-rw-r--r--driver/ppc/aoz1380.h6
-rw-r--r--driver/tcpm/tcpci.c2
5 files changed, 28 insertions, 3 deletions
diff --git a/baseboard/zork/baseboard.c b/baseboard/zork/baseboard.c
index ec00623a88..0bf187ee90 100644
--- a/baseboard/zork/baseboard.c
+++ b/baseboard/zork/baseboard.c
@@ -362,6 +362,22 @@ int board_aoz1380_set_vbus_source_current_limit(int port,
return rv;
}
+int board_tcpc_fast_role_swap_enable(int port, int enable)
+{
+ int rv = EC_SUCCESS;
+
+ /* Use the TCPC to enable fast switch when FRS included */
+ if (port == USBC_PORT_C0) {
+ rv = ioex_set_level(IOEX_USB_C0_TCPC_FASTSW_CTL_EN,
+ !!enable);
+ } else {
+ rv = ioex_set_level(IOEX_USB_C1_TCPC_FASTSW_CTL_EN,
+ !!enable);
+ }
+
+ return rv;
+}
+
static void reset_pd_port(int port, enum gpio_signal reset_gpio_l,
int hold_delay, int finish_delay)
{
diff --git a/baseboard/zork/baseboard.h b/baseboard/zork/baseboard.h
index 2145a86be4..9f8ab6b8d4 100644
--- a/baseboard/zork/baseboard.h
+++ b/baseboard/zork/baseboard.h
@@ -111,6 +111,7 @@
#define CONFIG_USB_SM_FRAMEWORK
#define CONFIG_USB_TYPEC_SM
#define CONFIG_USB_TYPEC_DRP_ACC_TRYSRC
+#define CONFIG_USB_TYPEC_PD_FAST_ROLE_SWAP
#endif
#define CONFIG_CMD_PD_CONTROL
@@ -284,6 +285,10 @@ void ppc_interrupt(enum gpio_signal signal);
int board_is_convertible(void);
void board_update_sensor_config_from_sku(void);
+#ifdef CONFIG_USB_TYPEC_PD_FAST_ROLE_SWAP
+int board_tcpc_fast_role_swap_enable(int port, int enable);
+#endif
+
#endif /* !__ASSEMBLER__ */
#endif /* __CROS_EC_BASEBOARD_H */
diff --git a/board/trembyle/gpio.inc b/board/trembyle/gpio.inc
index 2d496afe7e..97b946b4ba 100644
--- a/board/trembyle/gpio.inc
+++ b/board/trembyle/gpio.inc
@@ -51,12 +51,14 @@ GPIO(LED_FULL_L, PIN(6, 0), GPIO_OUT_HIGH)
GPIO(LED_CHRG_L, PIN(C, 0), GPIO_OUT_HIGH)
IOEX(USB_C0_FAULT_ODL, EXPIN(USBC_PORT_C0, 0, 3), GPIO_ODR_HIGH) /* C0 Fault to SOC */
+IOEX(USB_C0_TCPC_FASTSW_CTL_EN, EXPIN(USBC_PORT_C0, 0, 4), GPIO_OUT_LOW) /* C0 FastSwitch Ctrl */
IOEX(USB_C1_FAULT_ODL, EXPIN(USBC_PORT_C0, 1, 0), GPIO_ODR_HIGH) /* C1 Fault to SOC */
IOEX(USB_C0_PPC_ILIM_3A_EN, EXPIN(USBC_PORT_C0, 1, 1), GPIO_OUT_LOW) /* C0 3A Current Limit Enable */
IOEX(KB_BL_EN, EXPIN(USBC_PORT_C0, 1, 3), GPIO_OUT_LOW) /* KB Backlight Enable */
IOEX(EN_USB_A0_5V, EXPIN(USBC_PORT_C0, 1, 5), GPIO_OUT_LOW) /* A0 5V Source Enable */
IOEX(USB_A0_CHARGE_EN_L, EXPIN(USBC_PORT_C0, 1, 6), GPIO_OUT_HIGH) /* A0 5V High Current Enable */
+IOEX(USB_C1_TCPC_FASTSW_CTL_EN, EXPIN(USBC_PORT_C1, 0, 4), GPIO_OUT_LOW) /* C1 FastSwitch Ctrl */
IOEX(EN_USB_A1_5V_DB, EXPIN(USBC_PORT_C1, 1, 6), GPIO_OUT_LOW) /* A1 5V Source Enable */
IOEX(USB_A1_CHARGE_EN_DB_L, EXPIN(USBC_PORT_C1, 1, 7), GPIO_OUT_HIGH) /* A1 5V High Current Enable */
diff --git a/driver/ppc/aoz1380.h b/driver/ppc/aoz1380.h
index 672be8eb75..94f2b804b7 100644
--- a/driver/ppc/aoz1380.h
+++ b/driver/ppc/aoz1380.h
@@ -16,6 +16,9 @@
#include "usb_pd_tcpm.h"
+struct ppc_drv;
+extern const struct ppc_drv aoz1380_drv;
+
/**
* AOZ1380 Set VBus Source Current Limit.
*
@@ -31,9 +34,6 @@ int board_aoz1380_set_vbus_source_current_limit(int port,
enum tcpc_rp_value rp);
-struct ppc_drv;
-extern const struct ppc_drv aoz1380_drv;
-
/**
* Interrupt Handler for the AOZ1380.
*
diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c
index 257649fc66..9ceb4613e2 100644
--- a/driver/tcpm/tcpci.c
+++ b/driver/tcpm/tcpci.c
@@ -402,6 +402,8 @@ void tcpci_tcpc_fast_role_swap_enable(int port, int enable)
reg &= ~TCPC_REG_POWER_CTRL_FRS_ENABLE;
tcpc_write(port, TCPC_REG_POWER_CTRL, reg);
+
+ board_tcpc_fast_role_swap_enable(port, enable);
}
#endif