diff options
author | Eric Herrmann <eherrmann@chromium.org> | 2021-02-05 00:18:23 +0000 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-03-10 21:59:18 +0000 |
commit | 5e8fa55cd5705a0d76f41c51d05fc175512c226a (patch) | |
tree | b4c4803957acb979a70b806e2dfd4e7795a02016 /board/voxel | |
parent | 3b2d03c081a583a639bb17e73250f86b1e5732f0 (diff) | |
download | chrome-ec-5e8fa55cd5705a0d76f41c51d05fc175512c226a.tar.gz |
Voxel: Enable FRS
Set flag and configure GPIOs to enable Fast Role Swap on Voxel. Clear
the GPIOs passed to the PPC driver for boards which don't support FRS
due to older PPC versions.
BUG=b:148144711
TEST=With an FRS device with power passed through, remove the power cord
and check that the device doesn't re-enumerate. Test with 5V and 20V
wall adapters
BRANCH=None
Signed-off-by: Eric Herrmann <eherrmann@chromium.org>
Change-Id: Ib60478d4f840967b1f08d0e621b74350c8f0658c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2733593
Reviewed-by: Keith Short <keithshort@chromium.org>
Reviewed-by: Abe Levkoy <alevkoy@chromium.org>
Diffstat (limited to 'board/voxel')
-rw-r--r-- | board/voxel/board.c | 24 | ||||
-rw-r--r-- | board/voxel/board.h | 1 |
2 files changed, 20 insertions, 5 deletions
diff --git a/board/voxel/board.c b/board/voxel/board.c index ef392b5afd..7b47ee0642 100644 --- a/board/voxel/board.c +++ b/board/voxel/board.c @@ -311,11 +311,6 @@ void board_reset_pd_mcu(void) */ } -__override void board_cbi_init(void) -{ - setup_board_tcpc(); -} - /******************************************************************************/ /* USB-A charging control */ @@ -330,11 +325,13 @@ struct ppc_config_t ppc_chips[] = { .i2c_port = I2C_PORT_USB_C0, .i2c_addr_flags = SYV682X_ADDR0_FLAGS, .drv = &syv682x_drv, + .frs_en = GPIO_USB_C0_FRS_EN, }, [USBC_PORT_C1] = { .i2c_port = I2C_PORT_USB_C1, .i2c_addr_flags = SYV682X_ADDR0_FLAGS, .drv = &syv682x_drv, + .frs_en = GPIO_USB_C1_FRS_EN, }, }; BUILD_ASSERT(ARRAY_SIZE(ppc_chips) == USBC_PORT_COUNT); @@ -355,6 +352,23 @@ void ppc_interrupt(enum gpio_signal signal) } } +/* Disable FRS on boards with the SYV682A. FRS only works on the SYV682B. */ +void setup_board_ppc(void) +{ + uint8_t board_id = get_board_id(); + + if (board_id < 2) { + ppc_chips[USBC_PORT_C0].frs_en = 0; + ppc_chips[USBC_PORT_C1].frs_en = 0; + } +} + +__override void board_cbi_init(void) +{ + setup_board_tcpc(); + setup_board_ppc(); +} + /******************************************************************************/ /* BC1.2 charger detect configuration */ const struct pi3usb9201_config_t pi3usb9201_bc12_chips[] = { diff --git a/board/voxel/board.h b/board/voxel/board.h index def9fcd153..bf92358030 100644 --- a/board/voxel/board.h +++ b/board/voxel/board.h @@ -92,6 +92,7 @@ /* USBC PPC*/ #define CONFIG_USBC_PPC_SYV682X /* USBC port C0/C1 */ +#define CONFIG_USB_PD_FRS_PPC /* BC 1.2 */ |