summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Herrmann <eherrmann@chromium.org>2020-02-14 14:17:08 -0800
committerCommit Bot <commit-bot@chromium.org>2021-01-28 19:48:20 +0000
commitef04b4715db47812e3e2cdaf083a1a3118c511b5 (patch)
tree3034953534e98870da50fcadf3e3b9f0905ea475
parent38f31459bbbbe8b74a5c808fdfa3a5319b01b63e (diff)
downloadchrome-ec-ef04b4715db47812e3e2cdaf083a1a3118c511b5.tar.gz
Volteer: Add support for FRS to C1
Add support to C1, assign the gpio to put the PPC in FRS mode and add the config options. Volteer boards need the SYV682B rework to support FRS, but this will not break existing boards. FRS will be enabled but fail, and enter ErrorRecovery, enter Unattached.SNK, or successfully FRS depending on the situation. Volteer HW can supply 3A per port, so changes to reserve the FRS current aren't needed to enable it on Volteer. BUG=b:148144711 TEST=Check that FRS is functional. FRS devices should not re-enumerate after adapter power is removed. Test with the SYV682B and using both the PS8815 and RT1715 TCPCs. BRANCH=none Change-Id: I7a599f1c350529d910a331f1ebc78ab41ff44a24 Signed-off-by: Eric Herrmann <eherrmann@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2057495 Reviewed-by: Abe Levkoy <alevkoy@chromium.org>
-rw-r--r--board/volteer/board.h1
-rw-r--r--board/volteer/gpio.inc1
-rw-r--r--board/volteer/usbc_config.c1
-rw-r--r--zephyr/projects/volteer/boards/arm/volteer/volteer.dts4
-rw-r--r--zephyr/projects/volteer/include/gpio_map.h1
5 files changed, 8 insertions, 0 deletions
diff --git a/board/volteer/board.h b/board/volteer/board.h
index 4129143051..85ab9772a0 100644
--- a/board/volteer/board.h
+++ b/board/volteer/board.h
@@ -96,6 +96,7 @@
/* USBC PPC*/
#define CONFIG_USBC_PPC_SN5S330 /* USBC port C0 */
#define CONFIG_USBC_PPC_SYV682X /* USBC port C1 */
+#define CONFIG_USB_PD_FRS_PPC
/* BC 1.2 */
diff --git a/board/volteer/gpio.inc b/board/volteer/gpio.inc
index 5682b47740..33d04741d3 100644
--- a/board/volteer/gpio.inc
+++ b/board/volteer/gpio.inc
@@ -89,6 +89,7 @@ GPIO(USB_C0_OC_ODL, PIN(B, 1), GPIO_ODR_HIGH)
GPIO(USB_C1_OC_ODL, PIN(5, 0), GPIO_ODR_HIGH)
/* There is currently no need to service this interrupt. */
GPIO(USB_C1_RT_INT_ODL, PIN(F, 3), GPIO_INPUT)
+GPIO(USB_C1_FRS_EN, PIN(9, 4), GPIO_OUT_LOW)
/* Don't have a load switch for retimer */
UNIMPLEMENTED(USB_C1_LS_EN)
diff --git a/board/volteer/usbc_config.c b/board/volteer/usbc_config.c
index 9e76eef5bd..1fec96a2a3 100644
--- a/board/volteer/usbc_config.c
+++ b/board/volteer/usbc_config.c
@@ -154,6 +154,7 @@ struct ppc_config_t ppc_chips[] = {
[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,
},
};
diff --git a/zephyr/projects/volteer/boards/arm/volteer/volteer.dts b/zephyr/projects/volteer/boards/arm/volteer/volteer.dts
index 0daffab194..e35b59240c 100644
--- a/zephyr/projects/volteer/boards/arm/volteer/volteer.dts
+++ b/zephyr/projects/volteer/boards/arm/volteer/volteer.dts
@@ -141,6 +141,10 @@
gpios = <&gpio0 3 GPIO_INPUT>;
label = "USB_C1_MIX_INT_ODL";
};
+ usb_c1_frs_en {
+ gpios = <&gpio9 4 GPIO_OUT_LOW>;
+ label = "USB_C1_FRS_EN";
+ };
ec_voldn_btn_odl {
gpios = <&gpio9 3 (GPIO_INPUT | GPIO_PULL_UP)>;
label = "EC_VOLDN_BTN_ODL";
diff --git a/zephyr/projects/volteer/include/gpio_map.h b/zephyr/projects/volteer/include/gpio_map.h
index aac4b504c2..ef63521aa8 100644
--- a/zephyr/projects/volteer/include/gpio_map.h
+++ b/zephyr/projects/volteer/include/gpio_map.h
@@ -64,6 +64,7 @@
/* USB and USBC Signals */
#define GPIO_EN_PP5000_USBA NAMED_GPIO(en_pp5000_usba)
+#define GPIO_USB_C1_FRS_EN NAMED_GPIO(usb_c1_frs_en)
#define GPIO_USB_C1_RT_RST_ODL \
NAMED_GPIO_NODELABEL(usb_c1_bb_retimer, reset_gpios)