summaryrefslogtreecommitdiff
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-31 16:00:35 +0000
commitaa34bca17489797735deba81ce50836025c2c2c6 (patch)
tree160f8847e25c3981d474dc21ce791ae0a498a273
parent44ec1dcf6955341d533ce63d2dcb566e064136c9 (diff)
downloadchrome-ec-aa34bca17489797735deba81ce50836025c2c2c6.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> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2795063 Tested-by: Abe Levkoy <alevkoy@chromium.org> Commit-Queue: Abe Levkoy <alevkoy@chromium.org>
-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)