diff --git a/src/TinyUsbInterface.cpp b/src/TinyUsbInterface.cpp index f95ce7a0..b45330ac 100644 --- a/src/TinyUsbInterface.cpp +++ b/src/TinyUsbInterface.cpp @@ -267,13 +267,8 @@ static Pin UsbModeDetect; #endif // Call this to initialise the hardware -#if CFG_TUH_ENABLED void CoreUsbInit(NvicPriority priority, Pin usbVbusDetect, Pin usbVbusOn, Pin usbModeSwitch, Pin usbModeDetect) noexcept -#else -void CoreUsbInit(NvicPriority priority) noexcept -#endif { - #if CFG_TUH_ENABLED UsbVbusDetect = usbVbusDetect; UsbVbusOn = usbVbusOn; @@ -482,8 +477,17 @@ void CoreUsbStop() #if CFG_TUH_ENABLED digitalWrite(UsbVbusOn, false); #endif + +#if SAME5x + NVIC_DisableIRQ(USB_0_IRQn); + NVIC_DisableIRQ(USB_1_IRQn); + NVIC_DisableIRQ(USB_2_IRQn); + NVIC_DisableIRQ(USB_3_IRQn); + USB->DEVICE.CTRLA.reg &= ~USB_CTRLA_ENABLE; +#elif SAME70 NVIC_DisableIRQ((IRQn_Type)ID_USBHS); USBHS->USBHS_CTRL &= ~USBHS_CTRL_USBE; +#endif } #if RP2040 // RP2040 USB configuration has HID enabled by default diff --git a/src/TinyUsbInterface.h b/src/TinyUsbInterface.h index ba219cb0..da99ee8f 100644 --- a/src/TinyUsbInterface.h +++ b/src/TinyUsbInterface.h @@ -28,17 +28,15 @@ #if SUPPORT_USB && CORE_USES_TINYUSB #include "tusb_option.h" -#if CFG_TUH_ENABLED void CoreUsbInit(NvicPriority priority, Pin usbVbusDetect = NoPin, Pin usbVbusOn = NoPin, Pin usbModeSwitch = NoPin, Pin usbModeDetect = NoPin) noexcept; // call this to initialise the hardware +extern "C" [[noreturn]] void CoreUsbDeviceTask(void* param) noexcept; // this must be called by the USB task +void CoreUsbStop(); + +#if CFG_TUH_ENABLED bool CoreUsbSetHostMode(bool hostMode, const StringRef& reply); bool CoreUsbIsHostMode(); -#else -void CoreUsbInit(NvicPriority priority) noexcept; // call this to initialise the hardware #endif -extern "C" [[noreturn]] void CoreUsbDeviceTask(void* param) noexcept; // this must be called by the USB task -void CoreUsbStop(); - #else #define CFG_TUH_ENABLED 0 #endif