aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--LUFA/Drivers/USB/LowLevel/USBController.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/LUFA/Drivers/USB/LowLevel/USBController.c b/LUFA/Drivers/USB/LowLevel/USBController.c
index 49bd05b64..f7207778c 100644
--- a/LUFA/Drivers/USB/LowLevel/USBController.c
+++ b/LUFA/Drivers/USB/LowLevel/USBController.c
@@ -60,6 +60,11 @@ void USB_Init(
USB_Options = Options;
#endif
+ if (!(USB_Options & USB_OPT_REG_DISABLED))
+ USB_REG_On();
+ else
+ USB_REG_Off();
+
#if defined(USB_CAN_BE_BOTH)
if (Mode == USB_MODE_UID)
{
@@ -112,11 +117,6 @@ void USB_ResetInterface(void)
USB_INT_ClearAllInterrupts();
USB_Controller_Reset();
-
- if (!(USB_Options & USB_OPT_REG_DISABLED))
- USB_REG_On();
- else
- USB_REG_Off();
if (!(USB_Options & USB_OPT_MANUAL_PLL))
{
@@ -126,9 +126,7 @@ void USB_ResetInterface(void)
USB_PLL_On();
while (!(USB_PLL_IsReady()));
- }
-
- USB_CLK_Unfreeze();
+ }
#if defined(USB_CAN_BE_BOTH)
if (UIDModeSelectEnabled)
@@ -137,6 +135,8 @@ void USB_ResetInterface(void)
USB_INT_Enable(USB_INT_IDTI);
}
#endif
+
+ USB_CLK_Unfreeze();
if (USB_CurrentMode == USB_MODE_DEVICE)
{
@@ -159,8 +159,6 @@ void USB_ResetInterface(void)
#if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
USB_OTGPAD_On();
#endif
-
- USB_Attach();
}
#if defined(USB_CAN_BE_DEVICE)
@@ -201,10 +199,14 @@ static void USB_Init_Device(void)
USB_INT_Enable(USB_INT_VBUS);
#endif
- USB_INT_Clear(USB_INT_SUSPEND);
+ Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL,
+ ENDPOINT_DIR_OUT, USB_ControlEndpointSize,
+ ENDPOINT_BANK_SINGLE);
+
USB_INT_Enable(USB_INT_SUSPEND);
- USB_INT_Clear(USB_INT_EORSTI);
USB_INT_Enable(USB_INT_EORSTI);
+
+ USB_Attach();
}
#endif