diff --git a/LUFA/Common/Common.h b/LUFA/Common/Common.h
index 43df9fbe96df043b3609bd390b0a3a9ef2af6da6..e9faf7af4387b93ba3e9362a5cb6bc012b228107 100644
--- a/LUFA/Common/Common.h
+++ b/LUFA/Common/Common.h
@@ -237,8 +237,8 @@
 			 *
 			 *  \param[in] Milliseconds  Number of milliseconds to delay
 			 */
-			static inline void Delay_MS(uint8_t Milliseconds) ATTR_ALWAYS_INLINE;
-			static inline void Delay_MS(uint8_t Milliseconds)
+			static inline void Delay_MS(uint16_t Milliseconds) ATTR_ALWAYS_INLINE;
+			static inline void Delay_MS(uint16_t Milliseconds)
 			{
 				#if (ARCH == ARCH_AVR8)
 				if (GCC_IS_COMPILE_CONST(Milliseconds))
diff --git a/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h b/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h
index d8216cd24d596f694c27d54909c3b2747e2d9777..639b3c3b4936fc50b721ea0edf07ee27c9690ef6 100644
--- a/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h
+++ b/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h
@@ -97,15 +97,23 @@
 
 	/* Public Interface - May be used in end-application: */
 		/* Macros: */
-			/** Macro for calculating the baud value from a given baud rate when the U2X (double speed) bit is
+			/** Macro for calculating the baud value from a given baud rate when the \c U2X (double speed) bit is
 			 *  not set.
+			 *
+			 *  \param[in] Baud  Target serial UART baud rate.
+			 *
+			 *  \return Closest UBRR register value for the given UART frequency.
 			 */
-			#define SERIAL_UBBRVAL(baud)    ((((F_CPU / 16) + (baud / 2)) / (baud)) - 1)
+			#define SERIAL_UBBRVAL(Baud)    ((((F_CPU / 16) + (Baud / 2)) / (Baud)) - 1)
 
-			/** Macro for calculating the baud value from a given baud rate when the U2X (double speed) bit is
+			/** Macro for calculating the baud value from a given baud rate when the \c U2X (double speed) bit is
 			 *  set.
+			 *
+			 *  \param[in] Baud  Target serial UART baud rate.
+			 *
+			 *  \return Closest UBRR register value for the given UART frequency.
 			 */
-			#define SERIAL_2X_UBBRVAL(baud) ((((F_CPU / 8) + (baud / 2)) / (baud)) - 1)
+			#define SERIAL_2X_UBBRVAL(Baud) ((((F_CPU / 8) + (Baud / 2)) / (Baud)) - 1)
 
 		/* Function Prototypes: */
 			/** Transmits a given string located in program space (FLASH) through the USART.
diff --git a/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h b/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h
index 705ef530c3db4bb3c1c9878e405a2aba3e862d76..0f31eca6fae936a3c368e8de56a811ef314a32a7 100644
--- a/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h
+++ b/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h
@@ -167,6 +167,17 @@
 			/** Bit length prescaler for \ref TWI_Init(). This mask multiplies the TWI bit length prescaler by 64. */
 			#define TWI_BIT_PRESCALE_64      ((1 << TWPS1) | (1 << TWPS0))
 			
+			/** Calculates the length of each bit on the TWI bus for a given target frequency. This may be used with
+			 *  the \ref TWI_Init() function to convert a bus frequency to a number of clocks for the \c BitLength
+			 *  parameter.
+			 *
+			 *  \param[in] Prescaler  Prescaler set on the TWI bus.
+			 *  \param[in] Frequency  Desired TWI bus frequency in Hz.
+			 *
+			 *  \return Bit length in clocks for the given TWI bus frequency at the given prescaler value.
+			 */
+			#define TWI_BITLENGTH_FROM_FREQ(Prescale, Frequency) ((((F_CPU / (Prescale)) / (Frequency)) - 16) / 2)
+
 		/* Enums: */
 			/** Enum for the possible return codes of the TWI transfer start routine and other dependant TWI functions. */
 			enum TWI_ErrorCodes_t