From e95c96ea20117dbf43bd37e4abb5bad974f30816 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 30 May 2010 07:29:18 +0000 Subject: [PATCH] Fixed internal device serial not being accessible on the ATMEGAXXU2 AVRs (thanks to Axel Rohde). --- LUFA/Drivers/USB/HighLevel/StdDescriptors.h | 5 ++++- LUFA/Drivers/USB/LowLevel/DevChapter9.c | 4 ++-- LUFA/Drivers/USB/LowLevel/DevChapter9.h | 2 +- LUFA/ManPages/ChangeLog.txt | 1 + 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h index 9764b45ad3..db40bc574b 100644 --- a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h +++ b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h @@ -80,7 +80,10 @@ */ #define NO_DESCRIPTOR 0 - #if (!defined(NO_INTERNAL_SERIAL) && (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))) || defined(__DOXYGEN__) + #if (!defined(NO_INTERNAL_SERIAL) && \ + (defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1287__) || \ + defined(__AVR_ATmega32U6__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) || \ + 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 diff --git a/LUFA/Drivers/USB/LowLevel/DevChapter9.c b/LUFA/Drivers/USB/LowLevel/DevChapter9.c index 1529b6f138..544531b8da 100644 --- a/LUFA/Drivers/USB/LowLevel/DevChapter9.c +++ b/LUFA/Drivers/USB/LowLevel/DevChapter9.c @@ -208,7 +208,7 @@ void USB_Device_GetConfiguration(void) Endpoint_ClearStatusStage(); } -#if !defined(NO_INTERNAL_SERIAL) && (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) +#if !defined(NO_INTERNAL_SERIAL) && (USE_INTERNAL_SERIAL != NO_DESCRIPTOR) static char USB_Device_NibbleToASCII(uint8_t Nibble) { Nibble = ((Nibble & 0x0F) + '0'); @@ -261,7 +261,7 @@ static void USB_Device_GetDescriptor(void) uint8_t DescriptorAddressSpace; #endif - #if !defined(NO_INTERNAL_SERIAL) && (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) + #if !defined(NO_INTERNAL_SERIAL) && (USE_INTERNAL_SERIAL != NO_DESCRIPTOR) if (USB_ControlRequest.wValue == ((DTYPE_String << 8) | USE_INTERNAL_SERIAL)) { USB_Device_GetInternalSerialDescriptor(); diff --git a/LUFA/Drivers/USB/LowLevel/DevChapter9.h b/LUFA/Drivers/USB/LowLevel/DevChapter9.h index 7bafcbfb3a..41246ec387 100644 --- a/LUFA/Drivers/USB/LowLevel/DevChapter9.h +++ b/LUFA/Drivers/USB/LowLevel/DevChapter9.h @@ -149,7 +149,7 @@ static void USB_Device_GetStatus(void); static void USB_Device_ClearSetFeature(void); - #if !defined(NO_INTERNAL_SERIAL) && (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) + #if !defined(NO_INTERNAL_SERIAL) && (USE_INTERNAL_SERIAL != NO_DESCRIPTOR) static char USB_Device_NibbleToASCII(uint8_t Nibble) ATTR_ALWAYS_INLINE; static void USB_Device_GetInternalSerialDescriptor(void); #endif diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 97a49c26ed..c123116c74 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -30,6 +30,7 @@ * an overflow in the checksum calculation loop (thanks to Kevin Malec) * - Fixed XPLAINBridge project not correctly reading the XMEGA's supply voltage when reporting back to the host * - Fixed incorrect signature for the ATMEGA32U2 in the DFU bootloader (thanks to Axel Rohde) + * - Fixed internal device serial not being accessible on the ATMEGAXXU2 AVRs (thanks to Axel Rohde) * * \section Sec_ChangeLog100513 Version 100513 * New: