diff --git a/LUFA/Drivers/USB/LowLevel/USBController.c b/LUFA/Drivers/USB/LowLevel/USBController.c index 7177e2b0e2..49bd05b641 100644 --- a/LUFA/Drivers/USB/LowLevel/USBController.c +++ b/LUFA/Drivers/USB/LowLevel/USBController.c @@ -130,32 +130,36 @@ void USB_ResetInterface(void) USB_CLK_Unfreeze(); - #if defined(USB_DEVICE_ONLY) && (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) - UHWCON |= (1 << UIMOD); - USB_Init_Device(); - #elif defined(USB_HOST_ONLY) - UHWCON &= ~(1 << UIMOD); - USB_Init_Host(); - #elif defined(USB_CAN_BE_BOTH) + #if defined(USB_CAN_BE_BOTH) if (UIDModeSelectEnabled) { UHWCON |= (1 << UIDE); USB_INT_Enable(USB_INT_IDTI); } + #endif if (USB_CurrentMode == USB_MODE_DEVICE) { + #if defined(USB_CAN_BE_DEVICE) + #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) UHWCON |= (1 << UIMOD); + #endif + USB_Init_Device(); + #endif } else { + #if defined(USB_CAN_BE_HOST) UHWCON &= ~(1 << UIMOD); USB_Init_Host(); + #endif } - #endif + #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) USB_OTGPAD_On(); + #endif + USB_Attach(); }