diff --git a/LUFA/DoxygenPages/Groups.txt b/LUFA/DoxygenPages/Groups.txt
index bac362bf58843a38ba84d4c04a4d2b3bd4064c04..321779d74c41b00799740736585a8184641dee2f 100644
--- a/LUFA/DoxygenPages/Groups.txt
+++ b/LUFA/DoxygenPages/Groups.txt
@@ -4,22 +4,40 @@
  *  documentation pages. It is not a project source file.
  */
 
-/** @defgroup Group_BoardDrivers Board Drivers
+/** \defgroup Group_BoardDrivers Board Drivers
  *
  *  Functions, macros, variables, enums and types related to the control of physical board hardware.
  */
 
-/** @defgroup Group_PeripheralDrivers On-chip Peripheral Drivers
+/** \defgroup Group_PeripheralDrivers On-chip Peripheral Drivers
  *
  *  Functions, macros, variables, enums and types related to the control of AVR subsystems.
  */
 
-/** @defgroup Group_MiscDrivers Miscellaneous Drivers
+/** \defgroup Group_MiscDrivers Miscellaneous Drivers
  *
  *  Miscellaneous driver Functions, macros, variables, enums and types.
  */
 
-/** @defgroup Group_PlatformDrivers System Platform Drivers
+/** \defgroup Group_PlatformDrivers System Platform Drivers
  *
  *  Drivers relating to the general architecture platform, such as clock setup and interrupt management.
  */
+
+/** \defgroup Group_PlatformDrivers_AVR8 AVR8
+ *  \ingroup Group_PlatformDrivers
+ *
+ *  Drivers relating to the AVR8 architecture platform, such as clock setup and interrupt management.
+ */
+
+/** \defgroup Group_PlatformDrivers_XMEGA XMEGA
+ *  \ingroup Group_PlatformDrivers
+ *
+ *  Drivers relating to the XMEGA architecture platform, such as clock setup and interrupt management.
+ */
+
+/** \defgroup Group_PlatformDrivers_UC3 UC3
+ *  \ingroup Group_PlatformDrivers
+ *
+ *  Drivers relating to the UC3 architecture platform, such as clock setup and interrupt management.
+ */
diff --git a/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h b/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h
index f7d03fc7ae770ee5bf6c6eb62f948c2b194d428e..7b8c46eee922e8efa4e530ea57c8a82a3ab88065 100644
--- a/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h
+++ b/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h
@@ -43,7 +43,7 @@
  *  \section Sec_ModDescription Module Description
  *  On-chip serial USART driver for the 8-bit AVR microcontrollers.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the ADC driver
+ *  \note This file should not be included directly. It is automatically included as needed by the USART driver
  *        dispatch header located in LUFA/Drivers/Peripheral/Serial.h.
  *
  *  \section Sec_ExampleUsage Example Usage
diff --git a/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h b/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h
index 1d28d309d34b29f51ee04453bf616916853a1581..dac684f442429ab45b5290b824f00694d6cb4c61 100644
--- a/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h
+++ b/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h
@@ -159,9 +159,9 @@
 			/** Initializes the SPI subsystem, ready for transfers. Must be called before calling any other
 			 *  SPI routines.
 			 *
-			 *  \param[in, out] SPI         Pointer to the base of the SPI peripheral within the device.
-			 *  \param[in]      SPIOptions  SPI Options, a mask consisting of one of each of the \c SPI_SPEED_*,
-			 *                         \c SPI_SCK_*, \c SPI_SAMPLE_*, \c SPI_ORDER_* and \c SPI_MODE_* masks.
+			 *  \param[in,out] SPI         Pointer to the base of the SPI peripheral within the device.
+			 *  \param[in]     SPIOptions  SPI Options, a mask consisting of one of each of the \c SPI_SPEED_*,
+			 *                             \c SPI_SCK_*, \c SPI_SAMPLE_*, \c SPI_ORDER_* and \c SPI_MODE_* masks.
 			 */
 			static inline void SPI_Init(SPI_t* const SPI,
 			                            const uint8_t SPIOptions)
