summaryrefslogtreecommitdiff
path: root/board/bobba/board.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/bobba/board.c')
-rw-r--r--board/bobba/board.c55
1 files changed, 34 insertions, 21 deletions
diff --git a/board/bobba/board.c b/board/bobba/board.c
index 90bfaf74ce..c0902ec9ee 100644
--- a/board/bobba/board.c
+++ b/board/bobba/board.c
@@ -386,6 +386,35 @@ __override uint32_t board_override_feature_flags0(uint32_t flags0)
return (flags0 & ~EC_FEATURE_MASK_0(EC_FEATURE_PWM_KEYB));
}
+static const struct ppc_config_t ppc_syv682x_port0 = {
+ .i2c_port = I2C_PORT_TCPC0,
+ .i2c_addr_flags = SYV682X_ADDR0_FLAGS,
+ .drv = &syv682x_drv,
+};
+
+static const struct ppc_config_t ppc_syv682x_port1 = {
+ .i2c_port = I2C_PORT_TCPC1,
+ .i2c_addr_flags = SYV682X_ADDR0_FLAGS,
+ .drv = &syv682x_drv,
+};
+
+static void board_setup_ppc(void)
+{
+ if (!support_syv_ppc())
+ return;
+
+ memcpy(&ppc_chips[USB_PD_PORT_TCPC_0],
+ &ppc_syv682x_port0,
+ sizeof(struct ppc_config_t));
+ memcpy(&ppc_chips[USB_PD_PORT_TCPC_1],
+ &ppc_syv682x_port1,
+ sizeof(struct ppc_config_t));
+
+ gpio_set_flags(GPIO_USB_PD_C0_INT_ODL, GPIO_INT_BOTH);
+ gpio_set_flags(GPIO_USB_PD_C1_INT_ODL, GPIO_INT_BOTH);
+}
+DECLARE_HOOK(HOOK_INIT, board_setup_ppc, HOOK_PRIO_INIT_I2C + 2);
+
void board_hibernate_late(void) {
int i;
@@ -426,27 +455,11 @@ void board_overcurrent_event(int port, int is_overcurrented)
gpio_set_level(GPIO_USB_C_OC, !is_overcurrented);
}
-const struct ppc_config_t ppc_syv682x_port0 = {
- .i2c_port = I2C_PORT_TCPC0,
- .i2c_addr_flags = SYV682X_ADDR0_FLAGS,
- .drv = &syv682x_drv,
-};
-const struct ppc_config_t ppc_syv682x_port1 = {
- .i2c_port = I2C_PORT_TCPC1,
- .i2c_addr_flags = SYV682X_ADDR0_FLAGS,
- .drv = &syv682x_drv,
-};
-
-static void board_setup_ppc(void)
+int ppc_get_alert_status(int port)
{
- if (support_syv_ppc()) {
- memcpy(&ppc_chips[USB_PD_PORT_TCPC_0],
- &ppc_syv682x_port0,
- sizeof(struct ppc_config_t));
- memcpy(&ppc_chips[USB_PD_PORT_TCPC_1],
- &ppc_syv682x_port1,
- sizeof(struct ppc_config_t));
- }
+ if (port == 0)
+ return gpio_get_level(GPIO_USB_PD_C0_INT_ODL) == 0;
+
+ return gpio_get_level(GPIO_USB_PD_C1_INT_ODL) == 0;
}
-DECLARE_HOOK(HOOK_INIT, board_setup_ppc, HOOK_PRIO_INIT_I2C + 2);