From bc14c1a7f61713128819f12fcdcc9ec10ff404ab Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Tue, 25 Oct 2011 04:28:22 +0000
Subject: [PATCH] Update XMEGA platform clock management example code to suit
 the currently released silicon.

Cleanups to the UC3 endpoint/pipe multi byte read code.
---
 LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h | 12 ++++++------
 LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h     | 12 ++++++------
 LUFA/Platform/XMEGA/ClockManagement.h    | 24 ++++++++++++------------
 3 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h b/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h
index 8bbb605b5..3fd0d4c83 100644
--- a/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h
+++ b/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h
@@ -668,10 +668,10 @@
 			static inline uint16_t Endpoint_Read_16_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
 			static inline uint16_t Endpoint_Read_16_LE(void)
 			{
-				uint16_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
 				uint16_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
+				uint16_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
 
-				return ((Byte0 << 8) | Byte1);
+				return ((Byte1 << 8) | Byte0);
 			}
 
 			/** Reads two bytes from the currently selected endpoint's bank in big endian format, for OUT
@@ -743,12 +743,12 @@
 			static inline uint32_t Endpoint_Read_32_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
 			static inline uint32_t Endpoint_Read_32_LE(void)
 			{
-				uint32_t Byte3 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
-				uint32_t Byte2 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
-				uint32_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
 				uint32_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
+				uint32_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
+				uint32_t Byte2 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
+				uint32_t Byte3 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
 
-				return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);
+				return ((Byte3 << 24) | (Byte2 << 16) | (Byte1 << 8) | Byte0);
 			}
 
 			/** Reads four bytes from the currently selected endpoint's bank in big endian format, for OUT
diff --git a/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h b/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h
index 25957f27a..26346e95a 100644
--- a/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h
+++ b/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h
@@ -662,10 +662,10 @@
 			static inline uint16_t Pipe_Read_16_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
 			static inline uint16_t Pipe_Read_16_LE(void)
 			{
-				uint16_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
 				uint16_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
+				uint16_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
 
-				return ((Byte0 << 8) | Byte1);
+				return ((Byte1 << 8) | Byte0);
 			}
 
 			/** Reads two bytes from the currently selected pipe's bank in big endian format, for OUT
@@ -737,12 +737,12 @@
 			static inline uint32_t Pipe_Read_32_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
 			static inline uint32_t Pipe_Read_32_LE(void)
 			{
-				uint32_t Byte3 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
-				uint32_t Byte2 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
-				uint32_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
 				uint32_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
+				uint32_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
+				uint32_t Byte2 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
+				uint32_t Byte3 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
 
-				return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);
+				return ((Byte3 << 24) | (Byte2 << 16) | (Byte1 << 8) | Byte0);
 			}
 
 			/** Reads four bytes from the currently selected pipe's bank in big endian format, for OUT
diff --git a/LUFA/Platform/XMEGA/ClockManagement.h b/LUFA/Platform/XMEGA/ClockManagement.h
index 04b91e002..18d7c631e 100644
--- a/LUFA/Platform/XMEGA/ClockManagement.h
+++ b/LUFA/Platform/XMEGA/ClockManagement.h
@@ -49,18 +49,18 @@
  *
  *  Usage Example:
  *  \code
- *		#include <LUFA/Platform/XMEGA/ClockManagement.h>
- *
- *		void main(void)
- *		{
- *			// Start the internal 32MHz RC oscillator and switch the CPU core to run from it
- *			XMEGACLK_StartInternalOscillator(CLOCK_SRC_INT_RC32MHZ);
- *			XMEGACLK_SetCPUClockSource(CLOCK_SRC_INT_RC32MHZ, F_CPU);
- *
- *			// Start the external oscillator and multiply up the frequency
- *			XMEGACLK_StartExternalOscillator(EXOSC_FREQ_9MHZ_MAX, EXOSC_START_1KCLK);
- *			XMEGACLK_StartPLL(CLOCK_SRC_XOSC, 8000000, F_USB);
- *		}
+ *   	#include <LUFA/Platform/XMEGA/ClockManagement.h>
+ *   	
+ *   	void main(void)
+ *   	{
+ *   		// Start the PLL to multiply the 2MHz RC oscillator to 32MHz and switch the CPU core to run from it
+ *   		XMEGACLK_StartPLL(CLOCK_SRC_INT_RC2MHZ, 2000000, 32000000);
+ *   		XMEGACLK_SetCPUClockSource(CLOCK_SRC_PLL, F_CPU);
+ *   	
+ *   		// Start the 32MHz internal RC oscillator and start the DFLL to increase it to 48MHz using the USB SOF as a reference
+ *   		XMEGACLK_StartInternalOscillator(CLOCK_SRC_INT_RC32MHZ);
+ *   		XMEGACLK_StartDFLL(CLOCK_SRC_INT_RC32MHZ, DFLL_REF_INT_USBSOF, 48000000);
+ *   	}
  *  \endcode
  *
  *  @{
-- 
GitLab