diff options
author | Denis Brockus <dbrockus@chromium.org> | 2019-10-02 09:43:25 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-10-09 18:53:24 +0000 |
commit | 47da5b783fae3f8720974199d0c4f920023ebe59 (patch) | |
tree | 0111952e4a3fd9568112a9cd19c563f79489ed55 | |
parent | d5787acbc5069839a226cb5b6d5c3f2ab95c7a3a (diff) | |
download | chrome-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.c | 16 | ||||
-rw-r--r-- | baseboard/zork/baseboard.h | 5 | ||||
-rw-r--r-- | board/trembyle/gpio.inc | 2 | ||||
-rw-r--r-- | driver/ppc/aoz1380.h | 6 | ||||
-rw-r--r-- | driver/tcpm/tcpci.c | 2 |
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 |