diff options
author | Dean Camera <[email protected]> | 2011-11-22 08:06:52 +0000 |
---|---|---|
committer | Dean Camera <[email protected]> | 2011-11-22 08:06:52 +0000 |
commit | b711b7d6a484204098eeccc03845b454bb1ad208 (patch) | |
tree | eaaed30dd7fc58054d6ba876b2534db8a5a4900f /LUFA | |
parent | eb2e883fd35b5332a7425488105a7adb500ce3fe (diff) | |
download | qmk_firmware-b711b7d6a484204098eeccc03845b454bb1ad208.tar.gz qmk_firmware-b711b7d6a484204098eeccc03845b454bb1ad208.zip |
Fixed broken AVR32 endpoint/pipe communications when ORDERED_EP_CONFIG compile time option is not enabled (thanks to Matthias).
Fixed broken compilation for the AVR32 devices if the NO_SOF_EVENTS compile time option was not enabled (thanks to Matthias).
Diffstat (limited to 'LUFA')
-rw-r--r-- | LUFA/DoxygenPages/ChangeLog.txt | 6 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c | 7 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c | 7 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h | 16 |
4 files changed, 21 insertions, 15 deletions
diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index 00aa13f6a3..7737d9c591 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -9,8 +9,8 @@ * \section Sec_ChangeLogXXXXXX Version XXXXXX * <b>New:</b> * - Core: - * - Added support for the XMEGA A3BU Xplained board. - * - Added support for the new B series XMEGA devices. + * - Added support for the XMEGA A3BU Xplained board + * - Added support for the new B series XMEGA devices * - Library Applications: * - Added User Application APIs to the CDC and DFU class bootloaders * - Added INVERTED_ISP_MISO compile time option to the AVRISP-MKII clone project (thanks to Chuck Rohs) @@ -29,6 +29,8 @@ * - Fixed CDC class drivers not saving and sending all 16-bits of the control line states (thanks to Matthew Swabey) * - Fixed race conditions in the CDC, HID and Mass Storage class drivers when processing some control requests * - Fixed misspelled HID_KEYBOARD_MODIFIER_* macros in the HID class driver (thanks to Laszlo Monda) + * - Fixed broken AVR32 endpoint/pipe communications when ORDERED_EP_CONFIG compile time option is not enabled (thanks to Matthias) + * - Fixed broken compilation for the AVR32 devices if the NO_SOF_EVENTS compile time option was not enabled (thanks to Matthias) * - Library Applications: * - Added reliability patches to the AVRISP-MKII Clone project's PDI/TPI protocols (thanks to Justin Mattair) * - Fixed AVRISP-MKII Clone compile warning on AVR8 U4 targets even when NO_VTARGET_DETECT is enabled diff --git a/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c b/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c index 7cd7ccf25b..c8e3af72af 100644 --- a/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c +++ b/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c @@ -45,19 +45,20 @@ volatile uint8_t* USB_Endpoint_FIFOPos[ENDPOINT_TOTAL_ENDPOINTS]; bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number, const uint32_t UECFG0Data) { + USB_Endpoint_FIFOPos[Number] = &AVR32_USBB_SLAVE[Number * 0x10000]; + #if defined(CONTROL_ONLY_DEVICE) || defined(ORDERED_EP_CONFIG) Endpoint_SelectEndpoint(Number); Endpoint_EnableEndpoint(); (&AVR32_USBB.uecfg0)[Number] = 0; (&AVR32_USBB.uecfg0)[Number] = UECFG0Data; - USB_EndpointFIFOPos[Number] = &AVR32_USBB_SLAVE[Number * 0x10000]; return Endpoint_IsConfigured(); #else for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++) { - uint8_t UECFG0Temp; + uint32_t UECFG0Temp; Endpoint_SelectEndpoint(EPNum); @@ -95,7 +96,7 @@ void Endpoint_ClearEndpoints(void) Endpoint_SelectEndpoint(EPNum); (&AVR32_USBB.uecfg0)[EPNum] = 0; (&AVR32_USBB.uecon0clr)[EPNum] = -1; - USB_EndpointFIFOPos[EPNum] = &AVR32_USBB_SLAVE[EPNum * 0x10000]; + USB_Endpoint_FIFOPos[EPNum] = &AVR32_USBB_SLAVE[EPNum * 0x10000]; Endpoint_DisableEndpoint(); } } diff --git a/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c b/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c index 5c9a44f03c..eca6cb8aae 100644 --- a/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c +++ b/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c @@ -47,6 +47,8 @@ bool Pipe_ConfigurePipe(const uint8_t Number, const uint16_t Size, const uint8_t Banks) { + USB_Pipe_FIFOPos[Number] = &AVR32_USBB_SLAVE[Number * 0x10000]; + #if defined(ORDERED_EP_CONFIG) Pipe_SelectPipe(Number); Pipe_EnablePipe(); @@ -57,7 +59,6 @@ bool Pipe_ConfigurePipe(const uint8_t Number, ((uint32_t)Token << AVR32_USBB_PTOKEN_OFFSET) | ((uint32_t)Banks << AVR32_USBB_PBK_OFFSET) | ((EndpointNumber & PIPE_EPNUM_MASK) << AVR32_USBB_PEPNUM_OFFSET)); - USB_PipeFIFOPos[Number] = &AVR32_USBB_SLAVE[Number * 0x10000]; Pipe_SetInfiniteINRequests(); @@ -65,7 +66,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number, #else for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++) { - uint8_t UPCFG0Temp; + uint32_t UPCFG0Temp; Pipe_SelectPipe(PNum); @@ -109,7 +110,7 @@ void Pipe_ClearPipes(void) Pipe_SelectPipe(PNum); (&AVR32_USBB.upcfg0)[PNum] = 0; (&AVR32_USBB.upcon0clr)[PNum] = -1; - USB_PipeFIFOPos[PNum] = &AVR32_USBB_SLAVE[PNum * 0x10000]; + USB_Pipe_FIFOPos[PNum] = &AVR32_USBB_SLAVE[PNum * 0x10000]; Pipe_DisablePipe(); } } diff --git a/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h b/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h index 28dbabbfdb..c4276d9c11 100644 --- a/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h +++ b/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h @@ -43,7 +43,6 @@ /* Includes: */ #include "../../../../Common/Common.h" - #include "../Endpoint.h" /* Enable C linkage for C++ Compilers: */ #if defined(__cplusplus) @@ -56,7 +55,10 @@ #endif /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) + #if !defined(__DOXYGEN__) + /* External Variables: */ + extern volatile uint32_t USB_Endpoint_SelectedEndpoint; + /* Enums: */ enum USB_Interrupts_t { @@ -109,7 +111,7 @@ AVR32_USBB.UDINTESET.sofes = true; break; case USB_INT_RXSTPI: - (&AVR32_USBB.UECON0SET)[USB_SelectedEndpoint].rxstpes = true; + (&AVR32_USBB.UECON0SET)[USB_Endpoint_SelectedEndpoint].rxstpes = true; break; #endif #if defined(USB_CAN_BE_HOST) @@ -162,7 +164,7 @@ AVR32_USBB.UDINTECLR.sofec = true; break; case USB_INT_RXSTPI: - (&AVR32_USBB.UECON0CLR)[USB_SelectedEndpoint].rxstpec = true; + (&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].rxstpec = true; break; #endif #if defined(USB_CAN_BE_HOST) @@ -221,7 +223,7 @@ (void)AVR32_USBB.UDINTCLR; break; case USB_INT_RXSTPI: - (&AVR32_USBB.UESTA0CLR)[USB_SelectedEndpoint].rxstpic = true; + (&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true; break; #endif #if defined(USB_CAN_BE_HOST) @@ -274,7 +276,7 @@ case USB_INT_SOFI: return AVR32_USBB.UDINTE.sofe; case USB_INT_RXSTPI: - return (&AVR32_USBB.UECON0)[USB_SelectedEndpoint].rxstpe; + return (&AVR32_USBB.UECON0)[USB_Endpoint_SelectedEndpoint].rxstpe; #endif #if defined(USB_CAN_BE_HOST) case USB_INT_HSOFI: @@ -316,7 +318,7 @@ case USB_INT_SOFI: return AVR32_USBB.UDINT.sof; case USB_INT_RXSTPI: - return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].rxstpi; + return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxstpi; #endif #if defined(USB_CAN_BE_HOST) case USB_INT_HSOFI: |