diff --git a/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h b/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h
index ebefd1903b4a7f733908c3f1c3a8252ae400ef94..6115ec6e3cb2078df6326e3e4803ebe4f391d801 100644
--- a/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h
+++ b/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h
@@ -59,20 +59,28 @@
 		/* Enums: */
 			enum USB_Interrupts_t
 			{
+				#if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) || defined(__DOXYGEN__))
 				USB_INT_VBUSTI  = 0,
+				#endif
+				#if (defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__))
 				USB_INT_IDTI    = 1,
+				#endif
+				#if (defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__))
 				USB_INT_WAKEUPI = 2,
 				USB_INT_SUSPI   = 3,
 				USB_INT_EORSTI  = 4,
 				USB_INT_SOFI    = 5,
-				USB_INT_HSOFI   = 6,
-				USB_INT_DCONNI  = 7,
-				USB_INT_DDISCI  = 8,
-				USB_INT_RSTI    = 9,
-				USB_INT_BCERRI  = 10,
-				USB_INT_VBERRI  = 11,
-				USB_INT_SRPI    = 12,
-				USB_INT_RXSTPI  = 13,
+				USB_INT_RXSTPI  = 6,
+				#endif
+				#if (defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__))
+				USB_INT_HSOFI   = 7,
+				USB_INT_DCONNI  = 8,
+				USB_INT_DDISCI  = 9,
+				USB_INT_RSTI    = 10,
+				USB_INT_BCERRI  = 11,
+				USB_INT_VBERRI  = 12,
+				USB_INT_SRPI    = 13,
+				#endif
 			};
 
 		/* Inline Functions: */
@@ -81,12 +89,17 @@
 			{
 				switch (Interrupt)
 				{
+					#if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
 					case USB_INT_VBUSTI:
 						USBCON |= (1 << VBUSTE);
 						break;
+					#endif
+					#if defined(USB_CAN_BE_BOTH)
 					case USB_INT_IDTI:
 						USBCON |= (1 << IDTE);
 						break;
+					#endif
+					#if defined(USB_CAN_BE_DEVICE)
 					case USB_INT_WAKEUPI:
 						UDIEN  |= (1 << WAKEUPE);
 						break;
@@ -99,6 +112,11 @@
 					case USB_INT_SOFI:
 						UDIEN  |= (1 << SOFE);
 						break;
+					case USB_INT_RXSTPI:
+						UEIENX |= (1 << RXSTPE);
+						break;
+					#endif
+					#if defined(USB_CAN_BE_HOST)
 					case USB_INT_HSOFI:
 						UHIEN  |= (1 << HSOFE);
 						break;
@@ -120,9 +138,7 @@
 					case USB_INT_SRPI:
 						OTGIEN |= (1 << SRPE);						
 						break;
-					case USB_INT_RXSTPI:
-						UEIENX |= (1 << RXSTPE);
-						break;
+					#endif
 				}
 			}
 
@@ -131,12 +147,17 @@
 			{
 				switch (Interrupt)
 				{
+					#if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
 					case USB_INT_VBUSTI:
 						USBCON &= ~(1 << VBUSTE);
 						break;
+					#endif
+					#if defined(USB_CAN_BE_BOTH)
 					case USB_INT_IDTI:
 						USBCON &= ~(1 << IDTE);
 						break;
+					#endif
+					#if defined(USB_CAN_BE_DEVICE)
 					case USB_INT_WAKEUPI:
 						UDIEN  &= ~(1 << WAKEUPE);
 						break;
@@ -149,6 +170,11 @@
 					case USB_INT_SOFI:
 						UDIEN  &= ~(1 << SOFE);
 						break;
+					case USB_INT_RXSTPI:
+						UEIENX &= ~(1 << RXSTPE);
+						break;
+					#endif
+					#if defined(USB_CAN_BE_HOST)
 					case USB_INT_HSOFI:
 						UHIEN  &= ~(1 << HSOFE);
 						break;
@@ -170,9 +196,7 @@
 					case USB_INT_SRPI:
 						OTGIEN &= ~(1 << SRPE);						
 						break;
-					case USB_INT_RXSTPI:
-						UEIENX &= ~(1 << RXSTPE);
-						break;
+					#endif
 				}
 			}
 			
