diff options
Diffstat (limited to 'board/pompom/board.c')
-rw-r--r-- | board/pompom/board.c | 18 |
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); |