From: Dean Camera Date: Sun, 19 Sep 2010 06:30:14 +0000 (+0000) Subject: Make device mode configure the control endpoint even before the bus has been reset... X-Git-Tag: LUFA-110528-BETA~237 X-Git-Url: http://git.linex4red.de/pub/USBasp.git/commitdiff_plain/d66a925786e4e57713a2c902cdffe7269db43226?ds=sidebyside Make device mode configure the control endpoint even before the bus has been reset, so that the device will enumerate correctly on hosts that do not reset the device before initial use. --- 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