#ifndef __USBLOWLEVEL_H__\r
#define __USBLOWLEVEL_H__\r
\r
- /* External Variables: */\r
- #if defined(__AVR32__)\r
- #if !defined(CONTROL_ONLY_DEVICE)\r
- extern uint8_t USB_SelectedEPNumber;\r
- #else\r
- #define USB_SelectedEPNumber 0\r
- #endif\r
- #endif\r
- \r
/* Includes: */\r
- #if defined(__AVR32__)\r
- #include <avr32/io.h>\r
- #include <stdint.h>\r
- #include <stdbool.h>\r
- #elif defined(__AVR__)\r
- #include <avr/io.h>\r
- #include <avr/interrupt.h>\r
- #include <stdbool.h>\r
- #endif\r
- \r
+ #include <avr/io.h>\r
+ #include <avr/interrupt.h>\r
+ #include <stdbool.h>\r
+ \r
#include "../HighLevel/USBMode.h"\r
\r
#include "../../../Common/Common.h"\r
\r
/* Preprocessor Checks and Defines: */\r
#if !defined(__INCLUDE_FROM_USB_DRIVER)\r
- #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
+ #error Do not include this file directly. Include LUFA/Drivers/USB.h instead.\r
#endif\r
- \r
- #if defined(__AVR32__)\r
- #define USB_PLL_PSC 0\r
- #elif defined(__AVR__)\r
- #if !defined(F_CLOCK)\r
- #error F_CLOCK is not defined. You must define F_CLOCK to the frequency of the unprescaled input clock in your project makefile.\r
- #endif\r
- \r
- #if (F_CLOCK == 8000000)\r
- #if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \\r
- defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || \\r
- defined(__AVR_ATmega32U2__))\r
- #define USB_PLL_PSC 0\r
- #elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))\r
- #define USB_PLL_PSC 0\r
- #elif (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) || defined(__AVR_ATmega32U6__))\r
- #define USB_PLL_PSC ((1 << PLLP1) | (1 << PLLP0))\r
- #elif (defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1287__))\r
- #define USB_PLL_PSC ((1 << PLLP1) | (1 << PLLP0))\r
- #endif\r
- #elif (F_CLOCK == 16000000)\r
- #if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \\r
- defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || \\r
- defined(__AVR_ATmega32U2__))\r
- #define USB_PLL_PSC (1 << PLLP0)\r
- #elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))\r
- #define USB_PLL_PSC (1 << PINDIV)\r
- #elif (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_ATmega32U6__))\r
- #define USB_PLL_PSC ((1 << PLLP2) | (1 << PLLP1))\r
- #elif (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__))\r
- #define USB_PLL_PSC ((1 << PLLP2) | (1 << PLLP0))\r
- #endif\r
+\r
+ #if !defined(F_CLOCK)\r
+ #error F_CLOCK is not defined. You must define F_CLOCK to the frequency of the unprescaled input clock in your project makefile.\r
+ #endif\r
+ \r
+ #if (F_CLOCK == 8000000)\r
+ #if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \\r
+ defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || \\r
+ defined(__AVR_ATmega32U2__))\r
+ #define USB_PLL_PSC 0\r
+ #elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))\r
+ #define USB_PLL_PSC 0\r
+ #elif (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) || defined(__AVR_ATmega32U6__))\r
+ #define USB_PLL_PSC ((1 << PLLP1) | (1 << PLLP0))\r
+ #elif (defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1287__))\r
+ #define USB_PLL_PSC ((1 << PLLP1) | (1 << PLLP0))\r
#endif\r
- \r
- #if !defined(USB_PLL_PSC)\r
- #error No PLL prescale value available for chosen F_CLOCK value and AVR model.\r
+ #elif (F_CLOCK == 16000000)\r
+ #if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \\r
+ defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || \\r
+ defined(__AVR_ATmega32U2__))\r
+ #define USB_PLL_PSC (1 << PLLP0)\r
+ #elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))\r
+ #define USB_PLL_PSC (1 << PINDIV)\r
+ #elif (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_ATmega32U6__))\r
+ #define USB_PLL_PSC ((1 << PLLP2) | (1 << PLLP1))\r
+ #elif (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__))\r
+ #define USB_PLL_PSC ((1 << PLLP2) | (1 << PLLP0))\r
#endif\r
#endif\r
\r
+ #if !defined(USB_PLL_PSC)\r
+ #error No PLL prescale value available for chosen F_CPU value and AVR model.\r
+ #endif\r
+ \r
/* Public Interface - May be used in end-application: */\r
/* Macros: */\r
/** Mode mask for the \ref USB_CurrentMode global. This indicates that the USB interface is currently not\r
*\r
* \note This token is not available on AVR models which do not support both host and device modes.\r
*/\r
- #define USB_MODE_UID 3\r
+ #define USB_MODE_UID 3\r
#endif\r
\r
/** Regulator disable option mask for \ref USB_Init(). This indicates that the internal 3.3V USB data pad\r
*\r
* \note This token is not available on some AVR models which do not support hardware VBUS monitoring.\r
*/\r
- #define USB_VBUS_GetStatus() ((USBSTA & (1 << VBUS)) ? true : false)\r
+ #define USB_VBUS_GetStatus() ((USBSTA & (1 << VBUS)) ? true : false)\r
#endif\r
\r
/** Detaches the device from the USB bus. This has the effect of removing the device from any\r
#define USB_Controller_Disable() MACROS{ USBCON &= ~(1 << USBE); }MACROE\r
#define USB_Controller_Reset() MACROS{ const uint8_t Temp = USBCON; USBCON = (Temp & ~(1 << USBE)); \\r
USBCON = (Temp | (1 << USBE)); }MACROE\r
+ \r
/* Inline Functions: */\r
#if defined(USB_CAN_BE_BOTH)\r
static inline uint8_t USB_GetUSBModeFromUID(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
static inline uint8_t USB_GetUSBModeFromUID(void)\r
{\r
- #if defined(__AVR32__)\r
- if (AVR32_USBB.USBSTA.id)\r
- return USB_MODE_DEVICE;\r
- else\r
- return USB_MODE_HOST; \r
- #elif defined(__AVR__)\r
if (USBSTA & (1 << ID))\r
return USB_MODE_DEVICE;\r
else\r
return USB_MODE_HOST;\r
- #endif\r
}\r
#endif\r
\r