More AVR32 achitecture ports.
[pub/lufa.git] / LUFA / Drivers / USB / HighLevel / USBInterrupt.h
index 14f6930..482ba0e 100644 (file)
@@ -1,21 +1,21 @@
 /*\r
              LUFA Library\r
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
+     Copyright (C) Dean Camera, 2010.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
 \r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
+  Permission to use, copy, modify, distribute, and sell this \r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in \r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting \r
+  documentation, and that the name of the author not be used in \r
+  advertising or publicity pertaining to distribution of the \r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
 #define __USBINTERRUPT_H__\r
 \r
        /* Includes: */\r
 #define __USBINTERRUPT_H__\r
 \r
        /* Includes: */\r
-               #include <avr/io.h>\r
-               #include <stdbool.h>\r
+               #if defined(__AVR32__)\r
+                       #include <avr32/io.h>\r
+                       #include <stdbool.h>\r
+                       #include <stdint.h>\r
+               #elif defined(__AVR__)\r
+                       #include <avr/io.h>\r
+                       #include <stdbool.h>\r
+               #endif\r
                \r
                #include "../../../Common/Common.h"\r
                #include "../LowLevel/LowLevel.h"\r
                \r
                #include "../../../Common/Common.h"\r
                #include "../LowLevel/LowLevel.h"\r
                        extern "C" {\r
                #endif\r
 \r
                        extern "C" {\r
                #endif\r
 \r
+       /* Preprocessor Checks: */\r
+               #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
        /* Private Interface - For use in library only: */\r
        #if !defined(__DOXYGEN__)\r
                /* Macros: */\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_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_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
+                               #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  , 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_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                    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
+                               #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
 \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)    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
 \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_ENDPOINT_SETUP                   UEIENX, (1 << RXSTPE) , UEINTX, (1 << RXSTPI)\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
        \r
                /* Function Prototypes: */\r
                        void USB_INT_ClearAllInterrupts(void);\r