summaryrefslogtreecommitdiff
path: root/board/voxel
diff options
context:
space:
mode:
authorEric Herrmann <eherrmann@chromium.org>2021-02-05 00:18:23 +0000
committerCommit Bot <commit-bot@chromium.org>2021-03-10 21:59:18 +0000
commit5e8fa55cd5705a0d76f41c51d05fc175512c226a (patch)
treeb4c4803957acb979a70b806e2dfd4e7795a02016 /board/voxel
parent3b2d03c081a583a639bb17e73250f86b1e5732f0 (diff)
downloadchrome-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.c24
-rw-r--r--board/voxel/board.h1
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 */