@@ -181,12 +205,17 @@
 			{
 				switch (Interrupt)
 				{
+					#if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
 					case USB_INT_VBUSTI:
 						USBINT &= ~(1 << VBUSTI);
 						break;
+					#endif
+					#if defined(USB_CAN_BE_BOTH)
 					case USB_INT_IDTI:
 						USBINT &= ~(1 << IDTI);
 						break;
+					#endif
+					#if defined(USB_CAN_BE_DEVICE)
 					case USB_INT_WAKEUPI:
 						UDINT  &= ~(1 << WAKEUPI);
 						break;
@@ -199,6 +228,11 @@
 					case USB_INT_SOFI:
 						UDINT  &= ~(1 << SOFI);
 						break;
+					case USB_INT_RXSTPI:
+						UEINTX &= ~(1 << RXSTPI);
+						break;
+					#endif
+					#if defined(USB_CAN_BE_HOST)
 					case USB_INT_HSOFI:
 						UHINT  &= ~(1 << HSOFI);
 						break;
@@ -220,9 +254,7 @@
 					case USB_INT_SRPI:
 						OTGINT &= ~(1 << SRPI);
 						break;
-					case USB_INT_RXSTPI:
-						UEINTX &= ~(1 << RXSTPI);
-						break;
+					#endif
 				}
 			}
 			
@@ -231,10 +263,15 @@
 			{
 				switch (Interrupt)
 				{
+					#if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
 					case USB_INT_VBUSTI:
 						return (USBCON & (1 << VBUSTE));
+					#endif
+					#if defined(USB_CAN_BE_BOTH)
 					case USB_INT_IDTI:
 						return (USBCON & (1 << IDTE));
+					#endif
+					#if defined(USB_CAN_BE_DEVICE)
 					case USB_INT_WAKEUPI:
 						return (UDIEN  & (1 << WAKEUPE));
 					case USB_INT_SUSPI:
@@ -243,6 +280,10 @@
 						return (UDIEN  & (1 << EORSTE));
 					case USB_INT_SOFI:
 						return (UDIEN  & (1 << SOFE));
+					case USB_INT_RXSTPI:
+						return (UEIENX & (1 << RXSTPE));
+					#endif
+					#if defined(USB_CAN_BE_HOST)
 					case USB_INT_HSOFI:
 						return (UHIEN  & (1 << HSOFE));
 					case USB_INT_DCONNI:
@@ -257,9 +298,7 @@
 						return (OTGIEN & (1 << VBERRE));
 					case USB_INT_SRPI:
 						return (OTGIEN & (1 << SRPE));
-					case USB_INT_RXSTPI:
-						return (UEIENX & (1 << RXSTPE));
-						break;
+					#endif
 				}
 				
 				return false;
@@ -270,10 +309,15 @@
 			{
 				switch (Interrupt)
 				{
+					#if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
 					case USB_INT_VBUSTI:
 						return (USBINT & (1 << VBUSTI));
+					#endif
+					#if defined(USB_CAN_BE_BOTH)
 					case USB_INT_IDTI:
 						return (USBINT & (1 << IDTI));
+					#endif
+					#if defined(USB_CAN_BE_DEVICE)
 					case USB_INT_WAKEUPI:
 						return (UDINT  & (1 << WAKEUPI));
 					case USB_INT_SUSPI:
@@ -282,6 +326,10 @@
 						return (UDINT  & (1 << EORSTI));
 					case USB_INT_SOFI:
 						return (UDINT  & (1 << SOFI));
+					case USB_INT_RXSTPI:
+						return (UEINTX & (1 << RXSTPI));
+					#endif
+					#if defined(USB_CAN_BE_HOST)
 					case USB_INT_HSOFI:
 						return (UHINT  & (1 << HSOFI));
 					case USB_INT_DCONNI:
@@ -296,8 +344,7 @@
 						return (OTGINT & (1 << VBERRI));
 					case USB_INT_SRPI:
 						return (OTGINT & (1 << SRPI));
-					case USB_INT_RXSTPI:
-						return (UEINTX & (1 << RXSTPI));
+					#endif
 				}
 
 				return false;
diff --git a/LUFA/Drivers/USB/Core/ConfigDescriptor.h b/LUFA/Drivers/USB/Core/ConfigDescriptor.h
index e469987b3d95dc1690854c58d74ca066bb8ac349..54bf14dadda17473e84c0b0965bc3dd103b49adc 100644
--- a/LUFA/Drivers/USB/Core/ConfigDescriptor.h
+++ b/LUFA/Drivers/USB/Core/ConfigDescriptor.h
@@ -52,8 +52,8 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 		#include "HostStandardReq.h"
-		#include "USBMode.h"
 		#include "StdDescriptors.h"
 
 	/* Enable C linkage for C++ Compilers: */
diff --git a/LUFA/Drivers/USB/Core/Device.h b/LUFA/Drivers/USB/Core/Device.h
index fdec1df1cb7283f9c8372675810953786b478980..45c0393e4ad52f2efa2f9e9686ff6396fb59faef 100644
--- a/LUFA/Drivers/USB/Core/Device.h
+++ b/LUFA/Drivers/USB/Core/Device.h
@@ -51,6 +51,7 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 		#include "StdDescriptors.h"
 		#include "USBInterrupt.h"
 		#include "Endpoint.h"
diff --git a/LUFA/Drivers/USB/Core/DeviceStandardReq.h b/LUFA/Drivers/USB/Core/DeviceStandardReq.h
index 0ab297da599c407434f323455f0545bfb1383a09..dbf1ca4a7f471753d84bc4239b89a709d12805d8 100644
--- a/LUFA/Drivers/USB/Core/DeviceStandardReq.h
+++ b/LUFA/Drivers/USB/Core/DeviceStandardReq.h
@@ -43,6 +43,7 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 		#include "StdDescriptors.h"
 		#include "Events.h"
 		#include "StdRequestType.h"
diff --git a/LUFA/Drivers/USB/Core/Endpoint.h b/LUFA/Drivers/USB/Core/Endpoint.h
index 557df2c797da185c968e3ccc26e19c03f4af1dbf..d7a8bb7f2a50dcf3c5ce201fcc6e28a2cf761bcb 100644
--- a/LUFA/Drivers/USB/Core/Endpoint.h
+++ b/LUFA/Drivers/USB/Core/Endpoint.h
@@ -74,6 +74,7 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_USB_DRIVER)
diff --git a/LUFA/Drivers/USB/Core/EndpointStream.h b/LUFA/Drivers/USB/Core/EndpointStream.h
index a8fd4bc935a1accf9a7220785bcc878193bde506..02a3483477acdbc125feb7c45f46493b7c24b411 100644
--- a/LUFA/Drivers/USB/Core/EndpointStream.h
+++ b/LUFA/Drivers/USB/Core/EndpointStream.h
@@ -51,6 +51,7 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 		#include "USBTask.h"
 		
 	/* Enable C linkage for C++ Compilers: */
diff --git a/LUFA/Drivers/USB/Core/Host.h b/LUFA/Drivers/USB/Core/Host.h
index 4a12f1ac31040f5bbbd5ce8ae0f0abd267054c40..b864a9608a37ca9dc8d72ad542a8a2374f44c25b 100644
--- a/LUFA/Drivers/USB/Core/Host.h
+++ b/LUFA/Drivers/USB/Core/Host.h
@@ -51,6 +51,7 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_USB_DRIVER)
diff --git a/LUFA/Drivers/USB/Core/OTG.h b/LUFA/Drivers/USB/Core/OTG.h
index fee7c5340629655b71c97475b301d83e5bc27a0c..918b2ca8b3a976b28de46922638fe18e4e18d005 100644
--- a/LUFA/Drivers/USB/Core/OTG.h
+++ b/LUFA/Drivers/USB/Core/OTG.h
@@ -52,6 +52,7 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 		
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_USB_DRIVER)
diff --git a/LUFA/Drivers/USB/Core/Pipe.h b/LUFA/Drivers/USB/Core/Pipe.h
index ac49ee89e02e0d053704087ca08323875b6a486f..fb1c9d655a55a08f13cfe984ae91a869326e6d5c 100644
--- a/LUFA/Drivers/USB/Core/Pipe.h
+++ b/LUFA/Drivers/USB/Core/Pipe.h
@@ -84,6 +84,7 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_USB_DRIVER)
diff --git a/LUFA/Drivers/USB/Core/PipeStream.h b/LUFA/Drivers/USB/Core/PipeStream.h
index 5c3ab9d450fc36e489c52f7bdc42b9711cd8b6ce..c579631dc37ab19cc01ece64260075852dfa081d 100644
--- a/LUFA/Drivers/USB/Core/PipeStream.h
+++ b/LUFA/Drivers/USB/Core/PipeStream.h
@@ -51,6 +51,7 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 		#include "USBTask.h"
 		
 	/* Enable C linkage for C++ Compilers: */
