forked from mfulz_github/qmk_firmware
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.
This commit is contained in:
parent
c459ef6981
commit
5f3c4cc6e0
|
@ -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 @@
|
||||||
*
|
*
|
||||||
* \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)
|
||||||
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 @@
|
||||||
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)
|
||||||
#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)
|
||||||
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)
|
||||||
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)
|
||||||
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 @@
|
||||||
* - 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>
|
||||||
|
|
Loading…
Reference in New Issue