From 134e018b21df179313c818ec63d6fcd2cce5e5e7 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 15 Mar 2011 08:07:29 +0000 Subject: [PATCH] Fixed Remote Wakeup broken on the AVRs due to the mechanism only operating when the SUSPI bit is set (thanks to Holger Steinhaus). Remove redundant setting of UIDE in the AVR8 and AVR32 USB controller drivers. --- LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c | 3 ++- LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c | 2 -- LUFA/Drivers/USB/Core/UC3/USBController_UC3.c | 8 +++----- LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c | 2 -- LUFA/ManPages/ChangeLog.txt | 3 ++- 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c b/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c index 8b41711388..27eabc3d4a 100644 --- a/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c +++ b/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c @@ -75,12 +75,13 @@ void USB_Init( #if defined(USB_CAN_BE_BOTH) if (Mode == USB_MODE_UID) { - UHWCON |= (1 << UIDE); + UHWCON |= (1 << UIDE); USB_INT_Enable(USB_INT_IDTI); USB_CurrentMode = USB_GetUSBModeFromUID(); } else { + UHWCON &= ~(1 << UIDE); USB_CurrentMode = Mode; } #endif diff --git a/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c b/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c index 856ccd6267..89d60ebe0f 100644 --- a/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c +++ b/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c @@ -112,8 +112,6 @@ ISR(USB_GEN_vect, ISR_BLOCK) if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI)) { - USB_INT_Clear(USB_INT_SUSPI); - USB_INT_Disable(USB_INT_SUSPI); USB_INT_Enable(USB_INT_WAKEUPI); diff --git a/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c b/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c index 40ac381f66..a9ac2481c8 100644 --- a/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c +++ b/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c @@ -117,10 +117,7 @@ void USB_ResetInterface(void) #if defined(USB_CAN_BE_BOTH) if (UIDModeSelectEnabled) - { - AVR32_USBB.USBCON.uide = true; - USB_INT_Enable(USB_INT_IDTI); - } + USB_INT_Enable(USB_INT_IDTI); #endif USB_CLK_Unfreeze(); @@ -129,6 +126,7 @@ void USB_ResetInterface(void) { #if defined(USB_CAN_BE_DEVICE) AVR32_USBB.USBCON.uimod = true; + USB_Init_Device(); #endif } @@ -136,6 +134,7 @@ void USB_ResetInterface(void) { #if defined(USB_CAN_BE_HOST) AVR32_USBB.USBCON.uimod = false; + USB_Init_Host(); #endif } @@ -180,7 +179,6 @@ static void USB_Init_Device(void) USB_INT_Enable(USB_INT_EORSTI); USB_Attach(); - USB_Device_SetDeviceAddress(0); } #endif diff --git a/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c b/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c index aee8940e33..76f4ef022e 100644 --- a/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c +++ b/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c @@ -79,8 +79,6 @@ ISR(USB_GEN_vect) if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI)) { - USB_INT_Clear(USB_INT_SUSPI); - USB_INT_Disable(USB_INT_SUSPI); USB_INT_Enable(USB_INT_WAKEUPI); diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index ea3efcdb2e..cf20c704be 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -70,7 +70,7 @@ * - Changed AVRISP-MKII project to use the Watchdog interrupt for command timeouts, to reduce CPU usage and free timer 0 * for other uses * - Updated the software USART code in the XPLAIN Bridge application so that the incomming bits are sampled at their mid-point - * instead of starting point, to give maximum reliability (thanks to Anton) + * instead of starting point, to give maximum reliability (thanks to Anton Staaf) * * Fixed: * - Core: @@ -88,6 +88,7 @@ * - Fixed Still Image Host class driver exiting the descriptor search routine prematurely if the data pipes (but not event pipe) * is found * - Fixed missing call to Pipe_SetInfiniteINRequests() in the Pipe_ConfigurePipe() routine + * - Fixed Remote Wakeup broken on the AVRs due to the mechanism only operating when the SUSPI bit is set (thanks to Holger Steinhaus) * - Library Applications: * - Fixed Benito project discarding incoming data from the USB virtual serial port when the USART is busy * - Fixed broken DFU bootloader, added XPLAIN support for bootloader start when XCK jumpered to ground