aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB
diff options
context:
space:
mode:
Diffstat (limited to 'LUFA/Drivers/USB')
-rw-r--r--LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h9
-rw-r--r--LUFA/Drivers/USB/Core/DeviceStandardReq.c11
-rw-r--r--LUFA/Drivers/USB/Core/UC3/Device_UC3.h7
-rw-r--r--LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h6
4 files changed, 23 insertions, 10 deletions
diff --git a/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h b/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h
index d60cb336a..e0435e21b 100644
--- a/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h
+++ b/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h
@@ -210,10 +210,13 @@
static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void USB_Device_SetDeviceAddress(const uint8_t Address)
{
- uint8_t Temp = (UDADDR & (1 << ADDEN)) | (Address & 0x7F);
+ UDADDR = (UDADDR & (1 << ADDEN)) | (Address & 0x7F);
+ }
- UDADDR = Temp;
- UDADDR = Temp | (1 << ADDEN);
+ static inline void USB_Device_EnableDeviceAddress(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Device_EnableDeviceAddress(void)
+ {
+ UDADDR |= (1 << ADDEN);
}
static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
diff --git a/LUFA/Drivers/USB/Core/DeviceStandardReq.c b/LUFA/Drivers/USB/Core/DeviceStandardReq.c
index ef1a278d4..514286dc1 100644
--- a/LUFA/Drivers/USB/Core/DeviceStandardReq.c
+++ b/LUFA/Drivers/USB/Core/DeviceStandardReq.c
@@ -124,9 +124,9 @@ void USB_Device_ProcessControlRequest(void)
static void USB_Device_SetAddress(void)
{
- uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F);
- uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
- GlobalInterruptDisable();
+ uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F);
+
+ USB_Device_SetDeviceAddress(DeviceAddress);
Endpoint_ClearSETUP();
@@ -134,10 +134,9 @@ static void USB_Device_SetAddress(void)
while (!(Endpoint_IsINReady()));
- USB_Device_SetDeviceAddress(DeviceAddress);
- USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default;
+ USB_Device_EnableDeviceAddress();
- SetGlobalInterruptMask(CurrentGlobalInt);
+ USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default;
}
static void USB_Device_SetConfiguration(void)
diff --git a/LUFA/Drivers/USB/Core/UC3/Device_UC3.h b/LUFA/Drivers/USB/Core/UC3/Device_UC3.h
index 35e081b37..603caad3f 100644
--- a/LUFA/Drivers/USB/Core/UC3/Device_UC3.h
+++ b/LUFA/Drivers/USB/Core/UC3/Device_UC3.h
@@ -209,7 +209,12 @@
static inline void USB_Device_SetDeviceAddress(const uint8_t Address)
{
AVR32_USBB.UDCON.uadd = Address;
- AVR32_USBB.UDCON.adden = (Address ? true : false);
+ }
+
+ static inline void USB_Device_EnableDeviceAddress(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Device_EnableDeviceAddress(void)
+ {
+ AVR32_USBB.UDCON.adden = true;
}
static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
diff --git a/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h b/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h
index 7dd020296..1cf3557b5 100644
--- a/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h
+++ b/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h
@@ -208,6 +208,12 @@
USB.ADDR = Address;
}
+ static inline void USB_Device_EnableDeviceAddress(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Device_EnableDeviceAddress(void)
+ {
+ /* No implementation for XMEGA architecture */
+ }
+
static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
static inline bool USB_Device_IsAddressSet(void)
{