summaryrefslogtreecommitdiff
path: root/zephyr/program/skyrim/src/usbc_config.c
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/program/skyrim/src/usbc_config.c')
-rw-r--r--zephyr/program/skyrim/src/usbc_config.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/zephyr/program/skyrim/src/usbc_config.c b/zephyr/program/skyrim/src/usbc_config.c
index e2983b2307..f3502ca8ea 100644
--- a/zephyr/program/skyrim/src/usbc_config.c
+++ b/zephyr/program/skyrim/src/usbc_config.c
@@ -197,17 +197,25 @@ void sbu_fault_interrupt(enum gpio_signal signal)
pd_handle_overcurrent(port);
}
-void usb_fault_interrupt(enum gpio_signal signal)
+static void usb_fault_alert(void)
{
int out;
- CPRINTSUSB("USB fault(%d), alerting the SoC", signal);
out = gpio_pin_get_dt(
GPIO_DT_FROM_NODELABEL(gpio_usb_hub_fault_q_odl)) &&
gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(ioex_usb_a0_fault_odl)) &&
gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(ioex_usb_a1_fault_db_odl));
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_usb_fault_odl), out);
+
+ if (out == 0)
+ CPRINTSUSB("USB fault, alerting the SoC");
+}
+DECLARE_DEFERRED(usb_fault_alert);
+
+void usb_fault_interrupt(enum gpio_signal signal)
+{
+ hook_call_deferred(&usb_fault_alert_data, 0);
}
void usb_pd_soc_interrupt(enum gpio_signal signal)