diff --git a/LUFA/Drivers/USB/Core/StdRequestType.h b/LUFA/Drivers/USB/Core/StdRequestType.h
index 83bec4f2a31d1b225778830266e3761b3739c7da..e3e30f95f56d1502edb73a04b5f47c87aab35f07 100644
--- a/LUFA/Drivers/USB/Core/StdRequestType.h
+++ b/LUFA/Drivers/USB/Core/StdRequestType.h
@@ -51,6 +51,7 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_USB_DRIVER)
diff --git a/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c b/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c
index 9ae5a27c6da6ff8574eddfa1955fdf595dfe30eb..88dbcdaeb7e49c2190bfbec97f6b09c20ce83663 100644
--- a/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c
+++ b/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c
@@ -184,7 +184,7 @@ static void USB_Init_Host(void)
 
 	USB_Host_VBUS_Auto_On();
 
-	USB_INT_Enable(USB_INT_SRPI);
+	USB_INT_Enable(USB_INT_DCONNI);
 	USB_INT_Enable(USB_INT_BCERRI);
 
 	USB_Attach();
diff --git a/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.c b/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.c
index 0603d5c4a772dc7fb0cbb6722a3f13931c4137dc..77dbc9f99ff1c0e4d71ab88ab5b072dcfb98fa2a 100644
--- a/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.c
+++ b/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.c
@@ -160,10 +160,10 @@ ISR(USB_GEN_vect)
 		USB_HostState = HOST_STATE_Unattached;
 	}
 
-	if (USB_INT_HasOccurred(USB_INT_SRPI) && USB_INT_IsEnabled(USB_INT_SRPI))
+	if (USB_INT_HasOccurred(USB_INT_DCONNI) && USB_INT_IsEnabled(USB_INT_DCONNI))
 	{
-		USB_INT_Clear(USB_INT_SRPI);
-		USB_INT_Disable(USB_INT_SRPI);
+		USB_INT_Clear(USB_INT_DCONNI);
+		USB_INT_Disable(USB_INT_DCONNI);
 
 		EVENT_USB_Host_DeviceAttached();
 
diff --git a/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.h
index e2f96e621a9071d04fec46e8cc424d0faae90e7d..4100a01f72fa2e90fe3405ec7561133156cffc3c 100644
--- a/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.h
+++ b/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.h
@@ -60,19 +60,24 @@
 			enum USB_Interrupts_t
 			{
 				USB_INT_VBUSTI  = 0,
+				#if (defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__))
 				USB_INT_IDTI    = 1,
+				#endif
+				#if (defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__))
 				USB_INT_WAKEUPI = 2,
 				USB_INT_SUSPI   = 3,
 				USB_INT_EORSTI  = 4,
 				USB_INT_SOFI    = 5,
-				USB_INT_HSOFI   = 6,
-				USB_INT_DCONNI  = 7,
-				USB_INT_DDISCI  = 8,
-				USB_INT_RSTI    = 9,
-				USB_INT_BCERRI  = 10,
-				USB_INT_VBERRI  = 11,
-				USB_INT_SRPI    = 12,
-				USB_INT_RXSTPI  = 13,
+				USB_INT_RXSTPI  = 6,
+				#endif
+				#if (defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__))			
+				USB_INT_HSOFI   = 7,
+				USB_INT_DCONNI  = 8,
+				USB_INT_DDISCI  = 9,
+				USB_INT_RSTI    = 10,
+				USB_INT_BCERRI  = 11,
+				USB_INT_VBERRI  = 12,
+				#endif
 			};
 			
 		/* Inline Functions: */
@@ -84,9 +89,12 @@
 					case USB_INT_VBUSTI:
 						AVR32_USBB.USBCON.vbuste      = true;
 						break;
+					#if defined(USB_CAN_BE_BOTH)
 					case USB_INT_IDTI:
 						AVR32_USBB.USBCON.idte        = true;
 						break;
+					#endif
+					#if defined(USB_CAN_BE_DEVICE)
 					case USB_INT_WAKEUPI:
 						AVR32_USBB.UDINTESET.wakeupes = true;
 						break;
@@ -99,6 +107,11 @@
 					case USB_INT_SOFI:
 						AVR32_USBB.UDINTESET.sofes    = true;
 						break;
+					case USB_INT_RXSTPI:
+						// TODO
+						return;
+					#endif
+					#if defined(USB_CAN_BE_HOST)
 					case USB_INT_HSOFI:
 						AVR32_USBB.UHINTESET.hsofies  = true;
 						break;
@@ -117,10 +130,7 @@
 					case USB_INT_VBERRI:
 						AVR32_USBB.USBCON.vberre      = true;
 						break;
-					case USB_INT_SRPI:
-					case USB_INT_RXSTPI:
-						// TODO
-						return;
+					#endif
 				}
 			}
 
@@ -132,9 +142,12 @@
 					case USB_INT_VBUSTI:
 						AVR32_USBB.USBCON.vbuste      = false;
 						break;
+					#if defined(USB_CAN_BE_BOTH)
 					case USB_INT_IDTI:
 						AVR32_USBB.USBCON.idte        = false;
 						break;
+					#endif
+					#if defined(USB_CAN_BE_DEVICE)
 					case USB_INT_WAKEUPI:
 						AVR32_USBB.UDINTECLR.wakeupec = true;
 						break;
@@ -147,6 +160,11 @@
 					case USB_INT_SOFI:
 						AVR32_USBB.UDINTECLR.sofec    = true;
 						break;
+					case USB_INT_RXSTPI:
+						// TODO
+						return;
+					#endif
+					#if defined(USB_CAN_BE_HOST)
 					case USB_INT_HSOFI:
 						AVR32_USBB.UHINTECLR.hsofiec  = true;
 						break;
@@ -165,10 +183,7 @@
 					case USB_INT_VBERRI:
 						AVR32_USBB.USBCON.vberre      = false;
 						break;
-					case USB_INT_SRPI:
-					case USB_INT_RXSTPI:
-						// TODO
-						return;
+					#endif
 				}
 			}
 			
@@ -180,9 +195,12 @@
 					case USB_INT_VBUSTI:
 						AVR32_USBB.USBSTACLR.vbustic = true;
 						break;
+					#if defined(USB_CAN_BE_BOTH)
 					case USB_INT_IDTI:
 						AVR32_USBB.USBSTACLR.idtic   = true;
 						break;
+					#endif
+					#if defined(USB_CAN_BE_DEVICE)
 					case USB_INT_WAKEUPI:
 						AVR32_USBB.UDINTCLR.wakeupc  = true;
 						break;
@@ -195,6 +213,11 @@
 					case USB_INT_SOFI:
 						AVR32_USBB.UDINTCLR.sofc     = true;
 						break;
+					case USB_INT_RXSTPI:
+						// TODO
+						return;
+					#endif
+					#if defined(USB_CAN_BE_HOST)
 					case USB_INT_HSOFI:
 						AVR32_USBB.UHINTCLR.hsofic   = true;
 						break;
@@ -213,10 +236,7 @@
 					case USB_INT_VBERRI:
 						AVR32_USBB.USBSTACLR.vberric = true;
 						break;
-					case USB_INT_SRPI:
-					case USB_INT_RXSTPI:
-						// TODO
-						return;
+					#endif
 				}
 			}
 			
