From 5f3c4cc6e044bdfd4c35b5e27a2841b961766843 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Wed, 22 Sep 2010 04:20:45 +0000 Subject: [PATCH] Reverted modifications to USBInterrupt.h that were intefering with correct host mode operation. 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 | 2 +- LUFA/Common/Common.h | 4 ++-- LUFA/Drivers/USB/LowLevel/USBController.c | 1 + LUFA/Drivers/USB/LowLevel/USBInterrupt.c | 17 ++++++----------- LUFA/ManPages/ChangeLog.txt | 1 + 5 files changed, 11 insertions(+), 14 deletions(-) diff --git a/Demos/Host/Incomplete/BluetoothHost/makefile b/Demos/Host/Incomplete/BluetoothHost/makefile index 9620ffadfc..c65cd0f5f1 100644 --- a/Demos/Host/Incomplete/BluetoothHost/makefile +++ b/Demos/Host/Incomplete/BluetoothHost/makefile @@ -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. diff --git a/LUFA/Common/Common.h b/LUFA/Common/Common.h index e939b66f3e..c750e40151 100644 --- a/LUFA/Common/Common.h +++ b/LUFA/Common/Common.h @@ -85,14 +85,14 @@ * * \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. * diff --git a/LUFA/Drivers/USB/LowLevel/USBController.c b/LUFA/Drivers/USB/LowLevel/USBController.c index 51e5604832..a542353ebe 100644 --- a/LUFA/Drivers/USB/LowLevel/USBController.c +++ b/LUFA/Drivers/USB/LowLevel/USBController.c @@ -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); diff --git a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c index 66a86a1b2a..7844a87d71 100644 --- a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c +++ b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c @@ -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 } diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index bf31f76deb..a6d04ae127 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -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 * New: