summaryrefslogtreecommitdiff
path: root/board/pompom/board.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/pompom/board.c')
-rw-r--r--board/pompom/board.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/board/pompom/board.c b/board/pompom/board.c
index afd801401e..062c8bc8ce 100644
--- a/board/pompom/board.c
+++ b/board/pompom/board.c
@@ -29,6 +29,7 @@
#include "switch.h"
#include "tablet_mode.h"
#include "task.h"
+#include "usbc_ocp.h"
#include "usbc_ppc.h"
#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
@@ -37,6 +38,7 @@
/* Forward declaration */
static void tcpc_alert_event(enum gpio_signal signal);
static void usb0_evt(enum gpio_signal signal);
+static void usba_oc_interrupt(enum gpio_signal signal);
static void ppc_interrupt(enum gpio_signal signal);
static void board_connect_c0_sbu(enum gpio_signal s);
@@ -63,6 +65,19 @@ static void usb0_evt(enum gpio_signal signal)
task_set_event(TASK_ID_USB_CHG_P0, USB_CHG_EVENT_BC12, 0);
}
+static void usba_oc_deferred(void)
+{
+ /* Use next number after all USB-C ports to indicate the USB-A port */
+ board_overcurrent_event(CONFIG_USB_PD_PORT_MAX_COUNT,
+ !gpio_get_level(GPIO_USB_A0_OC_ODL));
+}
+DECLARE_DEFERRED(usba_oc_deferred);
+
+static void usba_oc_interrupt(enum gpio_signal signal)
+{
+ hook_call_deferred(&usba_oc_deferred_data, 0);
+}
+
static void ppc_interrupt(enum gpio_signal signal)
{
switch (signal) {
@@ -227,6 +242,9 @@ static void board_init(void)
/* Enable BC1.2 interrupts */
gpio_enable_interrupt(GPIO_USB_C0_BC12_INT_L);
+ /* Enable USB-A overcurrent interrupt */
+ gpio_enable_interrupt(GPIO_USB_A0_OC_ODL);
+
/* Enable interrupt for BMI160 sensor */
gpio_enable_interrupt(GPIO_ACCEL_GYRO_INT_L);