@@ -171,7 +171,7 @@
 
 			/** Turns off the SPI driver, disabling and returning used hardware to their default configuration.
 			 *
-			 *  \param[in, out] SPI   Pointer to the base of the SPI peripheral within the device.
+			 *  \param[in,out] SPI   Pointer to the base of the SPI peripheral within the device.
 			 */
 			static inline void SPI_Disable(SPI_t* const SPI)
 			{
@@ -180,7 +180,7 @@
 
 			/** Retrieves the currently selected SPI mode, once the SPI interface has been configured.
 			 *
-			 *  \param[in, out] SPI  Pointer to the base of the SPI peripheral within the device.
+			 *  \param[in,out] SPI  Pointer to the base of the SPI peripheral within the device.
 			 *
 			 *  \return \ref SPI_MODE_MASTER if the interface is currently in SPI Master mode, \ref SPI_MODE_SLAVE otherwise
 			 */
@@ -192,8 +192,8 @@
 
 			/** Sends and receives a byte through the SPI interface, blocking until the transfer is complete.
 			 *
-			 *  \param[in, out] SPI   Pointer to the base of the SPI peripheral within the device.
-			 *  \param[in]      Byte  Byte to send through the SPI interface.
+			 *  \param[in,out] SPI   Pointer to the base of the SPI peripheral within the device.
+			 *  \param[in]     Byte  Byte to send through the SPI interface.
 			 *
 			 *  \return Response byte from the attached SPI device.
 			 */
@@ -210,8 +210,8 @@
 			/** Sends a byte through the SPI interface, blocking until the transfer is complete. The response
 			 *  byte sent to from the attached SPI device is ignored.
 			 *
-			 *  \param[in, out] SPI   Pointer to the base of the SPI peripheral within the device.
-			 *  \param[in]      Byte  Byte to send through the SPI interface.
+			 *  \param[in,out] SPI   Pointer to the base of the SPI peripheral within the device.
+			 *  \param[in]     Byte  Byte to send through the SPI interface.
 			 */
 			static inline void SPI_SendByte(SPI_t* const SPI,
 			                                const uint8_t Byte) ATTR_ALWAYS_INLINE;
@@ -225,7 +225,7 @@
 			/** Sends a dummy byte through the SPI interface, blocking until the transfer is complete. The response
 			 *  byte from the attached SPI device is returned.
 			 *
-			 *  \param[in, out] SPI  Pointer to the base of the SPI peripheral within the device.
+			 *  \param[in,out] SPI  Pointer to the base of the SPI peripheral within the device.
 			 *
 			 *  \return The response byte from the attached SPI device.
 			 */
diff --git a/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h b/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h
index 50352195c70c1a730fbb17d33eb2f53f27c788a2..8dd7844b51c6bcaf34a1d9919730a5ad2638f497 100644
--- a/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h
+++ b/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h
@@ -43,7 +43,7 @@
  *  \section Sec_ModDescription Module Description
  *  On-chip serial USART driver for the XMEGA AVR microcontrollers.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the ADC driver
+ *  \note This file should not be included directly. It is automatically included as needed by the USART driver
  *        dispatch header located in LUFA/Drivers/Peripheral/Serial.h.
  *
  *  \section Sec_ExampleUsage Example Usage
@@ -52,13 +52,13 @@
  *
  *  \code
  *      // Initialize the serial USART driver before first use, with 9600 baud (and no double-speed mode)
- *      Serial_Init(9600, false);
+ *      Serial_Init(&USARTD, 9600, false);
  *
  *      // Send a string through the USART
- *      Serial_TxString("Test String\r\n");
+ *      Serial_TxString(&USARTD, "Test String\r\n");
  *
  *      // Receive a byte through the USART
- *      uint8_t DataByte = Serial_RxByte();
+ *      uint8_t DataByte = Serial_RxByte(&USARTD);
  *  \endcode
  *
  *  @{
@@ -153,7 +153,7 @@
 			                               const uint32_t BaudRate,
 			                               const bool DoubleSpeed)
 			{
-				uint32_t BaudValue = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate));
+				uint16_t BaudValue = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate));
 
 				USART->BAUDCTRLB = (BaudValue >> 8);
 				USART->BAUDCTRLA = (BaudValue & 0xFF);
