Fixed SPI driver not explicitly setting /SS and MISO pins as inputs when SPI_Init...
[pub/USBasp.git] / LUFA / Drivers / USB / LowLevel / USBInterrupt.c
index 311a7be..21b0a9b 100644 (file)
@@ -34,7 +34,7 @@
 void USB_INT_DisableAllInterrupts(void)
 {
        #if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
 void USB_INT_DisableAllInterrupts(void)
 {
        #if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
-       USBCON &= ~((1 << OTGPADE) | (1 << VBUSTE) | (1 << IDTE));                              
+       USBCON &= ~((1 << VBUSTE) | (1 << IDTE));                               
        #elif defined(USB_SERIES_4_AVR)
        USBCON &= ~(1 << VBUSTE);
        #endif
        #elif defined(USB_SERIES_4_AVR)
        USBCON &= ~(1 << VBUSTE);
        #endif
@@ -92,12 +92,12 @@ ISR(USB_GEN_vect, ISR_BLOCK)
        }
        #endif
 
        }
        #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();
                
                
                USB_CLK_Freeze();
                
@@ -113,7 +113,7 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                #endif
        }
 
                #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))
                {
        {
                if (!(USB_Options & USB_OPT_MANUAL_PLL))
                {
@@ -123,16 +123,19 @@ ISR(USB_GEN_vect, ISR_BLOCK)
 
                USB_CLK_Unfreeze();
 
 
                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)
                
                #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
                EVENT_USB_Device_Connect();
                #else
-               USB_DeviceState = (USB_ConfigurationNumber) ? DEVICE_STATE_Configured : DEVICE_STATE_Addressed;
                EVENT_USB_Device_WakeUp();              
                #endif
        }
                EVENT_USB_Device_WakeUp();              
                #endif
        }
@@ -144,9 +147,9 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                USB_DeviceState         = DEVICE_STATE_Default;
                USB_ConfigurationNumber = 0;
 
                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);
+               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,
 
                Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL,
                                           ENDPOINT_DIR_OUT, USB_ControlEndpointSize,
@@ -168,8 +171,6 @@ ISR(USB_GEN_vect, ISR_BLOCK)
        #endif
        
        #if defined(USB_CAN_BE_HOST)
        #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);
        if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI))
        {
                USB_INT_Clear(USB_INT_DDISCI);
@@ -177,8 +178,8 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                USB_INT_Disable(USB_INT_DDISCI);
                        
                EVENT_USB_Host_DeviceUnattached();
                USB_INT_Disable(USB_INT_DDISCI);
                        
                EVENT_USB_Host_DeviceUnattached();
-               
-               MustResetInterface = true;
+
+               USB_ResetInterface();
        }
        
        if (USB_INT_HasOccurred(USB_INT_VBERRI) && USB_INT_IsEnabled(USB_INT_VBERRI))
        }
        
        if (USB_INT_HasOccurred(USB_INT_VBERRI) && USB_INT_IsEnabled(USB_INT_VBERRI))
@@ -213,7 +214,7 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0);
                EVENT_USB_Host_DeviceUnattached();
 
                EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0);
                EVENT_USB_Host_DeviceUnattached();
 
-               MustResetInterface = true;
+               USB_ResetInterface();
        }
 
        if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI))
        }
 
        if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI))
@@ -236,13 +237,10 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                  EVENT_USB_Host_DeviceUnattached();
                
                USB_CurrentMode = USB_GetUSBModeFromUID();
                  EVENT_USB_Host_DeviceUnattached();
                
                USB_CurrentMode = USB_GetUSBModeFromUID();
-               EVENT_USB_UIDChange();
+               USB_ResetInterface();
 
 
-               MustResetInterface = true;
+               EVENT_USB_UIDChange();
        }
        }
-       
-       if (MustResetInterface)
-         USB_ResetInterface();
        #endif
 }
 
        #endif
 }