Fix broken XMEGA USB support.

pull/1469/head
Dean Camera 12 years ago
parent f8f8ac0b1a
commit fb18c315d0

@ -213,8 +213,8 @@
UDADDR = (UDADDR & (1 << ADDEN)) | (Address & 0x7F); UDADDR = (UDADDR & (1 << ADDEN)) | (Address & 0x7F);
} }
static inline void USB_Device_EnableDeviceAddress(void) ATTR_ALWAYS_INLINE; static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void USB_Device_EnableDeviceAddress(void) static inline void USB_Device_EnableDeviceAddress(const uint8_t Address)
{ {
UDADDR |= (1 << ADDEN); UDADDR |= (1 << ADDEN);
} }

@ -134,7 +134,7 @@ static void USB_Device_SetAddress(void)
while (!(Endpoint_IsINReady())); while (!(Endpoint_IsINReady()));
USB_Device_EnableDeviceAddress(); USB_Device_EnableDeviceAddress(DeviceAddress);
USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default; USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default;
} }

@ -211,8 +211,8 @@
AVR32_USBB.UDCON.uadd = Address; AVR32_USBB.UDCON.uadd = Address;
} }
static inline void USB_Device_EnableDeviceAddress(void) ATTR_ALWAYS_INLINE; static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void USB_Device_EnableDeviceAddress(void) static inline void USB_Device_EnableDeviceAddress(const uint8_t Address)
{ {
AVR32_USBB.UDCON.adden = true; AVR32_USBB.UDCON.adden = true;
} }

@ -205,13 +205,13 @@
static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void USB_Device_SetDeviceAddress(const uint8_t Address) static inline void USB_Device_SetDeviceAddress(const uint8_t Address)
{ {
USB.ADDR = Address; /* No implementation for XMEGA architecture */
} }
static inline void USB_Device_EnableDeviceAddress(void) ATTR_ALWAYS_INLINE; static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void USB_Device_EnableDeviceAddress(void) static inline void USB_Device_EnableDeviceAddress(const uint8_t Address)
{ {
/* No implementation for XMEGA architecture */ USB.ADDR = Address;
} }
static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;

@ -57,6 +57,13 @@
/* Private Interface - For use in library only: */ /* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__) #if !defined(__DOXYGEN__)
/* Macros: */
#if defined(MAX_ENDPOINT_INDEX)
#define ENDPOINT_TABLE_COUNT (MAX_ENDPOINT_INDEX + 1)
#else
#define ENDPOINT_TABLE_COUNT 16
#endif
/* Type Defines: */ /* Type Defines: */
typedef struct typedef struct
{ {
@ -64,7 +71,7 @@
{ {
USB_EP_t OUT; USB_EP_t OUT;
USB_EP_t IN; USB_EP_t IN;
} Endpoints[16]; } Endpoints[ENDPOINT_TABLE_COUNT];
uint16_t FrameNum; uint16_t FrameNum;
} ATTR_PACKED USB_EndpointTable_t; } ATTR_PACKED USB_EndpointTable_t;

Loading…
Cancel
Save