From 92b3553a077200253adbc016d8e79fd4e67f1b42 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 27 Feb 2011 18:25:29 +0000 Subject: [PATCH] General cleanup and more port work to the AVR32 UC3B. --- LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h | 2 +- LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h | 8 ++-- LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h | 4 +- LUFA/Drivers/USB/Core/UC3B/Device_UC3B.h | 23 ++++------- LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.h | 39 ++++++------------- LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h | 6 +-- LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.h | 9 ++--- .../USB/Core/UC3B/USBController_UC3B.c | 16 +------- .../USB/Core/UC3B/USBController_UC3B.h | 6 --- 9 files changed, 34 insertions(+), 79 deletions(-) diff --git a/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h b/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h index 61e47cfbdc..dbbe884ff2 100644 --- a/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h +++ b/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h @@ -92,7 +92,7 @@ defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega8U2__))) /** String descriptor index for the device's unique serial number string descriptor within the device. * This unique serial number is used by the host to associate resources to the device (such as drivers or COM port - * number allocations) to a device regardless of the port it is plugged in to on the host. Some USB AVRs contain + * number allocations) to a device regardless of the port it is plugged in to on the host. Some microcontrollers contain * a unique serial number internally, and setting the device descriptors serial number string index to this value * will cause it to use the internal serial number. * diff --git a/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h b/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h index b51f17dd74..30979aff9b 100644 --- a/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h +++ b/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h @@ -101,7 +101,7 @@ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) #define ENDPOINT_DETAILS_MAXEP 7 - #define ENDPOINT_DETAILS_EP0 64, 2 + #define ENDPOINT_DETAILS_EP0 64, 1 #define ENDPOINT_DETAILS_EP1 256, 2 #define ENDPOINT_DETAILS_EP2 64, 2 #define ENDPOINT_DETAILS_EP3 64, 2 @@ -111,7 +111,7 @@ #else #define ENDPOINT_DETAILS_MAXEP 5 - #define ENDPOINT_DETAILS_EP0 64, 2 + #define ENDPOINT_DETAILS_EP0 64, 1 #define ENDPOINT_DETAILS_EP1 64, 1 #define ENDPOINT_DETAILS_EP2 64, 1 #define ENDPOINT_DETAILS_EP3 64, 2 @@ -262,8 +262,8 @@ * ascending order, or bank corruption will occur. * \n\n * - * \note Certain models of USB AVR's endpoints may have different maximum packet sizes based on the endpoint's - * index - refer to the chosen USB AVR's datasheet to determine the maximum bank size for each endpoint. + * \note Different endpoints may have different maximum packet sizes based on the endpoint's index - refer to + * the chosen microcontroller model's datasheet to determine the maximum bank size for each endpoint. * \n\n * * \note The default control endpoint should not be manually configured by the user application, as diff --git a/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h b/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h index 42876d678a..3aea58f5c2 100644 --- a/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h +++ b/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h @@ -838,8 +838,8 @@ * or bank corruption will occur. * \n\n * - * \note Certain models of USB AVR's pipes may have different maximum packet sizes based on the pipe's - * index - refer to the chosen USB AVR's datasheet to determine the maximum bank size for each pipe. + * \note Certain microcontroller model's pipes may have different maximum packet sizes based on the pipe's + * index - refer to the chosen microcontroller's datasheet to determine the maximum bank size for each pipe. * \n\n * * \note The default control pipe should not be manually configured by the user application, as it is diff --git a/LUFA/Drivers/USB/Core/UC3B/Device_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/Device_UC3B.h index 0e7692330d..e74f361ee1 100644 --- a/LUFA/Drivers/USB/Core/UC3B/Device_UC3B.h +++ b/LUFA/Drivers/USB/Core/UC3B/Device_UC3B.h @@ -63,18 +63,13 @@ /* Macros: */ /** \name USB Device Mode Option Masks */ //@{ - #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) || defined(__DOXYGEN__) - /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the - * USB interface should be initialized in low speed (1.5Mb/s) mode. - * - * \note Low Speed mode is not available on all USB AVR models. - * \n - * - * \note Restrictions apply on the number, size and type of endpoints which can be used - * when running in low speed mode - refer to the USB 2.0 specification. - */ - #define USB_DEVICE_OPT_LOWSPEED (1 << 0) - #endif + /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the + * USB interface should be initialized in low speed (1.5Mb/s) mode. + * + * \note Restrictions apply on the number, size and type of endpoints which can be used + * when running in low speed mode - refer to the USB 2.0 specification. + */ + #define USB_DEVICE_OPT_LOWSPEED (1 << 0) /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the * USB interface should be initialized in full speed (12Mb/s) mode. @@ -84,7 +79,7 @@ /** String descriptor index for the device's unique serial number string descriptor within the device. * This unique serial number is used by the host to associate resources to the device (such as drivers or COM port - * number allocations) to a device regardless of the port it is plugged in to on the host. Some USB AVRs contain + * number allocations) to a device regardless of the port it is plugged in to on the host. Some microcontrollers contain * a unique serial number internally, and setting the device descriptors serial number string index to this value * will cause it to use the internal serial number. * @@ -152,7 +147,6 @@ /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) /* Inline Functions: */ - #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) static inline void USB_Device_SetLowSpeed(void) ATTR_ALWAYS_INLINE; static inline void USB_Device_SetLowSpeed(void) { @@ -164,7 +158,6 @@ { AVR32_USBB.UDCON.ls = false; } - #endif static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void USB_Device_SetDeviceAddress(const uint8_t Address) diff --git a/LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.h index ca7403a80c..556ac84b15 100644 --- a/LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.h +++ b/LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.h @@ -98,25 +98,15 @@ #define _ENDPOINT_GET_BANKS2(EPDetails) _ENDPOINT_GET_BANKS3(EPDetails) #define _ENDPOINT_GET_BANKS3(MaxSize, Banks) (Banks) - #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) - #define ENDPOINT_DETAILS_MAXEP 7 - - #define ENDPOINT_DETAILS_EP0 64, 2 - #define ENDPOINT_DETAILS_EP1 256, 2 - #define ENDPOINT_DETAILS_EP2 64, 2 - #define ENDPOINT_DETAILS_EP3 64, 2 - #define ENDPOINT_DETAILS_EP4 64, 2 - #define ENDPOINT_DETAILS_EP5 64, 2 - #define ENDPOINT_DETAILS_EP6 64, 2 - #else - #define ENDPOINT_DETAILS_MAXEP 5 + #define ENDPOINT_DETAILS_MAXEP 7 - #define ENDPOINT_DETAILS_EP0 64, 2 - #define ENDPOINT_DETAILS_EP1 64, 1 - #define ENDPOINT_DETAILS_EP2 64, 1 - #define ENDPOINT_DETAILS_EP3 64, 2 - #define ENDPOINT_DETAILS_EP4 64, 2 - #endif + #define ENDPOINT_DETAILS_EP0 64, 1 + #define ENDPOINT_DETAILS_EP1 64, 2 + #define ENDPOINT_DETAILS_EP2 64, 2 + #define ENDPOINT_DETAILS_EP3 64, 2 + #define ENDPOINT_DETAILS_EP4 64, 2 + #define ENDPOINT_DETAILS_EP5 256, 2 + #define ENDPOINT_DETAILS_EP6 256, 2 /* Inline Functions: */ static inline uint32_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST @@ -174,13 +164,6 @@ * accesses the second bank. */ #define ENDPOINT_BANK_DOUBLE AVR32_USBB_UECFG0_EPBK_DOUBLE - - /** 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. - */ - #define ENDPOINT_BANK_TRIPLE AVR32_USBB_UECFG0_EPBK_TRIPLE //@} #if (!defined(FIXED_CONTROL_ENDPOINT_SIZE) || defined(__DOXYGEN__)) @@ -210,7 +193,7 @@ #if !defined(CONTROL_ONLY_DEVICE) || defined(__DOXYGEN__) /** Total number of endpoints (including the default control endpoint at address 0) which may - * be used in the device. Different USB AVR models support different amounts of endpoints, + * be used in the device. Different AVR models support different amounts of endpoints, * this value reflects the maximum number of endpoints for the currently selected AVR model. */ #define ENDPOINT_TOTAL_ENDPOINTS ENDPOINT_DETAILS_MAXEP @@ -270,8 +253,8 @@ * ascending order, or bank corruption will occur. * \n\n * - * \note Certain models of USB AVR's endpoints may have different maximum packet sizes based on the endpoint's - * index - refer to the chosen USB AVR's datasheet to determine the maximum bank size for each endpoint. + * \note Different endpoints may have different maximum packet sizes based on the endpoint's index - refer to + * the chosen microcontroller model's datasheet to determine the maximum bank size for each endpoint. * \n\n * * \note The default control endpoint should not be manually configured by the user application, as diff --git a/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h index 816b198318..4d08a4c987 100644 --- a/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h +++ b/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h @@ -355,8 +355,6 @@ static inline void USB_Host_VBUS_Manual_Enable(void) { AVR32_USBB.USBCON.vbushwc = true; - - // TODO: Manual VBUS pin output setup } static inline void USB_Host_VBUS_Auto_On(void) ATTR_ALWAYS_INLINE; @@ -368,7 +366,7 @@ static inline void USB_Host_VBUS_Manual_On(void) ATTR_ALWAYS_INLINE; static inline void USB_Host_VBUS_Manual_On(void) { - // TODO: Manual VBUS pin output on + AVR32_USBB.USBSTASET.vbusrqs = true; } static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE; @@ -380,7 +378,7 @@ static inline void USB_Host_VBUS_Manual_Off(void) ATTR_ALWAYS_INLINE; static inline void USB_Host_VBUS_Manual_Off(void) { - // TODO: Manual VBUS pin output off + AVR32_USBB.USBSTACLR.vbusrqc = true; } static inline void USB_Host_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; diff --git a/LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.h index 1d7a002e4f..484e48ac15 100644 --- a/LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.h +++ b/LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.h @@ -172,15 +172,14 @@ #define PIPE_CONTROLPIPE_DEFAULT_SIZE 64 /** Total number of pipes (including the default control pipe at address 0) which may be used in - * the device. Different USB AVR models support different amounts of pipes, this value reflects - * the maximum number of pipes for the currently selected AVR model. + * the device. */ #define PIPE_TOTAL_PIPES 7 /** 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 USB AVR model. + * currently selected UC3B AVR model. */ #define PIPE_MAX_SIZE 256 @@ -857,8 +856,8 @@ * or bank corruption will occur. * \n\n * - * \note Certain models of USB AVR's pipes may have different maximum packet sizes based on the pipe's - * index - refer to the chosen USB AVR's datasheet to determine the maximum bank size for each pipe. + * \note Certain microcontroller model's pipes may have different maximum packet sizes based on the pipe's + * index - refer to the chosen microcontroller's datasheet to determine the maximum bank size for each pipe. * \n\n * * \note The default control pipe should not be manually configured by the user application, as it is diff --git a/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c b/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c index 68092fbf6d..cc4de29dde 100644 --- a/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c +++ b/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c @@ -152,25 +152,15 @@ static void USB_Init_Device(void) USB_Descriptor_Device_t* DeviceDescriptorPtr; if (CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr) != NO_DESCRIPTOR) - { - #if defined(USE_RAM_DESCRIPTORS) - USB_ControlEndpointSize = DeviceDescriptorPtr->Endpoint0Size; - #elif defined(USE_EEPROM_DESCRIPTORS) - USB_ControlEndpointSize = eeprom_read_byte(&DeviceDescriptorPtr->Endpoint0Size); - #else - USB_ControlEndpointSize = pgm_read_byte(&DeviceDescriptorPtr->Endpoint0Size); - #endif - } + USB_ControlEndpointSize = DeviceDescriptorPtr->Endpoint0Size; #endif - #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) if (USB_Options & USB_DEVICE_OPT_LOWSPEED) USB_Device_SetLowSpeed(); else USB_Device_SetFullSpeed(); USB_INT_Enable(USB_INT_VBUS); - #endif Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL, ENDPOINT_DIR_OUT, USB_ControlEndpointSize, @@ -192,9 +182,7 @@ static void USB_Init_Host(void) USB_Host_HostMode_On(); - USB_Host_VBUS_Auto_Off(); - USB_Host_VBUS_Manual_Enable(); - USB_Host_VBUS_Manual_On(); + USB_Host_VBUS_Auto_On(); USB_INT_Enable(USB_INT_SRPI); USB_INT_Enable(USB_INT_BCERRI); diff --git a/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.h index 7eb69cd4d8..56ee252d5d 100644 --- a/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.h +++ b/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.h @@ -122,8 +122,6 @@ /* Inline Functions: */ /** Determines if the VBUS line is currently high (i.e. the USB host is supplying power). - * - * \note This function is not available on some AVR models which do not support hardware VBUS monitoring. * * \return Boolean \c true if the VBUS line is currently detecting power from a host, \c false otherwise. */ @@ -193,10 +191,6 @@ * this function). To statically set the USB options, pass in the \c USE_STATIC_OPTIONS token, * defined to the appropriate options masks. When the options are statically set, this * parameter does not exist in the function prototype. - * \n\n - * - * \note The mode parameter does not exist on devices where only one mode is possible, such as USB - * AVR models which only implement the USB device mode in hardware. * * \see \ref Group_Device for the \c USB_DEVICE_OPT_* masks. */