More AVR32 achitecture ports.
authorDean Camera <dean@fourwalledcubicle.com>
Wed, 24 Feb 2010 06:21:46 +0000 (06:21 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Wed, 24 Feb 2010 06:21:46 +0000 (06:21 +0000)
LUFA/Drivers/Peripheral/AVR32/SPI.h
LUFA/Drivers/USB/Class/Device/RNDIS.c
LUFA/Drivers/USB/HighLevel/USBInterrupt.c
LUFA/Drivers/USB/HighLevel/USBInterrupt.h
LUFA/Drivers/USB/HighLevel/USBTask.h
LUFA/Drivers/USB/LowLevel/Device.h
LUFA/Drivers/USB/LowLevel/Endpoint.h
LUFA/Drivers/USB/LowLevel/LowLevel.h
LUFA/Drivers/USB/LowLevel/Pipe.h
LUFA/Drivers/USB/USB.h
LUFA/ManPages/VIDAndPIDValues.txt

index 4322eaa..379ce7f 100644 (file)
                        /** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 32. */\r
                        #define SPI_SPEED_FCPU_DIV_32          AVR32_SPI_MR_FDIV_MASK\r
                        \r
+                       /** SPI chip selection mode for direct peripheral-to-CS pin connections. */\r
+                       #define SPI_CS_4BITDECODER             AVR32_SPI_MR_PSDEC_MASK\r
+                       \r
+                       /** SPI chip selection mode for peripheral CS pin connections through a 4-bit decoder. */\r
+                       #define SPI_CS_DIRECT                  0\r
+                       \r
                        /** SPI mode mask for SPI_Init(). Indicates that the SPI interface should be initialized into slave mode. */\r
                        #define SPI_MODE_SLAVE                 0\r
 \r
                         *        configure these seperately to connect the SPI module to the desired GPIO pins via the\r
                         *        GPIO MUX registers.\r
                         *\r
-                        *  \param[in] SPIOptions  SPI Options, a mask consisting of one of each of the SPI_SPEED_*\r
-                        *                         and SPI_MODE_* masks\r
+                        *  \param[in] SPIOptions  SPI Options, a mask consisting of one of each of the SPI_SPEED_*,\r
+                        *                         SPI_CS_* and SPI_MODE_* masks\r
                         */\r
                        static inline void SPI_Init(const uintN_t SPIOptions)\r
                        {\r
-                               AVR32_SPI.cr = (AVR32_SPI_CR_SPIEN_MASK | AVR32_SPI_CR_SWRST_MASK);\r
+                               AVR32_PM.pbamask = (1 << 5);\r
+\r
+                               AVR32_SPI.CR.swrst = true;\r
+                               AVR32_SPI.CR.spien = true;\r
                                AVR32_SPI.mr = SPIOptions;\r
                        }\r
 \r
                        static inline void SPI_ShutDown(void)\r
                        {\r
                                AVR32_SPI.cr = AVR32_SPI_CR_SPIDIS_MASK;\r
+\r
+                               AVR32_PM.pbamask &= ~(1 << 5);\r
                        }\r
                        \r
                        /** Sends and receives a transfer through the SPI interface, blocking until the transfer is complete.\r
                        static inline uint16_t SPI_Transfer(const uint16_t Data) ATTR_ALWAYS_INLINE;\r
                        static inline uint16_t SPI_Transfer(const uint16_t Data)\r
                        {\r
-                               AVR32_SPI.TDR.td = Data;\r
                                while (!(AVR32_SPI.SR.tdre));\r
-                               return AVR32_SPI.rdr;\r
+                               AVR32_SPI.TDR.td = Data;\r
+\r
+                               while ((AVR32_SPI.sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) !=\r
+                                                      (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK));\r
+                               return AVR32_SPI.RDR.rd;\r
                        }\r
 \r
                        /** Sends a transfer through the SPI interface, blocking until the transfer is complete. The response\r
                        static inline void SPI_Send(const uint16_t Data) ATTR_ALWAYS_INLINE;\r
                        static inline void SPI_Send(const uint16_t Data)\r
                        {\r
-                               AVR32_SPI.TDR.td = Data;\r
                                while (!(AVR32_SPI.SR.tdre));\r
+                               AVR32_SPI.TDR.td = Data;\r
                        }\r
 \r
                        /** Sends a dummy transfer through the SPI interface, blocking until the transfer is complete. The response\r
                        static inline uint16_t SPI_Receive(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;\r
                        static inline uint16_t SPI_Receive(void)\r
                        {\r
-                               AVR32_SPI.TDR.td = 0x0000;\r
                                while (!(AVR32_SPI.SR.tdre));\r
+                               AVR32_SPI.TDR.td = 0x0000;\r
+\r
+                               while ((AVR32_SPI.sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) !=\r
+                                                      (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK));\r
                                return AVR32_SPI.RDR.rd;\r
                        }\r
 \r
index 1961e7e..197fe6b 100644 (file)
@@ -345,7 +345,11 @@ static bool RNDIS_Device_ProcessNDISQuery(USB_ClassInfo_RNDIS_Device_t* const RN
                case OID_GEN_SUPPORTED_LIST:\r
                        *ResponseSize = sizeof(AdapterSupportedOIDList);\r
                        \r
-                       memcpy_P(ResponseData, AdapterSupportedOIDList, sizeof(AdapterSupportedOIDList));\r
+                       #if defined(__AVR32__)\r
+                       memcpy(ResponseData, AdapterSupportedOIDList, sizeof(AdapterSupportedOIDList));                 \r
+                       #elif defined(__AVR__)\r
+                       memcpy_P(ResponseData, AdapterSupportedOIDList, sizeof(AdapterSupportedOIDList));                       \r
+                       #endif\r
                        \r
                        return true;\r
                case OID_GEN_PHYSICAL_MEDIUM:\r
index f8da7e6..f009a0a 100644 (file)
@@ -51,17 +51,24 @@ void USB_INT_DisableAllInterrupts(void)
 \r
 void USB_INT_ClearAllInterrupts(void)\r
 {\r
-       #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
-       USBINT  = 0;\r
-       #endif\r
-       \r
-       #if defined(USB_CAN_BE_HOST)\r
-       UHINT   = 0;\r
-       OTGINT  = 0;\r
-       #endif\r
-       \r
-       #if defined(USB_CAN_BE_DEVICE)\r
-       UDINT   = 0;\r
+       #if defined(__AVR32__)\r
+               AVR32_USBB.USBSTACLR = 0xFFFFFF;\r
+               AVR32_USBB.UHINTCLR = 0xFFFFFF;\r
+               AVR32_USBB.UECONX = \r
+               AVR32_USBB.UDINTCLR = 0xFFFFFF;         \r
+       #elif defined(__AVR__)\r
+               #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+               USBINT  = 0;\r
+               #endif\r
+               \r
+               #if defined(USB_CAN_BE_HOST)\r
+               UHINT   = 0;\r
+               OTGINT  = 0;\r
+               #endif\r
+               \r
+               #if defined(USB_CAN_BE_DEVICE)\r
+               UDINT   = 0;\r
+               #endif\r
        #endif\r
 }\r
 \r
index 8fb152d..482ba0e 100644 (file)
                        #if defined(__AVR32__)\r
                                #define USB_INT_Enable(int)       MACROS{ USB_INT_GET_EN_REG(int)   |=   USB_INT_GET_EN_MASK(int);   }MACROE\r
                                #define USB_INT_Disable(int)      MACROS{ USB_INT_GET_EN_REG(int)   &= ~(USB_INT_GET_EN_MASK(int));  }MACROE\r
-                               #define USB_INT_Clear(int)        MACROS{ USB_INT_GET_INT_REG(int) ## CLR |= USB_INT_GET_INT_MASK(int) ## C; }MACROE\r
+                               #define USB_INT_Clear(int)        MACROS{ USB_INT_GET_INTC_REG(int) |=   USB_INT_GET_INTC_MASK(int); }MACROE\r
                                #define USB_INT_IsEnabled(int)          ((USB_INT_GET_EN_REG(int)   &    USB_INT_GET_EN_MASK(int)) ? true : false)\r
                                #define USB_INT_HasOccurred(int)        ((USB_INT_GET_INT_REG(int)  &    USB_INT_GET_INT_MASK(int)) ? true : false)\r
 \r
-                               #define USB_INT_GET_EN_REG(a, b, c, d)    *((volatile uint32_t*)AVR32_USBB_ ## a)\r
+                               #define USB_INT_GET_EN_REG(a, b, c, d)    *( (volatile uint32_t*)AVR32_USBB_ ## a )\r
                                #define USB_INT_GET_EN_MASK(a, b, c, d)   AVR32_USBB_ ## b\r
-                               #define USB_INT_GET_INT_REG(a, b, c, d)   *((volatile uint32_t*)AVR32_USBB_ ## c)\r
+                               #define USB_INT_GET_INT_REG(a, b, c, d)   *( (volatile uint32_t*)AVR32_USBB_ ## c )\r
                                #define USB_INT_GET_INT_MASK(a, b, c, d)  AVR32_USBB_ ## d\r
+                               #define USB_INT_GET_INTC_REG(a, b, c, d)  *( (volatile uint32_t*)AVR32_USBB_ ## c ## CLR )\r
+                               #define USB_INT_GET_INTC_MASK(a, b, c, d) AVR32_USBB_ ## d ## C\r
 \r
                                #define USB_INT_VBUS                      USBCON, USBCON_VBUSTE_MASK, USBSTA, USBSTA_VBUSTI_MASK\r
-                               #define USB_INT_IDTI                      USBCON, USBCON_IDTE_MASK  , USBINT, USBCON_IDTI_MASK\r
+                               #define USB_INT_IDTI                      USBCON, USBCON_IDTE_MASK  , USBSTA, USBCON_IDTI_MASK\r
                                #define USB_INT_WAKEUP                    UDIEN , UDIEN_WAKEUPE_MASK, UDINT , UDIEN_WAKEUPI_MASK\r
                                #define USB_INT_SUSPEND                   UDIEN , UDIEN_SUSPE_MASK  , UDINT , UDIEN_SUSPI_MASK\r
                                #define USB_INT_EORSTI                    UDIEN , UDIEN_EORSTE_MASK , UDINT , UDIEN_EORSTI_MASK\r
                                #define USB_INT_DDISCI                    UHIEN , UDIEN_DDISCE_MASK , UHINT , UHIEN_DDISCI_MASK\r
                                #define USB_INT_HSOFI                     UHIEN,  UHIEN_HSOFE_MASK  , UHINT , UHIEN_HSOFI_MASK\r
                                #define USB_INT_RSTI                      UHIEN , UHIEN_RSTE_MASK   , UHINT , UHIEN_RSTI_MASK\r
-                               #define USB_INT_RXSTPI                    UEIENX, UEIENX_RXSTPE_MASK, UEINTX, UEIENX_RXSTPI_MASK                        \r
-                               #define USB_INT_BCERRI                    OTGIEN, OTGIEN_BCERRE_MASK, OTGINT, OTGIEN_BCERRI_MASK\r
-                               #define USB_INT_VBERRI                    OTGIEN, OTGIEN_VBERRE_MASK, OTGINT, OTGIEN_VBERRI_MASK\r
-                               #define USB_INT_SRPI                      OTGIEN, OTGIEN_SRPE_MASK  , OTGINT, OTGIEN_SRPI_MASK\r
+                               #define USB_INT_RXSTPI                    UECONX, UECONX_RXSTPE_MASK, UESTAX, UESTAX_RXSTPI_MASK\r
+                               #define USB_INT_BCERRI                    USBCON, USBCON_BCERRE_MASK, USBSTA, USBSTA_BCERRI_MASK\r
+                               #define USB_INT_VBERRI                    USBCON, USBCON_VBERRE_MASK, USBSTA, USBSTA_VBERRI_MASK\r
+                               #define USB_INT_SRPI                      USBCON, USBCON_SRPE_MASK  , USBSTA, USBSTA_SRPI_MASK\r
                        #elif defined(__AVR__)\r
                                #define USB_INT_Enable(int)       MACROS{ USB_INT_GET_EN_REG(int)   |=   USB_INT_GET_EN_MASK(int);   }MACROE\r
                                #define USB_INT_Disable(int)      MACROS{ USB_INT_GET_EN_REG(int)   &= ~(USB_INT_GET_EN_MASK(int));  }MACROE\r
index e65a5df..f2aa03b 100644 (file)
@@ -87,7 +87,7 @@
                         extern USB_Request_Header_t USB_ControlRequest;\r
                        \r
                        #if defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__)\r
-                               #if (!defined(__AVR32__) && !defined(HOST_STATE_AS_GPIOR)) || defined(__DOXYGEN__)\r
+                               #if (!defined(__AVR32__) || !defined(HOST_STATE_AS_GPIOR)) || defined(__DOXYGEN__)\r
                                        /** Indicates the current host state machine state. When in host mode, this indicates the state\r
                                         *  via one of the values of the \ref USB_Host_States_t enum values.\r
                                         *\r
                        #endif\r
 \r
                        #if defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__)\r
-                               #if (!defined(__AVR32__) && !defined(DEVICE_STATE_AS_GPIOR)) || defined(__DOXYGEN__)\r
+                               #if (defined(__AVR32__) || !defined(DEVICE_STATE_AS_GPIOR)) || defined(__DOXYGEN__)\r
                                        /** Indicates the current device state machine state. When in device mode, this indicates the state\r
                                         *  via one of the values of the \ref USB_Device_States_t enum values.\r
                                         *\r
index 11fb33a..c1a1d92 100644 (file)
                                #define USB_Device_SetLowSpeed()          MACROS{ AVR32_USBB.UDCON.ls = true;  }MACROE\r
                                #define USB_Device_SetFullSpeed()         MACROS{ AVR32_USBB.UDCON.ls = false; }MACROE\r
                                \r
-                               #define USB_Device_SetDeviceAddress(addr) MACROS{ AVR32_USBB.UDADDR = (AVR32_USBB_UDCON_ADDEN_MASK | DeviceAddress); }MACROE                    \r
+                               #define USB_Device_SetDeviceAddress(addr) MACROS{ AVR32_USBB.UDCON.uadd = DeviceAddress; AVR32_USBB.UDCON.adden = true; }MACROE                 \r
                        #elif defined(__AVR__)\r
                                #define USB_Device_SetLowSpeed()          MACROS{ UDCON |=  (1 << LSM);   }MACROE\r
                                #define USB_Device_SetFullSpeed()         MACROS{ UDCON &= ~(1 << LSM);   }MACROE\r
index 6b16fd7..8431573 100644 (file)
                        #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
                #endif\r
                \r
+               #if defined(__AVR32__) && !defined(__AVR32_EPREG_X)\r
+                       #define __AVR32_EPREG_X(x) ((volatile uint32_t*)AVR32_USBB_ ## x)[USB_SelectedEPNumber]                 \r
+               #endif\r
+\r
        /* Public Interface - May be used in end-application: */\r
                /* Macros: */\r
                        #if defined(__AVR32__) || defined(__DOXYGEN__)\r
                                        #if !defined(CONTROL_ONLY_DEVICE)\r
                                                #define Endpoint_GetCurrentEndpoint()     USB_SelectedEPNumber\r
                                                #define Endpoint_SelectEndpoint(epnum)    MACROS{ USB_SelectedEPNumber = (epnum); }MACROE                                       \r
-                                               #define Endpoint_IsReadWriteAllowed()     (__AVR32_EPREG_X(UESTA0) & AVR32_USBB_RWAL_MASK)\r
+                                               #define Endpoint_IsReadWriteAllowed()     (__AVR32_EPREG_X(UESTA0) & AVR32_USBB_RWALL_MASK)\r
                                        #else\r
                                                #define Endpoint_GetCurrentEndpoint()     ENDPOINT_CONTROLEP\r
                                                #define Endpoint_SelectEndpoint(epnum)    (void)(epnum)\r
                                        #endif\r
 \r
-                                       #define Endpoint_ResetFIFO(epnum)             MACROS{ AVR32_USBB.UERST |=  (AVR32_USBB_EPRST0_MASK << (epnum)); \\r
-                                                                                             AVR32_USBB.UERST &= ~(AVR32_USBB_EPRST0_MASK << (epnum));     }MACROE\r
-                                       #define Endpoint_EnableEndpoint()             MACROS{ AVR32_USBB.UERST |=  (AVR32_USBB_UERST_EPEN0_MASK << (epen)); }MACROE\r
-                                       #define Endpoint_DisableEndpoint()            MACROS{ AVR32_USBB.UERST &= ~(AVR32_USBB_UERST_EPEN0_MASK << (epen)); }MACROE\r
-                                       #define Endpoint_IsEnabled()                        ((AVR32_USBB.UERST & (AVR32_USBB_UERST_EPEN0_MASK << (epen))) ? true : false)\r
+                                       #define Endpoint_ResetFIFO(epnum)             MACROS{ AVR32_USBB.uerst |=  (AVR32_USBB_EPRST0_MASK << (epnum)); \\r
+                                                                                             AVR32_USBB.uerst &= ~(AVR32_USBB_EPRST0_MASK << (epnum));     }MACROE\r
+                                       #define Endpoint_EnableEndpoint()             MACROS{ AVR32_USBB.uerst |=  (AVR32_USBB_UERST_EPEN0_MASK << USB_SelectedEPNumber); }MACROE\r
+                                       #define Endpoint_DisableEndpoint()            MACROS{ AVR32_USBB.uerst &= ~(AVR32_USBB_UERST_EPEN0_MASK << USB_SelectedEPNumber); }MACROE\r
+                                       #define Endpoint_IsEnabled()                        ((AVR32_USBB.uerst & (AVR32_USBB_UERST_EPEN0_MASK << USB_SelectedEPNumber)) ? true : false)\r
                                        \r
                                        #define Endpoint_IsConfigured()                     ((__AVR32_EPREG_X(UESTA0) & AVR32_USBB_UESTA0_CFGOK_MASK) ? true : false)\r
                                        #define Endpoint_GetEndpointInterrupts()             (AVR32_USBB.UDINT >> AVR32_USBB_EP0INT)\r
index 2c8ade7..3c98c6d 100644 (file)
                #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
                        #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\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
-               #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
+               \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
-               #endif\r
                \r
-               #if !defined(USB_PLL_PSC)\r
-                       #error No PLL prescale value available for chosen F_CPU value and AVR model.\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
+                       #endif\r
+                       \r
+                       #if !defined(USB_PLL_PSC)\r
+                               #error No PLL prescale value available for chosen F_CLOCK value and AVR model.\r
+                       #endif\r
                #endif\r
                \r
        /* Public Interface - May be used in end-application: */\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
index fca44d8..ab11a55 100644 (file)
                        #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
                #endif\r
                \r
+               #if defined(__AVR32__) && !defined(__AVR32_EPREG_X)\r
+                       #define __AVR32_EPREG_X(x) ((volatile uint32_t*)AVR32_USBB_ ## x)[USB_SelectedEPNumber]                 \r
+               #endif\r
+\r
        /* Public Interface - May be used in end-application: */\r
                /* Macros: */\r
                        /** Mask for \ref Pipe_GetErrorFlags(), indicating that an overflow error occurred in the pipe on the received data. */\r
index d648ebe..406a909 100644 (file)
                        #define __INCLUDE_FROM_USB_DRIVER\r
                #endif\r
                \r
-               #if defined(__AVR32__)\r
-                       #define __AVR32_EPREG_X(x) ((volatile uint32_t*)AVR32_USBB_ ## x)[USB_SelectedEPNumber]                 \r
-               #endif\r
-\r
        /* Includes: */\r
                #include "HighLevel/USBMode.h"\r
 \r
index 5c17d52..b5c1874 100644 (file)
  *     0x2064\r
  *    </td>\r
  *    <td>\r
- *     <i>Currently Unallocated</i>\r
+ *     Interfaceless Control-Only LUFA Devices\r
  *    </td>\r
  *   </tr>\r
  *\r