Reverted modifications to USBInterrupt.h that were intefering with correct host mode...
authorDean Camera <dean@fourwalledcubicle.com>
Wed, 22 Sep 2010 04:20:45 +0000 (04:20 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Wed, 22 Sep 2010 04:20:45 +0000 (04:20 +0000)
Fixed SUSPI interrupt not being cleared during device mode enumeration, causing accidental mis-fires on re-enumeration.

Fixed JTAG_DEBUG_POINT() and JTAG_DEBUG_BREAK() macros not compiling under pure C99 standards mode.

Demos/Host/Incomplete/BluetoothHost/makefile
LUFA/Common/Common.h
LUFA/Drivers/USB/LowLevel/USBController.c
LUFA/Drivers/USB/LowLevel/USBInterrupt.c
LUFA/ManPages/ChangeLog.txt

index 9620ffa..c65cd0f 100644 (file)
@@ -80,7 +80,7 @@ BOARD  = USBKEY
 #     does not *change* the processor frequency - it should merely be updated to
 #     reflect the processor speed set externally so that the code can use accurate
 #     software delays.
-F_CPU = 16000000
+F_CPU = 8000000
 
 
 # Input clock frequency.
index e939b66..c750e40 100644 (file)
                         *
                         *  \ingroup Group_Debugging
                         */
-                       #define JTAG_DEBUG_POINT()      asm volatile ("NOP" ::)
+                       #define JTAG_DEBUG_POINT()      __asm__ volatile ("NOP" ::)
 
                        /** Defines an explicit JTAG break point in the resulting binary via the ASM BREAK statement. When
                         *  a JTAG is used, this causes the program execution to halt when reached until manually resumed.
                         *
                         *  \ingroup Group_Debugging
                         */
-                       #define JTAG_DEBUG_BREAK()      asm volatile ("BREAK" ::)
+                       #define JTAG_DEBUG_BREAK()      __asm__ volatile ("BREAK" ::)
                        
                        /** Macro for testing condition "x" and breaking via JTAG_DEBUG_BREAK() if the condition is false.
                         *
index 51e5604..a542353 100644 (file)
@@ -203,6 +203,7 @@ static void USB_Init_Device(void)
                                                           ENDPOINT_DIR_OUT, USB_ControlEndpointSize,
                                                           ENDPOINT_BANK_SINGLE);               
 
+       USB_INT_Clear(USB_INT_SUSPI);
        USB_INT_Enable(USB_INT_SUSPI);
        USB_INT_Enable(USB_INT_EORSTI);
 
index 66a86a1..7844a87 100644 (file)
@@ -34,7 +34,7 @@
 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
@@ -168,8 +168,6 @@ 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);
@@ -177,8 +175,8 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                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))
@@ -213,7 +211,7 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                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))
@@ -236,13 +234,10 @@ ISR(USB_GEN_vect, ISR_BLOCK)
                  EVENT_USB_Host_DeviceUnattached();
                
                USB_CurrentMode = USB_GetUSBModeFromUID();
-               EVENT_USB_UIDChange();
+               USB_ResetInterface();
 
-               MustResetInterface = true;
+               EVENT_USB_UIDChange();
        }
-       
-       if (MustResetInterface)
-         USB_ResetInterface();
        #endif
 }
 
index bf31f76..a6d04ae 100644 (file)
@@ -57,6 +57,7 @@
   *  - Fixed SET FEATURE and CLEAR FEATURE control requests directed at an unconfigured endpoint causing request timeouts
   *  - Fixed incorrect signature reported in the CDC class bootloader for the ATMEGA32U2
   *  - Fixed USB_Host_ClearPipeStall() incorrectly determining the endpoint direction from the currently selected pipe
+  *  - Fixed JTAG_DEBUG_POINT() and JTAG_DEBUG_BREAK() macros not compiling under pure C99 standards mode
   *
   *  \section Sec_ChangeLog100807 Version 100807
   *  <b>New:</b>