Fixed swapped Little Endian/Big Endian endpoint and pipe write code for the UC3 devic...
[pub/USBasp.git] / LUFA / Drivers / USB / Core / UC3 / Pipe_UC3.h
index 837afe8..0c3136e 100644 (file)
                        static inline void Pipe_ClearSETUP(void)
                        {
                                (&AVR32_USBB.UPSTA0CLR)[USB_Pipe_SelectedPipe].txstpic = true;
+                               (&AVR32_USBB.UPCON0CLR)[USB_Pipe_SelectedPipe].fifoconc = true;
                                USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe] = &AVR32_USBB_SLAVE[USB_Pipe_SelectedPipe * PIPE_HSB_ADDRESS_SPACE_SIZE];
                        }
 
                        static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;
                        static inline void Pipe_Write_16_LE(const uint16_t Data)
                        {
-                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 8);
                                *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data & 0xFF);
+                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 8);
                        }
 
                        /** Writes two bytes to the currently selected pipe's bank in big endian format, for IN
                        static inline void Pipe_Write_16_BE(const uint16_t Data) ATTR_ALWAYS_INLINE;
                        static inline void Pipe_Write_16_BE(const uint16_t Data)
                        {
-                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data & 0xFF);
                                *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 8);
+                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data & 0xFF);
                        }
 
                        /** Discards two bytes from the currently selected pipe's bank, for OUT direction pipes.
                        static inline void Pipe_Write_32_LE(const uint32_t Data) ATTR_ALWAYS_INLINE;
                        static inline void Pipe_Write_32_LE(const uint32_t Data)
                        {
-                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 24);
-                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 16);
-                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 8);
                                *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data &  0xFF);
+                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 8);
+                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 16);
+                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 24);
                        }
 
                        /** Writes four bytes to the currently selected pipe's bank in big endian format, for IN
                        static inline void Pipe_Write_32_BE(const uint32_t Data) ATTR_ALWAYS_INLINE;
                        static inline void Pipe_Write_32_BE(const uint32_t Data)
                        {
-                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data &  0xFF);
-                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 8);
-                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 16);
                                *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 24);
+                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 16);
+                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data >> 8);
+                               *(USB_Pipe_FIFOPos[USB_Pipe_SelectedPipe]++) = (Data &  0xFF);
                        }
 
                        /** Discards four bytes from the currently selected pipe's bank, for OUT direction pipes.