Fix warning when not compiled for UID auto-selection mode.
[pub/lufa.git] / LUFA / Drivers / USB / LowLevel / USBInterrupt.c
index 36541cf..311a7be 100644 (file)
 void USB_INT_DisableAllInterrupts(void)
 {
        #if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
-       USBCON &= ~((1 << VBUSTE) | (1 << IDTE));                               
+       USBCON &= ~((1 << OTGPADE) | (1 << VBUSTE) | (1 << IDTE));                              
        #elif defined(USB_SERIES_4_AVR)
        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)
@@ -142,8 +148,6 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                USB_INT_Disable(USB_INT_SUSPEND);
                USB_INT_Enable(USB_INT_WAKEUP);
 
-               Endpoint_ClearEndpoints();
-
                Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL,
                                           ENDPOINT_DIR_OUT, USB_ControlEndpointSize,
                                           ENDPOINT_BANK_SINGLE);
@@ -164,6 +168,8 @@ ISR(USB_GEN_vect, ISR_BLOCK)
        #endif
        
        #if defined(USB_CAN_BE_HOST)
+       bool MustResetInterface = false;
+
        if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI))
        {
                USB_INT_Clear(USB_INT_DDISCI);
@@ -171,8 +177,8 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                USB_INT_Disable(USB_INT_DDISCI);
                        
                EVENT_USB_Host_DeviceUnattached();
-
-               USB_ResetInterface();
+               
+               MustResetInterface = true;
        }
        
        if (USB_INT_HasOccurred(USB_INT_VBERRI) && USB_INT_IsEnabled(USB_INT_VBERRI))
@@ -207,7 +213,7 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0);
                EVENT_USB_Host_DeviceUnattached();
 
-               USB_ResetInterface();
+               MustResetInterface = true;
        }
 
        if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI))
@@ -232,8 +238,11 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                USB_CurrentMode = USB_GetUSBModeFromUID();
                EVENT_USB_UIDChange();
 
-               USB_ResetInterface();
+               MustResetInterface = true;
        }
+       
+       if (MustResetInterface)
+         USB_ResetInterface();
        #endif
 }