More porting of the USB core to the AVR32.
[pub/lufa.git] / LUFA / Drivers / USB / HighLevel / USBInterrupt.h
index 94f88e2..8fb152d 100644 (file)
 \r
        /* Preprocessor Checks: */\r
                #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
-                       #error Do not include this file directly. Include LUFA/Drivers/USB.h instead.\r
+                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
                #endif\r
                \r
        /* Private Interface - For use in library only: */\r
        #if !defined(__DOXYGEN__)\r
                /* Macros: */\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)  &= ~(USB_INT_GET_INT_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
+                       #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_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)           a\r
-                       #define USB_INT_GET_EN_MASK(a, b, c, d)          b\r
-                       #define USB_INT_GET_INT_REG(a, b, c, d)          c\r
-                       #define USB_INT_GET_INT_MASK(a, b, c, d)         d\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_MASK(a, b, c, d)  AVR32_USBB_ ## d\r
 \r
-                       #define USB_INT_VBUS                             USBCON, (1 << VBUSTE) , USBINT, (1 << VBUSTI)\r
-                       #define USB_INT_IDTI                             USBCON, (1 << IDTE)   , USBINT, (1 << IDTI)\r
-                       #define USB_INT_WAKEUP                           UDIEN , (1 << WAKEUPE), UDINT , (1 << WAKEUPI)\r
-                       #define USB_INT_SUSPEND                          UDIEN , (1 << SUSPE)  , UDINT , (1 << SUSPI)\r
-                       #define USB_INT_EORSTI                           UDIEN , (1 << EORSTE) , UDINT , (1 << EORSTI)\r
-                       #define USB_INT_DCONNI                           UHIEN , (1 << DCONNE) , UHINT , (1 << DCONNI)\r
-                       #define USB_INT_DDISCI                           UHIEN , (1 << DDISCE) , UHINT , (1 << DDISCI)\r
-                       #define USB_INT_BCERRI                           OTGIEN, (1 << BCERRE) , OTGINT, (1 << BCERRI)\r
-                       #define USB_INT_VBERRI                           OTGIEN, (1 << VBERRE) , OTGINT, (1 << VBERRI)\r
-                       #define USB_INT_SOFI                             UDIEN,  (1 << SOFE)   , UDINT , (1 << SOFI)\r
-                       #define USB_INT_HSOFI                            UHIEN,  (1 << HSOFE)  , UHINT , (1 << HSOFI)\r
-                       #define USB_INT_RSTI                             UHIEN , (1 << RSTE)   , UHINT , (1 << RSTI)\r
-                       #define USB_INT_SRPI                             OTGIEN, (1 << SRPE)   , OTGINT, (1 << SRPI)\r
-                       #define USB_INT_RXSTPI                           UEIENX, (1 << RXSTPE) , UEINTX, (1 << RXSTPI)\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_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_SOFI                      UDIEN,  UDIEN_SOFE_MASK   , UDINT , UDIEN_SOFI_MASK\r
+                               #define USB_INT_DCONNI                    UHIEN , UDIEN_DCONNE_MASK , UHINT , UHIEN_DCONNI_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
+                       #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
+                               #define USB_INT_Clear(int)        MACROS{ USB_INT_GET_INT_REG(int)  &= ~(USB_INT_GET_INT_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)    a\r
+                               #define USB_INT_GET_EN_MASK(a, b, c, d)   b\r
+                               #define USB_INT_GET_INT_REG(a, b, c, d)   c\r
+                               #define USB_INT_GET_INT_MASK(a, b, c, d)  d\r
+\r
+                               #define USB_INT_VBUS                      USBCON, (1 << VBUSTE) , USBINT, (1 << VBUSTI)\r
+                               #define USB_INT_IDTI                      USBCON, (1 << IDTE)   , USBINT, (1 << IDTI)\r
+                               #define USB_INT_WAKEUP                    UDIEN , (1 << WAKEUPE), UDINT , (1 << WAKEUPI)\r
+                               #define USB_INT_SUSPEND                   UDIEN , (1 << SUSPE)  , UDINT , (1 << SUSPI)\r
+                               #define USB_INT_EORSTI                    UDIEN , (1 << EORSTE) , UDINT , (1 << EORSTI)\r
+                               #define USB_INT_SOFI                      UDIEN,  (1 << SOFE)   , UDINT , (1 << SOFI)\r
+                               #define USB_INT_DCONNI                    UHIEN , (1 << DCONNE) , UHINT , (1 << DCONNI)\r
+                               #define USB_INT_DDISCI                    UHIEN , (1 << DDISCE) , UHINT , (1 << DDISCI)\r
+                               #define USB_INT_HSOFI                     UHIEN,  (1 << HSOFE)  , UHINT , (1 << HSOFI)\r
+                               #define USB_INT_RSTI                      UHIEN , (1 << RSTE)   , UHINT , (1 << RSTI)\r
+                               #define USB_INT_BCERRI                    OTGIEN, (1 << BCERRE) , OTGINT, (1 << BCERRI)\r
+                               #define USB_INT_VBERRI                    OTGIEN, (1 << VBERRE) , OTGINT, (1 << VBERRI)\r
+                               #define USB_INT_SRPI                      OTGIEN, (1 << SRPE)   , OTGINT, (1 << SRPI)\r
+                               #define USB_INT_RXSTPI                    UEIENX, (1 << RXSTPE) , UEINTX, (1 << RXSTPI)\r
+                       #endif\r
        \r
                /* Function Prototypes: */\r
                        void USB_INT_ClearAllInterrupts(void);\r