@@ -227,8 +247,11 @@
 				{
 					case USB_INT_VBUSTI:
 						return AVR32_USBB.USBCON.vbuste;
+					#if defined(USB_CAN_BE_BOTH)
 					case USB_INT_IDTI:
 						return AVR32_USBB.USBCON.idte;
+					#endif
+					#if defined(USB_CAN_BE_DEVICE)
 					case USB_INT_WAKEUPI:
 						return AVR32_USBB.UDINTE.wakeupe;
 					case USB_INT_SUSPI:
@@ -237,6 +260,11 @@
 						return AVR32_USBB.UDINTE.eorste;
 					case USB_INT_SOFI:
 						return AVR32_USBB.UDINTE.sofe;
+					case USB_INT_RXSTPI:
+						// TODO
+						return false;
+					#endif
+					#if defined(USB_CAN_BE_HOST)					
 					case USB_INT_HSOFI:
 						return AVR32_USBB.UHINTE.hsofie;
 					case USB_INT_DCONNI:
@@ -249,10 +277,7 @@
 						return AVR32_USBB.USBCON.bcerre;
 					case USB_INT_VBERRI:
 						return AVR32_USBB.USBCON.vberre;
-					case USB_INT_SRPI:
-					case USB_INT_RXSTPI:
-						// TODO
-						return false;
+					#endif
 				}
 				
 				return false;
@@ -265,8 +290,11 @@
 				{
 					case USB_INT_VBUSTI:
 						return AVR32_USBB.USBSTA.vbusti;
+					#if defined(USB_CAN_BE_BOTH)
 					case USB_INT_IDTI:
 						return AVR32_USBB.USBSTA.idti;
+					#endif
+					#if defined(USB_CAN_BE_DEVICE)
 					case USB_INT_WAKEUPI:
 						return AVR32_USBB.UDINT.wakeup;
 					case USB_INT_SUSPI:
@@ -275,6 +303,11 @@
 						return AVR32_USBB.UDINT.eorst;
 					case USB_INT_SOFI:
 						return AVR32_USBB.UDINT.sof;
+					case USB_INT_RXSTPI:
+						// TODO
+						return false;
+					#endif
+					#if defined(USB_CAN_BE_HOST)
 					case USB_INT_HSOFI:
 						return AVR32_USBB.UHINT.hsofi;
 					case USB_INT_DCONNI:
@@ -287,10 +320,7 @@
 						return AVR32_USBB.USBSTA.bcerri;
 					case USB_INT_VBERRI:
 						return AVR32_USBB.USBSTA.vberri;
-					case USB_INT_SRPI:
-					case USB_INT_RXSTPI:
-						// TODO
-						return false;
+					#endif
 				}
 
 				return false;
diff --git a/LUFA/Drivers/USB/Core/USBController.h b/LUFA/Drivers/USB/Core/USBController.h
index 719b97b6279586c1b6af6ce3b6b26bddaa437525..fc18029b681d1bff340d0a91fa716ef41b6549ae 100644
--- a/LUFA/Drivers/USB/Core/USBController.h
+++ b/LUFA/Drivers/USB/Core/USBController.h
@@ -50,6 +50,7 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 
 	/* Preprocessor Checks and Defines: */
 		#if !defined(__INCLUDE_FROM_USB_DRIVER)
diff --git a/LUFA/Drivers/USB/Core/USBInterrupt.h b/LUFA/Drivers/USB/Core/USBInterrupt.h
index b850f3fe77484b289663a4e71ad2e928f06d4a3e..735d0e164a7729ae09ea79cf499b67d8712b3b96 100644
--- a/LUFA/Drivers/USB/Core/USBInterrupt.h
+++ b/LUFA/Drivers/USB/Core/USBInterrupt.h
@@ -43,6 +43,7 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 		
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_USB_DRIVER)
diff --git a/LUFA/Drivers/USB/Core/USBTask.h b/LUFA/Drivers/USB/Core/USBTask.h
index f2ed7b7ba0e97b57a7d69dd3b0c8bd6f20fcb0e3..267c7e08e4bf1fbfb617c4e5768942f3c652ff5f 100644
--- a/LUFA/Drivers/USB/Core/USBTask.h
+++ b/LUFA/Drivers/USB/Core/USBTask.h
@@ -43,11 +43,11 @@
 
 	/* Includes: */
 		#include "../../../Common/Common.h"
+		#include "USBMode.h"		
 		#include "USBController.h"
 		#include "Events.h"
 		#include "StdRequestType.h"
 		#include "StdDescriptors.h"
-		#include "USBMode.h"
 
 		#if defined(USB_CAN_BE_DEVICE)
 			#include "DeviceStandardReq.h"