fix rp2040 with new shared irq usb handler
This commit is contained in:
parent
daa927a114
commit
b432cf6201
@ -39,15 +39,8 @@ STATIC void _usb_irq_wrapper(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void post_usb_init(void) {
|
void post_usb_init(void) {
|
||||||
irq_set_enabled(USBCTRL_IRQ, false);
|
irq_add_shared_handler(USBCTRL_IRQ, _usb_irq_wrapper,
|
||||||
|
PICO_SHARED_IRQ_HANDLER_LOWEST_ORDER_PRIORITY);
|
||||||
irq_handler_t usb_handler = irq_get_exclusive_handler(USBCTRL_IRQ);
|
|
||||||
if (usb_handler) {
|
|
||||||
irq_remove_handler(USBCTRL_IRQ, usb_handler);
|
|
||||||
}
|
|
||||||
irq_set_exclusive_handler(USBCTRL_IRQ, _usb_irq_wrapper);
|
|
||||||
|
|
||||||
irq_set_enabled(USBCTRL_IRQ, true);
|
|
||||||
|
|
||||||
// There is a small window where the USB interrupt may be handled by the
|
// There is a small window where the USB interrupt may be handled by the
|
||||||
// pico-sdk instead of CircuitPython. If that is the case, then we'll have
|
// pico-sdk instead of CircuitPython. If that is the case, then we'll have
|
||||||
|
@ -225,13 +225,17 @@ void usb_background_schedule(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void usb_irq_handler(int instance) {
|
void usb_irq_handler(int instance) {
|
||||||
|
#if CFG_TUSB_MCU != OPT_MCU_RP2040
|
||||||
|
// For rp2040, IRQ handler is already installed and invoked automatically
|
||||||
if (instance == CIRCUITPY_USB_DEVICE_INSTANCE) {
|
if (instance == CIRCUITPY_USB_DEVICE_INSTANCE) {
|
||||||
tud_int_handler(instance);
|
tud_int_handler(instance);
|
||||||
} else if (instance == CIRCUITPY_USB_HOST_INSTANCE) {
|
|
||||||
#if CIRCUITPY_USB_HOST
|
|
||||||
tuh_int_handler(instance);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#if CIRCUITPY_USB_HOST
|
||||||
|
else if (instance == CIRCUITPY_USB_HOST_INSTANCE) {
|
||||||
|
tuh_int_handler(instance);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
usb_background_schedule();
|
usb_background_schedule();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user