diff --git a/Bootloaders/TeensyHID/TeensyHID.c b/Bootloaders/TeensyHID/TeensyHID.c index eed709783d..67dded5457 100644 --- a/Bootloaders/TeensyHID/TeensyHID.c +++ b/Bootloaders/TeensyHID/TeensyHID.c @@ -54,9 +54,6 @@ int main(void) while (RunBootloader) USB_USBTask(); - - /* Reset all configured hardware to their default states for the user app */ - ResetHardware(); /* Wait 100ms to give the host time to register the disconnection */ _delay_ms(100); @@ -85,13 +82,6 @@ void SetupHardware(void) USB_Init(); } -/** Resets all configured hardware required for the bootloader back to their original states. */ -void ResetHardware(void) -{ - /* Shut down the USB subsystem */ - USB_ShutDown(); -} - /** Event handler for the USB_ConfigurationChanged event. This configures the device's endpoints ready * to relay data to and from the attached USB host. */ diff --git a/Bootloaders/TeensyHID/TeensyHID.h b/Bootloaders/TeensyHID/TeensyHID.h index b7d4d6bac4..484fb6b3ac 100644 --- a/Bootloaders/TeensyHID/TeensyHID.h +++ b/Bootloaders/TeensyHID/TeensyHID.h @@ -63,7 +63,6 @@ /* Function Prototypes: */ void SetupHardware(void); - void ResetHardware(void); void EVENT_USB_ConfigurationChanged(void); void EVENT_USB_UnhandledControlPacket(void); diff --git a/LUFA/Drivers/USB/LowLevel/LowLevel.c b/LUFA/Drivers/USB/LowLevel/LowLevel.c index cd7fa891d0..41d9e10cca 100644 --- a/LUFA/Drivers/USB/LowLevel/LowLevel.c +++ b/LUFA/Drivers/USB/LowLevel/LowLevel.c @@ -54,8 +54,6 @@ void USB_Init( #endif ) { - USB_ShutDown(); - #if defined(USB_CAN_BE_BOTH) USB_CurrentMode = Mode; #endif @@ -120,29 +118,9 @@ void USB_ShutDown(void) EVENT_USB_Disconnect(); #endif + USB_ResetInterface(); USB_Detach(); - - USB_INT_DisableAllInterrupts(); - USB_INT_ClearAllInterrupts(); - - USB_IsInitialized = false; - - #if defined(USB_CAN_BE_HOST) - USB_HostState = HOST_STATE_Unattached; - #endif - - #if defined(USB_CAN_BE_DEVICE) - USB_DeviceState = DEVICE_STATE_Unattached; - USB_ConfigurationNumber = 0; - USB_RemoteWakeupEnabled = false; - USB_CurrentlySelfPowered = false; - #endif - - #if defined(CAN_BE_BOTH) - USB_CurrentMode = USB_MODE_NONE; - #endif - - USB_Interface_Disable(); + USB_Controller_Disable(); USB_PLL_Off(); #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) @@ -152,6 +130,12 @@ void USB_ShutDown(void) #if defined(USB_CAN_BE_BOTH) UHWCON &= ~(1 << UIDE); #endif + + USB_IsInitialized = false; + + #if defined(CAN_BE_BOTH) + USB_CurrentMode = USB_MODE_NONE; + #endif } void USB_ResetInterface(void) @@ -180,7 +164,7 @@ void USB_ResetInterface(void) while (!(USB_PLL_IsReady())); } - USB_Interface_Reset(); + USB_Controller_Reset(); #if defined(USB_CAN_BE_BOTH) if (UHWCON & (1 << UIDE)) diff --git a/LUFA/Drivers/USB/LowLevel/LowLevel.h b/LUFA/Drivers/USB/LowLevel/LowLevel.h index df1fa0bcc3..ca2fc7b157 100644 --- a/LUFA/Drivers/USB/LowLevel/LowLevel.h +++ b/LUFA/Drivers/USB/LowLevel/LowLevel.h @@ -334,9 +334,9 @@ #define USB_CLK_Freeze() MACROS{ USBCON |= (1 << FRZCLK); }MACROE #define USB_CLK_Unfreeze() MACROS{ USBCON &= ~(1 << FRZCLK); }MACROE - #define USB_Interface_Enable() MACROS{ USBCON |= (1 << USBE); }MACROE - #define USB_Interface_Disable() MACROS{ USBCON &= ~(1 << USBE); }MACROE - #define USB_Interface_Reset() MACROS{ uint8_t Temp = USBCON; USBCON = (Temp & ~(1 << USBE)); \ + #define USB_Controller_Enable() MACROS{ USBCON |= (1 << USBE); }MACROE + #define USB_Controller_Disable() MACROS{ USBCON &= ~(1 << USBE); }MACROE + #define USB_Controller_Reset() MACROS{ uint8_t Temp = USBCON; USBCON = (Temp & ~(1 << USBE)); \ USBCON = (Temp | (1 << USBE)); }MACROE /* Inline Functions: */