summaryrefslogtreecommitdiff
path: root/board/drobit
diff options
context:
space:
mode:
authorEric Herrmann <eherrmann@chromium.org>2021-03-10 17:43:30 -0800
committerCommit Bot <commit-bot@chromium.org>2021-03-25 19:33:15 +0000
commit88dee7497eead7bd713926004ea0dec5faff8fb9 (patch)
treedd8f4f837144d3de76c569efec5d00436ea48f1a /board/drobit
parent61bedab8f0649e0f2265353fadf2e213f4297ef0 (diff)
downloadchrome-ec-88dee7497eead7bd713926004ea0dec5faff8fb9.tar.gz
Drobit: Enable FRS
Set flag and configure GPIOs to enable Fast Role Swap. Clear the GPIOs passed to the PPC driver for boards which don't support FRS due to older PPC versions. BUG=b:148144711 TEST=make buildall BRANCH=None Signed-off-by: Eric Herrmann <eherrmann@chromium.org> Change-Id: I1236d6c4e9e3c66ce7289817f5737186163b7144 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2752340 Reviewed-by: Abe Levkoy <alevkoy@chromium.org>
Diffstat (limited to 'board/drobit')
-rw-r--r--board/drobit/board.c18
-rw-r--r--board/drobit/board.h1
-rw-r--r--board/drobit/gpio.inc2
3 files changed, 21 insertions, 0 deletions
diff --git a/board/drobit/board.c b/board/drobit/board.c
index f54d5b8308..a13ff9bea9 100644
--- a/board/drobit/board.c
+++ b/board/drobit/board.c
@@ -271,11 +271,13 @@ struct ppc_config_t ppc_chips[] = {
[USBC_PORT_C0] = {
.i2c_port = I2C_PORT_USB_C0,
.i2c_addr_flags = SYV682X_ADDR0_FLAGS,
+ .frs_en = GPIO_USB_C0_FRS_EN,
.drv = &syv682x_drv,
},
[USBC_PORT_C1] = {
.i2c_port = I2C_PORT_USB_C1,
.i2c_addr_flags = SYV682X_ADDR0_FLAGS,
+ .frs_en = GPIO_USB_C1_FRS_EN,
.drv = &syv682x_drv,
},
};
@@ -297,6 +299,22 @@ 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_ppc();
+}
+
/******************************************************************************/
/* BC1.2 charger detect configuration */
const struct pi3usb9201_config_t pi3usb9201_bc12_chips[] = {
diff --git a/board/drobit/board.h b/board/drobit/board.h
index 2f3b023622..faf33faa5c 100644
--- a/board/drobit/board.h
+++ b/board/drobit/board.h
@@ -81,6 +81,7 @@
/* USBC PPC*/
#define CONFIG_USBC_PPC_SYV682X
+#define CONFIG_USB_PD_FRS_PPC
/* BC 1.2 */
diff --git a/board/drobit/gpio.inc b/board/drobit/gpio.inc
index ce8d9fa613..bc7d625195 100644
--- a/board/drobit/gpio.inc
+++ b/board/drobit/gpio.inc
@@ -83,6 +83,8 @@ GPIO(USB_C0_RT_RST_ODL, PIN(D, 4), GPIO_ODR_LOW)
GPIO(USB_C1_RT_RST_ODL, PIN(8, 3), GPIO_ODR_LOW)
GPIO(USB_C0_OC_ODL, PIN(B, 1), GPIO_ODR_HIGH)
GPIO(USB_C1_OC_ODL, PIN(5, 0), GPIO_ODR_HIGH)
+GPIO(USB_C0_FRS_EN, PIN(6, 0), GPIO_OUT_LOW)
+GPIO(USB_C1_FRS_EN, PIN(9, 4), GPIO_OUT_LOW)
/* There is currently no need to service this interrupt. */
GPIO(USB_C0_RT_INT_ODL, PIN(F, 2), GPIO_INPUT)
GPIO(USB_C1_RT_INT_ODL, PIN(F, 3), GPIO_INPUT)