Commit 5f3c4cc6 authored by Dean Camera's avatar Dean Camera
Browse files

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.
parent c459ef69
...@@ -80,7 +80,7 @@ BOARD = USBKEY ...@@ -80,7 +80,7 @@ BOARD = USBKEY
# does not *change* the processor frequency - it should merely be updated to # 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 # reflect the processor speed set externally so that the code can use accurate
# software delays. # software delays.
F_CPU = 16000000 F_CPU = 8000000
# Input clock frequency. # Input clock frequency.
......
...@@ -85,14 +85,14 @@ ...@@ -85,14 +85,14 @@
* *
* \ingroup Group_Debugging * \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 /** 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. * a JTAG is used, this causes the program execution to halt when reached until manually resumed.
* *
* \ingroup Group_Debugging * \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. /** Macro for testing condition "x" and breaking via JTAG_DEBUG_BREAK() if the condition is false.
* *
......
...@@ -203,6 +203,7 @@ static void USB_Init_Device(void) ...@@ -203,6 +203,7 @@ static void USB_Init_Device(void)
ENDPOINT_DIR_OUT, USB_ControlEndpointSize, ENDPOINT_DIR_OUT, USB_ControlEndpointSize,
ENDPOINT_BANK_SINGLE); ENDPOINT_BANK_SINGLE);
USB_INT_Clear(USB_INT_SUSPI);
USB_INT_Enable(USB_INT_SUSPI); USB_INT_Enable(USB_INT_SUSPI);
USB_INT_Enable(USB_INT_EORSTI); USB_INT_Enable(USB_INT_EORSTI);
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
void USB_INT_DisableAllInterrupts(void) void USB_INT_DisableAllInterrupts(void)
{ {
#if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) #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) #elif defined(USB_SERIES_4_AVR)
USBCON &= ~(1 << VBUSTE); USBCON &= ~(1 << VBUSTE);
#endif #endif
...@@ -168,8 +168,6 @@ ISR(USB_GEN_vect, ISR_BLOCK) ...@@ -168,8 +168,6 @@ ISR(USB_GEN_vect, ISR_BLOCK)
#endif #endif
#if defined(USB_CAN_BE_HOST) #if defined(USB_CAN_BE_HOST)
bool MustResetInterface = false;
if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI)) if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI))
{ {
USB_INT_Clear(USB_INT_DDISCI); USB_INT_Clear(USB_INT_DDISCI);
...@@ -177,8 +175,8 @@ ISR(USB_GEN_vect, ISR_BLOCK) ...@@ -177,8 +175,8 @@ ISR(USB_GEN_vect, ISR_BLOCK)
USB_INT_Disable(USB_INT_DDISCI); USB_INT_Disable(USB_INT_DDISCI);
EVENT_USB_Host_DeviceUnattached(); 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 +211,7 @@ ISR(USB_GEN_vect, ISR_BLOCK) ...@@ -213,7 +211,7 @@ ISR(USB_GEN_vect, ISR_BLOCK)
EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0); EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0);
EVENT_USB_Host_DeviceUnattached(); 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 +234,10 @@ ISR(USB_GEN_vect, ISR_BLOCK) ...@@ -236,13 +234,10 @@ ISR(USB_GEN_vect, ISR_BLOCK)
EVENT_USB_Host_DeviceUnattached(); EVENT_USB_Host_DeviceUnattached();
USB_CurrentMode = USB_GetUSBModeFromUID(); USB_CurrentMode = USB_GetUSBModeFromUID();
EVENT_USB_UIDChange(); USB_ResetInterface();
MustResetInterface = true; EVENT_USB_UIDChange();
} }
if (MustResetInterface)
USB_ResetInterface();
#endif #endif
} }
......
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
* - Fixed SET FEATURE and CLEAR FEATURE control requests directed at an unconfigured endpoint causing request timeouts * - 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 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 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 * \section Sec_ChangeLog100807 Version 100807
* <b>New:</b> * <b>New:</b>
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment