Fixed error in the pipe unordered allocation algorithm for the AVR8 devices breaking compatibility with some devices.

pull/1469/head
Dean Camera 14 years ago
parent 04287b76c5
commit fdb82cd1e8

@ -51,7 +51,7 @@
/** Decodes an Ethernet frame header and prints its contents to through the USART in a human readable format. /** Decodes an Ethernet frame header and prints its contents to through the USART in a human readable format.
* *
* \param[in] FrameINData Pointer to the start of an Ethernet frame data * \param[in] InDataStart Pointer to the start of an Ethernet frame of data
*/ */
void DecodeEthernetFrameHeader(void* InDataStart) void DecodeEthernetFrameHeader(void* InDataStart)
{ {

@ -78,7 +78,7 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
continue; continue;
Endpoint_DisableEndpoint(); Endpoint_DisableEndpoint();
UECFG1X &= (1 << ALLOC); UECFG1X &= ~(1 << ALLOC);
Endpoint_EnableEndpoint(); Endpoint_EnableEndpoint();
UECFG0X = UECFG0XTemp; UECFG0X = UECFG0XTemp;

@ -62,8 +62,6 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
uint8_t UPCFG0XTemp; uint8_t UPCFG0XTemp;
uint8_t UPCFG1XTemp; uint8_t UPCFG1XTemp;
uint8_t UPCFG2XTemp; uint8_t UPCFG2XTemp;
uint8_t UPCONXTemp;
uint8_t UPINRQXTemp;
uint8_t UPIENXTemp; uint8_t UPIENXTemp;
Pipe_SelectPipe(PNum); Pipe_SelectPipe(PNum);
@ -73,8 +71,6 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0)); UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size)); UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));
UPCFG2XTemp = 0; UPCFG2XTemp = 0;
UPCONXTemp = ((1 << PEN) | (1 << INMODE));
UPINRQXTemp = 0;
UPIENXTemp = 0; UPIENXTemp = 0;
} }
else else
@ -82,27 +78,23 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
UPCFG0XTemp = UPCFG0X; UPCFG0XTemp = UPCFG0X;
UPCFG1XTemp = UPCFG1X; UPCFG1XTemp = UPCFG1X;
UPCFG2XTemp = UPCFG2X; UPCFG2XTemp = UPCFG2X;
UPCONXTemp = UPCONX;
UPINRQXTemp = UPINRQX;
UPIENXTemp = UPIENX; UPIENXTemp = UPIENX;
} }
Pipe_SetInfiniteINRequests();
if (!(UPCFG1XTemp & (1 << ALLOC))) if (!(UPCFG1XTemp & (1 << ALLOC)))
continue; continue;
Pipe_DisablePipe(); Pipe_DisablePipe();
UPCFG1X &= (1 << ALLOC); UPCFG1X &= ~(1 << ALLOC);
Pipe_EnablePipe(); Pipe_EnablePipe();
UPCFG0X = UPCFG0XTemp; UPCFG0X = UPCFG0XTemp;
UPCFG1X = UPCFG1XTemp; UPCFG1X = UPCFG1XTemp;
UPCFG2X = UPCFG2XTemp; UPCFG2X = UPCFG2XTemp;
UPCONX = UPCONXTemp;
UPINRQX = UPINRQXTemp;
UPIENX = UPIENXTemp; UPIENX = UPIENXTemp;
Pipe_SetInfiniteINRequests();
if (!(Pipe_IsConfigured())) if (!(Pipe_IsConfigured()))
return false; return false;
} }

@ -62,6 +62,7 @@
* - Fixed compile error when FIXED_CONTROL_ENDPOINT_SIZE compile time option was disabled, and a USE_*_DESCRIPTORS compile time * - Fixed compile error when FIXED_CONTROL_ENDPOINT_SIZE compile time option was disabled, and a USE_*_DESCRIPTORS compile time
* option was not enabled on the AVR8s * option was not enabled on the AVR8s
* - Fixed lack of C++ compatibility in some internal header files causing compile errors when using LUFA in C++ projects * - Fixed lack of C++ compatibility in some internal header files causing compile errors when using LUFA in C++ projects
* - Fixed error in the pipe unordered allocation algorithm for the AVR8 devices breaking compatibility with some devices
* - Library Applications: * - Library Applications:
* - Fixed incorrect signature in the CDC and DFU class bootloaders for the ATMEGA8U2 * - Fixed incorrect signature in the CDC and DFU class bootloaders for the ATMEGA8U2
* - Fixed KeyboardHost and KeyboardHostWithParser demos displaying incorrect values when numerical keys were pressed * - Fixed KeyboardHost and KeyboardHostWithParser demos displaying incorrect values when numerical keys were pressed

Loading…
Cancel
Save