aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB/LowLevel/USBInterrupt.c
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2010-09-19 05:46:17 +0000
committerDean Camera <dean@fourwalledcubicle.com>2010-09-19 05:46:17 +0000
commit01fecac0a70b02ccb197091935052fcfc9955b26 (patch)
tree70077edc3850e20b9e680ba533155bada92cf079 /LUFA/Drivers/USB/LowLevel/USBInterrupt.c
parentcce8760b9169dffe1a126e221f4b4c48c83192b9 (diff)
downloadlufa-01fecac0a70b02ccb197091935052fcfc9955b26.tar.gz
lufa-01fecac0a70b02ccb197091935052fcfc9955b26.tar.bz2
lufa-01fecac0a70b02ccb197091935052fcfc9955b26.zip
Ensure device address latch bit is not set at the same time as the new address, as per datasheet.
Minor documentation fixes. Fix broken USB host mode due to the USB frame counter not being updated during the early enumeration steps, causing USB_Host_DelayMS() to spinloop forever.
Diffstat (limited to 'LUFA/Drivers/USB/LowLevel/USBInterrupt.c')
-rw-r--r--LUFA/Drivers/USB/LowLevel/USBInterrupt.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c
index a49b8da7b..52951fc39 100644
--- a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c
+++ b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c
@@ -34,14 +34,17 @@
void USB_INT_DisableAllInterrupts(void)
{
#if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
- USBCON &= ~((1 << VBUSTE) | (1 << IDTE));
+ USBCON &= ~((1 << OTGPADE) | (1 << VBUSTE) | (1 << IDTE));
#elif defined(USB_SERIES_4_AVR)
USBCON &= ~(1 << VBUSTE);
#endif
+ #if defined(USB_CAN_BE_BOTH)
+ OTGIEN = 0;
+ #endif
+
#if defined(USB_CAN_BE_HOST)
UHIEN = 0;
- OTGIEN = 0;
#endif
#if defined(USB_CAN_BE_DEVICE)
@@ -55,9 +58,12 @@ void USB_INT_ClearAllInterrupts(void)
USBINT = 0;
#endif
+ #if defined(USB_CAN_BE_BOTH)
+ OTGINT = 0;
+ #endif
+
#if defined(USB_CAN_BE_HOST)
UHINT = 0;
- OTGINT = 0;
#endif
#if defined(USB_CAN_BE_DEVICE)