X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/18cbd31605dae070f00900161090a72d3eb0f8ab..accadba2dda2614d6a6669cb7eba9d8357274bfe:/LUFA/Drivers/USB/LowLevel/USBInterrupt.c?ds=inline diff --git a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c index 36541cf7f..21b0a9bb1 100644 --- a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c +++ b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c @@ -39,9 +39,12 @@ void USB_INT_DisableAllInterrupts(void) USBCON &= ~(1 << VBUSTE); #endif + #if defined(USB_CAN_BE_BOTH) + OTGIEN = 0; + #endif + #if defined(USB_CAN_BE_HOST) UHIEN = 0; - OTGIEN = 0; #endif #if defined(USB_CAN_BE_DEVICE) @@ -55,9 +58,12 @@ void USB_INT_ClearAllInterrupts(void) USBINT = 0; #endif + #if defined(USB_CAN_BE_BOTH) + OTGINT = 0; + #endif + #if defined(USB_CAN_BE_HOST) UHINT = 0; - OTGINT = 0; #endif #if defined(USB_CAN_BE_DEVICE) @@ -86,12 +92,12 @@ ISR(USB_GEN_vect, ISR_BLOCK) } #endif - if (USB_INT_HasOccurred(USB_INT_SUSPEND) && USB_INT_IsEnabled(USB_INT_SUSPEND)) + if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI)) { - USB_INT_Clear(USB_INT_SUSPEND); + USB_INT_Clear(USB_INT_SUSPI); - USB_INT_Disable(USB_INT_SUSPEND); - USB_INT_Enable(USB_INT_WAKEUP); + USB_INT_Disable(USB_INT_SUSPI); + USB_INT_Enable(USB_INT_WAKEUPI); USB_CLK_Freeze(); @@ -107,7 +113,7 @@ ISR(USB_GEN_vect, ISR_BLOCK) #endif } - if (USB_INT_HasOccurred(USB_INT_WAKEUP) && USB_INT_IsEnabled(USB_INT_WAKEUP)) + if (USB_INT_HasOccurred(USB_INT_WAKEUPI) && USB_INT_IsEnabled(USB_INT_WAKEUPI)) { if (!(USB_Options & USB_OPT_MANUAL_PLL)) { @@ -117,16 +123,19 @@ ISR(USB_GEN_vect, ISR_BLOCK) USB_CLK_Unfreeze(); - USB_INT_Clear(USB_INT_WAKEUP); + USB_INT_Clear(USB_INT_WAKEUPI); - USB_INT_Disable(USB_INT_WAKEUP); - USB_INT_Enable(USB_INT_SUSPEND); + USB_INT_Disable(USB_INT_WAKEUPI); + USB_INT_Enable(USB_INT_SUSPI); + + if (USB_ConfigurationNumber) + USB_DeviceState = DEVICE_STATE_Configured; + else + USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered; #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT) - USB_DeviceState = (USB_ConfigurationNumber) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered; EVENT_USB_Device_Connect(); #else - USB_DeviceState = (USB_ConfigurationNumber) ? DEVICE_STATE_Configured : DEVICE_STATE_Addressed; EVENT_USB_Device_WakeUp(); #endif } @@ -138,11 +147,9 @@ ISR(USB_GEN_vect, ISR_BLOCK) USB_DeviceState = DEVICE_STATE_Default; USB_ConfigurationNumber = 0; - USB_INT_Clear(USB_INT_SUSPEND); - USB_INT_Disable(USB_INT_SUSPEND); - USB_INT_Enable(USB_INT_WAKEUP); - - Endpoint_ClearEndpoints(); + USB_INT_Clear(USB_INT_SUSPI); + USB_INT_Disable(USB_INT_SUSPI); + USB_INT_Enable(USB_INT_WAKEUPI); Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL, ENDPOINT_DIR_OUT, USB_ControlEndpointSize, @@ -230,9 +237,9 @@ ISR(USB_GEN_vect, ISR_BLOCK) EVENT_USB_Host_DeviceUnattached(); USB_CurrentMode = USB_GetUSBModeFromUID(); - EVENT_USB_UIDChange(); - USB_ResetInterface(); + + EVENT_USB_UIDChange(); } #endif }