From bc41cbd26d26c9e8e4656948377d157fa3585ee9 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Thu, 14 Jul 2011 05:38:32 +0000 Subject: Add support for triple endpoint/pipe bank AVR32 UC3 devices. --- LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h | 13 ++++++++++++- LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h | 11 +++++++++++ LUFA/Drivers/USB/Core/UC3/USBController_UC3.h | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) (limited to 'LUFA') diff --git a/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h b/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h index a5870f8cf..84566624f 100644 --- a/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h +++ b/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h @@ -117,7 +117,7 @@ #define ENDPOINT_DETAILS_EP3 512, 2 #define ENDPOINT_DETAILS_EP4 512, 2 #define ENDPOINT_DETAILS_EP5 512, 2 - #define ENDPOINT_DETAILS_EP6 512, 2 + #define ENDPOINT_DETAILS_EP6 512, 2 #define ENDPOINT_DETAILS_EP7 512, 2 #elif defined(USB_SERIES_UC3B0_AVR32) || defined(USB_SERIES_UC3B1_AVR32) #define ENDPOINT_DETAILS_MAXEP 7 @@ -190,6 +190,17 @@ * accesses the second bank. */ #define ENDPOINT_BANK_DOUBLE AVR32_USBB_UECFG0_EPBK_DOUBLE + + #if defined(USB_SERIES_UC3A3_AVR32) || defined(USB_SERIES_UC3A4_AVR32) || defined(__DOXYGEN__) + /** Mask for the bank mode selection for the \ref Endpoint_ConfigureEndpoint() macro. This indicates + * that the endpoint should have three banks, which requires more USB FIFO memory but results + * in faster transfers as one USB device (the AVR or the host) can access one bank while the other + * accesses the remaining banks. + * + * \note Not available on all AVR models. + */ + #define ENDPOINT_BANK_TRIPLE AVR32_USBB_UECFG0_EPBK_TRIPLE + #endif //@} #if (!defined(FIXED_CONTROL_ENDPOINT_SIZE) || defined(__DOXYGEN__)) diff --git a/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h b/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h index ae8f0363c..25a4586d8 100644 --- a/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h +++ b/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h @@ -161,6 +161,17 @@ * bank. */ #define PIPE_BANK_DOUBLE AVR32_USBB_UPCFG0_PBK_DOUBLE + + #if defined(USB_SERIES_UC3A3_AVR32) || defined(USB_SERIES_UC3A4_AVR32) || defined(__DOXYGEN__) + /** Mask for the bank mode selection for the \ref Pipe_ConfigurePipe() macro. This indicates that the + * pipe should have three banks, which requires more USB FIFO memory but results in faster transfers + * as one USB device (the AVR or the attached device) can access one bank while the other accesses the + * remaining banks. + * + * \note Not available on all AVR models. + */ + #define PIPE_BANK_TRIPLE AVR32_USBB_UPCFG0_PBK_TRIPLE + #endif //@} /** Default size of the default control pipe's bank, until altered by the Endpoint0Size value diff --git a/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h b/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h index 0bad549ca..c2f85b8af 100644 --- a/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h +++ b/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h @@ -298,7 +298,7 @@ /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) /* Macros: */ - #if (defined(USB_SERIES_UC3A3_AVR32) || defined(USB_SERIES_UC3A4_AVR32)) + #if defined(USB_SERIES_UC3A3_AVR32) || defined(USB_SERIES_UC3A4_AVR32) #define USB_CLOCK_REQUIRED_FREQ 12000000UL #else #define USB_CLOCK_REQUIRED_FREQ 48000000UL -- cgit v1.2.3