aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2012-05-05 19:46:20 +0000
committerDean Camera <dean@fourwalledcubicle.com>2012-05-05 19:46:20 +0000
commit0e434c8f8fc1e33230a9b9c54583d59a232553e5 (patch)
treecd0812d13511928f5d7df6ac78fb51356c753890
parent2d98e5499b42ca4feda390d5bd867aa956bf7f11 (diff)
downloadlufa-0e434c8f8fc1e33230a9b9c54583d59a232553e5.tar.gz
lufa-0e434c8f8fc1e33230a9b9c54583d59a232553e5.tar.bz2
lufa-0e434c8f8fc1e33230a9b9c54583d59a232553e5.zip
Add additional preprocessor sanity checks for the XMEGA platform based on the USB controller input clock speed.
-rw-r--r--LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h10
-rw-r--r--LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c6
-rw-r--r--LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h2
3 files changed, 12 insertions, 6 deletions
diff --git a/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h b/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h
index 268fe95c0..4d75cc2a2 100644
--- a/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h
+++ b/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h
@@ -92,10 +92,12 @@
*/
#define USB_DEVICE_OPT_LOWSPEED (1 << 0)
- /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the
- * USB interface should be initialized in full speed (12Mb/s) mode.
- */
- #define USB_DEVICE_OPT_FULLSPEED (0 << 0)
+ #if (F_USB > 6000000)
+ /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the
+ * USB interface should be initialized in full speed (12Mb/s) mode.
+ */
+ #define USB_DEVICE_OPT_FULLSPEED (0 << 0)
+ #endif
//@}
#if (!defined(NO_INTERNAL_SERIAL) || defined(__DOXYGEN__))
diff --git a/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c b/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c
index ffdca3adf..844ef650f 100644
--- a/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c
+++ b/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c
@@ -105,11 +105,15 @@ void USB_Disable(void)
void USB_ResetInterface(void)
{
+ #if defined(USB_DEVICE_OPT_FULLSPEED)
if (USB_Options & USB_DEVICE_OPT_LOWSPEED)
CLK.USBCTRL = (((F_USB / 6000000) - 1) << CLK_USBPSDIV_gp);
else
CLK.USBCTRL = (((F_USB / 48000000) - 1) << CLK_USBPSDIV_gp);
-
+ #else
+ CLK.USBCTRL = (((F_USB / 6000000) - 1) << CLK_USBPSDIV_gp);
+ #endif
+
if (USB_Options & USB_OPT_PLLCLKSRC)
CLK.USBCTRL |= (CLK_USBSRC_PLL_gc | CLK_USBSEN_bm);
else
diff --git a/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h b/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h
index 1cdb6f03c..25402e855 100644
--- a/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h
+++ b/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h
@@ -95,7 +95,7 @@
#error F_USB is not defined. You must define F_USB to the frequency of the unprescaled USB controller clock in your project makefile.
#endif
- #if (F_USB % 6000000)
+ #if ((F_USB % 6000000) || (F_USB < 6000000))
#error Invalid F_USB specified. F_USB must be a multiple of 6MHz for USB Low Speed operation, and a multiple of 48MHz for Full Speed operation.
#endif