@@ -263,6 +263,7 @@
 				if (!(Serial_IsCharReceived(USART)))
 				  return -1;
 
+				USART->STATUS = USART_RXCIF_bm;
 				return USART->DATA;
 			}
 
diff --git a/LUFA/Platform/UC3/ClockManagement.h b/LUFA/Platform/UC3/ClockManagement.h
index 145cdd0b9400a77d348e540f6a74b7cc7cdc6ac0..3a46f9d75fb58cf5cc69754868ba4e7768ef8d35 100644
--- a/LUFA/Platform/UC3/ClockManagement.h
+++ b/LUFA/Platform/UC3/ClockManagement.h
@@ -35,8 +35,8 @@
  *  of the various clocks within the device to clock the various peripherals.
  */
 
-/** \ingroup Group_PlatformDrivers
- *  \defgroup Group_PlatformDrivers_UC3Clocks UC3 Clock Management Driver - LUFA/Platform/UC3/ClockManagement.h
+/** \ingroup Group_PlatformDrivers_UC3
+ *  \defgroup Group_PlatformDrivers_UC3Clocks Clock Management Driver - LUFA/Platform/UC3/ClockManagement.h
  *  \brief Module Clock Driver for the AVR32 UC3 microcontrollers.
  *
  *  \section Sec_Dependencies Module Source Dependencies
diff --git a/LUFA/Platform/UC3/InterruptManagement.h b/LUFA/Platform/UC3/InterruptManagement.h
index 435afc3dfa22dd9661b48c74b2939d2559dcb755..4c272107757e3a88afb05aca5fd1672a126841ce 100644
--- a/LUFA/Platform/UC3/InterruptManagement.h
+++ b/LUFA/Platform/UC3/InterruptManagement.h
@@ -35,8 +35,8 @@
  *  handlers within the device.
  */
 
-/** \ingroup Group_PlatformDrivers
- *  \defgroup Group_PlatformDrivers_UC3Interrupts UC3 Interrupt Controller Driver - LUFA/Platform/UC3/InterruptManagement.h
+/** \ingroup Group_PlatformDrivers_UC3
+ *  \defgroup Group_PlatformDrivers_UC3Interrupts Interrupt Controller Driver - LUFA/Platform/UC3/InterruptManagement.h
  *  \brief Interrupt Controller Driver for the AVR32 UC3 microcontrollers.
  *
  *  \section Sec_Dependencies Module Source Dependencies
diff --git a/LUFA/Platform/XMEGA/ClockManagement.h b/LUFA/Platform/XMEGA/ClockManagement.h
index 57ab18ae66f93c2565f6844104b1da0f205b1625..415c9871f9f3526e30bfdf7ebeb8509787c52b3f 100644
--- a/LUFA/Platform/XMEGA/ClockManagement.h
+++ b/LUFA/Platform/XMEGA/ClockManagement.h
@@ -35,8 +35,8 @@
  *  of the various clocks within the device to clock the various peripherals.
  */
 
-/** \ingroup Group_PlatformDrivers
- *  \defgroup Group_PlatformDrivers_XMEGAClocks AVR USB XMEGA Clock Management Driver - LUFA/Platform/XMEGA/ClockManagement.h
+/** \ingroup Group_PlatformDrivers_XMEGA
+ *  \defgroup Group_PlatformDrivers_XMEGAClocks Clock Management Driver - LUFA/Platform/XMEGA/ClockManagement.h
  *  \brief Module Clock Driver for the AVR USB XMEGA microcontrollers.
  *
  *  \section Sec_Dependencies Module Source Dependencies