From 944e0d2009832f152006031f1aeb99f3ed014bc5 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 13 Mar 2011 21:53:19 +0000 Subject: [PATCH] Rename UC3B driver files to UC3, as they are generic to all AVR32 UC3 models. --- LUFA.pnproj | 2 +- LUFA/Common/Architectures.h | 4 +- LUFA/Common/Common.h | 2 +- LUFA/Drivers/USB/Core/Device.h | 4 +- LUFA/Drivers/USB/Core/Endpoint.h | 4 +- LUFA/Drivers/USB/Core/Host.h | 4 +- LUFA/Drivers/USB/Core/Pipe.h | 4 +- .../{UC3B/Device_UC3B.c => UC3/Device_UC3.c} | 0 .../{UC3B/Device_UC3B.h => UC3/Device_UC3.h} | 14 +- .../Endpoint_UC3B.c => UC3/Endpoint_UC3.c} | 0 .../Endpoint_UC3B.h => UC3/Endpoint_UC3.h} | 76 ++-- .../Core/{UC3B/Pipe_UC3B.c => UC3/Pipe_UC3.c} | 0 .../Core/{UC3B/Pipe_UC3B.h => UC3/Pipe_UC3.h} | 86 ++-- .../USBController_UC3.c} | 0 .../USBController_UC3.h} | 12 +- .../USBInterrupt_UC3.c} | 0 .../USBInterrupt_UC3.h} | 6 +- LUFA/Drivers/USB/Core/UC3B/Host_UC3B.c | 355 --------------- LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h | 422 ------------------ LUFA/Drivers/USB/Core/USBController.h | 4 +- LUFA/Drivers/USB/Core/USBInterrupt.h | 4 +- LUFA/ManPages/ChangeLog.txt | 3 +- LUFA/ManPages/DeviceSupport.txt | 20 +- LUFA/ManPages/FutureChanges.txt | 1 - LUFA/makefile | 2 + 25 files changed, 134 insertions(+), 895 deletions(-) rename LUFA/Drivers/USB/Core/{UC3B/Device_UC3B.c => UC3/Device_UC3.c} (100%) rename LUFA/Drivers/USB/Core/{UC3B/Device_UC3B.h => UC3/Device_UC3.h} (93%) rename LUFA/Drivers/USB/Core/{UC3B/Endpoint_UC3B.c => UC3/Endpoint_UC3.c} (100%) rename LUFA/Drivers/USB/Core/{UC3B/Endpoint_UC3B.h => UC3/Endpoint_UC3.h} (92%) rename LUFA/Drivers/USB/Core/{UC3B/Pipe_UC3B.c => UC3/Pipe_UC3.c} (100%) rename LUFA/Drivers/USB/Core/{UC3B/Pipe_UC3B.h => UC3/Pipe_UC3.h} (92%) rename LUFA/Drivers/USB/Core/{UC3B/USBController_UC3B.c => UC3/USBController_UC3.c} (100%) rename LUFA/Drivers/USB/Core/{UC3B/USBController_UC3B.h => UC3/USBController_UC3.h} (95%) rename LUFA/Drivers/USB/Core/{UC3B/USBInterrupt_UC3B.c => UC3/USBInterrupt_UC3.c} (100%) rename LUFA/Drivers/USB/Core/{UC3B/USBInterrupt_UC3B.h => UC3/USBInterrupt_UC3.h} (95%) delete mode 100644 LUFA/Drivers/USB/Core/UC3B/Host_UC3B.c delete mode 100644 LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h diff --git a/LUFA.pnproj b/LUFA.pnproj index f1fc2d8904..c5181d6053 100644 --- a/LUFA.pnproj +++ b/LUFA.pnproj @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/LUFA/Common/Architectures.h b/LUFA/Common/Architectures.h index d34ad8cb88..30d8c82494 100644 --- a/LUFA/Common/Architectures.h +++ b/LUFA/Common/Architectures.h @@ -64,8 +64,8 @@ /** Selects the Atmel 8-bit AVR (AT90USB* and ATMEGA*U* chips) architecture. */ #define ARCH_AVR8 0 - /** Selects the Atmel 32-bit UC3B AVR (AT32UC3B* chips) architecture. */ - #define ARCH_UC3B 1 + /** Selects the Atmel 32-bit UC3 AVR (AT32UC3* chips) architecture. */ + #define ARCH_UC3 1 #if !defined(__DOXYGEN__) #define ARCH_ ARCH_AVR8 diff --git a/LUFA/Common/Common.h b/LUFA/Common/Common.h index 80bafce3cd..1d81d481ec 100644 --- a/LUFA/Common/Common.h +++ b/LUFA/Common/Common.h @@ -84,7 +84,7 @@ #define ARCH_LITTLE_ENDIAN #include "Endianness.h" - #elif (ARCH == ARCH_UC3B) + #elif (ARCH == ARCH_UC3) #include // === TODO: Find abstracted way to handle these === diff --git a/LUFA/Drivers/USB/Core/Device.h b/LUFA/Drivers/USB/Core/Device.h index 45c0393e4a..414beacf3d 100644 --- a/LUFA/Drivers/USB/Core/Device.h +++ b/LUFA/Drivers/USB/Core/Device.h @@ -128,8 +128,8 @@ /* Architecture Includes: */ #if (ARCH == ARCH_AVR8) #include "AVR8/Device_AVR8.h" - #elif (ARCH == ARCH_UC3B) - #include "UC3B/Device_UC3B.h" + #elif (ARCH == ARCH_UC3) + #include "UC3/Device_UC3.h" #endif #endif diff --git a/LUFA/Drivers/USB/Core/Endpoint.h b/LUFA/Drivers/USB/Core/Endpoint.h index d7a8bb7f2a..10b2b9c93c 100644 --- a/LUFA/Drivers/USB/Core/Endpoint.h +++ b/LUFA/Drivers/USB/Core/Endpoint.h @@ -101,8 +101,8 @@ /* Architecture Includes: */ #if (ARCH == ARCH_AVR8) #include "AVR8/Endpoint_AVR8.h" - #elif (ARCH == ARCH_UC3B) - #include "UC3B/Endpoint_UC3B.h" + #elif (ARCH == ARCH_UC3) + #include "UC3/Endpoint_UC3.h" #endif #endif diff --git a/LUFA/Drivers/USB/Core/Host.h b/LUFA/Drivers/USB/Core/Host.h index b864a9608a..da8194fe8d 100644 --- a/LUFA/Drivers/USB/Core/Host.h +++ b/LUFA/Drivers/USB/Core/Host.h @@ -165,8 +165,8 @@ /* Architecture Includes: */ #if (ARCH == ARCH_AVR8) #include "AVR8/Host_AVR8.h" - #elif (ARCH == ARCH_UC3B) - #include "UC3B/Host_UC3B.h" + #elif (ARCH == ARCH_UC3) + #include "UC3/Host_UC3.h" #endif #endif diff --git a/LUFA/Drivers/USB/Core/Pipe.h b/LUFA/Drivers/USB/Core/Pipe.h index fb1c9d655a..5354095a1e 100644 --- a/LUFA/Drivers/USB/Core/Pipe.h +++ b/LUFA/Drivers/USB/Core/Pipe.h @@ -116,8 +116,8 @@ /* Architecture Includes: */ #if (ARCH == ARCH_AVR8) #include "AVR8/Pipe_AVR8.h" - #elif (ARCH == ARCH_UC3B) - #include "UC3B/Pipe_UC3B.h" + #elif (ARCH == ARCH_UC3) + #include "UC3/Pipe_UC3.h" #endif #endif diff --git a/LUFA/Drivers/USB/Core/UC3B/Device_UC3B.c b/LUFA/Drivers/USB/Core/UC3/Device_UC3.c similarity index 100% rename from LUFA/Drivers/USB/Core/UC3B/Device_UC3B.c rename to LUFA/Drivers/USB/Core/UC3/Device_UC3.c diff --git a/LUFA/Drivers/USB/Core/UC3B/Device_UC3B.h b/LUFA/Drivers/USB/Core/UC3/Device_UC3.h similarity index 93% rename from LUFA/Drivers/USB/Core/UC3B/Device_UC3B.h rename to LUFA/Drivers/USB/Core/UC3/Device_UC3.h index e74f361ee1..653044f38e 100644 --- a/LUFA/Drivers/USB/Core/UC3B/Device_UC3B.h +++ b/LUFA/Drivers/USB/Core/UC3/Device_UC3.h @@ -29,24 +29,24 @@ */ /** \file - * \brief USB Device definitions for the AVR32 UC3B microcontrollers. - * \copydetails Group_Device_UC3B + * \brief USB Device definitions for the AVR32 UC3 microcontrollers. + * \copydetails Group_Device_UC3 * * \note This file should not be included directly. It is automatically included as needed by the USB driver * dispatch header located in LUFA/Drivers/USB/USB.h. */ /** \ingroup Group_Device - * \defgroup Group_Device_UC3B Device Management (UC3B) - * \brief USB Device definitions for the AVR32 UC3B microcontrollers. + * \defgroup Group_Device_UC3 Device Management (UC3) + * \brief USB Device definitions for the AVR32 UC3 microcontrollers. * - * Architecture specific USB Device definitions for the Atmel 32-bit UC3B AVR microcontrollers. + * Architecture specific USB Device definitions for the Atmel 32-bit UC3 AVR microcontrollers. * * @{ */ -#ifndef __USBDEVICE_UC3B_H__ -#define __USBDEVICE_UC3B_H__ +#ifndef __USBDEVICE_UC3_H__ +#define __USBDEVICE_UC3_H__ /* Includes: */ #include "../../../../Common/Common.h" diff --git a/LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.c b/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c similarity index 100% rename from LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.c rename to LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c diff --git a/LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.h b/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h similarity index 92% rename from LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.h rename to LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h index 5de8225d09..38f68834e3 100644 --- a/LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.h +++ b/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h @@ -29,38 +29,38 @@ */ /** \file - * \brief USB Endpoint definitions for the AVR32 UC3B microcontrollers. - * \copydetails Group_EndpointManagement_UC3B + * \brief USB Endpoint definitions for the AVR32 UC3 microcontrollers. + * \copydetails Group_EndpointManagement_UC3 * * \note This file should not be included directly. It is automatically included as needed by the USB driver * dispatch header located in LUFA/Drivers/USB/USB.h. */ /** \ingroup Group_EndpointRW - * \defgroup Group_EndpointRW_UC3B Endpoint Data Reading and Writing (UC3B) - * \brief Endpoint data read/write definitions for the Atmel AVR32 UC3B architecture. + * \defgroup Group_EndpointRW_UC3 Endpoint Data Reading and Writing (UC3) + * \brief Endpoint data read/write definitions for the Atmel AVR32 UC3 architecture. * * Functions, macros, variables, enums and types related to data reading and writing from and to endpoints. */ /** \ingroup Group_EndpointPrimitiveRW - * \defgroup Group_EndpointPrimitiveRW_UC3B Read/Write of Primitive Data Types (UC3B) - * \brief Endpoint primative read/write definitions for the Atmel AVR32 UC3B architecture. + * \defgroup Group_EndpointPrimitiveRW_UC3 Read/Write of Primitive Data Types (UC3) + * \brief Endpoint primative read/write definitions for the Atmel AVR32 UC3 architecture. * * Functions, macros, variables, enums and types related to data reading and writing of primitive data types * from and to endpoints. */ /** \ingroup Group_EndpointPacketManagement - * \defgroup Group_EndpointPacketManagement_UC3B Endpoint Packet Management (UC3B) - * \brief Endpoint packet management definitions for the Atmel AVR32 UC3B architecture. + * \defgroup Group_EndpointPacketManagement_UC3 Endpoint Packet Management (UC3) + * \brief Endpoint packet management definitions for the Atmel AVR32 UC3 architecture. * * Functions, macros, variables, enums and types related to packet management of endpoints. */ /** \ingroup Group_EndpointManagement - * \defgroup Group_EndpointManagement_UC3B Endpoint Management (UC3B) - * \brief Endpoint management definitions for the Atmel AVR32 UC3B architecture. + * \defgroup Group_EndpointManagement_UC3 Endpoint Management (UC3) + * \brief Endpoint management definitions for the Atmel AVR32 UC3 architecture. * * Functions, macros and enums related to endpoint management when in USB Device mode. This * module contains the endpoint management macros, as well as endpoint interrupt and data @@ -69,8 +69,8 @@ * @{ */ -#ifndef __ENDPOINT_UC3B_H__ -#define __ENDPOINT_UC3B_H__ +#ifndef __ENDPOINT_UC3_H__ +#define __ENDPOINT_UC3_H__ /* Includes: */ #include "../../../../Common/Common.h" @@ -205,7 +205,7 @@ /* Enums: */ /** Enum for the possible error return codes of the \ref Endpoint_WaitUntilReady() function. * - * \ingroup Group_EndpointRW_UC3B + * \ingroup Group_EndpointRW_UC3 */ enum Endpoint_WaitUntilReady_ErrorCodes_t { @@ -290,7 +290,7 @@ * \note The return width of this function may differ, depending on the maximum endpoint bank size * of the selected AVR model. * - * \ingroup Group_EndpointRW_UC3B + * \ingroup Group_EndpointRW_UC3 * * \return Total number of bytes in the currently selected Endpoint's FIFO buffer. */ @@ -374,7 +374,7 @@ * transmission via the \ref Endpoint_ClearIN() command, or are awaiting acknowledgement via the * \ref Endpoint_ClearOUT() command. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 * * \return Total number of busy banks in the selected endpoint. */ @@ -388,7 +388,7 @@ * will terminate all queued transactions, resetting the endpoint banks ready for a new * packet. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 */ static inline void Endpoint_AbortPendingIN(void) { @@ -405,7 +405,7 @@ * is an OUT direction and no packet (or an empty packet) has been received, or if the endpoint is an IN * direction and the endpoint bank is full. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 * * \return Boolean \c true if the currently selected endpoint may be read from or written to, depending * on its direction. @@ -456,7 +456,7 @@ /** Determines if the selected IN endpoint is ready for a new packet to be sent to the host. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 * * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. */ @@ -468,7 +468,7 @@ /** Determines if the selected OUT endpoint has received new packet from the host. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 * * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. */ @@ -480,7 +480,7 @@ /** Determines if the current CONTROL type endpoint has received a SETUP packet. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 * * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. */ @@ -493,7 +493,7 @@ /** Clears a received SETUP packet on the currently selected CONTROL type endpoint, freeing up the * endpoint for the next packet. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 * * \note This is not applicable for non CONTROL type endpoints. */ @@ -507,7 +507,7 @@ /** Sends an IN packet to the host on the currently selected endpoint, freeing up the endpoint for the * next packet and switching to the alternative endpoint bank if double banked. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 */ static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearIN(void) @@ -520,7 +520,7 @@ /** Acknowledges an OUT packet to the host on the currently selected endpoint, freeing up the endpoint * for the next packet and switching to the alternative endpoint bank if double banked. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 */ static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearOUT(void) @@ -539,7 +539,7 @@ * is called, or the host issues a CLEAR FEATURE request to the device for the currently selected * endpoint. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 */ static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_StallTransaction(void) @@ -549,7 +549,7 @@ /** Clears the STALL condition on the currently selected endpoint. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 */ static inline void Endpoint_ClearStall(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearStall(void) @@ -559,7 +559,7 @@ /** Determines if the currently selected endpoint is stalled, false otherwise. * - * \ingroup Group_EndpointPacketManagement_UC3B + * \ingroup Group_EndpointPacketManagement_UC3 * * \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise. */ @@ -622,7 +622,7 @@ /** Discards one byte from the currently selected endpoint's bank, for OUT direction endpoints. * - * \ingroup Group_EndpointPrimitiveRW_UC3B + * \ingroup Group_EndpointPrimitiveRW_UC3 */ static inline void Endpoint_Discard_Byte(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_Discard_Byte(void) @@ -635,7 +635,7 @@ /** Reads two bytes from the currently selected endpoint's bank in little endian format, for OUT * direction endpoints. * - * \ingroup Group_EndpointPrimitiveRW_UC3B + * \ingroup Group_EndpointPrimitiveRW_UC3 * * \return Next word in the currently selected endpoint's FIFO buffer. */ @@ -651,7 +651,7 @@ /** Reads two bytes from the currently selected endpoint's bank in big endian format, for OUT * direction endpoints. * - * \ingroup Group_EndpointPrimitiveRW_UC3B + * \ingroup Group_EndpointPrimitiveRW_UC3 * * \return Next word in the currently selected endpoint's FIFO buffer. */ @@ -667,7 +667,7 @@ /** Writes two bytes to the currently selected endpoint's bank in little endian format, for IN * direction endpoints. * - * \ingroup Group_EndpointPrimitiveRW_UC3B + * \ingroup Group_EndpointPrimitiveRW_UC3 * * \param[in] Word Next word to write to the currently selected endpoint's FIFO buffer. */ @@ -681,7 +681,7 @@ /** Writes two bytes to the currently selected endpoint's bank in big endian format, for IN * direction endpoints. * - * \ingroup Group_EndpointPrimitiveRW_UC3B + * \ingroup Group_EndpointPrimitiveRW_UC3 * * \param[in] Word Next word to write to the currently selected endpoint's FIFO buffer. */ @@ -694,7 +694,7 @@ /** Discards two bytes from the currently selected endpoint's bank, for OUT direction endpoints. * - * \ingroup Group_EndpointPrimitiveRW_UC3B + * \ingroup Group_EndpointPrimitiveRW_UC3 */ static inline void Endpoint_Discard_Word(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_Discard_Word(void) @@ -708,7 +708,7 @@ /** Reads four bytes from the currently selected endpoint's bank in little endian format, for OUT * direction endpoints. * - * \ingroup Group_EndpointPrimitiveRW_UC3B + * \ingroup Group_EndpointPrimitiveRW_UC3 * * \return Next double word in the currently selected endpoint's FIFO buffer. */ @@ -726,7 +726,7 @@ /** Reads four bytes from the currently selected endpoint's bank in big endian format, for OUT * direction endpoints. * - * \ingroup Group_EndpointPrimitiveRW_UC3B + * \ingroup Group_EndpointPrimitiveRW_UC3 * * \return Next double word in the currently selected endpoint's FIFO buffer. */ @@ -744,7 +744,7 @@ /** Writes four bytes to the currently selected endpoint's bank in little endian format, for IN * direction endpoints. * - * \ingroup Group_EndpointPrimitiveRW_UC3B + * \ingroup Group_EndpointPrimitiveRW_UC3 * * \param[in] DWord Next double word to write to the currently selected endpoint's FIFO buffer. */ @@ -760,7 +760,7 @@ /** Writes four bytes to the currently selected endpoint's bank in big endian format, for IN * direction endpoints. * - * \ingroup Group_EndpointPrimitiveRW_UC3B + * \ingroup Group_EndpointPrimitiveRW_UC3 * * \param[in] DWord Next double word to write to the currently selected endpoint's FIFO buffer. */ @@ -775,7 +775,7 @@ /** Discards four bytes from the currently selected endpoint's bank, for OUT direction endpoints. * - * \ingroup Group_EndpointPrimitiveRW_UC3B + * \ingroup Group_EndpointPrimitiveRW_UC3 */ static inline void Endpoint_Discard_DWord(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_Discard_DWord(void) @@ -822,7 +822,7 @@ * * \note This routine should not be called on CONTROL type endpoints. * - * \ingroup Group_EndpointRW_UC3B + * \ingroup Group_EndpointRW_UC3 * * \return A value from the \ref Endpoint_WaitUntilReady_ErrorCodes_t enum. */ diff --git a/LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.c b/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c similarity index 100% rename from LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.c rename to LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c diff --git a/LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.h b/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h similarity index 92% rename from LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.h rename to LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h index a13513832a..204169f00b 100644 --- a/LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.h +++ b/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h @@ -29,38 +29,38 @@ */ /** \file - * \brief USB Pipe definitions for the AVR32 UC3B microcontrollers. - * \copydetails Group_PipeManagement_UC3B + * \brief USB Pipe definitions for the AVR32 UC3 microcontrollers. + * \copydetails Group_PipeManagement_UC3 * * \note This file should not be included directly. It is automatically included as needed by the USB driver * dispatch header located in LUFA/Drivers/USB/USB.h. */ /** \ingroup Group_PipeRW - * \defgroup Group_PipeRW_UC3B Pipe Data Reading and Writing (UC3B) - * \brief Pipe data read/write definitions for the Atmel AVR32 UC3B architecture. + * \defgroup Group_PipeRW_UC3 Pipe Data Reading and Writing (UC3) + * \brief Pipe data read/write definitions for the Atmel AVR32 UC3 architecture. * * Functions, macros, variables, enums and types related to data reading and writing from and to pipes. */ /** \ingroup Group_PipePrimitiveRW - * \defgroup Group_PipePrimitiveRW_UC3B Read/Write of Primitive Data Types (UC3B) - * \brief Pipe primative data read/write definitions for the Atmel AVR32 UC3B architecture. + * \defgroup Group_PipePrimitiveRW_UC3 Read/Write of Primitive Data Types (UC3) + * \brief Pipe primative data read/write definitions for the Atmel AVR32 UC3 architecture. * * Functions, macros, variables, enums and types related to data reading and writing of primitive data types * from and to pipes. */ /** \ingroup Group_PipePacketManagement - * \defgroup Group_PipePacketManagement_UC3B Pipe Packet Management (UC3B) - * \brief Pipe packet management definitions for the Atmel AVR32 UC3B architecture. + * \defgroup Group_PipePacketManagement_UC3 Pipe Packet Management (UC3) + * \brief Pipe packet management definitions for the Atmel AVR32 UC3 architecture. * * Functions, macros, variables, enums and types related to packet management of pipes. */ /** \ingroup Group_PipeControlReq - * \defgroup Group_PipeControlReq_UC3B Pipe Control Request Management (UC3B) - * \brief Pipe control request management definitions for the Atmel AVR32 UC3B architecture. + * \defgroup Group_PipeControlReq_UC3 Pipe Control Request Management (UC3) + * \brief Pipe control request management definitions for the Atmel AVR32 UC3 architecture. * * Module for host mode request processing. This module allows for the transmission of standard, class and * vendor control requests to the default control endpoint of an attached device while in host mode. @@ -69,8 +69,8 @@ */ /** \ingroup Group_PipeManagement - * \defgroup Group_PipeManagement_UC3B Pipe Management (UC3B) - * \brief Pipe management definitions for the Atmel AVR32 UC3B architecture. + * \defgroup Group_PipeManagement_UC3 Pipe Management (UC3) + * \brief Pipe management definitions for the Atmel AVR32 UC3 architecture. * * This module contains functions, macros and enums related to pipe management when in USB Host mode. This * module contains the pipe management macros, as well as pipe interrupt and data send/receive functions @@ -79,8 +79,8 @@ * @{ */ -#ifndef __PIPE_UC3B_H__ -#define __PIPE_UC3B_H__ +#ifndef __PIPE_UC3_H__ +#define __PIPE_UC3_H__ /* Includes: */ #include "../../../../Common/Common.h" @@ -180,14 +180,14 @@ /** Size in bytes of the largest pipe bank size possible in the device. Not all banks on each AVR * model supports the largest bank size possible on the device; different pipe numbers support * different maximum bank sizes. This value reflects the largest possible bank of any pipe on the - * currently selected UC3B AVR model. + * currently selected UC3 AVR model. */ #define PIPE_MAX_SIZE 256 /* Enums: */ /** Enum for the possible error return codes of the \ref Pipe_WaitUntilReady() function. * - * \ingroup Group_PipeRW_UC3B + * \ingroup Group_PipeRW_UC3 */ enum Pipe_WaitUntilReady_ErrorCodes_t { @@ -206,7 +206,7 @@ * \note The return width of this function may differ, depending on the maximum pipe bank size * of the selected AVR model. * - * \ingroup Group_PipeRW_UC3B + * \ingroup Group_PipeRW_UC3 * * \return Total number of bytes in the currently selected pipe's FIFO buffer. */ @@ -447,7 +447,7 @@ * transmission via the \ref Pipe_ClearOUT() command, or are awaiting acknowledgement via the * \ref Pipe_ClearIN() command. * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 * * \return Total number of busy banks in the selected pipe. */ @@ -464,7 +464,7 @@ * * \note This function is not valid on CONTROL type pipes. * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 * * \return Boolean \c true if the currently selected pipe may be read from or written to, depending * on its direction. @@ -477,7 +477,7 @@ /** Determines if a packet has been received on the currently selected IN pipe from the attached device. * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 * * \return Boolean \c true if the current pipe has received an IN packet, \c false otherwise. */ @@ -489,7 +489,7 @@ /** Determines if the currently selected OUT pipe is ready to send an OUT packet to the attached device. * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 * * \return Boolean \c true if the current pipe is ready for an OUT packet, \c false otherwise. */ @@ -502,7 +502,7 @@ /** Determines if no SETUP request is currently being sent to the attached device on the selected * CONTROL type pipe. * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 * * \return Boolean \c true if the current pipe is ready for a SETUP packet, \c false otherwise. */ @@ -514,7 +514,7 @@ /** Sends the currently selected CONTROL type pipe's contents to the device as a SETUP packet. * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 */ static inline void Pipe_ClearSETUP(void) ATTR_ALWAYS_INLINE; static inline void Pipe_ClearSETUP(void) @@ -526,7 +526,7 @@ /** Acknowledges the reception of a setup IN request from the attached device on the currently selected * pipe, freeing the bank ready for the next packet. * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 */ static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE; static inline void Pipe_ClearIN(void) @@ -539,7 +539,7 @@ /** Sends the currently selected pipe's contents to the device as an OUT packet on the selected pipe, freeing * the bank ready for the next packet. * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 */ static inline void Pipe_ClearOUT(void) ATTR_ALWAYS_INLINE; static inline void Pipe_ClearOUT(void) @@ -555,7 +555,7 @@ * received, it must be cleared using \ref Pipe_ClearNAKReceived() before the previous (or any other) packet * can be re-sent. * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 * * \return Boolean \c true if an NAK has been received on the current pipe, \c false otherwise. */ @@ -567,7 +567,7 @@ /** Clears the NAK condition on the currently selected pipe. * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 * * \see \ref Pipe_IsNAKReceived() for more details. */ @@ -579,7 +579,7 @@ /** Determines if the currently selected pipe has had the STALL condition set by the attached device. * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 * * \return Boolean \c true if the current pipe has been stalled by the attached device, \c false otherwise. */ @@ -592,7 +592,7 @@ /** Clears the STALL condition detection flag on the currently selected pipe, but does not clear the * STALL condition itself (this must be done via a ClearFeature control request to the device). * - * \ingroup Group_PipePacketManagement_UC3B + * \ingroup Group_PipePacketManagement_UC3 */ static inline void Pipe_ClearStall(void) ATTR_ALWAYS_INLINE; static inline void Pipe_ClearStall(void) @@ -603,7 +603,7 @@ /** Reads one byte from the currently selected pipe's bank, for OUT direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 * * \return Next byte in the currently selected pipe's FIFO buffer. */ @@ -615,7 +615,7 @@ /** Writes one byte from the currently selected pipe's bank, for IN direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 * * \param[in] Byte Next byte to write into the the currently selected pipe's FIFO buffer. */ @@ -627,7 +627,7 @@ /** Discards one byte from the currently selected pipe's bank, for OUT direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 */ static inline void Pipe_Discard_Byte(void) ATTR_ALWAYS_INLINE; static inline void Pipe_Discard_Byte(void) @@ -640,7 +640,7 @@ /** Reads two bytes from the currently selected pipe's bank in little endian format, for OUT * direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 * * \return Next word in the currently selected pipe's FIFO buffer. */ @@ -656,7 +656,7 @@ /** Reads two bytes from the currently selected pipe's bank in big endian format, for OUT * direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 * * \return Next word in the currently selected pipe's FIFO buffer. */ @@ -672,7 +672,7 @@ /** Writes two bytes to the currently selected pipe's bank in little endian format, for IN * direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 * * \param[in] Word Next word to write to the currently selected pipe's FIFO buffer. */ @@ -686,7 +686,7 @@ /** Writes two bytes to the currently selected pipe's bank in big endian format, for IN * direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 * * \param[in] Word Next word to write to the currently selected pipe's FIFO buffer. */ @@ -699,7 +699,7 @@ /** Discards two bytes from the currently selected pipe's bank, for OUT direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 */ static inline void Pipe_Discard_Word(void) ATTR_ALWAYS_INLINE; static inline void Pipe_Discard_Word(void) @@ -713,7 +713,7 @@ /** Reads four bytes from the currently selected pipe's bank in little endian format, for OUT * direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 * * \return Next double word in the currently selected pipe's FIFO buffer. */ @@ -731,7 +731,7 @@ /** Reads four bytes from the currently selected pipe's bank in big endian format, for OUT * direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 * * \return Next double word in the currently selected pipe's FIFO buffer. */ @@ -749,7 +749,7 @@ /** Writes four bytes to the currently selected pipe's bank in little endian format, for IN * direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 * * \param[in] DWord Next double word to write to the currently selected pipe's FIFO buffer. */ @@ -765,7 +765,7 @@ /** Writes four bytes to the currently selected pipe's bank in big endian format, for IN * direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 * * \param[in] DWord Next double word to write to the currently selected pipe's FIFO buffer. */ @@ -780,7 +780,7 @@ /** Discards four bytes from the currently selected pipe's bank, for OUT direction pipes. * - * \ingroup Group_PipePrimitiveRW_UC3B + * \ingroup Group_PipePrimitiveRW_UC3 */ static inline void Pipe_Discard_DWord(void) ATTR_ALWAYS_INLINE; static inline void Pipe_Discard_DWord(void) @@ -861,7 +861,7 @@ /** Spin-loops until the currently selected non-control pipe is ready for the next packed of data to be read * or written to it, aborting in the case of an error condition (such as a timeout or device disconnect). * - * \ingroup Group_PipeRW_UC3B + * \ingroup Group_PipeRW_UC3 * * \return A value from the \ref Pipe_WaitUntilReady_ErrorCodes_t enum. */ diff --git a/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c b/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c similarity index 100% rename from LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c rename to LUFA/Drivers/USB/Core/UC3/USBController_UC3.c diff --git a/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.h b/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h similarity index 95% rename from LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.h rename to LUFA/Drivers/USB/Core/UC3/USBController_UC3.h index dde6f2313e..c975bb3e99 100644 --- a/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.h +++ b/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h @@ -29,24 +29,24 @@ */ /** \file - * \brief USB Controller definitions for the AVR32 UC3B microcontrollers. - * \copydetails Group_USBManagement_UC3B + * \brief USB Controller definitions for the AVR32 UC3 microcontrollers. + * \copydetails Group_USBManagement_UC3 * * \note This file should not be included directly. It is automatically included as needed by the USB driver * dispatch header located in LUFA/Drivers/USB/USB.h. */ /** \ingroup Group_USBManagement - * \defgroup Group_USBManagement_UC3B USB Interface Management (UC3B) - * \brief USB Controller definitions for the AVR32 UC3B microcontrollers. + * \defgroup Group_USBManagement_UC3 USB Interface Management (UC3) + * \brief USB Controller definitions for the AVR32 UC3 microcontrollers. * * Functions, macros, variables, enums and types related to the setup and management of the USB interface. * * @{ */ -#ifndef __USBCONTROLLER_UC3B_H__ -#define __USBCONTROLLER_UC3B_H__ +#ifndef __USBCONTROLLER_UC3_H__ +#define __USBCONTROLLER_UC3_H__ /* Includes: */ #include "../../../../Common/Common.h" diff --git a/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.c b/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c similarity index 100% rename from LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.c rename to LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c diff --git a/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.h b/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h similarity index 95% rename from LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.h rename to LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h index 6bc836b772..1192433600 100644 --- a/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.h +++ b/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h @@ -29,7 +29,7 @@ */ /** \file - * \brief USB Controller Interrupt definitions for the AVR32 UC3B microcontrollers. + * \brief USB Controller Interrupt definitions for the AVR32 UC3 microcontrollers. * * This file contains definitions required for the correct handling of low level USB service routine interrupts * from the USB controller. @@ -38,8 +38,8 @@ * dispatch header located in LUFA/Drivers/USB/USB.h. */ -#ifndef __USBINTERRUPT_UC3B_H__ -#define __USBINTERRUPT_UC3B_H__ +#ifndef __USBINTERRUPT_UC3_H__ +#define __USBINTERRUPT_UC3_H__ /* Includes: */ #include "../../../../Common/Common.h" diff --git a/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.c b/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.c deleted file mode 100644 index 6d49abbb25..0000000000 --- a/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.c +++ /dev/null @@ -1,355 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2011. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -#define __INCLUDE_FROM_USB_DRIVER -#include "../USBMode.h" - -#if defined(USB_CAN_BE_HOST) - -#define __INCLUDE_FROM_HOST_C -#include "../Host.h" - -void USB_Host_ProcessNextHostState(void) -{ - uint8_t ErrorCode = HOST_ENUMERROR_NoError; - uint8_t SubErrorCode = HOST_ENUMERROR_NoError; - - static uint16_t WaitMSRemaining; - static uint8_t PostWaitState; - - switch (USB_HostState) - { - case HOST_STATE_WaitForDevice: - if (WaitMSRemaining) - { - if ((SubErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful) - { - USB_HostState = PostWaitState; - ErrorCode = HOST_ENUMERROR_WaitStage; - break; - } - - if (!(--WaitMSRemaining)) - USB_HostState = PostWaitState; - } - - break; - case HOST_STATE_Powered: - WaitMSRemaining = HOST_DEVICE_SETTLE_DELAY_MS; - - USB_HostState = HOST_STATE_Powered_WaitForDeviceSettle; - break; - case HOST_STATE_Powered_WaitForDeviceSettle: - if (WaitMSRemaining--) - { - _delay_ms(1); - break; - } - else - { - USB_Host_VBUS_Manual_Off(); - - USB_OTGPAD_On(); - USB_Host_VBUS_Auto_Enable(); - USB_Host_VBUS_Auto_On(); - - USB_HostState = HOST_STATE_Powered_WaitForConnect; - } - - break; - case HOST_STATE_Powered_WaitForConnect: - if (USB_INT_HasOccurred(USB_INT_DCONNI)) - { - USB_INT_Clear(USB_INT_DCONNI); - USB_INT_Clear(USB_INT_DDISCI); - - USB_INT_Clear(USB_INT_VBERRI); - USB_INT_Enable(USB_INT_VBERRI); - - USB_Host_ResumeBus(); - Pipe_ClearPipes(); - - HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Powered_DoReset); - } - - break; - case HOST_STATE_Powered_DoReset: - USB_Host_ResetDevice(); - - HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Powered_ConfigPipe); - break; - case HOST_STATE_Powered_ConfigPipe: - Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL, - PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP, - PIPE_CONTROLPIPE_DEFAULT_SIZE, PIPE_BANK_SINGLE); - - if (!(Pipe_IsConfigured())) - { - ErrorCode = HOST_ENUMERROR_PipeConfigError; - SubErrorCode = 0; - break; - } - - USB_HostState = HOST_STATE_Default; - break; - case HOST_STATE_Default: - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_GetDescriptor, - .wValue = (DTYPE_Device << 8), - .wIndex = 0, - .wLength = 8, - }; - - uint8_t DataBuffer[8]; - - if ((SubErrorCode = USB_Host_SendControlRequest(DataBuffer)) != HOST_SENDCONTROL_Successful) - { - ErrorCode = HOST_ENUMERROR_ControlError; - break; - } - - USB_ControlPipeSize = DataBuffer[offsetof(USB_Descriptor_Device_t, Endpoint0Size)]; - - USB_Host_ResetDevice(); - - HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Default_PostReset); - break; - case HOST_STATE_Default_PostReset: - Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL, - PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP, - USB_ControlPipeSize, PIPE_BANK_SINGLE); - - if (!(Pipe_IsConfigured())) - { - ErrorCode = HOST_ENUMERROR_PipeConfigError; - SubErrorCode = 0; - break; - } - - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_SetAddress, - .wValue = USB_HOST_DEVICEADDRESS, - .wIndex = 0, - .wLength = 0, - }; - - if ((SubErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful) - { - ErrorCode = HOST_ENUMERROR_ControlError; - break; - } - - HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Default_PostAddressSet); - break; - case HOST_STATE_Default_PostAddressSet: - USB_Host_SetDeviceAddress(USB_HOST_DEVICEADDRESS); - - EVENT_USB_Host_DeviceEnumerationComplete(); - USB_HostState = HOST_STATE_Addressed; - break; - } - - if ((ErrorCode != HOST_ENUMERROR_NoError) && (USB_HostState != HOST_STATE_Unattached)) - { - EVENT_USB_Host_DeviceEnumerationFailed(ErrorCode, SubErrorCode); - - USB_Host_VBUS_Auto_Off(); - - EVENT_USB_Host_DeviceUnattached(); - - USB_ResetInterface(); - } -} - -uint8_t USB_Host_WaitMS(uint8_t MS) -{ - bool BusSuspended = USB_Host_IsBusSuspended(); - uint8_t ErrorCode = HOST_WAITERROR_Successful; - bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI); - - USB_INT_Disable(USB_INT_HSOFI); - USB_INT_Clear(USB_INT_HSOFI); - - USB_Host_ResumeBus(); - - while (MS) - { - if (USB_INT_HasOccurred(USB_INT_HSOFI)) - { - USB_INT_Clear(USB_INT_HSOFI); - MS--; - } - - if ((USB_HostState == HOST_STATE_Unattached) || (USB_CurrentMode != USB_MODE_Host)) - { - ErrorCode = HOST_WAITERROR_DeviceDisconnect; - - break; - } - - if (Pipe_IsError() == true) - { - Pipe_ClearError(); - ErrorCode = HOST_WAITERROR_PipeError; - - break; - } - - if (Pipe_IsStalled() == true) - { - Pipe_ClearStall(); - ErrorCode = HOST_WAITERROR_SetupStalled; - - break; - } - } - - if (BusSuspended) - USB_Host_SuspendBus(); - - if (HSOFIEnabled) - USB_INT_Enable(USB_INT_HSOFI); - - return ErrorCode; -} - -static void USB_Host_ResetDevice(void) -{ - bool BusSuspended = USB_Host_IsBusSuspended(); - - USB_INT_Disable(USB_INT_DDISCI); - - USB_Host_ResetBus(); - while (!(USB_Host_IsBusResetComplete())); - USB_Host_ResumeBus(); - - bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI); - - USB_INT_Disable(USB_INT_HSOFI); - USB_INT_Clear(USB_INT_HSOFI); - - for (uint8_t MSRem = 10; MSRem != 0; MSRem--) - { - /* Workaround for powerless-pull-up devices. After a USB bus reset, - all disconnection interrupts are suppressed while a USB frame is - looked for - if it is found within 10ms, the device is still - present. */ - - if (USB_INT_HasOccurred(USB_INT_HSOFI)) - { - USB_INT_Clear(USB_INT_HSOFI); - USB_INT_Clear(USB_INT_DDISCI); - break; - } - - _delay_ms(1); - } - - if (HSOFIEnabled) - USB_INT_Enable(USB_INT_HSOFI); - - if (BusSuspended) - USB_Host_SuspendBus(); - - USB_INT_Enable(USB_INT_DDISCI); -} - -uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber) -{ - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_SetConfiguration, - .wValue = ConfigNumber, - .wIndex = 0, - .wLength = 0, - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(NULL); -} - -uint8_t USB_Host_GetDeviceDescriptor(void* const DeviceDescriptorPtr) -{ - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_GetDescriptor, - .wValue = (DTYPE_Device << 8), - .wIndex = 0, - .wLength = sizeof(USB_Descriptor_Device_t), - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(DeviceDescriptorPtr); -} - -uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index, - void* const Buffer, - const uint8_t BufferLength) -{ - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_GetDescriptor, - .wValue = (DTYPE_String << 8) | Index, - .wIndex = 0, - .wLength = BufferLength, - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(Buffer); -} - -uint8_t USB_Host_ClearPipeStall(const uint8_t EndpointNum) -{ - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_ENDPOINT), - .bRequest = REQ_ClearFeature, - .wValue = FEATURE_SEL_EndpointHalt, - .wIndex = EndpointNum, - .wLength = 0, - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(NULL); -} - -#endif - diff --git a/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h deleted file mode 100644 index 4d08a4c987..0000000000 --- a/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h +++ /dev/null @@ -1,422 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2011. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief USB Host definitions for the AVR32 UC3B microcontrollers. - * \copydetails Group_Host_UC3B - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_Host - * \defgroup Group_Host_UC3B Host Management (UC3B) - * \brief USB Host definitions for the AVR32 UC3B microcontrollers. - * - * Architecture specific USB Host definitions for the Atmel 32-bit AVR UC3B microcontrollers. - * - * @{ - */ - -#ifndef __USBHOST_UC3B_H__ -#define __USBHOST_UC3B_H__ - - /* Includes: */ - #include "../../../../Common/Common.h" - #include "../StdDescriptors.h" - #include "../Pipe.h" - #include "../USBInterrupt.h" - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** Indicates the fixed USB device address which any attached device is enumerated to when in - * host mode. As only one USB device may be attached to the AVR in host mode at any one time - * and that the address used is not important (other than the fact that it is non-zero), a - * fixed value is specified by the library. - */ - #define USB_HOST_DEVICEADDRESS 1 - - #if !defined(USB_HOST_TIMEOUT_MS) || defined(__DOXYGEN__) - /** Constant for the maximum software timeout period of sent USB control transactions to an attached - * device. If a device fails to respond to a sent control request within this period, the - * library will return a timeout error code. - * - * This value may be overridden in the user project makefile as the value of the - * \ref USB_HOST_TIMEOUT_MS token, and passed to the compiler using the -D switch. - */ - #define USB_HOST_TIMEOUT_MS 1000 - #endif - - #if !defined(HOST_DEVICE_SETTLE_DELAY_MS) || defined(__DOXYGEN__) - /** Constant for the delay in milliseconds after a device is connected before the library - * will start the enumeration process. Some devices require a delay of up to 5 seconds - * after connection before the enumeration process can start or incorrect operation will - * occur. - * - * The default delay value may be overridden in the user project makefile by defining the - * \c HOST_DEVICE_SETTLE_DELAY_MS token to the required delay in milliseconds, and passed to the - * compiler using the -D switch. - */ - #define HOST_DEVICE_SETTLE_DELAY_MS 1000 - #endif - - /* Enums: */ - /** Enum for the error codes for the \ref EVENT_USB_Host_HostError() event. - * - * \see \ref Group_Events for more information on this event. - */ - enum USB_Host_ErrorCodes_t - { - HOST_ERROR_VBusVoltageDip = 0, /**< VBUS voltage dipped to an unacceptable level. This - * error may be the result of an attached device drawing - * too much current from the VBUS line, or due to the - * AVR's power source being unable to supply sufficient - * current. - */ - }; - - /** Enum for the error codes for the \ref EVENT_USB_Host_DeviceEnumerationFailed() event. - * - * \see \ref Group_Events for more information on this event. - */ - enum USB_Host_EnumerationErrorCodes_t - { - HOST_ENUMERROR_NoError = 0, /**< No error occurred. Used internally, this is not a valid - * ErrorCode parameter value for the \ref EVENT_USB_Host_DeviceEnumerationFailed() - * event. - */ - HOST_ENUMERROR_WaitStage = 1, /**< One of the delays between enumeration steps failed - * to complete successfully, due to a timeout or other - * error. - */ - HOST_ENUMERROR_NoDeviceDetected = 2, /**< No device was detected, despite the USB data lines - * indicating the attachment of a device. - */ - HOST_ENUMERROR_ControlError = 3, /**< One of the enumeration control requests failed to - * complete successfully. - */ - HOST_ENUMERROR_PipeConfigError = 4, /**< The default control pipe (address 0) failed to - * configure correctly. - */ - }; - - /* Inline Functions: */ - /** Returns the current USB frame number, when in host mode. Every millisecond the USB bus is active (i.e. not suspended) - * the frame number is incremented by one. - */ - static inline uint16_t USB_Host_GetFrameNumber(void) - { - return AVR32_USBB_UHFNUM; - } - - #if !defined(NO_SOF_EVENTS) - /** Enables the host mode Start Of Frame events. When enabled, this causes the - * \ref EVENT_USB_Host_StartOfFrame() event to fire once per millisecond, synchronized to the USB bus, - * at the start of each USB frame when a device is enumerated while in host mode. - * - * \note Not available when the \c NO_SOF_EVENTS compile time token is defined. - */ - static inline void USB_Host_EnableSOFEvents(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_EnableSOFEvents(void) - { - USB_INT_Enable(USB_INT_HSOFI); - } - - /** Disables the host mode Start Of Frame events. When disabled, this stops the firing of the - * \ref EVENT_USB_Host_StartOfFrame() event when enumerated in host mode. - * - * \note Not available when the NO_SOF_EVENTS compile time token is defined. - */ - static inline void USB_Host_DisableSOFEvents(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_DisableSOFEvents(void) - { - USB_INT_Disable(USB_INT_HSOFI); - } - #endif - - /** Resets the USB bus, including the endpoints in any attached device and pipes on the AVR host. - * USB bus resets leave the default control pipe configured (if already configured). - * - * If the USB bus has been suspended prior to issuing a bus reset, the attached device will be - * woken up automatically and the bus resumed after the reset has been correctly issued. - */ - static inline void USB_Host_ResetBus(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_ResetBus(void) - { - AVR32_USBB.UHCON.reset = true; - } - - /** Determines if a previously issued bus reset (via the \ref USB_Host_ResetBus() macro) has - * completed. - * - * \return Boolean \c true if no bus reset is currently being sent, \c false otherwise. - */ - static inline bool USB_Host_IsBusResetComplete(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool USB_Host_IsBusResetComplete(void) - { - return AVR32_USBB.UHCON.reset; - } - - /** Resumes USB communications with an attached and enumerated device, by resuming the transmission - * of the 1MS Start Of Frame messages to the device. When resumed, USB communications between the - * host and attached device may occur. - */ - static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_ResumeBus(void) - { - AVR32_USBB.UHCON.sofe = true; - } - - /** Suspends the USB bus, preventing any communications from occurring between the host and attached - * device until the bus has been resumed. This stops the transmission of the 1MS Start Of Frame - * messages to the device. - */ - static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_SuspendBus(void) - { - AVR32_USBB.UHCON.sofe = false; - } - - /** Determines if the USB bus has been suspended via the use of the \ref USB_Host_SuspendBus() macro, - * false otherwise. While suspended, no USB communications can occur until the bus is resumed, - * except for the Remote Wakeup event from the device if supported. - * - * \return Boolean \c true if the bus is currently suspended, \c false otherwise. - */ - static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool USB_Host_IsBusSuspended(void) - { - return AVR32_USBB.UHCON.sofe; - } - - /** Determines if the attached device is currently enumerated in Full Speed mode (12Mb/s), or - * false if the attached device is enumerated in Low Speed mode (1.5Mb/s). - * - * \return Boolean \c true if the attached device is enumerated in Full Speed mode, \c false otherwise. - */ - static inline bool USB_Host_IsDeviceFullSpeed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool USB_Host_IsDeviceFullSpeed(void) - { - return (AVR32_USBB.USBSTA.speed == AVR32_USBB_SPEED_FULL); - } - - /** Determines if the attached device is currently issuing a Remote Wakeup request, requesting - * that the host resume the USB bus and wake up the device, false otherwise. - * - * \return Boolean \c true if the attached device has sent a Remote Wakeup request, \c false otherwise. - */ - static inline bool USB_Host_IsRemoteWakeupSent(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool USB_Host_IsRemoteWakeupSent(void) - { - return AVR32_USBB.UHINT.rxrsmi; - } - - /** Clears the flag indicating that a Remote Wakeup request has been issued by an attached device. */ - static inline void USB_Host_ClearRemoteWakeupSent(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_ClearRemoteWakeupSent(void) - { - AVR32_USBB.UHINTCLR.rxrsmic = true; - } - - /** Accepts a Remote Wakeup request from an attached device. This must be issued in response to - * a device's Remote Wakeup request within 2ms for the request to be accepted and the bus to - * be resumed. - */ - static inline void USB_Host_ResumeFromWakeupRequest(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_ResumeFromWakeupRequest(void) - { - AVR32_USBB.UHCON.resume = true; - } - - /** Determines if a resume from Remote Wakeup request is currently being sent to an attached - * device. - * - * \return Boolean \c true if no resume request is currently being sent, \c false otherwise. - */ - static inline bool USB_Host_IsResumeFromWakeupRequestSent(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool USB_Host_IsResumeFromWakeupRequestSent(void) - { - return AVR32_USBB.UHCON.resume; - } - - /* Function Prototypes: */ - /** Convenience function. This routine sends a SET CONFIGURATION standard request to the attached - * device, with the given configuration index. This can be used to easily set the device - * configuration without creating and sending the request manually. - * - * \note After this routine returns, the control pipe will be selected. - * - * \param[in] ConfigNumber Configuration index to send to the device. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber); - - /** Convenience function. This routine sends a GET DESCRIPTOR standard request to the attached - * device, requesting the device descriptor. This can be used to easily retrieve information - * about the device such as its VID, PID and power requirements. - * - * \note After this routine returns, the control pipe will be selected. - * - * \param[out] DeviceDescriptorPtr Pointer to the destination device descriptor structure where - * the read data is to be stored. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_GetDeviceDescriptor(void* const DeviceDescriptorPtr); - - /** Convenience function. This routine sends a GET DESCRIPTOR standard request to the attached - * device, requesting the string descriptor of the specified index. This can be used to easily - * retrieve string descriptors from the device by index, after the index is obtained from the - * Device or Configuration descriptors. - * - * \note After this routine returns, the control pipe will be selected. - * - * \param[in] Index Index of the string index to retrieve. - * \param[out] Buffer Pointer to the destination buffer where the retrieved string descriptor is - * to be stored. - * \param[in] BufferLength Maximum size of the string descriptor which can be stored into the buffer. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index, - void* const Buffer, - const uint8_t BufferLength); - - /** Clears a stall condition on the given pipe, via a CLEAR FEATURE standard request to the attached device. - * - * \note After this routine returns, the control pipe will be selected. - * - * \param[in] EndpointIndex Index of the endpoint to clear, including the endpoint's direction. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_ClearPipeStall(const uint8_t EndpointIndex); - - /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - /* Macros: */ - static inline void USB_Host_HostMode_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_HostMode_On(void) - { - // Not required for UC3B - } - - static inline void USB_Host_HostMode_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_HostMode_Off(void) - { - // Not required for UC3B - } - - static inline void USB_Host_VBUS_Auto_Enable(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Auto_Enable(void) - { - AVR32_USBB.USBCON.vbushwc = false; - } - - static inline void USB_Host_VBUS_Manual_Enable(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Manual_Enable(void) - { - AVR32_USBB.USBCON.vbushwc = true; - } - - static inline void USB_Host_VBUS_Auto_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Auto_On(void) - { - AVR32_USBB.USBSTASET.vbusrqs = true; - } - - static inline void USB_Host_VBUS_Manual_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Manual_On(void) - { - AVR32_USBB.USBSTASET.vbusrqs = true; - } - - static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Auto_Off(void) - { - AVR32_USBB.USBSTACLR.vbusrqc = true; - } - - static inline void USB_Host_VBUS_Manual_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Manual_Off(void) - { - AVR32_USBB.USBSTACLR.vbusrqc = true; - } - - static inline void USB_Host_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void USB_Host_SetDeviceAddress(const uint8_t Address) - { - AVR32_USBB.UHADDR1.uhaddr_p0 = Address; - AVR32_USBB.UHADDR1.uhaddr_p1 = Address; - AVR32_USBB.UHADDR1.uhaddr_p2 = Address; - AVR32_USBB.UHADDR1.uhaddr_p3 = Address; - AVR32_USBB.UHADDR2.uhaddr_p4 = Address; - AVR32_USBB.UHADDR2.uhaddr_p5 = Address; - AVR32_USBB.UHADDR2.uhaddr_p6 = Address; - } - - /* Enums: */ - enum USB_Host_WaitMSErrorCodes_t - { - HOST_WAITERROR_Successful = 0, - HOST_WAITERROR_DeviceDisconnect = 1, - HOST_WAITERROR_PipeError = 2, - HOST_WAITERROR_SetupStalled = 3, - }; - - /* Function Prototypes: */ - void USB_Host_ProcessNextHostState(void); - uint8_t USB_Host_WaitMS(uint8_t MS); - - #if defined(__INCLUDE_FROM_HOST_C) - static void USB_Host_ResetDevice(void); - #endif - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - diff --git a/LUFA/Drivers/USB/Core/USBController.h b/LUFA/Drivers/USB/Core/USBController.h index fc18029b68..0568deef6b 100644 --- a/LUFA/Drivers/USB/Core/USBController.h +++ b/LUFA/Drivers/USB/Core/USBController.h @@ -60,8 +60,8 @@ /* Architecture Includes: */ #if (ARCH == ARCH_AVR8) #include "AVR8/USBController_AVR8.h" - #elif (ARCH == ARCH_UC3B) - #include "UC3B/USBController_UC3B.h" + #elif (ARCH == ARCH_UC3) + #include "UC3/USBController_UC3.h" #endif #endif diff --git a/LUFA/Drivers/USB/Core/USBInterrupt.h b/LUFA/Drivers/USB/Core/USBInterrupt.h index 735d0e164a..3217bda89d 100644 --- a/LUFA/Drivers/USB/Core/USBInterrupt.h +++ b/LUFA/Drivers/USB/Core/USBInterrupt.h @@ -53,8 +53,8 @@ /* Architecture Includes: */ #if (ARCH == ARCH_AVR8) #include "AVR8/USBInterrupt_AVR8.h" - #elif (ARCH == ARCH_UC3B) - #include "UC3B/USBInterrupt_UC3B.h" + #elif (ARCH == ARCH_UC3) + #include "UC3/USBInterrupt_UC3.h" #endif #endif diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 700390a1c3..fbd3bdccba 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -13,6 +13,7 @@ * in exchange for a smaller compiled program binary size * - Added a new general RingBuff.h miscellaneous ring buffer library driver header * - Added new GCC_FORCE_POINTER_ACCESS() macro to correct GCC's mishandling of struct pointer accesses + * - Added new GCC_MEMORY_BARRIER() macro to prevent instruction reordering across boundaries * - Added basic driver example use code to the library documentation * - Added new Endpoint_Null_Stream() and Pipe_Null_Stream() functions * - Added new ADC_GET_CHANNEL_MASK() convenience macro @@ -24,7 +25,7 @@ * - Added board driver support for the Sparkfun ATMEGA8U2 breakout board * - Added TWI baud rate prescaler and bit length parameters to the TWI_Init() function (thanks to Thomas Herlinghaus) * - Internal restructuring for eventual multiple architecture ports - * - Added start of an AVR32 UC3B architecture port (currently incomplete/experimental) + * - Added start of an AVR32 UC3 architecture port (currently incomplete/experimental) * - Library Applications: * - Added ability to write protect Mass Storage disk write operations from the host OS * - Added new MIDIToneGenerator project diff --git a/LUFA/ManPages/DeviceSupport.txt b/LUFA/ManPages/DeviceSupport.txt index b1d78117bf..f93dbb2777 100644 --- a/LUFA/ManPages/DeviceSupport.txt +++ b/LUFA/ManPages/DeviceSupport.txt @@ -7,16 +7,30 @@ /** * \page Page_DeviceSupport Device and Hardware Support * - * \section Sec_AVR8_Support Atmel 32-Bit UC3B AVR (UC3B) - * The AVR32 UC3B device support is currently experimental, and is included for preview purposes only. + * \section Sec_AVR8_Support Atmel 32-Bit UC3 AVR (UC3) + * The AVR32 UC3 device support is currently experimental, and is included for preview purposes only. * - * Currently supported UC3B models: + * Currently supported UC3 models: + * - AT32UC3A064 (USB Host and Device) + * - AT32UC3A164 (USB Host and Device) + * - AT32UC3A364 (USB Host and Device) + * - AT32UC3A364S (USB Host and Device) * - AT32UC3B064 (USB Host and Device) * - AT32UC3B164 (USB Host and Device) + * - AT32UC3A0128 (USB Host and Device) + * - AT32UC3A1128 (USB Host and Device) + * - AT32UC3A3128 (USB Host and Device) + * - AT32UC3A3128S (USB Host and Device) * - AT32UC3B0128 (USB Host and Device) * - AT32UC3B1128 (USB Host and Device) + * - AT32UC3A0256 (USB Host and Device) + * - AT32UC3A1256 (USB Host and Device) + * - AT32UC3A3256 (USB Host and Device) + * - AT32UC3A3256S (USB Host and Device) * - AT32UC3B0256 (USB Host and Device) * - AT32UC3B1256 (USB Host and Device) + * - AT32UC3A0512 (USB Host and Device) + * - AT32UC3A1512 (USB Host and Device) * - AT32UC3B0512 (USB Host and Device) * - AT32UC3B1512 (USB Host and Device) * diff --git a/LUFA/ManPages/FutureChanges.txt b/LUFA/ManPages/FutureChanges.txt index 72c666f584..2f6bd97412 100644 --- a/LUFA/ManPages/FutureChanges.txt +++ b/LUFA/ManPages/FutureChanges.txt @@ -33,7 +33,6 @@ * -# Arduino Uno compatible USB-MIDI, USB-HID * -# Make Webserver project work in RNDIS device mode * - Ports - * -# AVR32 UC3B series microcontrollers * -# Atmel ARM7 series microcontrollers * -# Other (commercial) C compilers */ diff --git a/LUFA/makefile b/LUFA/makefile index ff4dbd9ef2..e75e105b64 100644 --- a/LUFA/makefile +++ b/LUFA/makefile @@ -12,6 +12,7 @@ # Check to see if the LUFA_PATH variable has not been set (the makefile is not being included from a project makefile) ifeq ($(origin LUFA_PATH), undefined) LUFA_ROOT_PATH = . + ARCH = {AVR8,UC3} else LUFA_ROOT_PATH = $(LUFA_PATH)/LUFA endif @@ -65,6 +66,7 @@ ifeq ($(origin LUFA_PATH), undefined) clean: rm -f $(LUFA_SRC_ALL_FILES:%.c=%.o) + rm -f $(LUFA_SRC_ALL_FILES:%.c=%.lst) clean_list: