From 45a56b4df7095daa1b8e2700f89baed0b2d84fa3 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sat, 15 Sep 2012 13:47:00 +0000 Subject: [PATCH] Added support for the Xevelabs USB2AX revision 3.1 board. --- BuildTests/BoardDriverTest/BoardDeviceMap.cfg | 2 + LUFA/Common/BoardTypes.h | 3 + LUFA/DoxygenPages/ChangeLog.txt | 1 + LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h | 15 +++-- LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h | 64 +++++++++++++------ LUFA/Drivers/Board/LEDs.h | 2 +- 6 files changed, 61 insertions(+), 26 deletions(-) diff --git a/BuildTests/BoardDriverTest/BoardDeviceMap.cfg b/BuildTests/BoardDriverTest/BoardDeviceMap.cfg index e0313040d1..787d9ae80c 100644 --- a/BuildTests/BoardDriverTest/BoardDeviceMap.cfg +++ b/BuildTests/BoardDriverTest/BoardDeviceMap.cfg @@ -72,4 +72,6 @@ BOARD_OLIMEX32U4 = AVR8 : atmega32u4 : BOARD_OLIMEXT32U4 = AVR8 : atmega32u4 : BOARD_OLIMEXISPMK2 = AVR8 : at90usb162 : BOARD_LEONARDO = AVR8 : atmega32u4 : +BOARD_UC3A3_XPLAINED = UC3 : uc3a3256 : +BOARD_USB2AX_V31 = AVR8 : atmega32u4 : # \ No newline at end of file diff --git a/LUFA/Common/BoardTypes.h b/LUFA/Common/BoardTypes.h index 0ac68321a0..0d9d21263a 100644 --- a/LUFA/Common/BoardTypes.h +++ b/LUFA/Common/BoardTypes.h @@ -222,6 +222,9 @@ /** Selects the UC3-A3 Xplained specific board drivers, including the Button and LED drivers. */ #define BOARD_UC3A3_XPLAINED 52 + /** Selects the USB2AX version 3.1 specific board drivers, including the Button and LEDs drivers. */ + #define BOARD_USB2AX_V31 53 + #if !defined(__DOXYGEN__) #define BOARD_ BOARD_NONE diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index dfc6af6124..271c23d10b 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -11,6 +11,7 @@ * - Core: * - Added support for the Arduino Leonardo board * - Added support for the Atmel UC3-A3 Xplained board + * - Added support for the Xevelabs USB2AX revision 3.1 board * - Added new doxygen_upgrade and doxygen_create targets to the DOXYGEN build system module * - Library Applications: * - Added a different device serial number when the AVRISP-MKII Clone project is in libUSB compatibility mode, so that diff --git a/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h b/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h index cb0eecdf68..1976f0ab5c 100644 --- a/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h +++ b/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h @@ -29,25 +29,32 @@ */ /** \file - * \brief Board specific Buttons driver header for the Paranoid Studio USB2AX. + * \brief Board specific Buttons driver header for the Xevelabs USB2AX. * \copydetails Group_Buttons_USB2AX * * \note This file should not be included directly. It is automatically included as needed by the Buttons driver * dispatch header located in LUFA/Drivers/Board/Buttons.h. */ +/** \ingroup Group_Buttons + * \defgroup Group_Buttons_USB2AX_V31 USB2AX_V31 + * \brief Board specific Button driver header for the Xevelabs USB2AX revision 3.1. + * + * See \ref Group_Buttons_USB2AX for more details. + */ + /** \ingroup Group_Buttons * \defgroup Group_Buttons_USB2AX_V3 USB2AX_V3 - * \brief Board specific Button driver header for the Paranoid Studio USB2AX revision 3. + * \brief Board specific Button driver header for the Xevelabs USB2AX revision 3. * * See \ref Group_Buttons_USB2AX for more details. */ /** \ingroup Group_Buttons * \defgroup Group_Buttons_USB2AX USB2AX - * \brief Board specific Buttons driver header for the Paranoid Studio USB2AX. + * \brief Board specific Buttons driver header for the Xevelabs USB2AX revisions 1 and 2. * - * \note For version 3 USB2AX boards, compile with BOARD = USB2AX_V3. + * \note For version 3 USB2AX boards, compile with BOARD = USB2AX_V3 and for version 3.1, with BOARD = USB2AX_V31. * * Board specific Buttons driver header for the Paranoid Studio USB2AX (http://paranoidstudio.assembla.com/wiki/show/paranoidstudio/USB2AX). * diff --git a/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h b/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h index 364c88de20..a0ffd973a0 100644 --- a/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h +++ b/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h @@ -29,27 +29,34 @@ */ /** \file - * \brief Board specific LED driver header for the Paranoid Studio USB2AX. + * \brief Board specific LED driver header for the Xevelabs USB2AX. * \copydetails Group_LEDs_USB2AX * * \note This file should not be included directly. It is automatically included as needed by the LEDs driver * dispatch header located in LUFA/Drivers/Board/LEDs.h. */ +/** \ingroup Group_LEDs + * \defgroup Group_LEDs_USB2AX_V31 USB2AX_V31 + * \brief Board specific LED driver header for the Xevelabs USB2AX revision 3.1. + * + * See \ref Group_LEDs_USB2AX for more details. + */ + /** \ingroup Group_LEDs * \defgroup Group_LEDs_USB2AX_V3 USB2AX_V3 - * \brief Board specific LED driver header for the Paranoid Studio USB2AX revision 3. + * \brief Board specific LED driver header for the Xevelabs USB2AX revision 3. * * See \ref Group_LEDs_USB2AX for more details. */ /** \ingroup Group_LEDs * \defgroup Group_LEDs_USB2AX USB2AX - * \brief Board specific LED driver header for the Paranoid Studio USB2AX. - * - * \note For version 3 USB2AX boards, compile with BOARD = USB2AX_V3. + * \brief Board specific LED driver header for the Xevelabs USB2AX revisions 1 and 2. * - * Board specific LED driver header for the Paranoid Studio USB2AX (http://paranoidstudio.assembla.com/wiki/show/paranoidstudio/USB2AX). + * \note For version 3 USB2AX boards, compile with BOARD = USB2AX_V3 and for version 3.1, with BOARD = USB2AX_V31. + * + * Board specific LED driver header for the Xevelabs USB2AX (http://paranoidstudio.assembla.com/wiki/show/paranoidstudio/USB2AX). * * USB2AX: * @@ -63,6 +70,13 @@ * *
LEDS_LED1GreenGeneral IndicatorHighPORTD.1
* + * USB2AX_V31: + * + * + * + * + *
NameColorInfoActive LevelPort Pin
LEDS_LED1GreenGeneral IndicatorHighPORTD.5
LEDS_LED2RedGeneral IndicatorHighPORTD.6
+ * * @{ */ @@ -85,10 +99,15 @@ /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) /* Macros: */ - #if (BOARD == BOARD_USB2AX) - #define USB2AX_LEDS_LED1 (1 << 6) + #if (BOARD == BOARD_USB2AX_V31) + #define USB2AX_LEDS_LED1 (1 << 5) + #define USB2AX_LEDS_LED2 (1 << 6) + #elif (BOARD == BOARD_USB2AX_V3) + #define USB2AX_LEDS_LED1 (1 << 1) + #define USB2AX_LEDS_LED2 0 #else - #define USB2AX_LEDS_LED1 (1 << 1) + #define USB2AX_LEDS_LED1 (1 << 6) + #define USB2AX_LEDS_LED2 0 #endif #endif @@ -97,8 +116,11 @@ /** LED mask for the first LED on the board. */ #define LEDS_LED1 USB2AX_LEDS_LED1 + /** LED mask for the second LED on the board. */ + #define LEDS_LED2 USB2AX_LEDS_LED2 + /** LED mask for all the LEDs on the board. */ - #define LEDS_ALL_LEDS LEDS_LED1 + #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2) /** LED mask for none of the board LEDs. */ #define LEDS_NO_LEDS 0 @@ -109,28 +131,28 @@ { #if (BOARD == BOARD_USB2AX) DDRC |= LEDS_ALL_LEDS; - PORTC &= ~LEDS_ALL_LEDS; + PORTC &= ~LEDS_ALL_LEDS; #else DDRD |= LEDS_ALL_LEDS; - PORTD &= ~LEDS_ALL_LEDS; - #endif + PORTD &= ~LEDS_ALL_LEDS; + #endif } static inline void LEDs_Disable(void) { #if (BOARD == BOARD_USB2AX) DDRC &= ~LEDS_ALL_LEDS; - PORTC &= ~LEDS_ALL_LEDS; + PORTC &= ~LEDS_ALL_LEDS; #else DDRD &= ~LEDS_ALL_LEDS; - PORTD &= ~LEDS_ALL_LEDS; - #endif + PORTD &= ~LEDS_ALL_LEDS; + #endif } static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) { #if (BOARD == BOARD_USB2AX) - PORTC |= LEDMask; + PORTC |= LEDMask; #else PORTD |= LEDMask; #endif @@ -148,7 +170,7 @@ static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) { #if (BOARD == BOARD_USB2AX) - PORTC = ((PORTC & ~LEDS_ALL_LEDS) | LEDMask); + PORTC = ((PORTC & ~LEDS_ALL_LEDS) | LEDMask); #else PORTD = ((PORTD & ~LEDS_ALL_LEDS) | LEDMask); #endif @@ -158,7 +180,7 @@ const uint8_t ActiveMask) { #if (BOARD == BOARD_USB2AX) - PORTC = ((PORTC & ~LEDMask) | ActiveMask); + PORTC = ((PORTC & ~LEDMask) | ActiveMask); #else PORTD = ((PORTD & ~LEDMask) | ActiveMask); #endif @@ -167,7 +189,7 @@ static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { #if (BOARD == BOARD_USB2AX) - PINC = LEDMask; + PINC = LEDMask; #else PIND = LEDMask; #endif @@ -177,7 +199,7 @@ static inline uint8_t LEDs_GetLEDs(void) { #if (BOARD == BOARD_USB2AX) - return (PORTC & LEDS_ALL_LEDS); + return (PORTC & LEDS_ALL_LEDS); #else return (PORTD & LEDS_ALL_LEDS); #endif diff --git a/LUFA/Drivers/Board/LEDs.h b/LUFA/Drivers/Board/LEDs.h index 6e08058392..b1fbd6a812 100644 --- a/LUFA/Drivers/Board/LEDs.h +++ b/LUFA/Drivers/Board/LEDs.h @@ -174,7 +174,7 @@ #include "UC3/EVK1104/LEDs.h" #elif (BOARD == BOARD_A3BU_XPLAINED) #include "XMEGA/A3BU_XPLAINED/LEDs.h" - #elif ((BOARD == BOARD_USB2AX) || (BOARD == BOARD_USB2AX_V3)) + #elif ((BOARD == BOARD_USB2AX) || (BOARD == BOARD_USB2AX_V3) || (BOARD == BOARD_USB2AX_V31)) #include "AVR8/USB2AX/LEDs.h" #elif ((BOARD == BOARD_MICROPENDOUS_REV1) || (BOARD == BOARD_MICROPENDOUS_REV2) || \ (BOARD == BOARD_MICROPENDOUS_32U2))