From 8858438a770c1c982f33b296447ca77176c751f7 Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Sun, 9 Jul 2017 21:26:51 -0400
Subject: [PATCH 01/17] Squashed 'lib/lufa/' changes from f2bd51f4e..bbdc9ac40

bbdc9ac40 Merge pull request #1 from fredizzimo/fix_line_endings
75ba27b8d Fix xml file line endings
7a8237259 Merge commit '5a3397d17ec917c7be5d5109e01a3a84a355cb1b'
713c65b5b Merge commit 'cedfbfcb1a9ad9cf93816f1952fc4bf7c55fbb61'
00e20c453 delete old lufa

git-subtree-dir: lib/lufa
git-subtree-split: bbdc9ac40c2ff543bbaf3870d407d0a96c945c1a
---
 Bootloaders/CDC/asf.xml                       |  322 ++--
 Bootloaders/DFU/asf.xml                       |  312 +--
 Bootloaders/HID/asf.xml                       |  246 +--
 Bootloaders/MassStorage/BootloaderAPITable.S  |  204 +-
 Bootloaders/MassStorage/asf.xml               |  312 +--
 Bootloaders/MassStorage/makefile              |  150 +-
 Bootloaders/Printer/BootloaderAPITable.S      |  182 +-
 Bootloaders/Printer/asf.xml                   |  318 +--
 Bootloaders/Printer/makefile                  |  124 +-
 Demos/Device/ClassDriver/AudioInput/asf.xml   |  104 +-
 Demos/Device/ClassDriver/AudioOutput/asf.xml  |  100 +-
 .../ClassDriver/DualVirtualSerial/asf.xml     |  124 +-
 Demos/Device/ClassDriver/GenericHID/asf.xml   |  126 +-
 Demos/Device/ClassDriver/Joystick/asf.xml     |  124 +-
 Demos/Device/ClassDriver/Keyboard/asf.xml     |  124 +-
 .../Device/ClassDriver/KeyboardMouse/asf.xml  |  124 +-
 .../KeyboardMouseMultiReport/asf.xml          |  122 +-
 Demos/Device/ClassDriver/MIDI/asf.xml         |  124 +-
 Demos/Device/ClassDriver/MassStorage/asf.xml  |  134 +-
 .../ClassDriver/MassStorageKeyboard/asf.xml   |  140 +-
 Demos/Device/ClassDriver/Mouse/asf.xml        |  124 +-
 .../Device/ClassDriver/RNDISEthernet/asf.xml  |  168 +-
 .../Device/ClassDriver/VirtualSerial/asf.xml  |  124 +-
 .../VirtualSerialMassStorage/asf.xml          |  140 +-
 .../ClassDriver/VirtualSerialMouse/asf.xml    |  128 +-
 Demos/Device/LowLevel/AudioInput/asf.xml      |  104 +-
 Demos/Device/LowLevel/AudioOutput/asf.xml     |  102 +-
 .../Device/LowLevel/DualVirtualSerial/asf.xml |  124 +-
 Demos/Device/LowLevel/GenericHID/asf.xml      |  126 +-
 Demos/Device/LowLevel/Joystick/asf.xml        |  124 +-
 Demos/Device/LowLevel/Keyboard/asf.xml        |  124 +-
 Demos/Device/LowLevel/KeyboardMouse/asf.xml   |  124 +-
 Demos/Device/LowLevel/MIDI/asf.xml            |  124 +-
 Demos/Device/LowLevel/MassStorage/asf.xml     |  134 +-
 Demos/Device/LowLevel/Mouse/asf.xml           |  124 +-
 Demos/Device/LowLevel/RNDISEthernet/asf.xml   |  172 +-
 Demos/Device/LowLevel/VirtualSerial/asf.xml   |  126 +-
 .../ClassDriver/MouseHostDevice/asf.xml       |  112 +-
 .../ClassDriver/AndroidAccessoryHost/asf.xml  |   98 +-
 Demos/Host/ClassDriver/AudioInputHost/asf.xml |   96 +-
 .../Host/ClassDriver/AudioOutputHost/asf.xml  |  104 +-
 .../JoystickHostWithParser/asf.xml            |   96 +-
 Demos/Host/ClassDriver/KeyboardHost/asf.xml   |   96 +-
 .../KeyboardHostWithParser/asf.xml            |   96 +-
 Demos/Host/ClassDriver/MIDIHost/asf.xml       |  100 +-
 .../Host/ClassDriver/MassStorageHost/asf.xml  |   96 +-
 Demos/Host/ClassDriver/MouseHost/asf.xml      |   96 +-
 .../ClassDriver/MouseHostWithParser/asf.xml   |   96 +-
 Demos/Host/ClassDriver/PrinterHost/asf.xml    |   96 +-
 .../ClassDriver/RNDISEthernetHost/asf.xml     |   96 +-
 Demos/Host/ClassDriver/StillImageHost/asf.xml |   96 +-
 .../ClassDriver/VirtualSerialHost/asf.xml     |   96 +-
 .../LowLevel/AndroidAccessoryHost/asf.xml     |  110 +-
 Demos/Host/LowLevel/AudioInputHost/asf.xml    |  100 +-
 Demos/Host/LowLevel/AudioOutputHost/asf.xml   |  108 +-
 Demos/Host/LowLevel/GenericHIDHost/asf.xml    |  100 +-
 .../LowLevel/JoystickHostWithParser/asf.xml   |  104 +-
 Demos/Host/LowLevel/KeyboardHost/asf.xml      |  100 +-
 .../LowLevel/KeyboardHostWithParser/asf.xml   |  104 +-
 Demos/Host/LowLevel/MIDIHost/asf.xml          |  104 +-
 Demos/Host/LowLevel/MassStorageHost/asf.xml   |  106 +-
 Demos/Host/LowLevel/MouseHost/asf.xml         |  100 +-
 .../Host/LowLevel/MouseHostWithParser/asf.xml |  104 +-
 Demos/Host/LowLevel/PrinterHost/asf.xml       |  106 +-
 Demos/Host/LowLevel/RNDISEthernetHost/asf.xml |  106 +-
 Demos/Host/LowLevel/StillImageHost/asf.xml    |  108 +-
 Demos/Host/LowLevel/VirtualSerialHost/asf.xml |  100 +-
 LUFA/CodeTemplates/DeviceTemplate/asf.xml     |  110 +-
 LUFA/CodeTemplates/HostTemplate/asf.xml       |   82 +-
 LUFA/DoxygenPages/BuildSystem.txt             |  562 +++---
 LUFA/Drivers/Board/AVR8/QMK/Board.h           |  130 +-
 LUFA/Drivers/Board/AVR8/QMK/LEDs.h            |  388 ++--
 .../StudioIntegration/Docbook/placeholder.txt |    2 +-
 .../HV1/lufa_hv1_transform.xslt               |   90 +-
 .../HV1/lufa_studio_help_styling.css          |  106 +-
 .../VSIX/[Content_Types].xml                  |   26 +-
 LUFA/StudioIntegration/VSIX/asf-manifest.xml  |   36 +-
 .../VSIX/extension.vsixmanifest               |   64 +-
 .../StudioIntegration/VSIX/generate_caches.py |   76 +-
 LUFA/StudioIntegration/lufa.xml               |  192 +-
 LUFA/StudioIntegration/lufa_common.xml        |   68 +-
 LUFA/StudioIntegration/lufa_drivers_board.xml |  228 +--
 .../lufa_drivers_board_names.xml              | 1706 ++++++++---------
 LUFA/StudioIntegration/lufa_drivers_misc.xml  |  114 +-
 .../lufa_drivers_peripheral.xml               |  396 ++--
 LUFA/StudioIntegration/lufa_drivers_usb.xml   |   64 +-
 .../lufa_drivers_usb_class.xml                |   64 +-
 .../lufa_drivers_usb_core.xml                 |  170 +-
 .../lufa_drivers_usb_core_avr8.xml            |   86 +-
 .../lufa_drivers_usb_core_uc3.xml             |   84 +-
 .../lufa_drivers_usb_core_xmega.xml           |   72 +-
 LUFA/StudioIntegration/lufa_platform.xml      |  120 +-
 LUFA/StudioIntegration/lufa_platform_uc3.xml  |   52 +-
 .../StudioIntegration/lufa_platform_xmega.xml |   46 +-
 LUFA/StudioIntegration/lufa_toolchain.xml     |   90 +-
 Projects/AVRISP-MKII/asf.xml                  |  182 +-
 Projects/Benito/asf.xml                       |  106 +-
 Projects/HIDReportViewer/asf.xml              |   96 +-
 Projects/LEDNotifier/asf.xml                  |  102 +-
 Projects/MIDIToneGenerator/asf.xml            |  100 +-
 Projects/Magstripe/asf.xml                    |  104 +-
 Projects/MediaController/asf.xml              |  100 +-
 Projects/MissileLauncher/asf.xml              |   98 +-
 Projects/RelayBoard/asf.xml                   |   94 +-
 Projects/SerialToLCD/asf.xml                  |  102 +-
 Projects/TempDataLogger/asf.xml               |  144 +-
 Projects/USBtoSerial/asf.xml                  |  102 +-
 Projects/Webserver/asf.xml                    |  192 +-
 108 files changed, 7742 insertions(+), 7742 deletions(-)

diff --git a/Bootloaders/CDC/asf.xml b/Bootloaders/CDC/asf.xml
index 72f3ff04c7..02e7063c66 100644
--- a/Bootloaders/CDC/asf.xml
+++ b/Bootloaders/CDC/asf.xml
@@ -1,161 +1,161 @@
-<asf xmlversion="1.0">
-	<project caption="CDC Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.128_4" force-caption="true" workspace-name="lufa_cdc_128kb_4kb_">
-		<require idref="lufa.bootloaders.cdc"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x1F000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1F000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FFA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FFE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FFF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="CDC Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.64_4" force-caption="true" workspace-name="lufa_cdc_64kb_4kb_">
-		<require idref="lufa.bootloaders.cdc"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb647"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0xF000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0xF000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0xFFA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0xFFE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0xFFF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="CDC Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.32_4" force-caption="true" workspace-name="lufa_cdc_32kb_4kb_">
-		<require idref="lufa.bootloaders.cdc"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega32u4"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x7000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x7FA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x7FE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x7FF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="CDC Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.16_4" force-caption="true" workspace-name="lufa_cdc_16kb_4kb_">
-		<require idref="lufa.bootloaders.cdc"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega16u2"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x3000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x3FA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x3FE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x3FF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="CDC Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.8_4" force-caption="true" workspace-name="lufa_cdc_8kb_4kb_">
-		<require idref="lufa.bootloaders.cdc"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega8u2"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x1000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<module type="application" id="lufa.bootloaders.cdc" caption="CDC Bootloader">
-		<info type="description" value="summary">
-		CDC Class Bootloader, capable of reprogramming a device using avrdude or other AVR109 protocol compliant software when plugged into a host.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Bootloaders"/>
-			<keyword value="USB Device"/>
-		</info>
-
- 		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="include-path" value="."/>
-		<build type="c-source" value="BootloaderCDC.c"/>
-		<build type="header-file" value="BootloaderCDC.h"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Descriptors.h"/>
-		<build type="c-source" value="BootloaderAPI.c"/>
-		<build type="header-file" value="BootloaderAPI.h"/>
-		<build type="asm-source" value="BootloaderAPITable.S"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="BootloaderCDC.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA CDC Bootloader.inf"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="CDC Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.128_4" force-caption="true" workspace-name="lufa_cdc_128kb_4kb_">
+		<require idref="lufa.bootloaders.cdc"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x1F000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1F000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FFA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FFE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FFF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="CDC Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.64_4" force-caption="true" workspace-name="lufa_cdc_64kb_4kb_">
+		<require idref="lufa.bootloaders.cdc"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb647"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0xF000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0xF000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0xFFA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0xFFE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0xFFF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="CDC Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.32_4" force-caption="true" workspace-name="lufa_cdc_32kb_4kb_">
+		<require idref="lufa.bootloaders.cdc"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega32u4"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x7000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x7FA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x7FE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x7FF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="CDC Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.16_4" force-caption="true" workspace-name="lufa_cdc_16kb_4kb_">
+		<require idref="lufa.bootloaders.cdc"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega16u2"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x3000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x3FA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x3FE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x3FF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="CDC Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.8_4" force-caption="true" workspace-name="lufa_cdc_8kb_4kb_">
+		<require idref="lufa.bootloaders.cdc"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega8u2"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x1000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<module type="application" id="lufa.bootloaders.cdc" caption="CDC Bootloader">
+		<info type="description" value="summary">
+		CDC Class Bootloader, capable of reprogramming a device using avrdude or other AVR109 protocol compliant software when plugged into a host.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Bootloaders"/>
+			<keyword value="USB Device"/>
+		</info>
+
+ 		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="include-path" value="."/>
+		<build type="c-source" value="BootloaderCDC.c"/>
+		<build type="header-file" value="BootloaderCDC.h"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Descriptors.h"/>
+		<build type="c-source" value="BootloaderAPI.c"/>
+		<build type="header-file" value="BootloaderAPI.h"/>
+		<build type="asm-source" value="BootloaderAPITable.S"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="BootloaderCDC.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA CDC Bootloader.inf"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Bootloaders/DFU/asf.xml b/Bootloaders/DFU/asf.xml
index 6f3312b764..f56aba69f5 100644
--- a/Bootloaders/DFU/asf.xml
+++ b/Bootloaders/DFU/asf.xml
@@ -1,156 +1,156 @@
-<asf xmlversion="1.0">
-	<project caption="DFU Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.128_4" force-caption="true" workspace-name="lufa_dfu_128kb_4kb_">
-		<require idref="lufa.bootloaders.dfu"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x1F000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1F000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FFA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FFE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FFF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="DFU Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.64_4" force-caption="true" workspace-name="lufa_dfu_64kb_4kb_">
-		<require idref="lufa.bootloaders.dfu"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb647"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0xF000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0xF000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0xFFA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0xFFE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0xFFF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="DFU Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.32_4" force-caption="true" workspace-name="lufa_dfu_32kb_4kb_">
-		<require idref="lufa.bootloaders.dfu"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega32u4"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x7000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x7FA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x7FE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x7FF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="DFU Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.16_4" force-caption="true" workspace-name="lufa_dfu_16kb_4kb_">
-		<require idref="lufa.bootloaders.dfu"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega16u2"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x3000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x3FA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x3FE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x3FF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="DFU Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.8_4" force-caption="true" workspace-name="lufa_dfu_8kb_4kb_">
-		<require idref="lufa.bootloaders.dfu"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega8u2"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x1000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<module type="application" id="lufa.bootloaders.dfu" caption="DFU Bootloader">
-		<info type="description" value="summary">
-		DFU Class Bootloader, capable of reprogramming a device using the Atmel FLIP or other AVR DFU programming software when plugged into a host.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Bootloaders"/>
-			<keyword value="USB Device"/>
-		</info>
-
- 		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="include-path" value="."/>
-		<build type="c-source" value="BootloaderDFU.c"/>
-		<build type="header-file" value="BootloaderDFU.h"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Descriptors.h"/>
-		<build type="c-source" value="BootloaderAPI.c"/>
-		<build type="header-file" value="BootloaderAPI.h"/>
-		<build type="asm-source" value="BootloaderAPITable.S"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="BootloaderDFU.txt"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="DFU Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.128_4" force-caption="true" workspace-name="lufa_dfu_128kb_4kb_">
+		<require idref="lufa.bootloaders.dfu"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x1F000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1F000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FFA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FFE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FFF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="DFU Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.64_4" force-caption="true" workspace-name="lufa_dfu_64kb_4kb_">
+		<require idref="lufa.bootloaders.dfu"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb647"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0xF000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0xF000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0xFFA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0xFFE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0xFFF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="DFU Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.32_4" force-caption="true" workspace-name="lufa_dfu_32kb_4kb_">
+		<require idref="lufa.bootloaders.dfu"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega32u4"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x7000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x7FA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x7FE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x7FF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="DFU Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.16_4" force-caption="true" workspace-name="lufa_dfu_16kb_4kb_">
+		<require idref="lufa.bootloaders.dfu"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega16u2"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x3000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x3FA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x3FE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x3FF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="DFU Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.8_4" force-caption="true" workspace-name="lufa_dfu_8kb_4kb_">
+		<require idref="lufa.bootloaders.dfu"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega8u2"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x1000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<module type="application" id="lufa.bootloaders.dfu" caption="DFU Bootloader">
+		<info type="description" value="summary">
+		DFU Class Bootloader, capable of reprogramming a device using the Atmel FLIP or other AVR DFU programming software when plugged into a host.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Bootloaders"/>
+			<keyword value="USB Device"/>
+		</info>
+
+ 		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="include-path" value="."/>
+		<build type="c-source" value="BootloaderDFU.c"/>
+		<build type="header-file" value="BootloaderDFU.h"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Descriptors.h"/>
+		<build type="c-source" value="BootloaderAPI.c"/>
+		<build type="header-file" value="BootloaderAPI.h"/>
+		<build type="asm-source" value="BootloaderAPITable.S"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="BootloaderDFU.txt"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Bootloaders/HID/asf.xml b/Bootloaders/HID/asf.xml
index 9394b13530..c67b9419ed 100644
--- a/Bootloaders/HID/asf.xml
+++ b/Bootloaders/HID/asf.xml
@@ -1,123 +1,123 @@
-<asf xmlversion="1.0">
-	<project caption="HID Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.128_4" force-caption="true" workspace-name="lufa_hid_128kb_4kb_">
-		<require idref="lufa.bootloaders.hid"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x1F000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1F000"/>
-	</project>
-
-	<project caption="HID Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.64_4" force-caption="true" workspace-name="lufa_hid_64kb_4kb_">
-		<require idref="lufa.bootloaders.hid"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb647"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0xF000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0xF000"/>
-	</project>
-
-	<project caption="HID Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.32_4" force-caption="true" workspace-name="lufa_hid_32kb_4kb_">
-		<require idref="lufa.bootloaders.hid"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega32u4"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x7000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
-	</project>
-
-	<project caption="HID Bootloader - 16KB FLASH / 2KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.16_2" force-caption="true" workspace-name="lufa_hid_16kb_2kb_">
-		<require idref="lufa.bootloaders.hid"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega16u2"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x3800"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3800"/>
-	</project>
-
-	<project caption="HID Bootloader - 8KB FLASH / 2KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.8_2" force-caption="true" workspace-name="lufa_hid_8kb_2kb_">
-		<require idref="lufa.bootloaders.hid"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega8u2"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x1800"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1800"/>
-	</project>
-
-	<module type="application" id="lufa.bootloaders.hid" caption="HID Bootloader">
-		<info type="description" value="summary">
-		HID Class Bootloader, capable of reprogramming a device via a custom cross-platform command line utility when plugged into a host.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Bootloaders"/>
-			<keyword value="USB Device"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="include-path" value="."/>
-		<build type="c-source" value="BootloaderHID.c"/>
-		<build type="header-file" value="BootloaderHID.h"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="BootloaderHID.txt"/>
-		<build type="distribute" subtype="directory" value="HostLoaderApp"/>
-		<build type="distribute" subtype="directory" value="HostLoaderApp_Python"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="HID Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.128_4" force-caption="true" workspace-name="lufa_hid_128kb_4kb_">
+		<require idref="lufa.bootloaders.hid"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x1F000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1F000"/>
+	</project>
+
+	<project caption="HID Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.64_4" force-caption="true" workspace-name="lufa_hid_64kb_4kb_">
+		<require idref="lufa.bootloaders.hid"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb647"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0xF000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0xF000"/>
+	</project>
+
+	<project caption="HID Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.32_4" force-caption="true" workspace-name="lufa_hid_32kb_4kb_">
+		<require idref="lufa.bootloaders.hid"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega32u4"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x7000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
+	</project>
+
+	<project caption="HID Bootloader - 16KB FLASH / 2KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.16_2" force-caption="true" workspace-name="lufa_hid_16kb_2kb_">
+		<require idref="lufa.bootloaders.hid"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega16u2"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x3800"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3800"/>
+	</project>
+
+	<project caption="HID Bootloader - 8KB FLASH / 2KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.8_2" force-caption="true" workspace-name="lufa_hid_8kb_2kb_">
+		<require idref="lufa.bootloaders.hid"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega8u2"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x1800"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1800"/>
+	</project>
+
+	<module type="application" id="lufa.bootloaders.hid" caption="HID Bootloader">
+		<info type="description" value="summary">
+		HID Class Bootloader, capable of reprogramming a device via a custom cross-platform command line utility when plugged into a host.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Bootloaders"/>
+			<keyword value="USB Device"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="include-path" value="."/>
+		<build type="c-source" value="BootloaderHID.c"/>
+		<build type="header-file" value="BootloaderHID.h"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="BootloaderHID.txt"/>
+		<build type="distribute" subtype="directory" value="HostLoaderApp"/>
+		<build type="distribute" subtype="directory" value="HostLoaderApp_Python"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Bootloaders/MassStorage/BootloaderAPITable.S b/Bootloaders/MassStorage/BootloaderAPITable.S
index 30165700d7..44eb15ea9d 100644
--- a/Bootloaders/MassStorage/BootloaderAPITable.S
+++ b/Bootloaders/MassStorage/BootloaderAPITable.S
@@ -1,102 +1,102 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2017  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-#if AUX_BOOT_SECTION_SIZE > 0
-#warning Using a AUX bootloader section in addition to the defined bootloader space (see documentation).
-
-; Trampoline to jump over the AUX bootloader section to the start of the bootloader,
-; on devices where an AUX bootloader section is used.
-.section .boot_aux_trampoline, "ax"
-.global Boot_AUX_Trampoline
-Boot_AUX_Trampoline:
-	jmp BOOT_START_ADDR
-#endif
-
-; Trampolines to actual API implementations if the target address is outside the
-; range of a rjmp instruction (can happen with large bootloader sections)
-.section .apitable_trampolines, "ax"
-.global BootloaderAPI_Trampolines
-BootloaderAPI_Trampolines:
-
-	BootloaderAPI_ErasePage_Trampoline:
-		jmp BootloaderAPI_ErasePage
-	BootloaderAPI_WritePage_Trampoline:
-		jmp BootloaderAPI_WritePage
-	BootloaderAPI_FillWord_Trampoline:
-		jmp BootloaderAPI_FillWord
-	BootloaderAPI_ReadSignature_Trampoline:
-		jmp BootloaderAPI_ReadSignature
-	BootloaderAPI_ReadFuse_Trampoline:
-		jmp BootloaderAPI_ReadFuse
-	BootloaderAPI_ReadLock_Trampoline:
-		jmp BootloaderAPI_ReadLock
-	BootloaderAPI_WriteLock_Trampoline:
-		jmp BootloaderAPI_WriteLock
-	BootloaderAPI_UNUSED1:
-		ret
-	BootloaderAPI_UNUSED2:
-		ret
-	BootloaderAPI_UNUSED3:
-		ret
-	BootloaderAPI_UNUSED4:
-		ret
-	BootloaderAPI_UNUSED5:
-		ret
-
-
-
-; API function jump table
-.section .apitable_jumptable, "ax"
-.global BootloaderAPI_JumpTable
-BootloaderAPI_JumpTable:
-
-	rjmp BootloaderAPI_ErasePage_Trampoline
-	rjmp BootloaderAPI_WritePage_Trampoline
-	rjmp BootloaderAPI_FillWord_Trampoline
-	rjmp BootloaderAPI_ReadSignature_Trampoline
-	rjmp BootloaderAPI_ReadFuse_Trampoline
-	rjmp BootloaderAPI_ReadLock_Trampoline
-	rjmp BootloaderAPI_WriteLock_Trampoline
-	rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1
-	rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2
-	rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3
-	rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4
-	rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5
-
-
-
-; Bootloader table signatures and information
-.section .apitable_signatures, "ax"
-.global BootloaderAPI_Signatures
-BootloaderAPI_Signatures:
-
-	.long BOOT_START_ADDR ; Start address of the bootloader
-	.word 0xDF30 ; Signature for the MS class bootloader, V1
-	.word 0xDCFB ; Signature for a LUFA class bootloader
+/*
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+*/
+
+/*
+  Copyright 2017  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+  Permission to use, copy, modify, distribute, and sell this
+  software and its documentation for any purpose is hereby granted
+  without fee, provided that the above copyright notice appear in
+  all copies and that both that the copyright notice and this
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
+  software without specific, written prior permission.
+
+  The author disclaims all warranties with regard to this
+  software, including all implied warranties of merchantability
+  and fitness.  In no event shall the author be liable for any
+  special, indirect or consequential damages or any damages
+  whatsoever resulting from loss of use, data or profits, whether
+  in an action of contract, negligence or other tortious action,
+  arising out of or in connection with the use or performance of
+  this software.
+*/
+
+#if AUX_BOOT_SECTION_SIZE > 0
+#warning Using a AUX bootloader section in addition to the defined bootloader space (see documentation).
+
+; Trampoline to jump over the AUX bootloader section to the start of the bootloader,
+; on devices where an AUX bootloader section is used.
+.section .boot_aux_trampoline, "ax"
+.global Boot_AUX_Trampoline
+Boot_AUX_Trampoline:
+	jmp BOOT_START_ADDR
+#endif
+
+; Trampolines to actual API implementations if the target address is outside the
+; range of a rjmp instruction (can happen with large bootloader sections)
+.section .apitable_trampolines, "ax"
+.global BootloaderAPI_Trampolines
+BootloaderAPI_Trampolines:
+
+	BootloaderAPI_ErasePage_Trampoline:
+		jmp BootloaderAPI_ErasePage
+	BootloaderAPI_WritePage_Trampoline:
+		jmp BootloaderAPI_WritePage
+	BootloaderAPI_FillWord_Trampoline:
+		jmp BootloaderAPI_FillWord
+	BootloaderAPI_ReadSignature_Trampoline:
+		jmp BootloaderAPI_ReadSignature
+	BootloaderAPI_ReadFuse_Trampoline:
+		jmp BootloaderAPI_ReadFuse
+	BootloaderAPI_ReadLock_Trampoline:
+		jmp BootloaderAPI_ReadLock
+	BootloaderAPI_WriteLock_Trampoline:
+		jmp BootloaderAPI_WriteLock
+	BootloaderAPI_UNUSED1:
+		ret
+	BootloaderAPI_UNUSED2:
+		ret
+	BootloaderAPI_UNUSED3:
+		ret
+	BootloaderAPI_UNUSED4:
+		ret
+	BootloaderAPI_UNUSED5:
+		ret
+
+
+
+; API function jump table
+.section .apitable_jumptable, "ax"
+.global BootloaderAPI_JumpTable
+BootloaderAPI_JumpTable:
+
+	rjmp BootloaderAPI_ErasePage_Trampoline
+	rjmp BootloaderAPI_WritePage_Trampoline
+	rjmp BootloaderAPI_FillWord_Trampoline
+	rjmp BootloaderAPI_ReadSignature_Trampoline
+	rjmp BootloaderAPI_ReadFuse_Trampoline
+	rjmp BootloaderAPI_ReadLock_Trampoline
+	rjmp BootloaderAPI_WriteLock_Trampoline
+	rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1
+	rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2
+	rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3
+	rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4
+	rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5
+
+
+
+; Bootloader table signatures and information
+.section .apitable_signatures, "ax"
+.global BootloaderAPI_Signatures
+BootloaderAPI_Signatures:
+
+	.long BOOT_START_ADDR ; Start address of the bootloader
+	.word 0xDF30 ; Signature for the MS class bootloader, V1
+	.word 0xDCFB ; Signature for a LUFA class bootloader
diff --git a/Bootloaders/MassStorage/asf.xml b/Bootloaders/MassStorage/asf.xml
index f1d550d1eb..700ffa26ff 100644
--- a/Bootloaders/MassStorage/asf.xml
+++ b/Bootloaders/MassStorage/asf.xml
@@ -1,156 +1,156 @@
-<asf xmlversion="1.0">
-	<project caption="Mass Storage Bootloader - 128KB FLASH / 8KB Boot - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.128_8" force-caption="true" workspace-name="lufa_ms_128kb_8kb_">
-		<require idref="lufa.bootloaders.mass_storage"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x1E000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1E000"/>
-
-		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="0"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FFA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FFE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FFF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="Mass Storage Bootloader - 64KB FLASH / 8KB Boot - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.64_8" force-caption="true" workspace-name="lufa_ms_64kb_8kb_">
-		<require idref="lufa.bootloaders.mass_storage"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb647"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0xE000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0xE000"/>
-
-		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="0"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0xFFA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0xFFE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0xFFF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="Mass Storage Bootloader - 32KB FLASH / 4KB Boot (2KB AUX) - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.32_4" force-caption="true" workspace-name="lufa_ms_32kb_4kb_">
-		<require idref="lufa.bootloaders.mass_storage"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega32u4"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x7000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
-
-		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="2048"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux=0x6810"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux_trampoline=0x6800"/>
-		<build type="linker-config" subtype="flags" value="--undefined=Boot_AUX_Trampoline"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x7FA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x7FE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x7FF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="Mass Storage Bootloader - 16KB FLASH / 4KB Boot (2KB AUX) - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.16_4" force-caption="true" workspace-name="lufa_ms_16kb_4kb_">
-		<require idref="lufa.bootloaders.mass_storage"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega16u2"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x3000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/>
-
-		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="2048"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux=0x2810"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux_trampoline=0x2800"/>
-		<build type="linker-config" subtype="flags" value="--undefined=Boot_AUX_Trampoline"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x3FA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x3FE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x3FF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<module type="application" id="lufa.bootloaders.mass_storage" caption="Mass Storage Bootloader">
-		<info type="description" value="summary">
-		Mass Storage Class Bootloader, capable of reprogramming a device via binary BIN files copied to the virtual FAT12 file-system it creates when plugged into a host.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Bootloaders"/>
-			<keyword value="USB Device"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="include-path" value="."/>
-		<build type="c-source" value="BootloaderMassStorage.c"/>
-		<build type="header-file" value="BootloaderMassStorage.h"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Descriptors.h"/>
-		<build type="c-source" value="BootloaderAPI.c"/>
-		<build type="header-file" value="BootloaderAPI.h"/>
-		<build type="asm-source" value="BootloaderAPITable.S"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-
-		<build type="include-path" value="Lib"/>
-		<build type="header-file" value="Lib/VirtualFAT.h"/>
-		<build type="c-source" value="Lib/VirtualFAT.c"/>
-		<build type="header-file" value="Lib/SCSI.h"/>
-		<build type="c-source" value="Lib/SCSI.c"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="BootloaderMassStorage.txt"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mass Storage Bootloader - 128KB FLASH / 8KB Boot - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.128_8" force-caption="true" workspace-name="lufa_ms_128kb_8kb_">
+		<require idref="lufa.bootloaders.mass_storage"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x1E000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1E000"/>
+
+		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="0"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FFA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FFE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FFF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="Mass Storage Bootloader - 64KB FLASH / 8KB Boot - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.64_8" force-caption="true" workspace-name="lufa_ms_64kb_8kb_">
+		<require idref="lufa.bootloaders.mass_storage"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb647"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0xE000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0xE000"/>
+
+		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="0"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0xFFA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0xFFE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0xFFF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="Mass Storage Bootloader - 32KB FLASH / 4KB Boot (2KB AUX) - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.32_4" force-caption="true" workspace-name="lufa_ms_32kb_4kb_">
+		<require idref="lufa.bootloaders.mass_storage"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega32u4"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x7000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
+
+		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="2048"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux=0x6810"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux_trampoline=0x6800"/>
+		<build type="linker-config" subtype="flags" value="--undefined=Boot_AUX_Trampoline"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x7FA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x7FE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x7FF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="Mass Storage Bootloader - 16KB FLASH / 4KB Boot (2KB AUX) - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.16_4" force-caption="true" workspace-name="lufa_ms_16kb_4kb_">
+		<require idref="lufa.bootloaders.mass_storage"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega16u2"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x3000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/>
+
+		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="2048"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux=0x2810"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux_trampoline=0x2800"/>
+		<build type="linker-config" subtype="flags" value="--undefined=Boot_AUX_Trampoline"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x3FA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x3FE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x3FF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<module type="application" id="lufa.bootloaders.mass_storage" caption="Mass Storage Bootloader">
+		<info type="description" value="summary">
+		Mass Storage Class Bootloader, capable of reprogramming a device via binary BIN files copied to the virtual FAT12 file-system it creates when plugged into a host.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Bootloaders"/>
+			<keyword value="USB Device"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="include-path" value="."/>
+		<build type="c-source" value="BootloaderMassStorage.c"/>
+		<build type="header-file" value="BootloaderMassStorage.h"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Descriptors.h"/>
+		<build type="c-source" value="BootloaderAPI.c"/>
+		<build type="header-file" value="BootloaderAPI.h"/>
+		<build type="asm-source" value="BootloaderAPITable.S"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+
+		<build type="include-path" value="Lib"/>
+		<build type="header-file" value="Lib/VirtualFAT.h"/>
+		<build type="c-source" value="Lib/VirtualFAT.c"/>
+		<build type="header-file" value="Lib/SCSI.h"/>
+		<build type="c-source" value="Lib/SCSI.c"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="BootloaderMassStorage.txt"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Bootloaders/MassStorage/makefile b/Bootloaders/MassStorage/makefile
index 7f0ec82a7f..f3948e754f 100644
--- a/Bootloaders/MassStorage/makefile
+++ b/Bootloaders/MassStorage/makefile
@@ -1,75 +1,75 @@
-#
-#             LUFA Library
-#     Copyright (C) Dean Camera, 2017.
-#
-#  dean [at] fourwalledcubicle [dot] com
-#           www.lufa-lib.org
-#
-# --------------------------------------
-#         LUFA Project Makefile.
-# --------------------------------------
-
-# Run "make help" for target help.
-
-MCU          = at90usb1287
-ARCH         = AVR8
-BOARD        = USBKEY
-F_CPU        = 8000000
-F_USB        = $(F_CPU)
-OPTIMIZATION = s
-TARGET       = BootloaderMassStorage
-SRC          = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S Lib/SCSI.c Lib/VirtualFAT.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
-LUFA_PATH    = ../../LUFA
-CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET)
-LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS)
-
-# Flash size and bootloader section sizes of the target, in KB. These must
-# match the target's total FLASH size and the bootloader size set in the
-# device's fuses.
-FLASH_SIZE_KB         = 128
-BOOT_SECTION_SIZE_KB  = 8
-
-# Bootloader address calculation formulas
-# Do not modify these macros, but rather modify the dependent values above.
-CALC_ADDRESS_IN_HEX   = $(shell printf "0x%X" $$(( $(1) )) )
-BOOT_START_OFFSET     = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 )
-BOOT_SEC_OFFSET       = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) )
-
-# Bootloader linker section flags for relocating the API table sections to
-# known FLASH addresses - these should not normally be user-edited.
-BOOT_SECTION_LD_FLAG  = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2))
-BOOT_API_LD_FLAGS     = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96)
-BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable,   BootloaderAPI_JumpTable,   32)
-BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures,  BootloaderAPI_Signatures,  8)
-
-# Check if the bootloader needs an AUX section, located before the real bootloader section to store some of the
-# bootloader code. This is required for 32KB and smaller devices, where the actual bootloader is 6KB but the maximum
-# bootloader section size is 4KB. The actual usable application space will be reduced by 6KB for these devices.
-ifeq ($(BOOT_SECTION_SIZE_KB),8)
-  CC_FLAGS           += -DAUX_BOOT_SECTION_SIZE=0
-else
-  AUX_BOOT_SECTION_SIZE_KB = (6 - $(BOOT_SECTION_SIZE_KB))
-
-  CC_FLAGS           += -DAUX_BOOT_SECTION_SIZE='($(AUX_BOOT_SECTION_SIZE_KB) * 1024)'
-  LD_FLAGS           += -Wl,--section-start=.boot_aux=$(call BOOT_SEC_OFFSET, (($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024 - 16))
-  LD_FLAGS           += $(call BOOT_SECTION_LD_FLAG, .boot_aux_trampoline, Boot_AUX_Trampoline, ($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024)
-endif
-
-# Default target
-all:
-
-# Include LUFA-specific DMBS extension modules
-DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA
-include $(DMBS_LUFA_PATH)/lufa-sources.mk
-include $(DMBS_LUFA_PATH)/lufa-gcc.mk
-
-# Include common DMBS build system modules
-DMBS_PATH      ?= $(LUFA_PATH)/Build/DMBS/DMBS
-include $(DMBS_PATH)/core.mk
-include $(DMBS_PATH)/cppcheck.mk
-include $(DMBS_PATH)/doxygen.mk
-include $(DMBS_PATH)/dfu.mk
-include $(DMBS_PATH)/gcc.mk
-include $(DMBS_PATH)/hid.mk
-include $(DMBS_PATH)/avrdude.mk
-include $(DMBS_PATH)/atprogram.mk
+#
+#             LUFA Library
+#     Copyright (C) Dean Camera, 2017.
+#
+#  dean [at] fourwalledcubicle [dot] com
+#           www.lufa-lib.org
+#
+# --------------------------------------
+#         LUFA Project Makefile.
+# --------------------------------------
+
+# Run "make help" for target help.
+
+MCU          = at90usb1287
+ARCH         = AVR8
+BOARD        = USBKEY
+F_CPU        = 8000000
+F_USB        = $(F_CPU)
+OPTIMIZATION = s
+TARGET       = BootloaderMassStorage
+SRC          = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S Lib/SCSI.c Lib/VirtualFAT.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
+LUFA_PATH    = ../../LUFA
+CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET)
+LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS)
+
+# Flash size and bootloader section sizes of the target, in KB. These must
+# match the target's total FLASH size and the bootloader size set in the
+# device's fuses.
+FLASH_SIZE_KB         = 128
+BOOT_SECTION_SIZE_KB  = 8
+
+# Bootloader address calculation formulas
+# Do not modify these macros, but rather modify the dependent values above.
+CALC_ADDRESS_IN_HEX   = $(shell printf "0x%X" $$(( $(1) )) )
+BOOT_START_OFFSET     = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 )
+BOOT_SEC_OFFSET       = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) )
+
+# Bootloader linker section flags for relocating the API table sections to
+# known FLASH addresses - these should not normally be user-edited.
+BOOT_SECTION_LD_FLAG  = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2))
+BOOT_API_LD_FLAGS     = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96)
+BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable,   BootloaderAPI_JumpTable,   32)
+BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures,  BootloaderAPI_Signatures,  8)
+
+# Check if the bootloader needs an AUX section, located before the real bootloader section to store some of the
+# bootloader code. This is required for 32KB and smaller devices, where the actual bootloader is 6KB but the maximum
+# bootloader section size is 4KB. The actual usable application space will be reduced by 6KB for these devices.
+ifeq ($(BOOT_SECTION_SIZE_KB),8)
+  CC_FLAGS           += -DAUX_BOOT_SECTION_SIZE=0
+else
+  AUX_BOOT_SECTION_SIZE_KB = (6 - $(BOOT_SECTION_SIZE_KB))
+
+  CC_FLAGS           += -DAUX_BOOT_SECTION_SIZE='($(AUX_BOOT_SECTION_SIZE_KB) * 1024)'
+  LD_FLAGS           += -Wl,--section-start=.boot_aux=$(call BOOT_SEC_OFFSET, (($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024 - 16))
+  LD_FLAGS           += $(call BOOT_SECTION_LD_FLAG, .boot_aux_trampoline, Boot_AUX_Trampoline, ($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024)
+endif
+
+# Default target
+all:
+
+# Include LUFA-specific DMBS extension modules
+DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA
+include $(DMBS_LUFA_PATH)/lufa-sources.mk
+include $(DMBS_LUFA_PATH)/lufa-gcc.mk
+
+# Include common DMBS build system modules
+DMBS_PATH      ?= $(LUFA_PATH)/Build/DMBS/DMBS
+include $(DMBS_PATH)/core.mk
+include $(DMBS_PATH)/cppcheck.mk
+include $(DMBS_PATH)/doxygen.mk
+include $(DMBS_PATH)/dfu.mk
+include $(DMBS_PATH)/gcc.mk
+include $(DMBS_PATH)/hid.mk
+include $(DMBS_PATH)/avrdude.mk
+include $(DMBS_PATH)/atprogram.mk
diff --git a/Bootloaders/Printer/BootloaderAPITable.S b/Bootloaders/Printer/BootloaderAPITable.S
index 76f37bf499..d8358c31ce 100644
--- a/Bootloaders/Printer/BootloaderAPITable.S
+++ b/Bootloaders/Printer/BootloaderAPITable.S
@@ -1,91 +1,91 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2017  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-; Trampolines to actual API implementations if the target address is outside the
-; range of a rjmp instruction (can happen with large bootloader sections)
-.section .apitable_trampolines, "ax"
-.global BootloaderAPI_Trampolines
-BootloaderAPI_Trampolines:
-
-	BootloaderAPI_ErasePage_Trampoline:
-		jmp BootloaderAPI_ErasePage
-	BootloaderAPI_WritePage_Trampoline:
-		jmp BootloaderAPI_WritePage
-	BootloaderAPI_FillWord_Trampoline:
-		jmp BootloaderAPI_FillWord
-	BootloaderAPI_ReadSignature_Trampoline:
-		jmp BootloaderAPI_ReadSignature
-	BootloaderAPI_ReadFuse_Trampoline:
-		jmp BootloaderAPI_ReadFuse
-	BootloaderAPI_ReadLock_Trampoline:
-		jmp BootloaderAPI_ReadLock
-	BootloaderAPI_WriteLock_Trampoline:
-		jmp BootloaderAPI_WriteLock
-	BootloaderAPI_UNUSED1:
-		ret
-	BootloaderAPI_UNUSED2:
-		ret
-	BootloaderAPI_UNUSED3:
-		ret
-	BootloaderAPI_UNUSED4:
-		ret
-	BootloaderAPI_UNUSED5:
-		ret
-
-
-
-; API function jump table
-.section .apitable_jumptable, "ax"
-.global BootloaderAPI_JumpTable
-BootloaderAPI_JumpTable:
-
-	rjmp BootloaderAPI_ErasePage_Trampoline
-	rjmp BootloaderAPI_WritePage_Trampoline
-	rjmp BootloaderAPI_FillWord_Trampoline
-	rjmp BootloaderAPI_ReadSignature_Trampoline
-	rjmp BootloaderAPI_ReadFuse_Trampoline
-	rjmp BootloaderAPI_ReadLock_Trampoline
-	rjmp BootloaderAPI_WriteLock_Trampoline
-	rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1
-	rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2
-	rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3
-	rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4
-	rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5
-
-
-
-; Bootloader table signatures and information
-.section .apitable_signatures, "ax"
-.global BootloaderAPI_Signatures
-BootloaderAPI_Signatures:
-
-	.long BOOT_START_ADDR ; Start address of the bootloader
-	.word 0xDF20 ; Signature for the Printer class bootloader
-	.word 0xDCFB ; Signature for a LUFA class bootloader
+/*
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+*/
+
+/*
+  Copyright 2017  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+  Permission to use, copy, modify, distribute, and sell this
+  software and its documentation for any purpose is hereby granted
+  without fee, provided that the above copyright notice appear in
+  all copies and that both that the copyright notice and this
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
+  software without specific, written prior permission.
+
+  The author disclaims all warranties with regard to this
+  software, including all implied warranties of merchantability
+  and fitness.  In no event shall the author be liable for any
+  special, indirect or consequential damages or any damages
+  whatsoever resulting from loss of use, data or profits, whether
+  in an action of contract, negligence or other tortious action,
+  arising out of or in connection with the use or performance of
+  this software.
+*/
+
+; Trampolines to actual API implementations if the target address is outside the
+; range of a rjmp instruction (can happen with large bootloader sections)
+.section .apitable_trampolines, "ax"
+.global BootloaderAPI_Trampolines
+BootloaderAPI_Trampolines:
+
+	BootloaderAPI_ErasePage_Trampoline:
+		jmp BootloaderAPI_ErasePage
+	BootloaderAPI_WritePage_Trampoline:
+		jmp BootloaderAPI_WritePage
+	BootloaderAPI_FillWord_Trampoline:
+		jmp BootloaderAPI_FillWord
+	BootloaderAPI_ReadSignature_Trampoline:
+		jmp BootloaderAPI_ReadSignature
+	BootloaderAPI_ReadFuse_Trampoline:
+		jmp BootloaderAPI_ReadFuse
+	BootloaderAPI_ReadLock_Trampoline:
+		jmp BootloaderAPI_ReadLock
+	BootloaderAPI_WriteLock_Trampoline:
+		jmp BootloaderAPI_WriteLock
+	BootloaderAPI_UNUSED1:
+		ret
+	BootloaderAPI_UNUSED2:
+		ret
+	BootloaderAPI_UNUSED3:
+		ret
+	BootloaderAPI_UNUSED4:
+		ret
+	BootloaderAPI_UNUSED5:
+		ret
+
+
+
+; API function jump table
+.section .apitable_jumptable, "ax"
+.global BootloaderAPI_JumpTable
+BootloaderAPI_JumpTable:
+
+	rjmp BootloaderAPI_ErasePage_Trampoline
+	rjmp BootloaderAPI_WritePage_Trampoline
+	rjmp BootloaderAPI_FillWord_Trampoline
+	rjmp BootloaderAPI_ReadSignature_Trampoline
+	rjmp BootloaderAPI_ReadFuse_Trampoline
+	rjmp BootloaderAPI_ReadLock_Trampoline
+	rjmp BootloaderAPI_WriteLock_Trampoline
+	rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1
+	rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2
+	rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3
+	rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4
+	rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5
+
+
+
+; Bootloader table signatures and information
+.section .apitable_signatures, "ax"
+.global BootloaderAPI_Signatures
+BootloaderAPI_Signatures:
+
+	.long BOOT_START_ADDR ; Start address of the bootloader
+	.word 0xDF20 ; Signature for the Printer class bootloader
+	.word 0xDCFB ; Signature for a LUFA class bootloader
diff --git a/Bootloaders/Printer/asf.xml b/Bootloaders/Printer/asf.xml
index 86a56911ed..b5c0c6b3a5 100644
--- a/Bootloaders/Printer/asf.xml
+++ b/Bootloaders/Printer/asf.xml
@@ -1,159 +1,159 @@
-<asf xmlversion="1.0">
-	<project caption="Printer Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.128_4" force-caption="true" workspace-name="lufa_printer_128kb_4kb_">
-		<require idref="lufa.bootloaders.printer"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x1F000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1F000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FFA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FFE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FFF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="Printer Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.64_4" force-caption="true" workspace-name="lufa_printer_64kb_4kb_">
-		<require idref="lufa.bootloaders.printer"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb647"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0xF000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0xF000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0xFFA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0xFFE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0xFFF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="Printer Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.32_4" force-caption="true" workspace-name="lufa_printer_32kb_4kb_">
-		<require idref="lufa.bootloaders.printer"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega32u4"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x7000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x7FA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x7FE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x7FF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="Printer Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.16_4" force-caption="true" workspace-name="lufa_printer_16kb_4kb_">
-		<require idref="lufa.bootloaders.printer"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega16u2"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x3000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x3FA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x3FE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x3FF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<project caption="Printer Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.8_4" force-caption="true" workspace-name="lufa_printer_8kb_4kb_">
-		<require idref="lufa.bootloaders.printer"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atmega8u2"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<config name="config.compiler.optimization.level" value="size"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-
-		<build type="define" name="BOOT_START_ADDR" value="0x1000"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1000"/>
-
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FA0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FE0"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
-		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FF8"/>
-		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
-	</project>
-
-	<module type="application" id="lufa.bootloaders.printer" caption="Printer Bootloader">
-		<info type="description" value="summary">
-		Printer Class Bootloader, capable of reprogramming a device by "printing" new HEX files to the virtual Plain-Text printer it creates when plugged into a host.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Bootloaders"/>
-			<keyword value="USB Device"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="include-path" value="."/>
-		<build type="c-source" value="BootloaderPrinter.c"/>
-		<build type="header-file" value="BootloaderPrinter.h"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Descriptors.h"/>
-		<build type="c-source" value="BootloaderAPI.c"/>
-		<build type="header-file" value="BootloaderAPI.h"/>
-		<build type="asm-source" value="BootloaderAPITable.S"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="BootloaderPrinter.txt"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Printer Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.128_4" force-caption="true" workspace-name="lufa_printer_128kb_4kb_">
+		<require idref="lufa.bootloaders.printer"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x1F000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1F000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FFA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FFE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FFF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="Printer Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.64_4" force-caption="true" workspace-name="lufa_printer_64kb_4kb_">
+		<require idref="lufa.bootloaders.printer"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb647"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0xF000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0xF000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0xFFA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0xFFE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0xFFF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="Printer Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.32_4" force-caption="true" workspace-name="lufa_printer_32kb_4kb_">
+		<require idref="lufa.bootloaders.printer"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega32u4"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x7000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x7FA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x7FE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x7FF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="Printer Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.16_4" force-caption="true" workspace-name="lufa_printer_16kb_4kb_">
+		<require idref="lufa.bootloaders.printer"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega16u2"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x3000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x3FA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x3FE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x3FF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<project caption="Printer Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.8_4" force-caption="true" workspace-name="lufa_printer_8kb_4kb_">
+		<require idref="lufa.bootloaders.printer"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atmega8u2"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<config name="config.compiler.optimization.level" value="size"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+
+		<build type="define" name="BOOT_START_ADDR" value="0x1000"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1000"/>
+
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FA0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FE0"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+		<build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FF8"/>
+		<build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+	</project>
+
+	<module type="application" id="lufa.bootloaders.printer" caption="Printer Bootloader">
+		<info type="description" value="summary">
+		Printer Class Bootloader, capable of reprogramming a device by "printing" new HEX files to the virtual Plain-Text printer it creates when plugged into a host.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Bootloaders"/>
+			<keyword value="USB Device"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="include-path" value="."/>
+		<build type="c-source" value="BootloaderPrinter.c"/>
+		<build type="header-file" value="BootloaderPrinter.h"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Descriptors.h"/>
+		<build type="c-source" value="BootloaderAPI.c"/>
+		<build type="header-file" value="BootloaderAPI.h"/>
+		<build type="asm-source" value="BootloaderAPITable.S"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="BootloaderPrinter.txt"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Bootloaders/Printer/makefile b/Bootloaders/Printer/makefile
index 2c8582ca22..1de35bba02 100644
--- a/Bootloaders/Printer/makefile
+++ b/Bootloaders/Printer/makefile
@@ -1,62 +1,62 @@
-#
-#             LUFA Library
-#     Copyright (C) Dean Camera, 2017.
-#
-#  dean [at] fourwalledcubicle [dot] com
-#           www.lufa-lib.org
-#
-# --------------------------------------
-#         LUFA Project Makefile.
-# --------------------------------------
-
-# Run "make help" for target help.
-
-MCU          = at90usb1287
-ARCH         = AVR8
-BOARD        = USBKEY
-F_CPU        = 8000000
-F_USB        = $(F_CPU)
-OPTIMIZATION = s
-TARGET       = BootloaderPrinter
-SRC          = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
-LUFA_PATH    = ../../LUFA
-CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET)
-LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS)
-
-# Flash size and bootloader section sizes of the target, in KB. These must
-# match the target's total FLASH size and the bootloader size set in the
-# device's fuses.
-FLASH_SIZE_KB         = 128
-BOOT_SECTION_SIZE_KB  = 8
-
-# Bootloader address calculation formulas
-# Do not modify these macros, but rather modify the dependent values above.
-CALC_ADDRESS_IN_HEX   = $(shell printf "0x%X" $$(( $(1) )) )
-BOOT_START_OFFSET     = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 )
-BOOT_SEC_OFFSET       = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) )
-
-# Bootloader linker section flags for relocating the API table sections to
-# known FLASH addresses - these should not normally be user-edited.
-BOOT_SECTION_LD_FLAG  = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2))
-BOOT_API_LD_FLAGS     = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96)
-BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable,   BootloaderAPI_JumpTable,   32)
-BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures,  BootloaderAPI_Signatures,  8)
-
-# Default target
-all:
-
-# Include LUFA-specific DMBS extension modules
-DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA
-include $(DMBS_LUFA_PATH)/lufa-sources.mk
-include $(DMBS_LUFA_PATH)/lufa-gcc.mk
-
-# Include common DMBS build system modules
-DMBS_PATH      ?= $(LUFA_PATH)/Build/DMBS/DMBS
-include $(DMBS_PATH)/core.mk
-include $(DMBS_PATH)/cppcheck.mk
-include $(DMBS_PATH)/doxygen.mk
-include $(DMBS_PATH)/dfu.mk
-include $(DMBS_PATH)/gcc.mk
-include $(DMBS_PATH)/hid.mk
-include $(DMBS_PATH)/avrdude.mk
-include $(DMBS_PATH)/atprogram.mk
+#
+#             LUFA Library
+#     Copyright (C) Dean Camera, 2017.
+#
+#  dean [at] fourwalledcubicle [dot] com
+#           www.lufa-lib.org
+#
+# --------------------------------------
+#         LUFA Project Makefile.
+# --------------------------------------
+
+# Run "make help" for target help.
+
+MCU          = at90usb1287
+ARCH         = AVR8
+BOARD        = USBKEY
+F_CPU        = 8000000
+F_USB        = $(F_CPU)
+OPTIMIZATION = s
+TARGET       = BootloaderPrinter
+SRC          = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
+LUFA_PATH    = ../../LUFA
+CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET)
+LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS)
+
+# Flash size and bootloader section sizes of the target, in KB. These must
+# match the target's total FLASH size and the bootloader size set in the
+# device's fuses.
+FLASH_SIZE_KB         = 128
+BOOT_SECTION_SIZE_KB  = 8
+
+# Bootloader address calculation formulas
+# Do not modify these macros, but rather modify the dependent values above.
+CALC_ADDRESS_IN_HEX   = $(shell printf "0x%X" $$(( $(1) )) )
+BOOT_START_OFFSET     = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 )
+BOOT_SEC_OFFSET       = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) )
+
+# Bootloader linker section flags for relocating the API table sections to
+# known FLASH addresses - these should not normally be user-edited.
+BOOT_SECTION_LD_FLAG  = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2))
+BOOT_API_LD_FLAGS     = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96)
+BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable,   BootloaderAPI_JumpTable,   32)
+BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures,  BootloaderAPI_Signatures,  8)
+
+# Default target
+all:
+
+# Include LUFA-specific DMBS extension modules
+DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA
+include $(DMBS_LUFA_PATH)/lufa-sources.mk
+include $(DMBS_LUFA_PATH)/lufa-gcc.mk
+
+# Include common DMBS build system modules
+DMBS_PATH      ?= $(LUFA_PATH)/Build/DMBS/DMBS
+include $(DMBS_PATH)/core.mk
+include $(DMBS_PATH)/cppcheck.mk
+include $(DMBS_PATH)/doxygen.mk
+include $(DMBS_PATH)/dfu.mk
+include $(DMBS_PATH)/gcc.mk
+include $(DMBS_PATH)/hid.mk
+include $(DMBS_PATH)/avrdude.mk
+include $(DMBS_PATH)/atprogram.mk
diff --git a/Demos/Device/ClassDriver/AudioInput/asf.xml b/Demos/Device/ClassDriver/AudioInput/asf.xml
index 466de73033..a915925af6 100644
--- a/Demos/Device/ClassDriver/AudioInput/asf.xml
+++ b/Demos/Device/ClassDriver/AudioInput/asf.xml
@@ -1,52 +1,52 @@
-<asf xmlversion="1.0">
-	<project caption="Audio Input Device Demo (Class Driver APIs)" id="lufa.demos.device.class.audio_input.example.avr8">
-		<require idref="lufa.demos.device.class.audio_input"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.audio_input" caption="Audio Input Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Audio 1.0 Input device demo, implementing a basic USB microphone. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="Audio Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AudioInput.txt"/>
-
-		<build type="c-source" value="AudioInput.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="AudioInput.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.adc"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Audio Input Device Demo (Class Driver APIs)" id="lufa.demos.device.class.audio_input.example.avr8">
+		<require idref="lufa.demos.device.class.audio_input"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.audio_input" caption="Audio Input Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Audio 1.0 Input device demo, implementing a basic USB microphone. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="Audio Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="AudioInput.txt"/>
+
+		<build type="c-source" value="AudioInput.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="AudioInput.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.adc"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/AudioOutput/asf.xml b/Demos/Device/ClassDriver/AudioOutput/asf.xml
index f46f3a0f19..b372ac6086 100644
--- a/Demos/Device/ClassDriver/AudioOutput/asf.xml
+++ b/Demos/Device/ClassDriver/AudioOutput/asf.xml
@@ -1,50 +1,50 @@
-<asf xmlversion="1.0">
-	<project caption="Audio Output Device Demo (Class Driver APIs)" id="lufa.demos.device.class.audio_output.example.avr8">
-		<require idref="lufa.demos.device.class.audio_output"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.audio_output" caption="Audio Output Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Audio 1.0 Output device demo, implementing a basic USB speaker. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="Audio Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AudioOutput.txt"/>
-
-		<build type="c-source" value="AudioOutput.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="AudioOutput.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Audio Output Device Demo (Class Driver APIs)" id="lufa.demos.device.class.audio_output.example.avr8">
+		<require idref="lufa.demos.device.class.audio_output"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.audio_output" caption="Audio Output Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Audio 1.0 Output device demo, implementing a basic USB speaker. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="Audio Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="AudioOutput.txt"/>
+
+		<build type="c-source" value="AudioOutput.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="AudioOutput.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/DualVirtualSerial/asf.xml b/Demos/Device/ClassDriver/DualVirtualSerial/asf.xml
index e00f339954..d136f1c8b5 100644
--- a/Demos/Device/ClassDriver/DualVirtualSerial/asf.xml
+++ b/Demos/Device/ClassDriver/DualVirtualSerial/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="Dual Virtual Serial Device Demo (Class Driver APIs)" id="lufa.demos.device.class.dual_cdc.example.avr8">
-		<require idref="lufa.demos.device.class.dual_cdc"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Dual Virtual Serial Device Demo (Class Driver APIs)" id="lufa.demos.device.class.dual_cdc.example.xmega">
-		<require idref="lufa.demos.device.class.dual_cdc"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.dual_cdc" caption="Dual Virtual Serial Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Dual Virtual Serial (CDC) demo, implementing a pair of virtual serial port interfaces. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="CDC Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="DualVirtualSerial.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA DualVirtualSerial.inf"/>
-
-		<build type="c-source" value="DualVirtualSerial.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="DualVirtualSerial.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Dual Virtual Serial Device Demo (Class Driver APIs)" id="lufa.demos.device.class.dual_cdc.example.avr8">
+		<require idref="lufa.demos.device.class.dual_cdc"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Dual Virtual Serial Device Demo (Class Driver APIs)" id="lufa.demos.device.class.dual_cdc.example.xmega">
+		<require idref="lufa.demos.device.class.dual_cdc"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.dual_cdc" caption="Dual Virtual Serial Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Dual Virtual Serial (CDC) demo, implementing a pair of virtual serial port interfaces. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="CDC Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="DualVirtualSerial.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA DualVirtualSerial.inf"/>
+
+		<build type="c-source" value="DualVirtualSerial.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="DualVirtualSerial.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/GenericHID/asf.xml b/Demos/Device/ClassDriver/GenericHID/asf.xml
index 710f7c719d..df8b08b656 100644
--- a/Demos/Device/ClassDriver/GenericHID/asf.xml
+++ b/Demos/Device/ClassDriver/GenericHID/asf.xml
@@ -1,63 +1,63 @@
-<asf xmlversion="1.0">
-	<project caption="Generic HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.generic_hid.example.avr8">
-		<require idref="lufa.demos.device.class.generic_hid"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Generic HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.generic_hid.example.xmega">
-		<require idref="lufa.demos.device.class.generic_hid"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.generic_hid" caption="Generic HID Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Generic HID device demo, implementing a device whose LEDs can be controlled via HID messages from the host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="GenericHID.txt"/>
-		<build type="distribute" subtype="directory" value="HostTestApp"/>
-
-		<build type="c-source" value="GenericHID.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="GenericHID.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Generic HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.generic_hid.example.avr8">
+		<require idref="lufa.demos.device.class.generic_hid"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Generic HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.generic_hid.example.xmega">
+		<require idref="lufa.demos.device.class.generic_hid"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.generic_hid" caption="Generic HID Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Generic HID device demo, implementing a device whose LEDs can be controlled via HID messages from the host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="GenericHID.txt"/>
+		<build type="distribute" subtype="directory" value="HostTestApp"/>
+
+		<build type="c-source" value="GenericHID.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="GenericHID.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/Joystick/asf.xml b/Demos/Device/ClassDriver/Joystick/asf.xml
index 97d37a5aaf..cd7b72c0c9 100644
--- a/Demos/Device/ClassDriver/Joystick/asf.xml
+++ b/Demos/Device/ClassDriver/Joystick/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="Joystick HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.joystick.example.avr8">
-		<require idref="lufa.demos.device.class.joystick"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Joystick HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.joystick.example.xmega">
-		<require idref="lufa.demos.device.class.joystick"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.joystick" caption="Joystick HID Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Joystick HID device demo, implementing a basic USB joystick that can send movement information to the host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="Joystick.txt"/>
-
-		<build type="c-source" value="Joystick.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Joystick.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Joystick HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.joystick.example.avr8">
+		<require idref="lufa.demos.device.class.joystick"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Joystick HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.joystick.example.xmega">
+		<require idref="lufa.demos.device.class.joystick"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.joystick" caption="Joystick HID Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Joystick HID device demo, implementing a basic USB joystick that can send movement information to the host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="Joystick.txt"/>
+
+		<build type="c-source" value="Joystick.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Joystick.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/Keyboard/asf.xml b/Demos/Device/ClassDriver/Keyboard/asf.xml
index d7cdc17bcc..6adef2e4f6 100644
--- a/Demos/Device/ClassDriver/Keyboard/asf.xml
+++ b/Demos/Device/ClassDriver/Keyboard/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="Keyboard HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard.example.avr8">
-		<require idref="lufa.demos.device.class.keyboard"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Keyboard HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard.example.xmega">
-		<require idref="lufa.demos.device.class.keyboard"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.keyboard" caption="Keyboard HID Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Keyboard HID device demo, implementing a basic USB keyboard that can send key press information to the host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="Keyboard.txt"/>
-
-		<build type="c-source" value="Keyboard.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Keyboard.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.joystick"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Keyboard HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard.example.avr8">
+		<require idref="lufa.demos.device.class.keyboard"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Keyboard HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard.example.xmega">
+		<require idref="lufa.demos.device.class.keyboard"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.keyboard" caption="Keyboard HID Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Keyboard HID device demo, implementing a basic USB keyboard that can send key press information to the host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="Keyboard.txt"/>
+
+		<build type="c-source" value="Keyboard.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Keyboard.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.joystick"/>
+		<require idref="lufa.drivers.board.buttons"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/KeyboardMouse/asf.xml b/Demos/Device/ClassDriver/KeyboardMouse/asf.xml
index 4b5ca01214..5eeafc8ec4 100644
--- a/Demos/Device/ClassDriver/KeyboardMouse/asf.xml
+++ b/Demos/Device/ClassDriver/KeyboardMouse/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="Keyboard and Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard_mouse.example.avr8">
-		<require idref="lufa.demos.device.class.keyboard_mouse"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Keyboard and Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard_mouse.example.xmega">
-		<require idref="lufa.demos.device.class.keyboard_mouse"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.keyboard_mouse" caption="Keyboard and Mouse HID Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Keyboard and Mouse HID device demo, implementing a basic USB keyboard and mouse using a pair of HID interfaces. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="KeyboardMouse.txt"/>
-
-		<build type="c-source" value="KeyboardMouse.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="KeyboardMouse.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.joystick"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Keyboard and Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard_mouse.example.avr8">
+		<require idref="lufa.demos.device.class.keyboard_mouse"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Keyboard and Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard_mouse.example.xmega">
+		<require idref="lufa.demos.device.class.keyboard_mouse"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.keyboard_mouse" caption="Keyboard and Mouse HID Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Keyboard and Mouse HID device demo, implementing a basic USB keyboard and mouse using a pair of HID interfaces. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="KeyboardMouse.txt"/>
+
+		<build type="c-source" value="KeyboardMouse.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="KeyboardMouse.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.joystick"/>
+		<require idref="lufa.drivers.board.buttons"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/KeyboardMouseMultiReport/asf.xml b/Demos/Device/ClassDriver/KeyboardMouseMultiReport/asf.xml
index 39487fd8a7..2106bc254e 100644
--- a/Demos/Device/ClassDriver/KeyboardMouseMultiReport/asf.xml
+++ b/Demos/Device/ClassDriver/KeyboardMouseMultiReport/asf.xml
@@ -1,61 +1,61 @@
-<asf xmlversion="1.0">
-	<project caption="Keyboard and Mouse HID (Multi Report) Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard_mouse_mr.example.avr8">
-		<require idref="lufa.demos.device.class.keyboard_mouse_mr"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Keyboard and Mouse HID (Multi Report) Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard_mouse_mr.example.xmega">
-		<require idref="lufa.demos.device.class.keyboard_mouse_mr"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.keyboard_mouse_mr" caption="Keyboard and Mouse HID (Multi Report) Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Keyboard and Mouse HID device demo, implementing a basic USB keyboard and mouse using a single HID interface and multiple logical reports. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="KeyboardMouseMultiReport.txt"/>
-
-		<build type="c-source" value="KeyboardMouseMultiReport.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="KeyboardMouseMultiReport.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.joystick"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Keyboard and Mouse HID (Multi Report) Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard_mouse_mr.example.avr8">
+		<require idref="lufa.demos.device.class.keyboard_mouse_mr"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Keyboard and Mouse HID (Multi Report) Device Demo (Class Driver APIs)" id="lufa.demos.device.class.keyboard_mouse_mr.example.xmega">
+		<require idref="lufa.demos.device.class.keyboard_mouse_mr"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.keyboard_mouse_mr" caption="Keyboard and Mouse HID (Multi Report) Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Keyboard and Mouse HID device demo, implementing a basic USB keyboard and mouse using a single HID interface and multiple logical reports. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="KeyboardMouseMultiReport.txt"/>
+
+		<build type="c-source" value="KeyboardMouseMultiReport.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="KeyboardMouseMultiReport.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.joystick"/>
+		<require idref="lufa.drivers.board.buttons"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/MIDI/asf.xml b/Demos/Device/ClassDriver/MIDI/asf.xml
index 33a4fd5830..4cbc1c90aa 100644
--- a/Demos/Device/ClassDriver/MIDI/asf.xml
+++ b/Demos/Device/ClassDriver/MIDI/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="MIDI Device Demo (Class Driver APIs)" id="lufa.demos.device.class.midi.example.avr8">
-		<require idref="lufa.demos.device.class.midi"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="MIDI Device Demo (Class Driver APIs)" id="lufa.demos.device.class.midi.example.xmega">
-		<require idref="lufa.demos.device.class.midi"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.midi" caption="MIDI Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		MIDI device demo, implementing a basic USB MIDI device that can send messages to the host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="MIDI Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MIDI.txt"/>
-
-		<build type="c-source" value="MIDI.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="MIDI.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="MIDI Device Demo (Class Driver APIs)" id="lufa.demos.device.class.midi.example.avr8">
+		<require idref="lufa.demos.device.class.midi"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="MIDI Device Demo (Class Driver APIs)" id="lufa.demos.device.class.midi.example.xmega">
+		<require idref="lufa.demos.device.class.midi"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.midi" caption="MIDI Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		MIDI device demo, implementing a basic USB MIDI device that can send messages to the host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="MIDI Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MIDI.txt"/>
+
+		<build type="c-source" value="MIDI.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="MIDI.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/MassStorage/asf.xml b/Demos/Device/ClassDriver/MassStorage/asf.xml
index 6f5a8dc03e..8e91819ff4 100644
--- a/Demos/Device/ClassDriver/MassStorage/asf.xml
+++ b/Demos/Device/ClassDriver/MassStorage/asf.xml
@@ -1,67 +1,67 @@
-<asf xmlversion="1.0">
-	<project caption="Mass Storage Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mass_storage.example.avr8">
-		<require idref="lufa.demos.device.class.mass_storage"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Mass Storage Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mass_storage.example.xmega">
-		<require idref="lufa.demos.device.class.mass_storage"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.mass_storage" caption="Mass Storage Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Mass Storage device demo, implementing a basic USB storage disk using a Dataflash memory IC. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="Mass Storage Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MassStorage.txt"/>
-
-		<build type="c-source" value="MassStorage.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="c-source" value="Lib/DataflashManager.c"/>
-		<build type="c-source" value="Lib/SCSI.c"/>
-		<build type="header-file" value="MassStorage.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-		<build type="header-file" value="Lib/DataflashManager.h"/>
-		<build type="header-file" value="Lib/SCSI.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.dataflash"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mass Storage Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mass_storage.example.avr8">
+		<require idref="lufa.demos.device.class.mass_storage"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Mass Storage Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mass_storage.example.xmega">
+		<require idref="lufa.demos.device.class.mass_storage"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.mass_storage" caption="Mass Storage Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Mass Storage device demo, implementing a basic USB storage disk using a Dataflash memory IC. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="Mass Storage Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MassStorage.txt"/>
+
+		<build type="c-source" value="MassStorage.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="c-source" value="Lib/DataflashManager.c"/>
+		<build type="c-source" value="Lib/SCSI.c"/>
+		<build type="header-file" value="MassStorage.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+		<build type="header-file" value="Lib/DataflashManager.h"/>
+		<build type="header-file" value="Lib/SCSI.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.dataflash"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/MassStorageKeyboard/asf.xml b/Demos/Device/ClassDriver/MassStorageKeyboard/asf.xml
index 3cdb476b28..7aac4ffaa3 100644
--- a/Demos/Device/ClassDriver/MassStorageKeyboard/asf.xml
+++ b/Demos/Device/ClassDriver/MassStorageKeyboard/asf.xml
@@ -1,70 +1,70 @@
-<asf xmlversion="1.0">
-	<project caption="Mass Storage and HID Keyboard Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mass_storage_keyboard.example.avr8">
-		<require idref="lufa.demos.device.class.mass_storage_keyboard"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Mass Storage and HID Keyboard Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mass_storage_keyboard.example.xmega">
-		<require idref="lufa.demos.device.class.mass_storage_keyboard"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.mass_storage_keyboard" caption="Mass Storage and HID Keyboard Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Mass Storage and Keyboard device demo, implementing a basic USB storage disk using a Dataflash memory IC, and a basic HID keyboard. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-			<keyword value="Mass Storage Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MassStorageKeyboard.txt"/>
-
-		<build type="c-source" value="MassStorageKeyboard.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="c-source" value="Lib/DataflashManager.c"/>
-		<build type="c-source" value="Lib/SCSI.c"/>
-		<build type="header-file" value="MassStorageKeyboard.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-		<build type="header-file" value="Lib/DataflashManager.h"/>
-		<build type="header-file" value="Lib/SCSI.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-		<require idref="lufa.drivers.board.dataflash"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mass Storage and HID Keyboard Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mass_storage_keyboard.example.avr8">
+		<require idref="lufa.demos.device.class.mass_storage_keyboard"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Mass Storage and HID Keyboard Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mass_storage_keyboard.example.xmega">
+		<require idref="lufa.demos.device.class.mass_storage_keyboard"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.mass_storage_keyboard" caption="Mass Storage and HID Keyboard Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Mass Storage and Keyboard device demo, implementing a basic USB storage disk using a Dataflash memory IC, and a basic HID keyboard. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+			<keyword value="Mass Storage Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MassStorageKeyboard.txt"/>
+
+		<build type="c-source" value="MassStorageKeyboard.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="c-source" value="Lib/DataflashManager.c"/>
+		<build type="c-source" value="Lib/SCSI.c"/>
+		<build type="header-file" value="MassStorageKeyboard.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+		<build type="header-file" value="Lib/DataflashManager.h"/>
+		<build type="header-file" value="Lib/SCSI.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+		<require idref="lufa.drivers.board.dataflash"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/Mouse/asf.xml b/Demos/Device/ClassDriver/Mouse/asf.xml
index 1af0d76671..b3bea4fa3a 100644
--- a/Demos/Device/ClassDriver/Mouse/asf.xml
+++ b/Demos/Device/ClassDriver/Mouse/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mouse.example.avr8">
-		<require idref="lufa.demos.device.class.mouse"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mouse.example.xmega">
-		<require idref="lufa.demos.device.class.mouse"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.mouse" caption="Mouse HID Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Mouse device demo, implementing a basic USB mouse device that can send movement information to the host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="Mouse.txt"/>
-
-		<build type="c-source" value="Mouse.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Mouse.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mouse.example.avr8">
+		<require idref="lufa.demos.device.class.mouse"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.mouse.example.xmega">
+		<require idref="lufa.demos.device.class.mouse"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.mouse" caption="Mouse HID Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Mouse device demo, implementing a basic USB mouse device that can send movement information to the host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="Mouse.txt"/>
+
+		<build type="c-source" value="Mouse.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Mouse.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/RNDISEthernet/asf.xml b/Demos/Device/ClassDriver/RNDISEthernet/asf.xml
index e871a8799e..08104c4e74 100644
--- a/Demos/Device/ClassDriver/RNDISEthernet/asf.xml
+++ b/Demos/Device/ClassDriver/RNDISEthernet/asf.xml
@@ -1,84 +1,84 @@
-<asf xmlversion="1.0">
-	<project caption="RNDIS Ethernet Device Demo (Class Driver APIs)" id="lufa.demos.device.class.rndis.example.avr8">
-		<require idref="lufa.demos.device.class.rndis"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="RNDIS Ethernet Device Demo (Class Driver APIs)" id="lufa.demos.device.class.rndis.example.xmega">
-		<require idref="lufa.demos.device.class.rndis"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.rndis" caption="RNDIS Ethernet Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Microsoft RNDIS Ethernet networking device demo, implementing a basic HTTP webserver. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="RNDIS Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="RNDISEthernet.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA RNDIS.inf"/>
-
-		<build type="c-source" value="RNDISEthernet.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="c-source" value="Lib/ARP.c"/>
-		<build type="c-source" value="Lib/DHCP.c"/>
-		<build type="c-source" value="Lib/Ethernet.c"/>
-		<build type="c-source" value="Lib/ICMP.c"/>
-		<build type="c-source" value="Lib/IP.c"/>
-		<build type="c-source" value="Lib/ProtocolDecoders.c"/>
-		<build type="c-source" value="Lib/TCP.c"/>
-		<build type="c-source" value="Lib/UDP.c"/>
-		<build type="c-source" value="Lib/Webserver.c"/>
-		<build type="header-file" value="RNDISEthernet.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-		<build type="header-file" value="Lib/ARP.h"/>
-		<build type="header-file" value="Lib/DHCP.h"/>
-		<build type="header-file" value="Lib/Ethernet.h"/>
-		<build type="header-file" value="Lib/ICMP.h"/>
-		<build type="header-file" value="Lib/IP.h"/>
-		<build type="header-file" value="Lib/ProtocolDecoders.h"/>
-		<build type="header-file" value="Lib/TCP.h"/>
-		<build type="header-file" value="Lib/UDP.h"/>
-		<build type="header-file" value="Lib/Webserver.h"/>
-		<build type="header-file" value="Lib/EthernetProtocols.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="RNDIS Ethernet Device Demo (Class Driver APIs)" id="lufa.demos.device.class.rndis.example.avr8">
+		<require idref="lufa.demos.device.class.rndis"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="RNDIS Ethernet Device Demo (Class Driver APIs)" id="lufa.demos.device.class.rndis.example.xmega">
+		<require idref="lufa.demos.device.class.rndis"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.rndis" caption="RNDIS Ethernet Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Microsoft RNDIS Ethernet networking device demo, implementing a basic HTTP webserver. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="RNDIS Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="RNDISEthernet.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA RNDIS.inf"/>
+
+		<build type="c-source" value="RNDISEthernet.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="c-source" value="Lib/ARP.c"/>
+		<build type="c-source" value="Lib/DHCP.c"/>
+		<build type="c-source" value="Lib/Ethernet.c"/>
+		<build type="c-source" value="Lib/ICMP.c"/>
+		<build type="c-source" value="Lib/IP.c"/>
+		<build type="c-source" value="Lib/ProtocolDecoders.c"/>
+		<build type="c-source" value="Lib/TCP.c"/>
+		<build type="c-source" value="Lib/UDP.c"/>
+		<build type="c-source" value="Lib/Webserver.c"/>
+		<build type="header-file" value="RNDISEthernet.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+		<build type="header-file" value="Lib/ARP.h"/>
+		<build type="header-file" value="Lib/DHCP.h"/>
+		<build type="header-file" value="Lib/Ethernet.h"/>
+		<build type="header-file" value="Lib/ICMP.h"/>
+		<build type="header-file" value="Lib/IP.h"/>
+		<build type="header-file" value="Lib/ProtocolDecoders.h"/>
+		<build type="header-file" value="Lib/TCP.h"/>
+		<build type="header-file" value="Lib/UDP.h"/>
+		<build type="header-file" value="Lib/Webserver.h"/>
+		<build type="header-file" value="Lib/EthernetProtocols.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/VirtualSerial/asf.xml b/Demos/Device/ClassDriver/VirtualSerial/asf.xml
index 4839b7c5f8..f17a214fa8 100644
--- a/Demos/Device/ClassDriver/VirtualSerial/asf.xml
+++ b/Demos/Device/ClassDriver/VirtualSerial/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="Virtual Serial CDC Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc.example.avr8">
-		<require idref="lufa.demos.device.class.cdc"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Virtual Serial CDC Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc.example.xmega">
-		<require idref="lufa.demos.device.class.cdc"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.cdc" caption="Virtual Serial CDC Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Virtual Serial device demo, implementing a virtual serial channel between the host PC and the device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="CDC Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="VirtualSerial.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA VirtualSerial.inf"/>
-
-		<build type="c-source" value="VirtualSerial.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="VirtualSerial.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Virtual Serial CDC Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc.example.avr8">
+		<require idref="lufa.demos.device.class.cdc"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Virtual Serial CDC Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc.example.xmega">
+		<require idref="lufa.demos.device.class.cdc"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.cdc" caption="Virtual Serial CDC Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Virtual Serial device demo, implementing a virtual serial channel between the host PC and the device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="CDC Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="VirtualSerial.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA VirtualSerial.inf"/>
+
+		<build type="c-source" value="VirtualSerial.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="VirtualSerial.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/VirtualSerialMassStorage/asf.xml b/Demos/Device/ClassDriver/VirtualSerialMassStorage/asf.xml
index a73bcc21c6..0da80087eb 100644
--- a/Demos/Device/ClassDriver/VirtualSerialMassStorage/asf.xml
+++ b/Demos/Device/ClassDriver/VirtualSerialMassStorage/asf.xml
@@ -1,70 +1,70 @@
-<asf xmlversion="1.0">
-	<project caption="Virtual Serial CDC and Mass Storage Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc_ms.example.avr8">
-		<require idref="lufa.demos.device.class.cdc_ms"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Virtual Serial CDC and Mass Storage Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc_ms.example.xmega">
-		<require idref="lufa.demos.device.class.cdc_ms"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.cdc_ms" caption="Virtual Serial CDC and Mass Storage Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Virtual Serial and Mass Storage device demo, implementing a virtual serial channel between the host PC and the device, and a basic USB storage disk using a Dataflash memory IC. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="CDC Class"/>
-			<keyword value="Mass Storage Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="VirtualSerialMassStorage.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA VirtualSerialMassStorage.inf"/>
-
-		<build type="c-source" value="VirtualSerialMassStorage.c"/>
-		<build type="c-source" value="Lib/DataflashManager.c"/>
-		<build type="c-source" value="Lib/SCSI.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="VirtualSerialMassStorage.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-		<build type="header-file" value="Lib/DataflashManager.h"/>
-		<build type="header-file" value="Lib/SCSI.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.joystick"/>
-		<require idref="lufa.drivers.board.dataflash"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Virtual Serial CDC and Mass Storage Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc_ms.example.avr8">
+		<require idref="lufa.demos.device.class.cdc_ms"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Virtual Serial CDC and Mass Storage Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc_ms.example.xmega">
+		<require idref="lufa.demos.device.class.cdc_ms"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.cdc_ms" caption="Virtual Serial CDC and Mass Storage Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Virtual Serial and Mass Storage device demo, implementing a virtual serial channel between the host PC and the device, and a basic USB storage disk using a Dataflash memory IC. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="CDC Class"/>
+			<keyword value="Mass Storage Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="VirtualSerialMassStorage.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA VirtualSerialMassStorage.inf"/>
+
+		<build type="c-source" value="VirtualSerialMassStorage.c"/>
+		<build type="c-source" value="Lib/DataflashManager.c"/>
+		<build type="c-source" value="Lib/SCSI.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="VirtualSerialMassStorage.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+		<build type="header-file" value="Lib/DataflashManager.h"/>
+		<build type="header-file" value="Lib/SCSI.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.joystick"/>
+		<require idref="lufa.drivers.board.dataflash"/>
+	</module>
+</asf>
diff --git a/Demos/Device/ClassDriver/VirtualSerialMouse/asf.xml b/Demos/Device/ClassDriver/VirtualSerialMouse/asf.xml
index 40d13050b8..fbb40021b4 100644
--- a/Demos/Device/ClassDriver/VirtualSerialMouse/asf.xml
+++ b/Demos/Device/ClassDriver/VirtualSerialMouse/asf.xml
@@ -1,64 +1,64 @@
-<asf xmlversion="1.0">
-	<project caption="Virtual Serial CDC and Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc_mouse.example.avr8">
-		<require idref="lufa.demos.device.class.cdc_mouse"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Virtual Serial CDC and Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc_mouse.example.xmega">
-		<require idref="lufa.demos.device.class.cdc_mouse"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.cdc_mouse" caption="Virtual Serial CDC and Mouse HID Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Virtual Serial and Mouse device demo, implementing a virtual serial channel between the host PC and the device, and a USB mouse. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="CDC Class"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="VirtualSerialMouse.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA VirtualSerialMouse.inf"/>
-
-		<build type="c-source" value="VirtualSerialMouse.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="VirtualSerialMouse.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Virtual Serial CDC and Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc_mouse.example.avr8">
+		<require idref="lufa.demos.device.class.cdc_mouse"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Virtual Serial CDC and Mouse HID Device Demo (Class Driver APIs)" id="lufa.demos.device.class.cdc_mouse.example.xmega">
+		<require idref="lufa.demos.device.class.cdc_mouse"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.class.cdc_mouse" caption="Virtual Serial CDC and Mouse HID Device Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Virtual Serial and Mouse device demo, implementing a virtual serial channel between the host PC and the device, and a USB mouse. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="CDC Class"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="VirtualSerialMouse.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA VirtualSerialMouse.inf"/>
+
+		<build type="c-source" value="VirtualSerialMouse.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="VirtualSerialMouse.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/AudioInput/asf.xml b/Demos/Device/LowLevel/AudioInput/asf.xml
index dab549a75c..7fec744900 100644
--- a/Demos/Device/LowLevel/AudioInput/asf.xml
+++ b/Demos/Device/LowLevel/AudioInput/asf.xml
@@ -1,52 +1,52 @@
-<asf xmlversion="1.0">
-	<project caption="Audio Input Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.audio_input.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.audio_input"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.audio_input" caption="Audio Input Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Audio 1.0 Input device demo, implementing a basic USB microphone. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="Audio Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AudioInput.txt"/>
-
-		<build type="c-source" value="AudioInput.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="AudioInput.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.adc"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Audio Input Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.audio_input.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.audio_input"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.audio_input" caption="Audio Input Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Audio 1.0 Input device demo, implementing a basic USB microphone. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="Audio Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="AudioInput.txt"/>
+
+		<build type="c-source" value="AudioInput.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="AudioInput.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.adc"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/AudioOutput/asf.xml b/Demos/Device/LowLevel/AudioOutput/asf.xml
index cddfb85438..f7ad173070 100644
--- a/Demos/Device/LowLevel/AudioOutput/asf.xml
+++ b/Demos/Device/LowLevel/AudioOutput/asf.xml
@@ -1,51 +1,51 @@
-<asf xmlversion="1.0">
-	<project caption="Audio Output Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.audio_output.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.audio_output"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.audio_output" caption="Audio Output Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Audio 1.0 Output device demo, implementing a basic USB speaker. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="Audio Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AudioOutput.txt"/>
-
-		<build type="c-source" value="AudioOutput.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="AudioOutput.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Audio Output Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.audio_output.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.audio_output"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.audio_output" caption="Audio Output Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Audio 1.0 Output device demo, implementing a basic USB speaker. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="Audio Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="AudioOutput.txt"/>
+
+		<build type="c-source" value="AudioOutput.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="AudioOutput.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/DualVirtualSerial/asf.xml b/Demos/Device/LowLevel/DualVirtualSerial/asf.xml
index 133d1b4f82..6951608306 100644
--- a/Demos/Device/LowLevel/DualVirtualSerial/asf.xml
+++ b/Demos/Device/LowLevel/DualVirtualSerial/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="Dual Virtual Serial Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.dual_cdc.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.dual_cdc"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Dual Virtual Serial Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.dual_cdc.example.xmega">
-		<require idref="lufa.demos.device.lowlevel.dual_cdc"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.dual_cdc" caption="Dual Virtual Serial Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Dual Virtual Serial (CDC) demo, implementing a pair of virtual serial port interfaces. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="CDC Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="DualVirtualSerial.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA DualVirtualSerial.inf"/>
-
-		<build type="c-source" value="DualVirtualSerial.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="DualVirtualSerial.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Dual Virtual Serial Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.dual_cdc.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.dual_cdc"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Dual Virtual Serial Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.dual_cdc.example.xmega">
+		<require idref="lufa.demos.device.lowlevel.dual_cdc"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.dual_cdc" caption="Dual Virtual Serial Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Dual Virtual Serial (CDC) demo, implementing a pair of virtual serial port interfaces. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="CDC Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="DualVirtualSerial.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA DualVirtualSerial.inf"/>
+
+		<build type="c-source" value="DualVirtualSerial.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="DualVirtualSerial.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/GenericHID/asf.xml b/Demos/Device/LowLevel/GenericHID/asf.xml
index cf1fb80090..6e98adca84 100644
--- a/Demos/Device/LowLevel/GenericHID/asf.xml
+++ b/Demos/Device/LowLevel/GenericHID/asf.xml
@@ -1,63 +1,63 @@
-<asf xmlversion="1.0">
-	<project caption="Generic HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.generic_hid.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.generic_hid"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Generic HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.generic_hid.example.xmega">
-		<require idref="lufa.demos.device.lowlevel.generic_hid"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.generic_hid" caption="Generic HID Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Generic HID device demo, implementing a device whose LEDs can be controlled via HID messages from the host. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="GenericHID.txt"/>
-		<build type="distribute" subtype="directory" value="HostTestApp"/>
-
-		<build type="c-source" value="GenericHID.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="GenericHID.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Generic HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.generic_hid.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.generic_hid"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Generic HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.generic_hid.example.xmega">
+		<require idref="lufa.demos.device.lowlevel.generic_hid"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.generic_hid" caption="Generic HID Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Generic HID device demo, implementing a device whose LEDs can be controlled via HID messages from the host. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="GenericHID.txt"/>
+		<build type="distribute" subtype="directory" value="HostTestApp"/>
+
+		<build type="c-source" value="GenericHID.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="GenericHID.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/Joystick/asf.xml b/Demos/Device/LowLevel/Joystick/asf.xml
index d37741bace..c67eb642b1 100644
--- a/Demos/Device/LowLevel/Joystick/asf.xml
+++ b/Demos/Device/LowLevel/Joystick/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="Joystick HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.joystick.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.joystick"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Joystick HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.joystick.example.xmega">
-		<require idref="lufa.demos.device.lowlevel.joystick"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.joystick" caption="Joystick HID Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Joystick HID device demo, implementing a basic USB joystick that can send movement information to the host. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="Joystick.txt"/>
-
-		<build type="c-source" value="Joystick.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Joystick.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Joystick HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.joystick.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.joystick"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Joystick HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.joystick.example.xmega">
+		<require idref="lufa.demos.device.lowlevel.joystick"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.joystick" caption="Joystick HID Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Joystick HID device demo, implementing a basic USB joystick that can send movement information to the host. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="Joystick.txt"/>
+
+		<build type="c-source" value="Joystick.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Joystick.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/Keyboard/asf.xml b/Demos/Device/LowLevel/Keyboard/asf.xml
index 4d386f46fa..2280f4dd63 100644
--- a/Demos/Device/LowLevel/Keyboard/asf.xml
+++ b/Demos/Device/LowLevel/Keyboard/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="Keyboard HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.keyboard.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.keyboard"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Keyboard HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.keyboard.example.xmega">
-		<require idref="lufa.demos.device.lowlevel.keyboard"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.keyboard" caption="Keyboard HID Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Keyboard HID device demo, implementing a basic USB keyboard that can send key press information to the host. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="Keyboard.txt"/>
-
-		<build type="c-source" value="Keyboard.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Keyboard.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.joystick"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Keyboard HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.keyboard.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.keyboard"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Keyboard HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.keyboard.example.xmega">
+		<require idref="lufa.demos.device.lowlevel.keyboard"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.keyboard" caption="Keyboard HID Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Keyboard HID device demo, implementing a basic USB keyboard that can send key press information to the host. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="Keyboard.txt"/>
+
+		<build type="c-source" value="Keyboard.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Keyboard.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.joystick"/>
+		<require idref="lufa.drivers.board.buttons"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/KeyboardMouse/asf.xml b/Demos/Device/LowLevel/KeyboardMouse/asf.xml
index d44bb8043a..77e1a6642f 100644
--- a/Demos/Device/LowLevel/KeyboardMouse/asf.xml
+++ b/Demos/Device/LowLevel/KeyboardMouse/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="Keyboard and Mouse HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.keyboard_mouse.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.keyboard_mouse"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Keyboard and Mouse HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.keyboard_mouse.example.xmega">
-		<require idref="lufa.demos.device.lowlevel.keyboard_mouse"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.keyboard_mouse" caption="Keyboard and Mouse HID Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Keyboard and Mouse HID device demo, implementing a basic USB keyboard and mouse using a pair of HID interfaces. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="KeyboardMouse.txt"/>
-
-		<build type="c-source" value="KeyboardMouse.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="KeyboardMouse.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.joystick"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Keyboard and Mouse HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.keyboard_mouse.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.keyboard_mouse"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Keyboard and Mouse HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.keyboard_mouse.example.xmega">
+		<require idref="lufa.demos.device.lowlevel.keyboard_mouse"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.keyboard_mouse" caption="Keyboard and Mouse HID Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Keyboard and Mouse HID device demo, implementing a basic USB keyboard and mouse using a pair of HID interfaces. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="KeyboardMouse.txt"/>
+
+		<build type="c-source" value="KeyboardMouse.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="KeyboardMouse.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.joystick"/>
+		<require idref="lufa.drivers.board.buttons"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/MIDI/asf.xml b/Demos/Device/LowLevel/MIDI/asf.xml
index 477b7d749e..896a5e2aee 100644
--- a/Demos/Device/LowLevel/MIDI/asf.xml
+++ b/Demos/Device/LowLevel/MIDI/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="MIDI Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.midi.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.midi"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="MIDI Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.midi.example.xmega">
-		<require idref="lufa.demos.device.lowlevel.midi"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.midi" caption="MIDI Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		MIDI device demo, implementing a basic USB MIDI device that can send messages to the host. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="MIDI Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MIDI.txt"/>
-
-		<build type="c-source" value="MIDI.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="MIDI.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="MIDI Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.midi.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.midi"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="MIDI Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.midi.example.xmega">
+		<require idref="lufa.demos.device.lowlevel.midi"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.midi" caption="MIDI Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		MIDI device demo, implementing a basic USB MIDI device that can send messages to the host. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="MIDI Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MIDI.txt"/>
+
+		<build type="c-source" value="MIDI.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="MIDI.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/MassStorage/asf.xml b/Demos/Device/LowLevel/MassStorage/asf.xml
index 68ae2c28ed..a0612bb17b 100644
--- a/Demos/Device/LowLevel/MassStorage/asf.xml
+++ b/Demos/Device/LowLevel/MassStorage/asf.xml
@@ -1,67 +1,67 @@
-<asf xmlversion="1.0">
-	<project caption="Mass Storage Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.mass_storage.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.mass_storage"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Mass Storage Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.mass_storage.example.xmega">
-		<require idref="lufa.demos.device.lowlevel.mass_storage"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.mass_storage" caption="Mass Storage Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Mass Storage device demo, implementing a basic USB storage disk using a Dataflash memory IC. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="Mass Storage Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MassStorage.txt"/>
-
-		<build type="c-source" value="MassStorage.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="c-source" value="Lib/DataflashManager.c"/>
-		<build type="c-source" value="Lib/SCSI.c"/>
-		<build type="header-file" value="MassStorage.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-		<build type="header-file" value="Lib/DataflashManager.h"/>
-		<build type="header-file" value="Lib/SCSI.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.dataflash"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mass Storage Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.mass_storage.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.mass_storage"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Mass Storage Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.mass_storage.example.xmega">
+		<require idref="lufa.demos.device.lowlevel.mass_storage"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.mass_storage" caption="Mass Storage Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Mass Storage device demo, implementing a basic USB storage disk using a Dataflash memory IC. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="Mass Storage Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MassStorage.txt"/>
+
+		<build type="c-source" value="MassStorage.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="c-source" value="Lib/DataflashManager.c"/>
+		<build type="c-source" value="Lib/SCSI.c"/>
+		<build type="header-file" value="MassStorage.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+		<build type="header-file" value="Lib/DataflashManager.h"/>
+		<build type="header-file" value="Lib/SCSI.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.dataflash"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/Mouse/asf.xml b/Demos/Device/LowLevel/Mouse/asf.xml
index ac21d0771a..b62a3c5d0b 100644
--- a/Demos/Device/LowLevel/Mouse/asf.xml
+++ b/Demos/Device/LowLevel/Mouse/asf.xml
@@ -1,62 +1,62 @@
-<asf xmlversion="1.0">
-	<project caption="Mouse HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.mouse.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.mouse"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Mouse HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.mouse.example.xmega">
-		<require idref="lufa.demos.device.lowlevel.mouse"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.mouse" caption="Mouse HID Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Mouse device demo, implementing a basic USB mouse device that can send movement information to the host. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="Mouse.txt"/>
-
-		<build type="c-source" value="Mouse.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Mouse.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mouse HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.mouse.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.mouse"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Mouse HID Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.mouse.example.xmega">
+		<require idref="lufa.demos.device.lowlevel.mouse"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.mouse" caption="Mouse HID Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Mouse device demo, implementing a basic USB mouse device that can send movement information to the host. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="Mouse.txt"/>
+
+		<build type="c-source" value="Mouse.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Mouse.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/RNDISEthernet/asf.xml b/Demos/Device/LowLevel/RNDISEthernet/asf.xml
index 5bdbf635fd..7970b2b04a 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/asf.xml
+++ b/Demos/Device/LowLevel/RNDISEthernet/asf.xml
@@ -1,86 +1,86 @@
-<asf xmlversion="1.0">
-	<project caption="RNDIS Ethernet Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.rndis.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.rndis"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="RNDIS Ethernet Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.rndis.example.xmega">
-		<require idref="lufa.demos.device.lowlevel.rndis"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.rndis" caption="RNDIS Ethernet Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Microsoft RNDIS Ethernet networking device demo, implementing a basic HTTP webserver. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="RNDIS Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="RNDISEthernet.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA RNDIS.inf"/>
-
-		<build type="c-source" value="RNDISEthernet.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="c-source" value="Lib/ARP.c"/>
-		<build type="c-source" value="Lib/DHCP.c"/>
-		<build type="c-source" value="Lib/Ethernet.c"/>
-		<build type="c-source" value="Lib/ICMP.c"/>
-		<build type="c-source" value="Lib/IP.c"/>
-		<build type="c-source" value="Lib/ProtocolDecoders.c"/>
-		<build type="c-source" value="Lib/RNDIS.c"/>
-		<build type="c-source" value="Lib/TCP.c"/>
-		<build type="c-source" value="Lib/UDP.c"/>
-		<build type="c-source" value="Lib/Webserver.c"/>
-		<build type="header-file" value="RNDISEthernet.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-		<build type="header-file" value="Lib/ARP.h"/>
-		<build type="header-file" value="Lib/DHCP.h"/>
-		<build type="header-file" value="Lib/Ethernet.h"/>
-		<build type="header-file" value="Lib/ICMP.h"/>
-		<build type="header-file" value="Lib/IP.h"/>
-		<build type="header-file" value="Lib/ProtocolDecoders.h"/>
-		<build type="header-file" value="Lib/RNDIS.h"/>
-		<build type="header-file" value="Lib/TCP.h"/>
-		<build type="header-file" value="Lib/UDP.h"/>
-		<build type="header-file" value="Lib/Webserver.h"/>
-		<build type="header-file" value="Lib/EthernetProtocols.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="RNDIS Ethernet Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.rndis.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.rndis"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="RNDIS Ethernet Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.rndis.example.xmega">
+		<require idref="lufa.demos.device.lowlevel.rndis"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.rndis" caption="RNDIS Ethernet Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Microsoft RNDIS Ethernet networking device demo, implementing a basic HTTP webserver. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="RNDIS Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="RNDISEthernet.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA RNDIS.inf"/>
+
+		<build type="c-source" value="RNDISEthernet.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="c-source" value="Lib/ARP.c"/>
+		<build type="c-source" value="Lib/DHCP.c"/>
+		<build type="c-source" value="Lib/Ethernet.c"/>
+		<build type="c-source" value="Lib/ICMP.c"/>
+		<build type="c-source" value="Lib/IP.c"/>
+		<build type="c-source" value="Lib/ProtocolDecoders.c"/>
+		<build type="c-source" value="Lib/RNDIS.c"/>
+		<build type="c-source" value="Lib/TCP.c"/>
+		<build type="c-source" value="Lib/UDP.c"/>
+		<build type="c-source" value="Lib/Webserver.c"/>
+		<build type="header-file" value="RNDISEthernet.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+		<build type="header-file" value="Lib/ARP.h"/>
+		<build type="header-file" value="Lib/DHCP.h"/>
+		<build type="header-file" value="Lib/Ethernet.h"/>
+		<build type="header-file" value="Lib/ICMP.h"/>
+		<build type="header-file" value="Lib/IP.h"/>
+		<build type="header-file" value="Lib/ProtocolDecoders.h"/>
+		<build type="header-file" value="Lib/RNDIS.h"/>
+		<build type="header-file" value="Lib/TCP.h"/>
+		<build type="header-file" value="Lib/UDP.h"/>
+		<build type="header-file" value="Lib/Webserver.h"/>
+		<build type="header-file" value="Lib/EthernetProtocols.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+	</module>
+</asf>
diff --git a/Demos/Device/LowLevel/VirtualSerial/asf.xml b/Demos/Device/LowLevel/VirtualSerial/asf.xml
index 1eb328b510..bf04660fe3 100644
--- a/Demos/Device/LowLevel/VirtualSerial/asf.xml
+++ b/Demos/Device/LowLevel/VirtualSerial/asf.xml
@@ -1,63 +1,63 @@
-<asf xmlversion="1.0">
-	<project caption="Virtual Serial CDC Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.cdc.example.avr8">
-		<require idref="lufa.demos.device.lowlevel.cdc"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<project caption="Virtual Serial CDC Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.cdc.example.xmega">
-		<require idref="lufa.demos.device.lowlevel.cdc"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8"/>
-
-		<device-support value="atxmega128a1u"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.lowlevel.cdc" caption="Virtual Serial CDC Device Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Virtual Serial device demo, implementing a virtual serial channel between the host PC and the device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="CDC Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="VirtualSerial.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA VirtualSerial.inf"/>
-
-		<build type="c-source" value="VirtualSerial.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="VirtualSerial.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Virtual Serial CDC Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.cdc.example.avr8">
+		<require idref="lufa.demos.device.lowlevel.cdc"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<project caption="Virtual Serial CDC Device Demo (Low Level APIs)" id="lufa.demos.device.lowlevel.cdc.example.xmega">
+		<require idref="lufa.demos.device.lowlevel.cdc"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8"/>
+
+		<device-support value="atxmega128a1u"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.device.lowlevel.cdc" caption="Virtual Serial CDC Device Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Virtual Serial device demo, implementing a virtual serial channel between the host PC and the device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="CDC Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="VirtualSerial.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA VirtualSerial.inf"/>
+
+		<build type="c-source" value="VirtualSerial.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="VirtualSerial.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/DualRole/ClassDriver/MouseHostDevice/asf.xml b/Demos/DualRole/ClassDriver/MouseHostDevice/asf.xml
index 7cd93babb0..df36eb9af1 100644
--- a/Demos/DualRole/ClassDriver/MouseHostDevice/asf.xml
+++ b/Demos/DualRole/ClassDriver/MouseHostDevice/asf.xml
@@ -1,56 +1,56 @@
-<asf xmlversion="1.0">
-	<project caption="Mouse HID Dual USB Mode Demo (Class Driver APIs)" id="lufa.demos.dualrole.class.mouse.example.avr8">
-		<require idref="lufa.demos.dualrole.class.mouse"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.dualrole.class.mouse" caption="Mouse HID Dual USB Mode Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Mouse host and device dual role demo, implementing a basic mouse device and host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Dual Role"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MouseHostDevice.txt"/>
-
-		<build type="c-source" value="MouseHostDevice.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="c-source" value="DeviceFunctions.c"/>
-		<build type="c-source" value="HostFunctions.c"/>
-		<build type="header-file" value="MouseHostDevice.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-		<build type="header-file" value="DeviceFunctions.h"/>
-		<build type="header-file" value="HostFunctions.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.joystick"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mouse HID Dual USB Mode Demo (Class Driver APIs)" id="lufa.demos.dualrole.class.mouse.example.avr8">
+		<require idref="lufa.demos.dualrole.class.mouse"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.dualrole.class.mouse" caption="Mouse HID Dual USB Mode Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Mouse host and device dual role demo, implementing a basic mouse device and host. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Dual Role"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MouseHostDevice.txt"/>
+
+		<build type="c-source" value="MouseHostDevice.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="c-source" value="DeviceFunctions.c"/>
+		<build type="c-source" value="HostFunctions.c"/>
+		<build type="header-file" value="MouseHostDevice.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+		<build type="header-file" value="DeviceFunctions.h"/>
+		<build type="header-file" value="HostFunctions.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.joystick"/>
+		<require idref="lufa.drivers.board.buttons"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/asf.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/asf.xml
index 59efae3610..dfd74fd8ab 100644
--- a/Demos/Host/ClassDriver/AndroidAccessoryHost/asf.xml
+++ b/Demos/Host/ClassDriver/AndroidAccessoryHost/asf.xml
@@ -1,49 +1,49 @@
-<asf xmlversion="1.0">
-	<project caption="Android Accessory Host Demo (Class Driver APIs)" id="lufa.demos.host.class.android.example.avr8">
-		<require idref="lufa.demos.host.class.android"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.android" caption="Android Accessory Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Android Accessory Host demo, implementing a basic USB device whose LEDs can be controlled via an Android device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Android Accessory Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AndroidAccessoryHost.txt"/>
-		<build type="distribute" subtype="directory" value="AndroidHostApp"/>
-
-		<build type="c-source" value="AndroidAccessoryHost.c"/>
-		<build type="header-file" value="AndroidAccessoryHost.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Android Accessory Host Demo (Class Driver APIs)" id="lufa.demos.host.class.android.example.avr8">
+		<require idref="lufa.demos.host.class.android"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.android" caption="Android Accessory Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Android Accessory Host demo, implementing a basic USB device whose LEDs can be controlled via an Android device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Android Accessory Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="AndroidAccessoryHost.txt"/>
+		<build type="distribute" subtype="directory" value="AndroidHostApp"/>
+
+		<build type="c-source" value="AndroidAccessoryHost.c"/>
+		<build type="header-file" value="AndroidAccessoryHost.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/AudioInputHost/asf.xml b/Demos/Host/ClassDriver/AudioInputHost/asf.xml
index c2daffbdf7..6bcda37947 100644
--- a/Demos/Host/ClassDriver/AudioInputHost/asf.xml
+++ b/Demos/Host/ClassDriver/AudioInputHost/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="Audio Input Host Demo (Class Driver APIs)" id="lufa.demos.host.class.audio_input.example.avr8">
-		<require idref="lufa.demos.host.class.audio_input"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.audio_input" caption="Audio Input Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Audio Input Host demo, implementing a basic USB audio sink that can output incoming audio data to a speaker. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Audio Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AudioInputHost.txt"/>
-
-		<build type="c-source" value="AudioInputHost.c"/>
-		<build type="header-file" value="AudioInputHost.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Audio Input Host Demo (Class Driver APIs)" id="lufa.demos.host.class.audio_input.example.avr8">
+		<require idref="lufa.demos.host.class.audio_input"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.audio_input" caption="Audio Input Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Audio Input Host demo, implementing a basic USB audio sink that can output incoming audio data to a speaker. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Audio Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="AudioInputHost.txt"/>
+
+		<build type="c-source" value="AudioInputHost.c"/>
+		<build type="header-file" value="AudioInputHost.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/AudioOutputHost/asf.xml b/Demos/Host/ClassDriver/AudioOutputHost/asf.xml
index 6bd97286bd..39d735284a 100644
--- a/Demos/Host/ClassDriver/AudioOutputHost/asf.xml
+++ b/Demos/Host/ClassDriver/AudioOutputHost/asf.xml
@@ -1,52 +1,52 @@
-<asf xmlversion="1.0">
-	<project caption="Audio Output Host Demo (Class Driver APIs)" id="lufa.demos.host.class.audio_output.example.avr8">
-		<require idref="lufa.demos.host.class.audio_output"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.audio_output" caption="Audio Output Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Audio Output Host demo, implementing a basic USB audio source that can output audio data to an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Audio Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AudioOutputHost.txt"/>
-
-		<build type="c-source" value="AudioOutputHost.c"/>
-		<build type="header-file" value="AudioOutputHost.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.peripheral.adc"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Audio Output Host Demo (Class Driver APIs)" id="lufa.demos.host.class.audio_output.example.avr8">
+		<require idref="lufa.demos.host.class.audio_output"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.audio_output" caption="Audio Output Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Audio Output Host demo, implementing a basic USB audio source that can output audio data to an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Audio Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="AudioOutputHost.txt"/>
+
+		<build type="c-source" value="AudioOutputHost.c"/>
+		<build type="header-file" value="AudioOutputHost.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.peripheral.adc"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/JoystickHostWithParser/asf.xml b/Demos/Host/ClassDriver/JoystickHostWithParser/asf.xml
index 8899d81393..1ff6a804ce 100644
--- a/Demos/Host/ClassDriver/JoystickHostWithParser/asf.xml
+++ b/Demos/Host/ClassDriver/JoystickHostWithParser/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="Joystick HID (with parser) Host Demo (Class Driver APIs)" id="lufa.demos.host.class.joystick_parser.example.avr8">
-		<require idref="lufa.demos.host.class.joystick_parser"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.joystick_parser" caption="Joystick HID (with parser) Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Joystick HID Host demo with HID parser, implementing a basic USB joystick host that can display movement data on the board LEDs. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="JoystickHostWithParser.txt"/>
-
-		<build type="c-source" value="JoystickHostWithParser.c"/>
-		<build type="header-file" value="JoystickHostWithParser.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Joystick HID (with parser) Host Demo (Class Driver APIs)" id="lufa.demos.host.class.joystick_parser.example.avr8">
+		<require idref="lufa.demos.host.class.joystick_parser"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.joystick_parser" caption="Joystick HID (with parser) Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Joystick HID Host demo with HID parser, implementing a basic USB joystick host that can display movement data on the board LEDs. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="JoystickHostWithParser.txt"/>
+
+		<build type="c-source" value="JoystickHostWithParser.c"/>
+		<build type="header-file" value="JoystickHostWithParser.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/KeyboardHost/asf.xml b/Demos/Host/ClassDriver/KeyboardHost/asf.xml
index 46cd71fe71..fd19216b01 100644
--- a/Demos/Host/ClassDriver/KeyboardHost/asf.xml
+++ b/Demos/Host/ClassDriver/KeyboardHost/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="Keyboard HID Host Demo (Class Driver APIs)" id="lufa.demos.host.class.keyboard.example.avr8">
-		<require idref="lufa.demos.host.class.keyboard"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.keyboard" caption="Keyboard HID Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Keyboard HID Host demo, implementing a basic USB keyboard host that can display key press data on the board LEDs. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="KeyboardHost.txt"/>
-
-		<build type="c-source" value="KeyboardHost.c"/>
-		<build type="header-file" value="KeyboardHost.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Keyboard HID Host Demo (Class Driver APIs)" id="lufa.demos.host.class.keyboard.example.avr8">
+		<require idref="lufa.demos.host.class.keyboard"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.keyboard" caption="Keyboard HID Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Keyboard HID Host demo, implementing a basic USB keyboard host that can display key press data on the board LEDs. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="KeyboardHost.txt"/>
+
+		<build type="c-source" value="KeyboardHost.c"/>
+		<build type="header-file" value="KeyboardHost.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/KeyboardHostWithParser/asf.xml b/Demos/Host/ClassDriver/KeyboardHostWithParser/asf.xml
index 924299f2fe..656224b158 100644
--- a/Demos/Host/ClassDriver/KeyboardHostWithParser/asf.xml
+++ b/Demos/Host/ClassDriver/KeyboardHostWithParser/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="Keyboard HID (with parser) Host Demo (Class Driver APIs)" id="lufa.demos.host.class.keyboard_parser.example.avr8">
-		<require idref="lufa.demos.host.class.keyboard_parser"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.keyboard_parser" caption="Keyboard HID (with parser) Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Keyboard HID Host demo with HID parser, implementing a basic USB keyboard host that can display key press data on the board LEDs. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="KeyboardHostWithParser.txt"/>
-
-		<build type="c-source" value="KeyboardHostWithParser.c"/>
-		<build type="header-file" value="KeyboardHostWithParser.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Keyboard HID (with parser) Host Demo (Class Driver APIs)" id="lufa.demos.host.class.keyboard_parser.example.avr8">
+		<require idref="lufa.demos.host.class.keyboard_parser"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.keyboard_parser" caption="Keyboard HID (with parser) Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Keyboard HID Host demo with HID parser, implementing a basic USB keyboard host that can display key press data on the board LEDs. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="KeyboardHostWithParser.txt"/>
+
+		<build type="c-source" value="KeyboardHostWithParser.c"/>
+		<build type="header-file" value="KeyboardHostWithParser.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/MIDIHost/asf.xml b/Demos/Host/ClassDriver/MIDIHost/asf.xml
index 140c03ba72..420ddb13a2 100644
--- a/Demos/Host/ClassDriver/MIDIHost/asf.xml
+++ b/Demos/Host/ClassDriver/MIDIHost/asf.xml
@@ -1,50 +1,50 @@
-<asf xmlversion="1.0">
-	<project caption="MIDI Host Demo (Class Driver APIs)" id="lufa.demos.host.class.midi.example.avr8">
-		<require idref="lufa.demos.host.class.midi"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.midi" caption="MIDI Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		MIDI Host demo, capable of sending and receiving MIDI messages to and from an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="MIDI Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MIDIHost.txt"/>
-
-		<build type="c-source" value="MIDIHost.c"/>
-		<build type="header-file" value="MIDIHost.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="MIDI Host Demo (Class Driver APIs)" id="lufa.demos.host.class.midi.example.avr8">
+		<require idref="lufa.demos.host.class.midi"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.midi" caption="MIDI Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		MIDI Host demo, capable of sending and receiving MIDI messages to and from an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="MIDI Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MIDIHost.txt"/>
+
+		<build type="c-source" value="MIDIHost.c"/>
+		<build type="header-file" value="MIDIHost.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/MassStorageHost/asf.xml b/Demos/Host/ClassDriver/MassStorageHost/asf.xml
index 54bfe50cc6..3198fcfc45 100644
--- a/Demos/Host/ClassDriver/MassStorageHost/asf.xml
+++ b/Demos/Host/ClassDriver/MassStorageHost/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="Mass Storage Host Demo (Class Driver APIs)" id="lufa.demos.host.class.ms.example.avr8">
-		<require idref="lufa.demos.host.class.ms"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.ms" caption="Mass Storage Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Mass Storage Host demo, capable of reading and writing raw 512 byte segments to the device's serial port. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Mass Storage Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MassStorageHost.txt"/>
-
-		<build type="c-source" value="MassStorageHost.c"/>
-		<build type="header-file" value="MassStorageHost.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mass Storage Host Demo (Class Driver APIs)" id="lufa.demos.host.class.ms.example.avr8">
+		<require idref="lufa.demos.host.class.ms"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.ms" caption="Mass Storage Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Mass Storage Host demo, capable of reading and writing raw 512 byte segments to the device's serial port. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Mass Storage Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MassStorageHost.txt"/>
+
+		<build type="c-source" value="MassStorageHost.c"/>
+		<build type="header-file" value="MassStorageHost.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/MouseHost/asf.xml b/Demos/Host/ClassDriver/MouseHost/asf.xml
index b28860771a..96ea9adc74 100644
--- a/Demos/Host/ClassDriver/MouseHost/asf.xml
+++ b/Demos/Host/ClassDriver/MouseHost/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="Mouse HID Host Demo (Class Driver APIs)" id="lufa.demos.host.class.mouse.example.avr8">
-		<require idref="lufa.demos.host.class.mouse"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.mouse" caption="Mouse HID Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Mouse HID Host demo, implementing a basic USB mouse host that can display movement data on the board LEDs. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MouseHost.txt"/>
-
-		<build type="c-source" value="MouseHost.c"/>
-		<build type="header-file" value="MouseHost.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mouse HID Host Demo (Class Driver APIs)" id="lufa.demos.host.class.mouse.example.avr8">
+		<require idref="lufa.demos.host.class.mouse"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.mouse" caption="Mouse HID Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Mouse HID Host demo, implementing a basic USB mouse host that can display movement data on the board LEDs. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MouseHost.txt"/>
+
+		<build type="c-source" value="MouseHost.c"/>
+		<build type="header-file" value="MouseHost.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/MouseHostWithParser/asf.xml b/Demos/Host/ClassDriver/MouseHostWithParser/asf.xml
index 220eb457ca..c0c254c362 100644
--- a/Demos/Host/ClassDriver/MouseHostWithParser/asf.xml
+++ b/Demos/Host/ClassDriver/MouseHostWithParser/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="Mouse HID (with parser) Host Demo (Class Driver APIs)" id="lufa.demos.host.class.mouse_parser.example.avr8">
-		<require idref="lufa.demos.host.class.mouse_parser"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.mouse_parser" caption="Mouse HID (with parser) Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Mouse HID Host demo with HID parser, implementing a basic USB mouse host that can display movement data on the board LEDs. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MouseHostWithParser.txt"/>
-
-		<build type="c-source" value="MouseHostWithParser.c"/>
-		<build type="header-file" value="MouseHostWithParser.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mouse HID (with parser) Host Demo (Class Driver APIs)" id="lufa.demos.host.class.mouse_parser.example.avr8">
+		<require idref="lufa.demos.host.class.mouse_parser"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.mouse_parser" caption="Mouse HID (with parser) Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Mouse HID Host demo with HID parser, implementing a basic USB mouse host that can display movement data on the board LEDs. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MouseHostWithParser.txt"/>
+
+		<build type="c-source" value="MouseHostWithParser.c"/>
+		<build type="header-file" value="MouseHostWithParser.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/PrinterHost/asf.xml b/Demos/Host/ClassDriver/PrinterHost/asf.xml
index bd355cf35e..ef93cdedb4 100644
--- a/Demos/Host/ClassDriver/PrinterHost/asf.xml
+++ b/Demos/Host/ClassDriver/PrinterHost/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="Printer Host Demo (Class Driver APIs)" id="lufa.demos.host.class.printer.example.avr8">
-		<require idref="lufa.demos.host.class.printer"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.printer" caption="Printer Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Printer Host demo, implementing a basic USB printer host that can send raw printer control data to an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Printer Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="PrinterHost.txt"/>
-
-		<build type="c-source" value="PrinterHost.c"/>
-		<build type="header-file" value="PrinterHost.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Printer Host Demo (Class Driver APIs)" id="lufa.demos.host.class.printer.example.avr8">
+		<require idref="lufa.demos.host.class.printer"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.printer" caption="Printer Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Printer Host demo, implementing a basic USB printer host that can send raw printer control data to an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Printer Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="PrinterHost.txt"/>
+
+		<build type="c-source" value="PrinterHost.c"/>
+		<build type="header-file" value="PrinterHost.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/RNDISEthernetHost/asf.xml b/Demos/Host/ClassDriver/RNDISEthernetHost/asf.xml
index 37cedaaa53..da7e0ceb76 100644
--- a/Demos/Host/ClassDriver/RNDISEthernetHost/asf.xml
+++ b/Demos/Host/ClassDriver/RNDISEthernetHost/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="RNDIS Ethernet Host Demo (Class Driver APIs)" id="lufa.demos.host.class.rndis.example.avr8">
-		<require idref="lufa.demos.host.class.rndis"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.rndis" caption="RNDIS Ethernet Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Microsoft RNDIS Ethernet Host demo, implementing a RNDIS host that can send and receive Ethernet data to and from an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="RNDIS Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="RNDISEthernetHost.txt"/>
-
-		<build type="c-source" value="RNDISEthernetHost.c"/>
-		<build type="header-file" value="RNDISEthernetHost.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="RNDIS Ethernet Host Demo (Class Driver APIs)" id="lufa.demos.host.class.rndis.example.avr8">
+		<require idref="lufa.demos.host.class.rndis"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.rndis" caption="RNDIS Ethernet Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Microsoft RNDIS Ethernet Host demo, implementing a RNDIS host that can send and receive Ethernet data to and from an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="RNDIS Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="RNDISEthernetHost.txt"/>
+
+		<build type="c-source" value="RNDISEthernetHost.c"/>
+		<build type="header-file" value="RNDISEthernetHost.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/StillImageHost/asf.xml b/Demos/Host/ClassDriver/StillImageHost/asf.xml
index 4a5f6bfeb1..9ef93f140f 100644
--- a/Demos/Host/ClassDriver/StillImageHost/asf.xml
+++ b/Demos/Host/ClassDriver/StillImageHost/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="Still Image Host Demo (Class Driver APIs)" id="lufa.demos.host.class.si.example.avr8">
-		<require idref="lufa.demos.host.class.si"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.si" caption="Still Image Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Still Image Host demo, implementing a Still Image host that can send and receive PIMA data to and from an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Still Image Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="StillImageHost.txt"/>
-
-		<build type="c-source" value="StillImageHost.c"/>
-		<build type="header-file" value="StillImageHost.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Still Image Host Demo (Class Driver APIs)" id="lufa.demos.host.class.si.example.avr8">
+		<require idref="lufa.demos.host.class.si"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.si" caption="Still Image Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Still Image Host demo, implementing a Still Image host that can send and receive PIMA data to and from an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Still Image Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="StillImageHost.txt"/>
+
+		<build type="c-source" value="StillImageHost.c"/>
+		<build type="header-file" value="StillImageHost.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/ClassDriver/VirtualSerialHost/asf.xml b/Demos/Host/ClassDriver/VirtualSerialHost/asf.xml
index e456c9295a..2e5fb66865 100644
--- a/Demos/Host/ClassDriver/VirtualSerialHost/asf.xml
+++ b/Demos/Host/ClassDriver/VirtualSerialHost/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="Virtual Serial CDC Host Demo (Class Driver APIs)" id="lufa.demos.host.class.cdc.example.avr8">
-		<require idref="lufa.demos.host.class.cdc"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.class.cdc" caption="Virtual Serial CDC Host Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Virtual Serial Host demo, implementing a CDC host that can send and receive data to and from an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="CDC Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="VirtualSerialHost.txt"/>
-
-		<build type="c-source" value="VirtualSerialHost.c"/>
-		<build type="header-file" value="VirtualSerialHost.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Virtual Serial CDC Host Demo (Class Driver APIs)" id="lufa.demos.host.class.cdc.example.avr8">
+		<require idref="lufa.demos.host.class.cdc"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.class.cdc" caption="Virtual Serial CDC Host Demo (Class Driver APIs)">
+		<info type="description" value="summary">
+		Virtual Serial Host demo, implementing a CDC host that can send and receive data to and from an attached device. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="CDC Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="VirtualSerialHost.txt"/>
+
+		<build type="c-source" value="VirtualSerialHost.c"/>
+		<build type="header-file" value="VirtualSerialHost.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/AndroidAccessoryHost/asf.xml b/Demos/Host/LowLevel/AndroidAccessoryHost/asf.xml
index 25b47661b5..5449b5dc5b 100644
--- a/Demos/Host/LowLevel/AndroidAccessoryHost/asf.xml
+++ b/Demos/Host/LowLevel/AndroidAccessoryHost/asf.xml
@@ -1,55 +1,55 @@
-<asf xmlversion="1.0">
-	<project caption="Android Accessory Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.android.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.android"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.android" caption="Android Accessory Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Android Accessory Host demo, implementing a basic USB device whose LEDs can be controlled via an Android device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Android Accessory Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AndroidAccessoryHost.txt"/>
-
-		<build type="c-source" value="AndroidAccessoryHost.c"/>
-		<build type="c-source" value="DeviceDescriptor.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="AndroidAccessoryHost.h"/>
-		<build type="header-file" value="DeviceDescriptor.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="c-source" value="Lib/AndroidAccessoryCommands.c"/>
-		<build type="header-file" value="Lib/AndroidAccessoryCommands.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Android Accessory Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.android.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.android"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.android" caption="Android Accessory Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Android Accessory Host demo, implementing a basic USB device whose LEDs can be controlled via an Android device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Android Accessory Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="AndroidAccessoryHost.txt"/>
+
+		<build type="c-source" value="AndroidAccessoryHost.c"/>
+		<build type="c-source" value="DeviceDescriptor.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="AndroidAccessoryHost.h"/>
+		<build type="header-file" value="DeviceDescriptor.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="c-source" value="Lib/AndroidAccessoryCommands.c"/>
+		<build type="header-file" value="Lib/AndroidAccessoryCommands.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/AudioInputHost/asf.xml b/Demos/Host/LowLevel/AudioInputHost/asf.xml
index f6defd91d7..2967050572 100644
--- a/Demos/Host/LowLevel/AudioInputHost/asf.xml
+++ b/Demos/Host/LowLevel/AudioInputHost/asf.xml
@@ -1,50 +1,50 @@
-<asf xmlversion="1.0">
-	<project caption="Audio Input Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.audio_input.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.audio_input"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.audio_input" caption="Audio Input Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Audio Input Host demo, implementing a basic USB audio sink that can output incoming audio data to a speaker. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Audio Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AudioInputHost.txt"/>
-
-		<build type="c-source" value="AudioInputHost.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="AudioInputHost.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Audio Input Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.audio_input.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.audio_input"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.audio_input" caption="Audio Input Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Audio Input Host demo, implementing a basic USB audio sink that can output incoming audio data to a speaker. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Audio Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="AudioInputHost.txt"/>
+
+		<build type="c-source" value="AudioInputHost.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="AudioInputHost.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/AudioOutputHost/asf.xml b/Demos/Host/LowLevel/AudioOutputHost/asf.xml
index ebc1587c69..c568eb98b8 100644
--- a/Demos/Host/LowLevel/AudioOutputHost/asf.xml
+++ b/Demos/Host/LowLevel/AudioOutputHost/asf.xml
@@ -1,54 +1,54 @@
-<asf xmlversion="1.0">
-	<project caption="Audio Output Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.audio_output.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.audio_output"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.audio_output" caption="Audio Output Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Audio Output Host demo, implementing a basic USB audio source that can output audio data to an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Audio Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AudioOutputHost.txt"/>
-
-		<build type="c-source" value="AudioOutputHost.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="AudioOutputHost.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.peripheral.adc"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Audio Output Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.audio_output.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.audio_output"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.audio_output" caption="Audio Output Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Audio Output Host demo, implementing a basic USB audio source that can output audio data to an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Audio Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="AudioOutputHost.txt"/>
+
+		<build type="c-source" value="AudioOutputHost.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="AudioOutputHost.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.peripheral.adc"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/GenericHIDHost/asf.xml b/Demos/Host/LowLevel/GenericHIDHost/asf.xml
index 2321a8139c..e0890865d5 100644
--- a/Demos/Host/LowLevel/GenericHIDHost/asf.xml
+++ b/Demos/Host/LowLevel/GenericHIDHost/asf.xml
@@ -1,50 +1,50 @@
-<asf xmlversion="1.0">
-	<project caption="Generic HID Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.generic_hid.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.generic_hid"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.generic_hid" caption="Generic HID Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Generic HID Host demo, implementing a basic USB HID device that can send and receive data to and from an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="GenericHIDHost.txt"/>
-
-		<build type="c-source" value="GenericHIDHost.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="GenericHIDHost.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Generic HID Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.generic_hid.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.generic_hid"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.generic_hid" caption="Generic HID Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Generic HID Host demo, implementing a basic USB HID device that can send and receive data to and from an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="GenericHIDHost.txt"/>
+
+		<build type="c-source" value="GenericHIDHost.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="GenericHIDHost.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/JoystickHostWithParser/asf.xml b/Demos/Host/LowLevel/JoystickHostWithParser/asf.xml
index f2b919511a..7052bbc502 100644
--- a/Demos/Host/LowLevel/JoystickHostWithParser/asf.xml
+++ b/Demos/Host/LowLevel/JoystickHostWithParser/asf.xml
@@ -1,52 +1,52 @@
-<asf xmlversion="1.0">
-	<project caption="Joystick HID (with parser) Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.joystick_parser.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.joystick_parser"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.joystick_parser" caption="Joystick HID (with parser) Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Joystick HID Host demo with HID parser, implementing a basic USB joystick host that can display movement data on the board LEDs. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="JoystickHostWithParser.txt"/>
-
-		<build type="c-source" value="JoystickHostWithParser.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="c-source" value="HIDReport.c"/>
-		<build type="header-file" value="JoystickHostWithParser.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-		<build type="header-file" value="HIDReport.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Joystick HID (with parser) Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.joystick_parser.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.joystick_parser"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.joystick_parser" caption="Joystick HID (with parser) Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Joystick HID Host demo with HID parser, implementing a basic USB joystick host that can display movement data on the board LEDs. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="JoystickHostWithParser.txt"/>
+
+		<build type="c-source" value="JoystickHostWithParser.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="c-source" value="HIDReport.c"/>
+		<build type="header-file" value="JoystickHostWithParser.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+		<build type="header-file" value="HIDReport.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/KeyboardHost/asf.xml b/Demos/Host/LowLevel/KeyboardHost/asf.xml
index 1256e35404..2da7ed7fc6 100644
--- a/Demos/Host/LowLevel/KeyboardHost/asf.xml
+++ b/Demos/Host/LowLevel/KeyboardHost/asf.xml
@@ -1,50 +1,50 @@
-<asf xmlversion="1.0">
-	<project caption="Keyboard HID Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.keyboard.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.keyboard"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.keyboard" caption="Keyboard HID Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Keyboard HID Host demo, implementing a basic USB keyboard host that can display key press data on the board LEDs. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="KeyboardHost.txt"/>
-
-		<build type="c-source" value="KeyboardHost.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="KeyboardHost.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Keyboard HID Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.keyboard.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.keyboard"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.keyboard" caption="Keyboard HID Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Keyboard HID Host demo, implementing a basic USB keyboard host that can display key press data on the board LEDs. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="KeyboardHost.txt"/>
+
+		<build type="c-source" value="KeyboardHost.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="KeyboardHost.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/KeyboardHostWithParser/asf.xml b/Demos/Host/LowLevel/KeyboardHostWithParser/asf.xml
index beeaff9b72..430eec7a29 100644
--- a/Demos/Host/LowLevel/KeyboardHostWithParser/asf.xml
+++ b/Demos/Host/LowLevel/KeyboardHostWithParser/asf.xml
@@ -1,52 +1,52 @@
-<asf xmlversion="1.0">
-	<project caption="Keyboard HID (with parser) Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.keyboard_parser.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.keyboard_parser"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.keyboard_parser" caption="Keyboard HID (with parser) Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Keyboard HID Host demo with HID parser, implementing a basic USB keyboard host that can display key press data on the board LEDs. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="KeyboardHostWithParser.txt"/>
-
-		<build type="c-source" value="KeyboardHostWithParser.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="c-source" value="HIDReport.c"/>
-		<build type="header-file" value="KeyboardHostWithParser.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-		<build type="header-file" value="HIDReport.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Keyboard HID (with parser) Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.keyboard_parser.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.keyboard_parser"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.keyboard_parser" caption="Keyboard HID (with parser) Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Keyboard HID Host demo with HID parser, implementing a basic USB keyboard host that can display key press data on the board LEDs. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="KeyboardHostWithParser.txt"/>
+
+		<build type="c-source" value="KeyboardHostWithParser.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="c-source" value="HIDReport.c"/>
+		<build type="header-file" value="KeyboardHostWithParser.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+		<build type="header-file" value="HIDReport.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/MIDIHost/asf.xml b/Demos/Host/LowLevel/MIDIHost/asf.xml
index 0a19a117df..f2c933bfd8 100644
--- a/Demos/Host/LowLevel/MIDIHost/asf.xml
+++ b/Demos/Host/LowLevel/MIDIHost/asf.xml
@@ -1,52 +1,52 @@
-<asf xmlversion="1.0">
-	<project caption="MIDI Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.midi.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.midi"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.midi" caption="MIDI Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		MIDI Host demo, capable of sending and receiving MIDI messages to and from an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="MIDI Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MIDIHost.txt"/>
-
-		<build type="c-source" value="MIDIHost.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="MIDIHost.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="MIDI Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.midi.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.midi"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.midi" caption="MIDI Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		MIDI Host demo, capable of sending and receiving MIDI messages to and from an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="MIDI Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MIDIHost.txt"/>
+
+		<build type="c-source" value="MIDIHost.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="MIDIHost.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/MassStorageHost/asf.xml b/Demos/Host/LowLevel/MassStorageHost/asf.xml
index 8f04f692e8..218b89854b 100644
--- a/Demos/Host/LowLevel/MassStorageHost/asf.xml
+++ b/Demos/Host/LowLevel/MassStorageHost/asf.xml
@@ -1,53 +1,53 @@
-<asf xmlversion="1.0">
-	<project caption="Mass Storage Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.ms.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.ms"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.ms" caption="Mass Storage Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Mass Storage Host demo, capable of reading and writing raw 512 byte segments to the device's serial port. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Mass Storage Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MassStorageHost.txt"/>
-
-		<build type="c-source" value="MassStorageHost.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="MassStorageHost.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="c-source" value="Lib/MassStoreCommands.c"/>
-		<build type="header-file" value="Lib/MassStoreCommands.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mass Storage Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.ms.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.ms"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.ms" caption="Mass Storage Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Mass Storage Host demo, capable of reading and writing raw 512 byte segments to the device's serial port. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Mass Storage Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MassStorageHost.txt"/>
+
+		<build type="c-source" value="MassStorageHost.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="MassStorageHost.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="c-source" value="Lib/MassStoreCommands.c"/>
+		<build type="header-file" value="Lib/MassStoreCommands.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/MouseHost/asf.xml b/Demos/Host/LowLevel/MouseHost/asf.xml
index 4499986b39..ab037f0f2d 100644
--- a/Demos/Host/LowLevel/MouseHost/asf.xml
+++ b/Demos/Host/LowLevel/MouseHost/asf.xml
@@ -1,50 +1,50 @@
-<asf xmlversion="1.0">
-	<project caption="Mouse HID Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.mouse.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.mouse"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.mouse" caption="Mouse HID Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Keyboard HID Host demo, implementing a basic USB mouse host that can display movement data on the board LEDs. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MouseHost.txt"/>
-
-		<build type="c-source" value="MouseHost.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="MouseHost.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mouse HID Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.mouse.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.mouse"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.mouse" caption="Mouse HID Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Keyboard HID Host demo, implementing a basic USB mouse host that can display movement data on the board LEDs. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MouseHost.txt"/>
+
+		<build type="c-source" value="MouseHost.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="MouseHost.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/asf.xml b/Demos/Host/LowLevel/MouseHostWithParser/asf.xml
index e06dbea4ae..de45fd379a 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/asf.xml
+++ b/Demos/Host/LowLevel/MouseHostWithParser/asf.xml
@@ -1,52 +1,52 @@
-<asf xmlversion="1.0">
-	<project caption="Mouse HID (with parser) Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.mouse_parser.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.mouse_parser"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.mouse_parser" caption="Mouse HID (with parser) Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Mouse HID Host demo with HID parser, implementing a basic USB mouse host that can display movement data on the board LEDs. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MouseHostWithParser.txt"/>
-
-		<build type="c-source" value="MouseHostWithParser.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="c-source" value="HIDReport.c"/>
-		<build type="header-file" value="MouseHostWithParser.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-		<build type="header-file" value="HIDReport.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Mouse HID (with parser) Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.mouse_parser.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.mouse_parser"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.mouse_parser" caption="Mouse HID (with parser) Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Mouse HID Host demo with HID parser, implementing a basic USB mouse host that can display movement data on the board LEDs. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MouseHostWithParser.txt"/>
+
+		<build type="c-source" value="MouseHostWithParser.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="c-source" value="HIDReport.c"/>
+		<build type="header-file" value="MouseHostWithParser.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+		<build type="header-file" value="HIDReport.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/PrinterHost/asf.xml b/Demos/Host/LowLevel/PrinterHost/asf.xml
index 7f86063604..5677ddb533 100644
--- a/Demos/Host/LowLevel/PrinterHost/asf.xml
+++ b/Demos/Host/LowLevel/PrinterHost/asf.xml
@@ -1,53 +1,53 @@
-<asf xmlversion="1.0">
-	<project caption="Printer Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.printer.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.printer"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.printer" caption="Printer Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Printer Host demo, implementing a basic USB printer host that can send raw printer control data to an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Printer Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="PrinterHost.txt"/>
-
-		<build type="c-source" value="PrinterHost.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="PrinterHost.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="c-source" value="Lib/PrinterCommands.c"/>
-		<build type="header-file" value="Lib/PrinterCommands.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Printer Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.printer.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.printer"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.printer" caption="Printer Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Printer Host demo, implementing a basic USB printer host that can send raw printer control data to an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Printer Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="PrinterHost.txt"/>
+
+		<build type="c-source" value="PrinterHost.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="PrinterHost.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="c-source" value="Lib/PrinterCommands.c"/>
+		<build type="header-file" value="Lib/PrinterCommands.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/RNDISEthernetHost/asf.xml b/Demos/Host/LowLevel/RNDISEthernetHost/asf.xml
index 38f71272e5..f18f5f7e83 100644
--- a/Demos/Host/LowLevel/RNDISEthernetHost/asf.xml
+++ b/Demos/Host/LowLevel/RNDISEthernetHost/asf.xml
@@ -1,53 +1,53 @@
-<asf xmlversion="1.0">
-	<project caption="RNDIS Ethernet Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.rndis.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.rndis"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.rndis" caption="RNDIS Ethernet Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Microsoft RNDIS Ethernet Host demo, implementing a RNDIS host that can send and receive Ethernet data to and from an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="RNDIS Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="RNDISHost.txt"/>
-
-		<build type="c-source" value="RNDISEthernetHost.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="RNDISEthernetHost.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="c-source" value="Lib/RNDISCommands.c"/>
-		<build type="header-file" value="Lib/RNDISCommands.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="RNDIS Ethernet Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.rndis.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.rndis"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.rndis" caption="RNDIS Ethernet Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Microsoft RNDIS Ethernet Host demo, implementing a RNDIS host that can send and receive Ethernet data to and from an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="RNDIS Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="RNDISHost.txt"/>
+
+		<build type="c-source" value="RNDISEthernetHost.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="RNDISEthernetHost.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="c-source" value="Lib/RNDISCommands.c"/>
+		<build type="header-file" value="Lib/RNDISCommands.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/StillImageHost/asf.xml b/Demos/Host/LowLevel/StillImageHost/asf.xml
index cbf1e2ca2e..f12d6ff756 100644
--- a/Demos/Host/LowLevel/StillImageHost/asf.xml
+++ b/Demos/Host/LowLevel/StillImageHost/asf.xml
@@ -1,54 +1,54 @@
-<asf xmlversion="1.0">
-	<project caption="Still Image Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.si.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.si"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.si" caption="Still Image Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Still Image Host demo, implementing a Still Image host that can send and receive PIMA data to and from an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="Still Image Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="StillImageHost.txt"/>
-
-		<build type="c-source" value="StillImageHost.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="StillImageHost.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="c-source" value="Lib/StillImageCommands.c"/>
-		<build type="header-file" value="Lib/StillImageCommands.h"/>
-		<build type="header-file" value="Lib/PIMACodes.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Still Image Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.si.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.si"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.si" caption="Still Image Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Still Image Host demo, implementing a Still Image host that can send and receive PIMA data to and from an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="Still Image Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="StillImageHost.txt"/>
+
+		<build type="c-source" value="StillImageHost.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="StillImageHost.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="c-source" value="Lib/StillImageCommands.c"/>
+		<build type="header-file" value="Lib/StillImageCommands.h"/>
+		<build type="header-file" value="Lib/PIMACodes.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Demos/Host/LowLevel/VirtualSerialHost/asf.xml b/Demos/Host/LowLevel/VirtualSerialHost/asf.xml
index cb0d568d39..828702c52b 100644
--- a/Demos/Host/LowLevel/VirtualSerialHost/asf.xml
+++ b/Demos/Host/LowLevel/VirtualSerialHost/asf.xml
@@ -1,50 +1,50 @@
-<asf xmlversion="1.0">
-	<project caption="Virtual Serial CDC Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.cdc.example.avr8">
-		<require idref="lufa.demos.host.lowlevel.cdc"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.host.lowlevel.cdc" caption="Virtual Serial CDC Host Demo (Low Level APIs)">
-		<info type="description" value="summary">
-		Virtual Serial Host demo, implementing a CDC host that can send and receive data to and from an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="CDC Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="VirtualSerialHost.txt"/>
-
-		<build type="c-source" value="VirtualSerialHost.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="VirtualSerialHost.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Virtual Serial CDC Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.cdc.example.avr8">
+		<require idref="lufa.demos.host.lowlevel.cdc"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="none"/>
+
+		<build type="define" name="F_CPU" value="16000000UL"/>
+		<build type="define" name="F_USB" value="16000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.demos.host.lowlevel.cdc" caption="Virtual Serial CDC Host Demo (Low Level APIs)">
+		<info type="description" value="summary">
+		Virtual Serial Host demo, implementing a CDC host that can send and receive data to and from an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="CDC Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="VirtualSerialHost.txt"/>
+
+		<build type="c-source" value="VirtualSerialHost.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="VirtualSerialHost.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/LUFA/CodeTemplates/DeviceTemplate/asf.xml b/LUFA/CodeTemplates/DeviceTemplate/asf.xml
index fd65db283f..e952714e16 100644
--- a/LUFA/CodeTemplates/DeviceTemplate/asf.xml
+++ b/LUFA/CodeTemplates/DeviceTemplate/asf.xml
@@ -1,55 +1,55 @@
-<asf xmlversion="1.0">
-	<project caption="USB Device Template" id="lufa.templates.device.project.avr8">
-		<require idref="lufa.templates.device"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8_template"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<project caption="USB Device Template" id="lufa.templates.device.project.xmega">
-		<require idref="lufa.templates.device"/>
-		<require idref="lufa.boards.dummy.xmega"/>
-		<generator value="as5_8_template"/>
-
-		<device-support value="atxmega256a3bu"/>
-		<config name="lufa.drivers.board.name" value="a3bu_xplained"/>
-
-		<build type="define" name="F_CPU" value="32000000UL"/>
-		<build type="define" name="F_USB" value="48000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.templates.device" caption="USB Device Template">
-		<info type="description" value="summary">
-		Template for a LUFA USB device mode application.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="USB Device"/>
-			<keyword value="Template Projects"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="c-source" value="DeviceApplication.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="DeviceApplication.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value=".."/>
-		<build type="header-file" value="../LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="USB Device Template" id="lufa.templates.device.project.avr8">
+		<require idref="lufa.templates.device"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8_template"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<project caption="USB Device Template" id="lufa.templates.device.project.xmega">
+		<require idref="lufa.templates.device"/>
+		<require idref="lufa.boards.dummy.xmega"/>
+		<generator value="as5_8_template"/>
+
+		<device-support value="atxmega256a3bu"/>
+		<config name="lufa.drivers.board.name" value="a3bu_xplained"/>
+
+		<build type="define" name="F_CPU" value="32000000UL"/>
+		<build type="define" name="F_USB" value="48000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.templates.device" caption="USB Device Template">
+		<info type="description" value="summary">
+		Template for a LUFA USB device mode application.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="USB Device"/>
+			<keyword value="Template Projects"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="c-source" value="DeviceApplication.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="DeviceApplication.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value=".."/>
+		<build type="header-file" value="../LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+	</module>
+</asf>
diff --git a/LUFA/CodeTemplates/HostTemplate/asf.xml b/LUFA/CodeTemplates/HostTemplate/asf.xml
index c1996ec711..c3860c056d 100644
--- a/LUFA/CodeTemplates/HostTemplate/asf.xml
+++ b/LUFA/CodeTemplates/HostTemplate/asf.xml
@@ -1,41 +1,41 @@
-<asf xmlversion="1.0">
-	<project caption="USB Host Template" id="lufa.templates.host.project">
-		<require idref="lufa.templates.host"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8_template"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.templates.host" caption="USB Host Template">
-		<info type="description" value="summary">
-		Template for a LUFA USB host mode application.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="USB Host"/>
-			<keyword value="Template Projects"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="c-source" value="HostApplication.c"/>
-		<build type="header-file" value="HostApplication.h"/>
-
-		<build type="module-config" subtype="path" value=".."/>
-		<build type="header-file" value="../LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="USB Host Template" id="lufa.templates.host.project">
+		<require idref="lufa.templates.host"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8_template"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.templates.host" caption="USB Host Template">
+		<info type="description" value="summary">
+		Template for a LUFA USB host mode application.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="USB Host"/>
+			<keyword value="Template Projects"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="c-source" value="HostApplication.c"/>
+		<build type="header-file" value="HostApplication.h"/>
+
+		<build type="module-config" subtype="path" value=".."/>
+		<build type="header-file" value="../LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+	</module>
+</asf>
diff --git a/LUFA/DoxygenPages/BuildSystem.txt b/LUFA/DoxygenPages/BuildSystem.txt
index ef57fcf0c7..e0d84f0acd 100644
--- a/LUFA/DoxygenPages/BuildSystem.txt
+++ b/LUFA/DoxygenPages/BuildSystem.txt
@@ -1,281 +1,281 @@
-/** \file
- *
- *  This file contains special DoxyGen information for the generation of the main page and other special
- *  documentation pages. It is not a project source file.
- */
-
-/** \page Page_BuildSystem The LUFA Build System
- *
- *  \section Sec_BuildSystem_Overview Overview of the LUFA Build System
- *  The LUFA build system was originally an attempt at making a set of
- *  re-usable, modular build make files which could be referenced in a LUFA
- *  powered project, to minimize the amount of code required in an
- *  application makefile.
- *
- *  As it turned out to be fairly generic in nature, it was split out into its
- *  own separate project, called DMBS (<i>Dean's Makefile Build System</i>)
- *  which is released into the public domain. LUFA-specific portions of the
- *  LUFA build system extend DMBS, and provide a universal build system for all
- *  LUFA projects.
- *
- *  The latest DMBS project information and documentation can be found at:
- *  https://github.com/abcminiuser/dmbs
- *
- *  DMBS is written in GNU Make, and each module is independent of one-another.
- *
- *  LUFA now uses DMBS for its build system, with some LUFA specific extension
- *  modules.
- *
- *  If you have problems building using LUFA, see \subpage Page_BuildTroubleshooting for resolution steps.
- *
- *  \li \subpage Page_BuildModule_LUFA_SOURCES - The LUFA SOURCES extension module for DMBS
- *  \li \subpage Page_BuildModule_LUFA_GCC - The LUFA GCC extension module for DMBS
- */
-
-/** \page Page_BuildModule_LUFA_SOURCES LUFA SOURCES extension module for DMBS
- *
- *  The LUFA SOURCES extension more for DMBS provides LUFA specific variables
- *  listing the various LUFA source files required to be build by a project for
- *  a given LUFA module. This module gives a way to reference LUFA source files
- *  symbolically, so that changes to the library structure do not break the
- *  library makefile.
- *
- *  To use this module in your application makefile, add the following code:
- *  \code
- *  include $(LUFA_PATH)/Build/LUFA/lufa-sources.mk
- *  \endcode
- *
- *  \section SSec_BuildModule_LUFA_SOURCES_Requirements Requirements
- *  None.
- *
- *  \section SSec_BuildModule_LUFA_SOURCES_Targets Targets
- *
- *  <table>
- *   <tr>
- *    <td><i>None</i></td>
- *   </tr>
- *  </table>
- *
- *  \section SSec_BuildModule_LUFA_SOURCES_MandatoryParams Mandatory Parameters
- *
- *  <table>
- *   <tr>
- *    <td><tt>LUFA_PATH</tt></td>
- *    <td>Path to the LUFA library core, either relative or absolute (e.g. <tt>../LUFA-000000/LUFA/</tt>).</td>
- *   </tr>
- *   <tr>
- *    <td><tt>ARCH</tt></td>
- *    <td>Architecture of the target processor (see \ref Page_DeviceSupport).</td>
- *   </tr>
- *  </table>
- *
- *  \section SSec_BuildModule_LUFA_SOURCES_OptionalParams Optional Parameters
- *
- *  <table>
- *   <tr>
- *    <td><i>None</i></td>
- *   </tr>
- *  </table>
- *
- *  \section SSec_BuildModule_LUFA_SOURCES_ProvidedVariables Module Provided Variables
- *
- *  <table>
- *   <tr>
- *    <td><tt>LUFA_SRC_USB</tt></td>
- *    <td>List of LUFA USB driver source files.</td>
- *   </tr>
- *   <tr>
- *    <td><tt>LUFA_SRC_USBCLASS</tt></td>
- *    <td>List of LUFA USB Class driver source files.</td>
- *   </tr>
- *   <tr>
- *    <td><tt>LUFA_SRC_TEMPERATURE</tt></td>
- *    <td>List of LUFA temperature sensor driver source files.</td>
- *   </tr>
- *   <tr>
- *    <td><tt>LUFA_SRC_SERIAL</tt></td>
- *    <td>List of LUFA Serial U(S)ART driver source files.</td>
- *   </tr>
- *   <tr>
- *    <td><tt>LUFA_SRC_TWI</tt></td>
- *    <td>List of LUFA TWI driver source files.</td>
- *   </tr>
- *   <tr>
- *    <td><tt>LUFA_SRC_PLATFORM</tt></td>
- *    <td>List of LUFA architecture specific platform management source files.</td>
- *   </tr>
- *  </table>
- *
- *  \section SSec_BuildModule_LUFA_SOURCES_ProvidedMacros Module Provided Macros
- *
- *  <table>
- *   <tr>
- *    <td><i>None</i></td>
- *   </tr>
- *  </table>
- */
-
-/** \page Page_BuildModule_LUFA_GCC LUFA GCC extension module for DMBS
- *
- *  The LUFA GCC extension module for the standard DMBS GCC module extends the
- *  latter to support the compilation of LUFA powered projects. It should be
- *  imported into your LUFA powered project makefiles to ensure that the correct
- *  build settings are used for the project's configuration.
- *
- *  To use this module in your application makefile, add the following code:
- *  \code
- *  include $(LUFA_PATH)/Build/LUFA/lufa-gcc.mk
- *  \endcode
- *
- *  \section SSec_BuildModule_LUFA_GCC_Requirements Requirements
- *  This module should be included in your makefile *after* the DMBS GCC module.
- *
- *  \section SSec_BuildModule_LUFA_GCC_Targets Targets
- *
- *  <table>
- *   <tr>
- *    <td><i>None</i></td>
- *   </tr>
- *  </table>
- *
- *  \section SSec_BuildModule_LUFA_GCC_MandatoryParams Mandatory Parameters
- *
- *  <table>
- *   <tr>
- *    <td><tt>LUFA_PATH</tt></td>
- *    <td>Path to the LUFA library core, either relative or absolute (e.g. <tt>../LUFA-000000/LUFA/</tt>).</td>
- *   </tr>
- *  </table>
- *
- *  \section SSec_BuildModule_LUFA_GCC_OptionalParams Optional Parameters
- *
- *  <table>
- *   <tr>
- *    <td><tt>BOARD</tt></td>
- *    <td>LUFA board hardware drivers to use (see \ref Page_DeviceSupport).</td>
- *   </tr>
- *  </table>
- *
- *  \section SSec_BuildModule_LUFA_GCC_ProvidedVariables Module Provided Variables
- *
- *  <table>
- *   <tr>
- *    <td><i>None</i></td>
- *   </tr>
- *  </table>
- *
- *  \section SSec_BuildModule_LUFA_GCC_ProvidedMacros Module Provided Macros
- *
- *  <table>
- *   <tr>
- *    <td><i>None</i></td>
- *   </tr>
- *  </table>
- */
-
-/** \page Page_BuildTroubleshooting Troubleshooting Information
- *
- *  LUFA uses a lot of advanced features of the AVR-GCC compiler, linker, and
- *  surrounding binaries. This can sometimes lead to problems compiling
- *  applications if one of these features is buggy in the version of the tools
- *  used in a build environment. Missing utilities and incorrectly set makefile
- *  configuration options can also result in different errors being produced
- *  when compilation or other operations are attempted. The table below lists a
- *  set of commonly encountered errors and their resolutions.
- *
- *  <table>
- *    <tr>
- *    <th>Problem</th>
- *    <th>Resolution</th>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>relocation truncated to fit: R_AVR_13_PCREL against symbol <i>{X}</i></tt></b>&quot; shown when compiling.</td>
- *    <td>Try compiling with the setting <tt>LINKER_RELAXATIONS=N</tt> in your LUFA Build System 2.0 makefile, or remove the line <tt>-Wl,--relax</tt>
- *        from other makefiles. Alternatively, make sure you have the latest version of the Atmel Toolchain installed for your system.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>error: ld terminated with signal 11 [Segmentation fault]</tt></b>&quot; shown when compiling.</td>
- *    <td>Try compiling with the setting <tt>DEBUG_LEVEL=2</tt> in your LUFA Build System 2.0 makefile, or make sure you are using <tt>binutils</tt> version 2.22 or later.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>EMERGENCY ABORT: INFINITE RECURSION DETECTED</tt></b>&quot; shown when compiling.</td>
- *    <td>Make sure you are using an up to date version of GNU Make when compiling. This error is a safety system added to the mid-level makefiles, to prevent an issue with
- *        GNU make or other variants of Make causing an infinitely recursive build.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>Unsupported architecture &quot;<i>{X}</i>&quot;</tt></b>&quot; shown when compiling.</td>
- *    <td>Ensure your makefile's <tt>ARCH</tt> setting is set to one of the architecture names (case-sensitive) supported by the version of LUFA you are compiling against.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>Makefile <i>{X}</i> value not set</tt></b>&quot; shown when compiling.</td>
- *    <td>The specified Makefile value was not configured in your project's makefile or on the command line, and the nominated setting is required by one or more LUFA
- *        build system modules. Define the value in your project makefile and try again.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>Makefile <i>{X}</i> option cannot be blank</tt></b>&quot; shown when compiling.</td>
- *    <td>The specified Makefile value was configured in your project's makefile or on the command line, but was set to an empty value. For the nominated configuration
- *        option, an empty value is not allowed. Define the nominated setting to a correct non-blank value and try again.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>Makefile <i>{X}</i> option must be Y or N</tt></b>&quot; shown when compiling.</td>
- *    <td>The specified Makefile value was configured in your project's makefile or on the command line, but was set to a value other than a Y (for "Yes") or "N" (for "No").
- *        This configuration option is required to be one of the aforementioned boolean values, and other values are invalid. Set this option to either Y or N and try again.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>Unknown input source file formats: <i>{X}</i></tt></b>&quot; shown when compiling.</td>
- *    <td>The nominated source files, specified in your project's makefile in the <tt>SRC</tt> configuration option, has an extension that the LUFA build system does not
- *        recognise. The file extensions are case sensitive, and must be one of the supported formats (<tt>*.c</tt>, <tt>*.cpp</tt> or <tt>*.S</tt>).</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>Cannot build with OBJDIR parameter set - one or more object file name is not unique</tt></b>&quot; shown when compiling.</td>
- *    <td>When a project is built with a non-empty <tt>OBJDIR</tt> object directory name set, all input source files must have unique names, excluding extension and path.
- *        This means that input files that are named identically and differ only by their path or extension are invalid when this mode is used.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>Source file does not exist: <i>{X}</i></tt></b>&quot; shown when compiling.</td>
- *    <td>The nominated input source file, specified in the user project's <tt>SRC</tt> parameter, could not be found. Ensure the source file exists and the absolute or
- *        relative path given in the user project makefile is correct and try again.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>Doxygen configuration file <i>{X}</i> does not exist</tt></b>&quot; shown when upgrading a Doxygen configuration file.</td>
- *    <td>The nominated Doxygen configuration file, specified in the user project's <tt>DOXYGEN_CONF</tt> parameter, could not be found. Ensure the configuration file exists
- *        and the absolute or relative path given in the user project makefile is correct and try again, or run the appropriate makefile target to generate a new configuration
- *        file.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>avr-gcc: error: unrecognized option '<i>{X}</i>'</tt></b>&quot; shown when compiling.</td>
- *    <td>An unrecognised option was supplied to the compiler, usually in the <tt>C_FLAGS</tt>, <tt>CPP_FLAGS</tt>, <tt>ASM_FLAGS</tt> or <tt>CC_FLAGS</tt> configuration
- *        options. The nominated compiler switch may be invalid, or unsupported by the version of AVR-GCC on the host system. Remove the unrecognised flag if invalid, or
- *        upgrade to the latest AVR-GCC. If the option is a valid linker option, use the prefix "-Wl," to ensure it is passed to the linker correctly.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>makefile:{X}: {Y}.mk: No such file or directory</tt></b>&quot; shown when make is invoked.</td>
- *    <td>The path to the nominated makefile module was incorrect. This usually indicates that the makefile <tt>LUFA_PATH</tt> option is not set to a valid relative or
- *        absolute path to the LUFA library core.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>fatal error: LUFAConfig.h: No such file or directory</tt></b>&quot; shown when compiling.</td>
- *    <td>The <tt>USE_LUFA_CONFIG_HEADER</tt> compile time option was set in the user project makefile, but the user supplied <tt>LUFAConfig.h</tt> header could not be
- *        found. Ensure that the directory that contains this configuration file is correctly passed to the compiler via the -I switch in the makefile <tt>CC_FLAGS</tt>
- *        parameter.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>ld.exe: section .apitable_trampolines loaded at <i>{X}</i> overlaps section .text</tt></b>&quot; shown when compiling a bootloader.</td>
- *    <td>The bootloader is compiling too large for the given <tt>FLASH_SIZE_KB</tt> and <tt>BOOT_SECTION_SIZE_KB</tt> parameters set in the bootloader makefile. This
- *        usually indicates that these values are incorrect for the specified device the bootloader is targeting. If these values are correct, a newer version of the
- *        compiler may need to be used to ensure that the bootloader is built within the section size constraints of the target device.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>unknown MCU '<i>{X}</i>' specified</tt></b>&quot; shown when compiling.</td>
- *    <td>The specified microcontroller device model name set in the user application's makefile as the <tt>MCU</tt> parameter is incorrect, or unsupported by the
- *        version of the compiler being used. Make sure the model name is correct, or upgrade to the latest Atmel Toolchain to obtain newer device support.</td>
- *   </tr>
- *   <tr>
- *    <td>Error &quot;<b><tt>undefined reference to `<i>{X}</i>'</tt></b>&quot; shown when compiling.</td>
- *    <td>This is usually caused by a missing source file in the user application's <tt>SRC</tt> configuration parameter. If the indicated symbol is one from the LUFA
- *        library, you may be missing a LUFA source makefile module (see \ref Page_BuildModule_LUFA_SOURCES).</td>
- *   </tr>
- *  </table>
- *
- *  For troubleshooting other errors you encounter, please see \ref Sec_ProjectHelp.
- */
+/** \file
+ *
+ *  This file contains special DoxyGen information for the generation of the main page and other special
+ *  documentation pages. It is not a project source file.
+ */
+
+/** \page Page_BuildSystem The LUFA Build System
+ *
+ *  \section Sec_BuildSystem_Overview Overview of the LUFA Build System
+ *  The LUFA build system was originally an attempt at making a set of
+ *  re-usable, modular build make files which could be referenced in a LUFA
+ *  powered project, to minimize the amount of code required in an
+ *  application makefile.
+ *
+ *  As it turned out to be fairly generic in nature, it was split out into its
+ *  own separate project, called DMBS (<i>Dean's Makefile Build System</i>)
+ *  which is released into the public domain. LUFA-specific portions of the
+ *  LUFA build system extend DMBS, and provide a universal build system for all
+ *  LUFA projects.
+ *
+ *  The latest DMBS project information and documentation can be found at:
+ *  https://github.com/abcminiuser/dmbs
+ *
+ *  DMBS is written in GNU Make, and each module is independent of one-another.
+ *
+ *  LUFA now uses DMBS for its build system, with some LUFA specific extension
+ *  modules.
+ *
+ *  If you have problems building using LUFA, see \subpage Page_BuildTroubleshooting for resolution steps.
+ *
+ *  \li \subpage Page_BuildModule_LUFA_SOURCES - The LUFA SOURCES extension module for DMBS
+ *  \li \subpage Page_BuildModule_LUFA_GCC - The LUFA GCC extension module for DMBS
+ */
+
+/** \page Page_BuildModule_LUFA_SOURCES LUFA SOURCES extension module for DMBS
+ *
+ *  The LUFA SOURCES extension more for DMBS provides LUFA specific variables
+ *  listing the various LUFA source files required to be build by a project for
+ *  a given LUFA module. This module gives a way to reference LUFA source files
+ *  symbolically, so that changes to the library structure do not break the
+ *  library makefile.
+ *
+ *  To use this module in your application makefile, add the following code:
+ *  \code
+ *  include $(LUFA_PATH)/Build/LUFA/lufa-sources.mk
+ *  \endcode
+ *
+ *  \section SSec_BuildModule_LUFA_SOURCES_Requirements Requirements
+ *  None.
+ *
+ *  \section SSec_BuildModule_LUFA_SOURCES_Targets Targets
+ *
+ *  <table>
+ *   <tr>
+ *    <td><i>None</i></td>
+ *   </tr>
+ *  </table>
+ *
+ *  \section SSec_BuildModule_LUFA_SOURCES_MandatoryParams Mandatory Parameters
+ *
+ *  <table>
+ *   <tr>
+ *    <td><tt>LUFA_PATH</tt></td>
+ *    <td>Path to the LUFA library core, either relative or absolute (e.g. <tt>../LUFA-000000/LUFA/</tt>).</td>
+ *   </tr>
+ *   <tr>
+ *    <td><tt>ARCH</tt></td>
+ *    <td>Architecture of the target processor (see \ref Page_DeviceSupport).</td>
+ *   </tr>
+ *  </table>
+ *
+ *  \section SSec_BuildModule_LUFA_SOURCES_OptionalParams Optional Parameters
+ *
+ *  <table>
+ *   <tr>
+ *    <td><i>None</i></td>
+ *   </tr>
+ *  </table>
+ *
+ *  \section SSec_BuildModule_LUFA_SOURCES_ProvidedVariables Module Provided Variables
+ *
+ *  <table>
+ *   <tr>
+ *    <td><tt>LUFA_SRC_USB</tt></td>
+ *    <td>List of LUFA USB driver source files.</td>
+ *   </tr>
+ *   <tr>
+ *    <td><tt>LUFA_SRC_USBCLASS</tt></td>
+ *    <td>List of LUFA USB Class driver source files.</td>
+ *   </tr>
+ *   <tr>
+ *    <td><tt>LUFA_SRC_TEMPERATURE</tt></td>
+ *    <td>List of LUFA temperature sensor driver source files.</td>
+ *   </tr>
+ *   <tr>
+ *    <td><tt>LUFA_SRC_SERIAL</tt></td>
+ *    <td>List of LUFA Serial U(S)ART driver source files.</td>
+ *   </tr>
+ *   <tr>
+ *    <td><tt>LUFA_SRC_TWI</tt></td>
+ *    <td>List of LUFA TWI driver source files.</td>
+ *   </tr>
+ *   <tr>
+ *    <td><tt>LUFA_SRC_PLATFORM</tt></td>
+ *    <td>List of LUFA architecture specific platform management source files.</td>
+ *   </tr>
+ *  </table>
+ *
+ *  \section SSec_BuildModule_LUFA_SOURCES_ProvidedMacros Module Provided Macros
+ *
+ *  <table>
+ *   <tr>
+ *    <td><i>None</i></td>
+ *   </tr>
+ *  </table>
+ */
+
+/** \page Page_BuildModule_LUFA_GCC LUFA GCC extension module for DMBS
+ *
+ *  The LUFA GCC extension module for the standard DMBS GCC module extends the
+ *  latter to support the compilation of LUFA powered projects. It should be
+ *  imported into your LUFA powered project makefiles to ensure that the correct
+ *  build settings are used for the project's configuration.
+ *
+ *  To use this module in your application makefile, add the following code:
+ *  \code
+ *  include $(LUFA_PATH)/Build/LUFA/lufa-gcc.mk
+ *  \endcode
+ *
+ *  \section SSec_BuildModule_LUFA_GCC_Requirements Requirements
+ *  This module should be included in your makefile *after* the DMBS GCC module.
+ *
+ *  \section SSec_BuildModule_LUFA_GCC_Targets Targets
+ *
+ *  <table>
+ *   <tr>
+ *    <td><i>None</i></td>
+ *   </tr>
+ *  </table>
+ *
+ *  \section SSec_BuildModule_LUFA_GCC_MandatoryParams Mandatory Parameters
+ *
+ *  <table>
+ *   <tr>
+ *    <td><tt>LUFA_PATH</tt></td>
+ *    <td>Path to the LUFA library core, either relative or absolute (e.g. <tt>../LUFA-000000/LUFA/</tt>).</td>
+ *   </tr>
+ *  </table>
+ *
+ *  \section SSec_BuildModule_LUFA_GCC_OptionalParams Optional Parameters
+ *
+ *  <table>
+ *   <tr>
+ *    <td><tt>BOARD</tt></td>
+ *    <td>LUFA board hardware drivers to use (see \ref Page_DeviceSupport).</td>
+ *   </tr>
+ *  </table>
+ *
+ *  \section SSec_BuildModule_LUFA_GCC_ProvidedVariables Module Provided Variables
+ *
+ *  <table>
+ *   <tr>
+ *    <td><i>None</i></td>
+ *   </tr>
+ *  </table>
+ *
+ *  \section SSec_BuildModule_LUFA_GCC_ProvidedMacros Module Provided Macros
+ *
+ *  <table>
+ *   <tr>
+ *    <td><i>None</i></td>
+ *   </tr>
+ *  </table>
+ */
+
+/** \page Page_BuildTroubleshooting Troubleshooting Information
+ *
+ *  LUFA uses a lot of advanced features of the AVR-GCC compiler, linker, and
+ *  surrounding binaries. This can sometimes lead to problems compiling
+ *  applications if one of these features is buggy in the version of the tools
+ *  used in a build environment. Missing utilities and incorrectly set makefile
+ *  configuration options can also result in different errors being produced
+ *  when compilation or other operations are attempted. The table below lists a
+ *  set of commonly encountered errors and their resolutions.
+ *
+ *  <table>
+ *    <tr>
+ *    <th>Problem</th>
+ *    <th>Resolution</th>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>relocation truncated to fit: R_AVR_13_PCREL against symbol <i>{X}</i></tt></b>&quot; shown when compiling.</td>
+ *    <td>Try compiling with the setting <tt>LINKER_RELAXATIONS=N</tt> in your LUFA Build System 2.0 makefile, or remove the line <tt>-Wl,--relax</tt>
+ *        from other makefiles. Alternatively, make sure you have the latest version of the Atmel Toolchain installed for your system.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>error: ld terminated with signal 11 [Segmentation fault]</tt></b>&quot; shown when compiling.</td>
+ *    <td>Try compiling with the setting <tt>DEBUG_LEVEL=2</tt> in your LUFA Build System 2.0 makefile, or make sure you are using <tt>binutils</tt> version 2.22 or later.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>EMERGENCY ABORT: INFINITE RECURSION DETECTED</tt></b>&quot; shown when compiling.</td>
+ *    <td>Make sure you are using an up to date version of GNU Make when compiling. This error is a safety system added to the mid-level makefiles, to prevent an issue with
+ *        GNU make or other variants of Make causing an infinitely recursive build.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>Unsupported architecture &quot;<i>{X}</i>&quot;</tt></b>&quot; shown when compiling.</td>
+ *    <td>Ensure your makefile's <tt>ARCH</tt> setting is set to one of the architecture names (case-sensitive) supported by the version of LUFA you are compiling against.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>Makefile <i>{X}</i> value not set</tt></b>&quot; shown when compiling.</td>
+ *    <td>The specified Makefile value was not configured in your project's makefile or on the command line, and the nominated setting is required by one or more LUFA
+ *        build system modules. Define the value in your project makefile and try again.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>Makefile <i>{X}</i> option cannot be blank</tt></b>&quot; shown when compiling.</td>
+ *    <td>The specified Makefile value was configured in your project's makefile or on the command line, but was set to an empty value. For the nominated configuration
+ *        option, an empty value is not allowed. Define the nominated setting to a correct non-blank value and try again.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>Makefile <i>{X}</i> option must be Y or N</tt></b>&quot; shown when compiling.</td>
+ *    <td>The specified Makefile value was configured in your project's makefile or on the command line, but was set to a value other than a Y (for "Yes") or "N" (for "No").
+ *        This configuration option is required to be one of the aforementioned boolean values, and other values are invalid. Set this option to either Y or N and try again.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>Unknown input source file formats: <i>{X}</i></tt></b>&quot; shown when compiling.</td>
+ *    <td>The nominated source files, specified in your project's makefile in the <tt>SRC</tt> configuration option, has an extension that the LUFA build system does not
+ *        recognise. The file extensions are case sensitive, and must be one of the supported formats (<tt>*.c</tt>, <tt>*.cpp</tt> or <tt>*.S</tt>).</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>Cannot build with OBJDIR parameter set - one or more object file name is not unique</tt></b>&quot; shown when compiling.</td>
+ *    <td>When a project is built with a non-empty <tt>OBJDIR</tt> object directory name set, all input source files must have unique names, excluding extension and path.
+ *        This means that input files that are named identically and differ only by their path or extension are invalid when this mode is used.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>Source file does not exist: <i>{X}</i></tt></b>&quot; shown when compiling.</td>
+ *    <td>The nominated input source file, specified in the user project's <tt>SRC</tt> parameter, could not be found. Ensure the source file exists and the absolute or
+ *        relative path given in the user project makefile is correct and try again.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>Doxygen configuration file <i>{X}</i> does not exist</tt></b>&quot; shown when upgrading a Doxygen configuration file.</td>
+ *    <td>The nominated Doxygen configuration file, specified in the user project's <tt>DOXYGEN_CONF</tt> parameter, could not be found. Ensure the configuration file exists
+ *        and the absolute or relative path given in the user project makefile is correct and try again, or run the appropriate makefile target to generate a new configuration
+ *        file.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>avr-gcc: error: unrecognized option '<i>{X}</i>'</tt></b>&quot; shown when compiling.</td>
+ *    <td>An unrecognised option was supplied to the compiler, usually in the <tt>C_FLAGS</tt>, <tt>CPP_FLAGS</tt>, <tt>ASM_FLAGS</tt> or <tt>CC_FLAGS</tt> configuration
+ *        options. The nominated compiler switch may be invalid, or unsupported by the version of AVR-GCC on the host system. Remove the unrecognised flag if invalid, or
+ *        upgrade to the latest AVR-GCC. If the option is a valid linker option, use the prefix "-Wl," to ensure it is passed to the linker correctly.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>makefile:{X}: {Y}.mk: No such file or directory</tt></b>&quot; shown when make is invoked.</td>
+ *    <td>The path to the nominated makefile module was incorrect. This usually indicates that the makefile <tt>LUFA_PATH</tt> option is not set to a valid relative or
+ *        absolute path to the LUFA library core.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>fatal error: LUFAConfig.h: No such file or directory</tt></b>&quot; shown when compiling.</td>
+ *    <td>The <tt>USE_LUFA_CONFIG_HEADER</tt> compile time option was set in the user project makefile, but the user supplied <tt>LUFAConfig.h</tt> header could not be
+ *        found. Ensure that the directory that contains this configuration file is correctly passed to the compiler via the -I switch in the makefile <tt>CC_FLAGS</tt>
+ *        parameter.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>ld.exe: section .apitable_trampolines loaded at <i>{X}</i> overlaps section .text</tt></b>&quot; shown when compiling a bootloader.</td>
+ *    <td>The bootloader is compiling too large for the given <tt>FLASH_SIZE_KB</tt> and <tt>BOOT_SECTION_SIZE_KB</tt> parameters set in the bootloader makefile. This
+ *        usually indicates that these values are incorrect for the specified device the bootloader is targeting. If these values are correct, a newer version of the
+ *        compiler may need to be used to ensure that the bootloader is built within the section size constraints of the target device.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>unknown MCU '<i>{X}</i>' specified</tt></b>&quot; shown when compiling.</td>
+ *    <td>The specified microcontroller device model name set in the user application's makefile as the <tt>MCU</tt> parameter is incorrect, or unsupported by the
+ *        version of the compiler being used. Make sure the model name is correct, or upgrade to the latest Atmel Toolchain to obtain newer device support.</td>
+ *   </tr>
+ *   <tr>
+ *    <td>Error &quot;<b><tt>undefined reference to `<i>{X}</i>'</tt></b>&quot; shown when compiling.</td>
+ *    <td>This is usually caused by a missing source file in the user application's <tt>SRC</tt> configuration parameter. If the indicated symbol is one from the LUFA
+ *        library, you may be missing a LUFA source makefile module (see \ref Page_BuildModule_LUFA_SOURCES).</td>
+ *   </tr>
+ *  </table>
+ *
+ *  For troubleshooting other errors you encounter, please see \ref Sec_ProjectHelp.
+ */
diff --git a/LUFA/Drivers/Board/AVR8/QMK/Board.h b/LUFA/Drivers/Board/AVR8/QMK/Board.h
index 19a0f2dfee..b0d5ac447d 100644
--- a/LUFA/Drivers/Board/AVR8/QMK/Board.h
+++ b/LUFA/Drivers/Board/AVR8/QMK/Board.h
@@ -1,65 +1,65 @@
-/*
-Copyright 2017 Jack Humbert
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/** \file
- *  \brief General driver header for QMK-powered keyboards.
- *  \copydetails Group_BoardInfo_QMK
- *
- *  \note This file should not be included directly. It is automatically included as needed by the Board driver
- *        dispatch header located in LUFA/Drivers/Board/Board.h.
- */
-
-/** \ingroup Group_BoardInfo
- *  \defgroup Group_BoardInfo_QMK QMK
- *  \brief General driver header for QMK-powered keyboards.
- *
- *  General driver header for QMK-powered keyboards (http://qmk.fm).
- *
- *  @{
- */
-
-#ifndef __BOARD_QMK_H__
-#define __BOARD_QMK_H__
-
-	/* Includes: */
-		#include "../../../../Common/Common.h"
-		#include "../../LEDs.h"
-
-	/* Enable C linkage for C++ Compilers: */
-		#if defined(__cplusplus)
-			extern "C" {
-		#endif
-
-	/* Preprocessor Checks: */
-		#if !defined(__INCLUDE_FROM_BOARD_H)
-			#error Do not include this file directly. Include LUFA/Drivers/Board/Board.h instead.
-		#endif
-
-	/* Public Interface - May be used in end-application: */
-		/* Macros: */
-			/** Indicates the board has hardware LEDs mounted. */
-			#define BOARD_HAS_LEDS
-
-	/* Disable C linkage for C++ Compilers: */
-		#if defined(__cplusplus)
-			}
-		#endif
-
-#endif
-
-/** @} */
-
+/*
+Copyright 2017 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/** \file
+ *  \brief General driver header for QMK-powered keyboards.
+ *  \copydetails Group_BoardInfo_QMK
+ *
+ *  \note This file should not be included directly. It is automatically included as needed by the Board driver
+ *        dispatch header located in LUFA/Drivers/Board/Board.h.
+ */
+
+/** \ingroup Group_BoardInfo
+ *  \defgroup Group_BoardInfo_QMK QMK
+ *  \brief General driver header for QMK-powered keyboards.
+ *
+ *  General driver header for QMK-powered keyboards (http://qmk.fm).
+ *
+ *  @{
+ */
+
+#ifndef __BOARD_QMK_H__
+#define __BOARD_QMK_H__
+
+	/* Includes: */
+		#include "../../../../Common/Common.h"
+		#include "../../LEDs.h"
+
+	/* Enable C linkage for C++ Compilers: */
+		#if defined(__cplusplus)
+			extern "C" {
+		#endif
+
+	/* Preprocessor Checks: */
+		#if !defined(__INCLUDE_FROM_BOARD_H)
+			#error Do not include this file directly. Include LUFA/Drivers/Board/Board.h instead.
+		#endif
+
+	/* Public Interface - May be used in end-application: */
+		/* Macros: */
+			/** Indicates the board has hardware LEDs mounted. */
+			#define BOARD_HAS_LEDS
+
+	/* Disable C linkage for C++ Compilers: */
+		#if defined(__cplusplus)
+			}
+		#endif
+
+#endif
+
+/** @} */
+
diff --git a/LUFA/Drivers/Board/AVR8/QMK/LEDs.h b/LUFA/Drivers/Board/AVR8/QMK/LEDs.h
index 1310612dc8..9fc696be97 100644
--- a/LUFA/Drivers/Board/AVR8/QMK/LEDs.h
+++ b/LUFA/Drivers/Board/AVR8/QMK/LEDs.h
@@ -1,194 +1,194 @@
-/*
-Copyright 2017 Jack Humbert
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/** \file
- *  \brief General driver header for QMK-powered keyboards.
- *  \copydetails Group_LEDs_QMK
- *
- *  \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_QMK QMK
- *  \brief General driver header for QMK-powered keyboards.
- *
- *  General driver header for QMK-powered keyboards (http://qmk.fm).
- *
- *  <b>QMK</b>:
- *  <table>
- *    <tr><th>Name</th><th>Color</th><th>Info</th><th>Active Level</th><th>Port Pin</th></tr>
- *    <tr><td>LEDS_LED1</td><td>Green</td><td>General Indicator</td><td>High</td><td>PORT(QMK_LED).6</td></tr>
- *  </table>
- *
- *  @{
- */
-
-#ifndef __LEDS_QMK_H__
-#define __LEDS_QMK_H__
-
-    /* Includes: */
-        #include "../../../../Common/Common.h"
-
-    /* Enable C linkage for C++ Compilers: */
-        #if defined(__cplusplus)
-            extern "C" {
-        #endif
-
-    /* Preprocessor Checks: */
-        #if !defined(__INCLUDE_FROM_LEDS_H)
-            #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead.
-        #endif
-
-        #define B0 0x30
-        #define B1 0x31
-        #define B2 0x32
-        #define B3 0x33
-        #define B4 0x34
-        #define B5 0x35
-        #define B6 0x36
-        #define B7 0x37
-        #define C0 0x60
-        #define C1 0x61
-        #define C2 0x62
-        #define C3 0x63
-        #define C4 0x64
-        #define C5 0x65
-        #define C6 0x66
-        #define C7 0x67
-        #define D0 0x90
-        #define D1 0x91
-        #define D2 0x92
-        #define D3 0x93
-        #define D4 0x94
-        #define D5 0x95
-        #define D6 0x96
-        #define D7 0x97
-        #define E0 0xC0
-        #define E1 0xC1
-        #define E2 0xC2
-        #define E3 0xC3
-        #define E4 0xC4
-        #define E5 0xC5
-        #define E6 0xC6
-        #define E7 0xC7
-        #define F0 0xF0
-        #define F1 0xF1
-        #define F2 0xF2
-        #define F3 0xF3
-        #define F4 0xF4
-        #define F5 0xF5
-        #define F6 0xF6
-        #define F7 0xF7
-        #define A0 0x00
-        #define A1 0x01
-        #define A2 0x02
-        #define A3 0x03
-        #define A4 0x04
-        #define A5 0x05
-        #define A6 0x06
-        #define A7 0x07
-
-        #define QMK_ESC_COL F1
-        #define QMK_ESC_ROW D5
-        #define QMK_LED     E6
-        #define QMK_SPEAKER C6
-
-        #define DDR(pin) _SFR_IO8(((pin) >> 4) + 1)
-        #define PORT(pin) _SFR_IO8(((pin) >> 4) + 2)
-        #define PIN(pin) _SFR_IO8((pin) >> 4)
-        #define NUM(pin) _BV((pin) & 0xF)
-
-    /* Public Interface - May be used in end-application: */
-        /* Macros: */
-            /** LED mask for the first LED on the board. */
-            #define LEDS_LED1        NUM(QMK_LED)
-            #define LEDS_LED2        NUM(QMK_SPEAKER)
-
-            /** LED mask for all the LEDs on the board. */
-            #define LEDS_ALL_LEDS    LEDS_LED1 | LEDS_LED2
-
-            /** LED mask for none of the board LEDs. */
-            #define LEDS_NO_LEDS     0
-
-        /* Inline Functions: */
-        #if !defined(__DOXYGEN__)
-            static inline void LEDs_Init(void)
-            {
-                DDR(QMK_LED)  |= LEDS_LED1;
-                PORT(QMK_LED) |= LEDS_LED1;
-
-                DDR(QMK_SPEAKER)  |= LEDS_LED2;
-                PORT(QMK_SPEAKER) |= LEDS_LED2;
-            }
-
-            static inline void LEDs_Disable(void)
-            {
-                DDR(QMK_LED)  &= ~LEDS_LED1;
-                PORT(QMK_LED) &= ~LEDS_LED2;
-
-                DDR(QMK_SPEAKER)  &= ~LEDS_LED1;
-                PORT(QMK_SPEAKER) &= ~LEDS_LED2;
-            }
-
-            static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
-            {
-                PORT(QMK_LED) &= (LEDS_LED1 & ~LEDMask);
-                PORT(QMK_SPEAKER) &= (LEDS_LED2 & ~LEDMask);
-            }
-
-            static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
-            {
-                PORT(QMK_LED) |=  (LEDS_LED1 & LEDMask);
-                PORT(QMK_SPEAKER) |=  (LEDS_LED2 & LEDMask);
-            }
-
-            static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
-            {
-                PORT(QMK_LED) = ((PORT(QMK_LED) | LEDS_LED1) & ~LEDMask);
-                PORT(QMK_SPEAKER) = ((PORT(QMK_SPEAKER) | LEDS_LED2) & ~LEDMask);
-            }
-
-            static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
-                                               const uint8_t ActiveMask)
-            {
-                PORT(QMK_LED) = ((PORT(QMK_LED) | (LEDS_LED1 & LEDMask)) & ~ActiveMask);
-                PORT(QMK_SPEAKER) = ((PORT(QMK_SPEAKER) | (LEDS_LED1 & LEDMask)) & ~ActiveMask);
-            }
-
-            static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
-            {
-                PIN(QMK_LED)  = (LEDS_LED1 & LEDMask);
-                PIN(QMK_SPEAKER)  = (LEDS_LED2 & LEDMask);
-            }
-
-            static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
-            static inline uint8_t LEDs_GetLEDs(void)
-            {
-                return (~PORT(QMK_LED) & LEDS_LED1) | (~(PORT(QMK_SPEAKER) & LEDS_LED2));
-            }
-        #endif
-
-    /* Disable C linkage for C++ Compilers: */
-        #if defined(__cplusplus)
-            }
-        #endif
-
-#endif
-
-/** @} */
-
+/*
+Copyright 2017 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/** \file
+ *  \brief General driver header for QMK-powered keyboards.
+ *  \copydetails Group_LEDs_QMK
+ *
+ *  \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_QMK QMK
+ *  \brief General driver header for QMK-powered keyboards.
+ *
+ *  General driver header for QMK-powered keyboards (http://qmk.fm).
+ *
+ *  <b>QMK</b>:
+ *  <table>
+ *    <tr><th>Name</th><th>Color</th><th>Info</th><th>Active Level</th><th>Port Pin</th></tr>
+ *    <tr><td>LEDS_LED1</td><td>Green</td><td>General Indicator</td><td>High</td><td>PORT(QMK_LED).6</td></tr>
+ *  </table>
+ *
+ *  @{
+ */
+
+#ifndef __LEDS_QMK_H__
+#define __LEDS_QMK_H__
+
+    /* Includes: */
+        #include "../../../../Common/Common.h"
+
+    /* Enable C linkage for C++ Compilers: */
+        #if defined(__cplusplus)
+            extern "C" {
+        #endif
+
+    /* Preprocessor Checks: */
+        #if !defined(__INCLUDE_FROM_LEDS_H)
+            #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead.
+        #endif
+
+        #define B0 0x30
+        #define B1 0x31
+        #define B2 0x32
+        #define B3 0x33
+        #define B4 0x34
+        #define B5 0x35
+        #define B6 0x36
+        #define B7 0x37
+        #define C0 0x60
+        #define C1 0x61
+        #define C2 0x62
+        #define C3 0x63
+        #define C4 0x64
+        #define C5 0x65
+        #define C6 0x66
+        #define C7 0x67
+        #define D0 0x90
+        #define D1 0x91
+        #define D2 0x92
+        #define D3 0x93
+        #define D4 0x94
+        #define D5 0x95
+        #define D6 0x96
+        #define D7 0x97
+        #define E0 0xC0
+        #define E1 0xC1
+        #define E2 0xC2
+        #define E3 0xC3
+        #define E4 0xC4
+        #define E5 0xC5
+        #define E6 0xC6
+        #define E7 0xC7
+        #define F0 0xF0
+        #define F1 0xF1
+        #define F2 0xF2
+        #define F3 0xF3
+        #define F4 0xF4
+        #define F5 0xF5
+        #define F6 0xF6
+        #define F7 0xF7
+        #define A0 0x00
+        #define A1 0x01
+        #define A2 0x02
+        #define A3 0x03
+        #define A4 0x04
+        #define A5 0x05
+        #define A6 0x06
+        #define A7 0x07
+
+        #define QMK_ESC_COL F1
+        #define QMK_ESC_ROW D5
+        #define QMK_LED     E6
+        #define QMK_SPEAKER C6
+
+        #define DDR(pin) _SFR_IO8(((pin) >> 4) + 1)
+        #define PORT(pin) _SFR_IO8(((pin) >> 4) + 2)
+        #define PIN(pin) _SFR_IO8((pin) >> 4)
+        #define NUM(pin) _BV((pin) & 0xF)
+
+    /* Public Interface - May be used in end-application: */
+        /* Macros: */
+            /** LED mask for the first LED on the board. */
+            #define LEDS_LED1        NUM(QMK_LED)
+            #define LEDS_LED2        NUM(QMK_SPEAKER)
+
+            /** LED mask for all the LEDs on the board. */
+            #define LEDS_ALL_LEDS    LEDS_LED1 | LEDS_LED2
+
+            /** LED mask for none of the board LEDs. */
+            #define LEDS_NO_LEDS     0
+
+        /* Inline Functions: */
+        #if !defined(__DOXYGEN__)
+            static inline void LEDs_Init(void)
+            {
+                DDR(QMK_LED)  |= LEDS_LED1;
+                PORT(QMK_LED) |= LEDS_LED1;
+
+                DDR(QMK_SPEAKER)  |= LEDS_LED2;
+                PORT(QMK_SPEAKER) |= LEDS_LED2;
+            }
+
+            static inline void LEDs_Disable(void)
+            {
+                DDR(QMK_LED)  &= ~LEDS_LED1;
+                PORT(QMK_LED) &= ~LEDS_LED2;
+
+                DDR(QMK_SPEAKER)  &= ~LEDS_LED1;
+                PORT(QMK_SPEAKER) &= ~LEDS_LED2;
+            }
+
+            static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
+            {
+                PORT(QMK_LED) &= (LEDS_LED1 & ~LEDMask);
+                PORT(QMK_SPEAKER) &= (LEDS_LED2 & ~LEDMask);
+            }
+
+            static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
+            {
+                PORT(QMK_LED) |=  (LEDS_LED1 & LEDMask);
+                PORT(QMK_SPEAKER) |=  (LEDS_LED2 & LEDMask);
+            }
+
+            static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
+            {
+                PORT(QMK_LED) = ((PORT(QMK_LED) | LEDS_LED1) & ~LEDMask);
+                PORT(QMK_SPEAKER) = ((PORT(QMK_SPEAKER) | LEDS_LED2) & ~LEDMask);
+            }
+
+            static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
+                                               const uint8_t ActiveMask)
+            {
+                PORT(QMK_LED) = ((PORT(QMK_LED) | (LEDS_LED1 & LEDMask)) & ~ActiveMask);
+                PORT(QMK_SPEAKER) = ((PORT(QMK_SPEAKER) | (LEDS_LED1 & LEDMask)) & ~ActiveMask);
+            }
+
+            static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
+            {
+                PIN(QMK_LED)  = (LEDS_LED1 & LEDMask);
+                PIN(QMK_SPEAKER)  = (LEDS_LED2 & LEDMask);
+            }
+
+            static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
+            static inline uint8_t LEDs_GetLEDs(void)
+            {
+                return (~PORT(QMK_LED) & LEDS_LED1) | (~(PORT(QMK_SPEAKER) & LEDS_LED2));
+            }
+        #endif
+
+    /* Disable C linkage for C++ Compilers: */
+        #if defined(__cplusplus)
+            }
+        #endif
+
+#endif
+
+/** @} */
+
diff --git a/LUFA/StudioIntegration/Docbook/placeholder.txt b/LUFA/StudioIntegration/Docbook/placeholder.txt
index c017acfd75..dd69b7e0bd 100644
--- a/LUFA/StudioIntegration/Docbook/placeholder.txt
+++ b/LUFA/StudioIntegration/Docbook/placeholder.txt
@@ -1 +1 @@
-Copy the Docbook XSLT docbook-xsl-1.78.1 release contents into this directory (i.e. with the root Docbook files in the current folder). The Docbook releases can be found at http://sourceforge.net/projects/docbook/files/docbook-xsl/ .
+Copy the Docbook XSLT docbook-xsl-1.78.1 release contents into this directory (i.e. with the root Docbook files in the current folder). The Docbook releases can be found at http://sourceforge.net/projects/docbook/files/docbook-xsl/ .
diff --git a/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt b/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt
index e7e230166d..e7b57ab641 100644
--- a/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt
+++ b/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt
@@ -1,45 +1,45 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Docbook XML to Microsoft Help Viewer 1.0 transform file -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-	<xsl:import href="../Docbook/mshelp/docbook.xsl"/>
-
-	<xsl:output method="xml" indent="no"/>
-
-	<xsl:template match="emphasis[@role = 'keyword' or @role = 'keywordtype' or @role = 'keywordflow']">
-		<span class="hl-keyword" style="color: #0079C1">
-			<xsl:apply-templates/>
-		</span>
-	</xsl:template>
-
-	<xsl:template match="emphasis[@role = 'stringliteral' or @role = 'charliteral']">
-		<span class="hl-string" style="color: #800000">
-			<xsl:apply-templates/>
-		</span>
-	</xsl:template>
-
-	<xsl:template match="emphasis[@role = 'comment']">
-		<em class="hl-comment" style="color: #008000">
-			<xsl:apply-templates/>
-		</em>
-	</xsl:template>
-
-	<xsl:template match="emphasis[@role = 'preprocessor']">
-		<span class="hl-preprocessor" style="color: #A000A0">
-			<xsl:apply-templates/>
-		</span>
-	</xsl:template>
-
-	<xsl:template match="emphasis[@role = 'normal' and ancestor::programlisting]">
-		<xsl:apply-templates />
-	</xsl:template>
-
-</xsl:stylesheet>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Docbook XML to Microsoft Help Viewer 1.0 transform file -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+	<xsl:import href="../Docbook/mshelp/docbook.xsl"/>
+
+	<xsl:output method="xml" indent="no"/>
+
+	<xsl:template match="emphasis[@role = 'keyword' or @role = 'keywordtype' or @role = 'keywordflow']">
+		<span class="hl-keyword" style="color: #0079C1">
+			<xsl:apply-templates/>
+		</span>
+	</xsl:template>
+
+	<xsl:template match="emphasis[@role = 'stringliteral' or @role = 'charliteral']">
+		<span class="hl-string" style="color: #800000">
+			<xsl:apply-templates/>
+		</span>
+	</xsl:template>
+
+	<xsl:template match="emphasis[@role = 'comment']">
+		<em class="hl-comment" style="color: #008000">
+			<xsl:apply-templates/>
+		</em>
+	</xsl:template>
+
+	<xsl:template match="emphasis[@role = 'preprocessor']">
+		<span class="hl-preprocessor" style="color: #A000A0">
+			<xsl:apply-templates/>
+		</span>
+	</xsl:template>
+
+	<xsl:template match="emphasis[@role = 'normal' and ancestor::programlisting]">
+		<xsl:apply-templates />
+	</xsl:template>
+
+</xsl:stylesheet>
diff --git a/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css b/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css
index a4a025cc8b..b1b9cafd19 100644
--- a/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css
+++ b/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css
@@ -1,53 +1,53 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-.programlisting {
- 	display: block;
- 	margin-left: 15px;
- 	padding: 10px;
- 	background-color: #f4f4f4;
- 	border: 1px solid #aaaaaa;
- 	font-family: "Consolas", "Courier New", sans-serif;
- }
-
- code {
- 	background-color: #f4f4f4;
- 	font-family: "Consolas", "Courier New", sans-serif;
- }
-
-.note, .warning, .tip {
-	display: block;
- 	margin-left: 15px;
- 	padding-left: 10px;
- 	padding-bottom: 5px;
- 	background-color: #f4f4f4;
- 	border: 1px solid #aaaaaa;
-}
-
-table {
-	border: 1px solid #aaaaaa;
-	border-collapse: collapse;
-	margin-left: 15px;
-	font-size: 10pt;
-}
-
-table thead {
- 	background-color: #f4f4f4;
-}
-
-table thead th {
-	padding: 5px;
-}
-
-table tbody td {
-	padding: 5px;
-}
-
-ul {
-	padding-left: 20px;
-}
+/*
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+*/
+
+.programlisting {
+ 	display: block;
+ 	margin-left: 15px;
+ 	padding: 10px;
+ 	background-color: #f4f4f4;
+ 	border: 1px solid #aaaaaa;
+ 	font-family: "Consolas", "Courier New", sans-serif;
+ }
+
+ code {
+ 	background-color: #f4f4f4;
+ 	font-family: "Consolas", "Courier New", sans-serif;
+ }
+
+.note, .warning, .tip {
+	display: block;
+ 	margin-left: 15px;
+ 	padding-left: 10px;
+ 	padding-bottom: 5px;
+ 	background-color: #f4f4f4;
+ 	border: 1px solid #aaaaaa;
+}
+
+table {
+	border: 1px solid #aaaaaa;
+	border-collapse: collapse;
+	margin-left: 15px;
+	font-size: 10pt;
+}
+
+table thead {
+ 	background-color: #f4f4f4;
+}
+
+table thead th {
+	padding: 5px;
+}
+
+table tbody td {
+	padding: 5px;
+}
+
+ul {
+	padding-left: 20px;
+}
diff --git a/LUFA/StudioIntegration/VSIX/[Content_Types].xml b/LUFA/StudioIntegration/VSIX/[Content_Types].xml
index 05ef8b6ba4..112d169942 100644
--- a/LUFA/StudioIntegration/VSIX/[Content_Types].xml
+++ b/LUFA/StudioIntegration/VSIX/[Content_Types].xml
@@ -1,13 +1,13 @@
-<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
-	<Default Extension="vsixmanifest" ContentType="text/xml"/>
-	<Default Extension="cache" ContentType="text/xml"/>
-	<Default Extension="png" ContentType="application/octet-stream"/>
-	<Default Extension="txt" ContentType="text/plain"/>
-	<Default Extension="xml" ContentType="text/xml"/>
-	<Default Extension="zip" ContentType="application/octet-stream"/>
-	<Default Extension="dll" ContentType="application/octet-stream" />
-	<Default Extension="pkgdef" ContentType="text/plain" />
-	<Default Extension="htm" ContentType="text/html" />
-	<Default Extension="msha" ContentType="text/html" />
-	<Default Extension="mshc" ContentType="application/octet-stream"/>
-</Types>
+<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
+	<Default Extension="vsixmanifest" ContentType="text/xml"/>
+	<Default Extension="cache" ContentType="text/xml"/>
+	<Default Extension="png" ContentType="application/octet-stream"/>
+	<Default Extension="txt" ContentType="text/plain"/>
+	<Default Extension="xml" ContentType="text/xml"/>
+	<Default Extension="zip" ContentType="application/octet-stream"/>
+	<Default Extension="dll" ContentType="application/octet-stream" />
+	<Default Extension="pkgdef" ContentType="text/plain" />
+	<Default Extension="htm" ContentType="text/html" />
+	<Default Extension="msha" ContentType="text/html" />
+	<Default Extension="mshc" ContentType="application/octet-stream"/>
+</Types>
diff --git a/LUFA/StudioIntegration/VSIX/asf-manifest.xml b/LUFA/StudioIntegration/VSIX/asf-manifest.xml
index 794fd689e1..bd969518a1 100644
--- a/LUFA/StudioIntegration/VSIX/asf-manifest.xml
+++ b/LUFA/StudioIntegration/VSIX/asf-manifest.xml
@@ -1,18 +1,18 @@
-<AsfContentProvider Version="1.0.0">
-	<Identifier Id="0e160d5c-e331-48d9-850b-e0387912171b">
-		<Org>FourWalledCubicle</Org>
-		<ShortName>LUFA</ShortName>
-		<Author>Dean Camera</Author>
-		<Description/>
-		<FollowFolderStructure>True</FollowFolderStructure>
-	</Identifier>
-	<AsfContent Type="zip" Path="contents.zip">
-		<Content>
-			<Version>0</Version>
-			<HelpURL/>
-			<Locator/>
-			<DbXMLPath>content.xml.cache</DbXMLPath>
-			<Description/>
-		</Content>
-	</AsfContent>
-</AsfContentProvider>
+<AsfContentProvider Version="1.0.0">
+	<Identifier Id="0e160d5c-e331-48d9-850b-e0387912171b">
+		<Org>FourWalledCubicle</Org>
+		<ShortName>LUFA</ShortName>
+		<Author>Dean Camera</Author>
+		<Description/>
+		<FollowFolderStructure>True</FollowFolderStructure>
+	</Identifier>
+	<AsfContent Type="zip" Path="contents.zip">
+		<Content>
+			<Version>0</Version>
+			<HelpURL/>
+			<Locator/>
+			<DbXMLPath>content.xml.cache</DbXMLPath>
+			<Description/>
+		</Content>
+	</AsfContent>
+</AsfContentProvider>
diff --git a/LUFA/StudioIntegration/VSIX/extension.vsixmanifest b/LUFA/StudioIntegration/VSIX/extension.vsixmanifest
index f155618b73..a1901cb567 100644
--- a/LUFA/StudioIntegration/VSIX/extension.vsixmanifest
+++ b/LUFA/StudioIntegration/VSIX/extension.vsixmanifest
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">
-	<Identifier Id="FourWalledCubicle.LUFA.0e160d5c-e331-48d9-850b-e0387912171b">
-		<Name>LUFA Library</Name>
-		<Author>Dean Camera</Author>
-		<Version>0</Version>
-		<MoreInfoUrl>http://www.lufa-lib.org</MoreInfoUrl>
-		<Description xml:space="preserve">LUFA, the Lightweight USB Framework for AVRs.</Description>
-
-		<License>License.txt</License>
-		<Icon>LUFA_thumb.png</Icon>
-		<PreviewImage>LUFA.png</PreviewImage>
-
-		<SupportedProducts>
-			<IsolatedShell Version="7.0">AtmelStudio</IsolatedShell>
-		</SupportedProducts>
-
-		<SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.5"/>
-		<Locale>1033</Locale>
-
-		<AllUsers>false</AllUsers>
-	</Identifier>
-
-	<References/>
-
-	<Content>
-		<VsPackage>LUFA.pkgdef</VsPackage>
-		<CustomExtension Type="MSHelp">helpcontentsetup.msha</CustomExtension>
-		<CustomExtension Type="asf-manifest">asf-manifest.xml</CustomExtension>
-	</Content>
-</Vsix>
+<?xml version="1.0" encoding="utf-8"?>
+
+<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">
+	<Identifier Id="FourWalledCubicle.LUFA.0e160d5c-e331-48d9-850b-e0387912171b">
+		<Name>LUFA Library</Name>
+		<Author>Dean Camera</Author>
+		<Version>0</Version>
+		<MoreInfoUrl>http://www.lufa-lib.org</MoreInfoUrl>
+		<Description xml:space="preserve">LUFA, the Lightweight USB Framework for AVRs.</Description>
+
+		<License>License.txt</License>
+		<Icon>LUFA_thumb.png</Icon>
+		<PreviewImage>LUFA.png</PreviewImage>
+
+		<SupportedProducts>
+			<IsolatedShell Version="7.0">AtmelStudio</IsolatedShell>
+		</SupportedProducts>
+
+		<SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.5"/>
+		<Locale>1033</Locale>
+
+		<AllUsers>false</AllUsers>
+	</Identifier>
+
+	<References/>
+
+	<Content>
+		<VsPackage>LUFA.pkgdef</VsPackage>
+		<CustomExtension Type="MSHelp">helpcontentsetup.msha</CustomExtension>
+		<CustomExtension Type="asf-manifest">asf-manifest.xml</CustomExtension>
+	</Content>
+</Vsix>
diff --git a/LUFA/StudioIntegration/VSIX/generate_caches.py b/LUFA/StudioIntegration/VSIX/generate_caches.py
index ab787e8ec3..671bed9d56 100644
--- a/LUFA/StudioIntegration/VSIX/generate_caches.py
+++ b/LUFA/StudioIntegration/VSIX/generate_caches.py
@@ -1,38 +1,38 @@
-"""
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-"""
-
-import sys
-sys.path.append("ProjectGenerator")
-
-
-def show_message(message):
-    print("[Project Generator] %s" % message)
-    sys.stdout.flush()
-
-
-def main(lufa_root_path):
-    try:
-        from asf_avrstudio5_interface import PythonFacade
-    except ImportError:
-        print("Fatal Error: The ASF project generator is missing.")
-        return 1
-
-    p = PythonFacade(lufa_root_path)
-
-    show_message("Checking database sanity...")
-    p.check_extension_database_sanity(lufa_root_path)
-
-    show_message("Building cache files...")
-    p.generate_extension_cache_files(lufa_root_path)
-
-    show_message("Cache files created.")
-    return 0
-
-
-if __name__ == "__main__":
-    sys.exit(main(sys.argv[1]))
+"""
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+"""
+
+import sys
+sys.path.append("ProjectGenerator")
+
+
+def show_message(message):
+    print("[Project Generator] %s" % message)
+    sys.stdout.flush()
+
+
+def main(lufa_root_path):
+    try:
+        from asf_avrstudio5_interface import PythonFacade
+    except ImportError:
+        print("Fatal Error: The ASF project generator is missing.")
+        return 1
+
+    p = PythonFacade(lufa_root_path)
+
+    show_message("Checking database sanity...")
+    p.check_extension_database_sanity(lufa_root_path)
+
+    show_message("Building cache files...")
+    p.generate_extension_cache_files(lufa_root_path)
+
+    show_message("Cache files created.")
+    return 0
+
+
+if __name__ == "__main__":
+    sys.exit(main(sys.argv[1]))
diff --git a/LUFA/StudioIntegration/lufa.xml b/LUFA/StudioIntegration/lufa.xml
index c838949865..d7ac1ca859 100644
--- a/LUFA/StudioIntegration/lufa.xml
+++ b/LUFA/StudioIntegration/lufa.xml
@@ -1,96 +1,96 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<extension-container>
-		<extension uuid="0e160d5c-e331-48d9-850b-e0387912171b" org="FourWalledCubicle" shortname="LUFA" version="" fullname="Lightweight USB Framework for AVRs (LUFA)">
-			<author name="Dean Camera" website="http://www.lufa-lib.org/" email="dean@fourwalledcubicle.com"/>
-			<description>Lightweight USB Framework for AVRs (LUFA), a USB software stack/framework.</description>
-			<icon-image path="LUFA/DoxygenPages/Images/LUFA_thumb.png"/>
-			<preview-image path="LUFA/DoxygenPages/Images/LUFA.png"/>
-			<license caption="LUFA License" path="LUFA/License.txt"/>
-			<release-notes caption="LUFA Information" url="http://www.lufa-lib.org"/>
-			<online-help>
-				<index-page caption="LUFA Documentation" url="http://www.lufa-lib.org/documentation/"/>
-				<module-help-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>
-				<module-guide-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>
-			</online-help>
-			<dependencies/>
-		</extension>
-	</extension-container>
-
-	<asf>
-		<device-alias-map name="lufa_avr8">
-			<device-support value="at90usb82"/>
-			<device-support value="atmega8u2"/>
-			<device-support value="at90usb162"/>
-			<device-support value="atmega16u2"/>
-			<device-support value="atmega16u4"/>
-			<device-support value="atmega32u2"/>
-			<device-support value="atmega32u4"/>
-			<device-support value="at90usb646"/>
-			<device-support value="at90usb647"/>
-			<device-support value="at90usb1286"/>
-			<device-support value="at90usb1287"/>
-		</device-alias-map>
-
-		<device-alias-map name="lufa_xmega">
-			<device-support value="atxmega16a4u"/>
-			<device-support value="atxmega32a4u"/>
-			<device-support value="atxmega64a4u"/>
-			<device-support value="atxmega128a4u"/>
-			<device-support value="atxmega64a3u"/>
-			<device-support value="atxmega128a3u"/>
-			<device-support value="atxmega192a3u"/>
-			<device-support value="atxmega256a3u"/>
-			<device-support value="atxmega256a3bu"/>
-			<device-support value="atxmega128a1u"/>
-			<device-support value="atxmega64b3"/>
-			<device-support value="atxmega128b3"/>
-			<device-support value="atxmega64b1"/>
-			<device-support value="atxmega128b1"/>
-			<device-support value="atxmega64c3"/>
-			<device-support value="atxmega128c3"/>
-			<device-support value="atxmega192c3"/>
-			<device-support value="atxmega256c3"/>
-			<device-support value="atxmega384c3"/>
-			<device-support value="atxmega16c4"/>
-		</device-alias-map>
-
-		<device-alias-map name="lufa_uc3">
-			<device-support value="at32uc3a364"/>
-			<device-support value="at32uc3a364s"/>
-			<device-support value="at32uc3a464"/>
-			<device-support value="at32uc3a464s"/>
-			<device-support value="at32uc3b064"/>
-			<device-support value="at32uc3b164"/>
-			<device-support value="at32uc3a0128"/>
-			<device-support value="at32uc3a1128"/>
-			<device-support value="at32uc3a3128"/>
-			<device-support value="at32uc3a3128s"/>
-			<device-support value="at32uc3a4128"/>
-			<device-support value="at32uc3a4128s"/>
-			<device-support value="at32uc3b0128"/>
-			<device-support value="at32uc3b1128"/>
-			<device-support value="at32uc3a0256"/>
-			<device-support value="at32uc3a1256"/>
-			<device-support value="at32uc3a3256"/>
-			<device-support value="at32uc3a3256s"/>
-			<device-support value="at32uc3a4256"/>
-			<device-support value="at32uc3a4256s"/>
-			<device-support value="at32uc3b0256"/>
-			<device-support value="at32uc3b1256"/>
-			<device-support value="at32uc3a0512"/>
-			<device-support value="at32uc3a1512"/>
-			<device-support value="at32uc3b0512"/>
-			<device-support value="at32uc3b1512"/>
-		</device-alias-map>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<extension-container>
+		<extension uuid="0e160d5c-e331-48d9-850b-e0387912171b" org="FourWalledCubicle" shortname="LUFA" version="" fullname="Lightweight USB Framework for AVRs (LUFA)">
+			<author name="Dean Camera" website="http://www.lufa-lib.org/" email="dean@fourwalledcubicle.com"/>
+			<description>Lightweight USB Framework for AVRs (LUFA), a USB software stack/framework.</description>
+			<icon-image path="LUFA/DoxygenPages/Images/LUFA_thumb.png"/>
+			<preview-image path="LUFA/DoxygenPages/Images/LUFA.png"/>
+			<license caption="LUFA License" path="LUFA/License.txt"/>
+			<release-notes caption="LUFA Information" url="http://www.lufa-lib.org"/>
+			<online-help>
+				<index-page caption="LUFA Documentation" url="http://www.lufa-lib.org/documentation/"/>
+				<module-help-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>
+				<module-guide-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>
+			</online-help>
+			<dependencies/>
+		</extension>
+	</extension-container>
+
+	<asf>
+		<device-alias-map name="lufa_avr8">
+			<device-support value="at90usb82"/>
+			<device-support value="atmega8u2"/>
+			<device-support value="at90usb162"/>
+			<device-support value="atmega16u2"/>
+			<device-support value="atmega16u4"/>
+			<device-support value="atmega32u2"/>
+			<device-support value="atmega32u4"/>
+			<device-support value="at90usb646"/>
+			<device-support value="at90usb647"/>
+			<device-support value="at90usb1286"/>
+			<device-support value="at90usb1287"/>
+		</device-alias-map>
+
+		<device-alias-map name="lufa_xmega">
+			<device-support value="atxmega16a4u"/>
+			<device-support value="atxmega32a4u"/>
+			<device-support value="atxmega64a4u"/>
+			<device-support value="atxmega128a4u"/>
+			<device-support value="atxmega64a3u"/>
+			<device-support value="atxmega128a3u"/>
+			<device-support value="atxmega192a3u"/>
+			<device-support value="atxmega256a3u"/>
+			<device-support value="atxmega256a3bu"/>
+			<device-support value="atxmega128a1u"/>
+			<device-support value="atxmega64b3"/>
+			<device-support value="atxmega128b3"/>
+			<device-support value="atxmega64b1"/>
+			<device-support value="atxmega128b1"/>
+			<device-support value="atxmega64c3"/>
+			<device-support value="atxmega128c3"/>
+			<device-support value="atxmega192c3"/>
+			<device-support value="atxmega256c3"/>
+			<device-support value="atxmega384c3"/>
+			<device-support value="atxmega16c4"/>
+		</device-alias-map>
+
+		<device-alias-map name="lufa_uc3">
+			<device-support value="at32uc3a364"/>
+			<device-support value="at32uc3a364s"/>
+			<device-support value="at32uc3a464"/>
+			<device-support value="at32uc3a464s"/>
+			<device-support value="at32uc3b064"/>
+			<device-support value="at32uc3b164"/>
+			<device-support value="at32uc3a0128"/>
+			<device-support value="at32uc3a1128"/>
+			<device-support value="at32uc3a3128"/>
+			<device-support value="at32uc3a3128s"/>
+			<device-support value="at32uc3a4128"/>
+			<device-support value="at32uc3a4128s"/>
+			<device-support value="at32uc3b0128"/>
+			<device-support value="at32uc3b1128"/>
+			<device-support value="at32uc3a0256"/>
+			<device-support value="at32uc3a1256"/>
+			<device-support value="at32uc3a3256"/>
+			<device-support value="at32uc3a3256s"/>
+			<device-support value="at32uc3a4256"/>
+			<device-support value="at32uc3a4256s"/>
+			<device-support value="at32uc3b0256"/>
+			<device-support value="at32uc3b1256"/>
+			<device-support value="at32uc3a0512"/>
+			<device-support value="at32uc3a1512"/>
+			<device-support value="at32uc3b0512"/>
+			<device-support value="at32uc3b1512"/>
+		</device-alias-map>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_common.xml b/LUFA/StudioIntegration/lufa_common.xml
index b72f84cd9d..e5e1074348 100644
--- a/LUFA/StudioIntegration/lufa_common.xml
+++ b/LUFA/StudioIntegration/lufa_common.xml
@@ -1,34 +1,34 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<module type="service" id="lufa.common" caption="LUFA Common Infrastructure">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<info type="gui-flag" value="hidden"/>
-			<build type="doxygen-entry-point" value="Group_Common"/>
-
-			<build type="include-path" value=".."/>
-			<build type="header-file" subtype="api" value="Version.h"/>
-			<build type="distribute" subtype="license" value="License.txt"/>
-
-			<build type="header-file" subtype="api" value="Common/Common.h"/>
-			<build type="header-file" value="Common/Architectures.h"/>
-			<build type="header-file" value="Common/ArchitectureSpecific.h"/>
-			<build type="header-file" value="Common/Attributes.h"/>
-			<build type="header-file" value="Common/BoardTypes.h"/>
-			<build type="header-file" value="Common/CompilerSpecific.h"/>
-			<build type="header-file" value="Common/Endianness.h"/>
-		</module>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<module type="service" id="lufa.common" caption="LUFA Common Infrastructure">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<info type="gui-flag" value="hidden"/>
+			<build type="doxygen-entry-point" value="Group_Common"/>
+
+			<build type="include-path" value=".."/>
+			<build type="header-file" subtype="api" value="Version.h"/>
+			<build type="distribute" subtype="license" value="License.txt"/>
+
+			<build type="header-file" subtype="api" value="Common/Common.h"/>
+			<build type="header-file" value="Common/Architectures.h"/>
+			<build type="header-file" value="Common/ArchitectureSpecific.h"/>
+			<build type="header-file" value="Common/Attributes.h"/>
+			<build type="header-file" value="Common/BoardTypes.h"/>
+			<build type="header-file" value="Common/CompilerSpecific.h"/>
+			<build type="header-file" value="Common/Endianness.h"/>
+		</module>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_drivers_board.xml b/LUFA/StudioIntegration/lufa_drivers_board.xml
index bd0359f683..faaf56bfc1 100644
--- a/LUFA/StudioIntegration/lufa_drivers_board.xml
+++ b/LUFA/StudioIntegration/lufa_drivers_board.xml
@@ -1,114 +1,114 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<board id="lufa.boards.dummy.avr8" vendor="LUFA" caption="AVR8 Architecture">
-			<device-support value="mega"/>
-
-			<require idref="lufa.drivers.board"/>
-			<require idref="lufa.drivers.board.info"/>
-		</board>
-
-		<board id="lufa.boards.dummy.xmega" vendor="LUFA" caption="XMEGA Architecture">
-			<device-support value="xmega"/>
-
-			<require idref="lufa.drivers.board"/>
-			<require idref="lufa.drivers.board.info"/>
-		</board>
-
-		<board id="lufa.boards.dummy.uc3" vendor="LUFA" caption="UC3 Architecture">
-			<device-support value="uc3"/>
-
-			<require idref="lufa.drivers.board"/>
-			<require idref="lufa.drivers.board.info"/>
-		</board>
-
-		<module type="driver" id="lufa.drivers.board.info" caption="LUFA Board Hardware Information Driver">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_BoardInfo"/>
-
-			<require idref="lufa.common"/>
-
-			<build type="include-path" value=".."/>
-			<build type="header-file"  subtype="api" value="Drivers/Board/Board.h"/>
-		</module>
-
-		<module type="driver" id="lufa.drivers.board.leds" caption="LUFA Board LED Driver">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_LEDs"/>
-
-			<require idref="lufa.common"/>
-
-			<build type="include-path" value=".."/>
-			<build type="header-file"  subtype="api" value="Drivers/Board/LEDs.h"/>
-		</module>
-
-		<module type="driver" id="lufa.drivers.board.buttons" caption="LUFA Board Buttons Driver">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_Buttons"/>
-
-			<require idref="lufa.common"/>
-
-			<build type="include-path" value=".."/>
-			<build type="header-file"  subtype="api" value="Drivers/Board/Buttons.h"/>
-		</module>
-
-		<module type="driver" id="lufa.drivers.board.dataflash" caption="LUFA Board Dataflash Driver">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_Dataflash"/>
-
-			<require idref="lufa.common"/>
-
-			<build type="include-path" value=".."/>
-			<build type="header-file"  subtype="api" value="Drivers/Board/Dataflash.h"/>
-		</module>
-
-		<module type="driver" id="lufa.drivers.board.joystick" caption="LUFA Board Joystick Driver">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_Joystick"/>
-
-			<require idref="lufa.common"/>
-
-			<build type="include-path" value=".."/>
-			<build type="header-file"  subtype="api" value="Drivers/Board/Joystick.h"/>
-		</module>
-
-		<module type="driver" id="lufa.drivers.board.temperature" caption="LUFA Board Temperature Sensor Driver">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_Temperature"/>
-
-			<require idref="lufa.common"/>
-			<require idref="lufa.drivers.peripheral.adc"/>
-
-			<build type="c-source"     value="Drivers/Board/Temperature.c"/>
-			<build type="include-path" value=".."/>
-			<build type="header-file"  subtype="api" value="Drivers/Board/Temperature.h"/>
-		</module>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<board id="lufa.boards.dummy.avr8" vendor="LUFA" caption="AVR8 Architecture">
+			<device-support value="mega"/>
+
+			<require idref="lufa.drivers.board"/>
+			<require idref="lufa.drivers.board.info"/>
+		</board>
+
+		<board id="lufa.boards.dummy.xmega" vendor="LUFA" caption="XMEGA Architecture">
+			<device-support value="xmega"/>
+
+			<require idref="lufa.drivers.board"/>
+			<require idref="lufa.drivers.board.info"/>
+		</board>
+
+		<board id="lufa.boards.dummy.uc3" vendor="LUFA" caption="UC3 Architecture">
+			<device-support value="uc3"/>
+
+			<require idref="lufa.drivers.board"/>
+			<require idref="lufa.drivers.board.info"/>
+		</board>
+
+		<module type="driver" id="lufa.drivers.board.info" caption="LUFA Board Hardware Information Driver">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_BoardInfo"/>
+
+			<require idref="lufa.common"/>
+
+			<build type="include-path" value=".."/>
+			<build type="header-file"  subtype="api" value="Drivers/Board/Board.h"/>
+		</module>
+
+		<module type="driver" id="lufa.drivers.board.leds" caption="LUFA Board LED Driver">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_LEDs"/>
+
+			<require idref="lufa.common"/>
+
+			<build type="include-path" value=".."/>
+			<build type="header-file"  subtype="api" value="Drivers/Board/LEDs.h"/>
+		</module>
+
+		<module type="driver" id="lufa.drivers.board.buttons" caption="LUFA Board Buttons Driver">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_Buttons"/>
+
+			<require idref="lufa.common"/>
+
+			<build type="include-path" value=".."/>
+			<build type="header-file"  subtype="api" value="Drivers/Board/Buttons.h"/>
+		</module>
+
+		<module type="driver" id="lufa.drivers.board.dataflash" caption="LUFA Board Dataflash Driver">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_Dataflash"/>
+
+			<require idref="lufa.common"/>
+
+			<build type="include-path" value=".."/>
+			<build type="header-file"  subtype="api" value="Drivers/Board/Dataflash.h"/>
+		</module>
+
+		<module type="driver" id="lufa.drivers.board.joystick" caption="LUFA Board Joystick Driver">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_Joystick"/>
+
+			<require idref="lufa.common"/>
+
+			<build type="include-path" value=".."/>
+			<build type="header-file"  subtype="api" value="Drivers/Board/Joystick.h"/>
+		</module>
+
+		<module type="driver" id="lufa.drivers.board.temperature" caption="LUFA Board Temperature Sensor Driver">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_Temperature"/>
+
+			<require idref="lufa.common"/>
+			<require idref="lufa.drivers.peripheral.adc"/>
+
+			<build type="c-source"     value="Drivers/Board/Temperature.c"/>
+			<build type="include-path" value=".."/>
+			<build type="header-file"  subtype="api" value="Drivers/Board/Temperature.h"/>
+		</module>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_drivers_board_names.xml b/LUFA/StudioIntegration/lufa_drivers_board_names.xml
index 69a38c5f70..bd1d4bdfd1 100644
--- a/LUFA/StudioIntegration/lufa_drivers_board_names.xml
+++ b/LUFA/StudioIntegration/lufa_drivers_board_names.xml
@@ -1,853 +1,853 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<select-by-config id="lufa.drivers.board" name="lufa.drivers.board.name" default="none" caption="LUFA Board Support">
-			<info type="description" value="summary">
-				Board hardware (LEDs, Buttons, etc.) drivers for the preconfigured LUFA boards. Note that only the boards
-				compatible with the currently selected device will be shown.
-
-				To disable all hardware drivers silently, use NONE. To supply customer drivers, use USER (see manual).
-			</info>
-
-			<module type="driver" id="lufa.drivers.board#none" caption="Board Support - None">
-				<device-support value="avr"/>
-				<build type="define" name="BOARD" value="BOARD_NONE"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#user" caption="Board Support - User Supplied">
-				<device-support value="avr"/>
-				<build type="define" name="BOARD" value="BOARD_USER"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#adafruit_u4" caption="Board Support - ADAFRUITU4">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_ADAFRUITU4"/>
-
-				<device-support value="atmega32u4"/>
-				<build type="define" name="BOARD" value="BOARD_ADAFRUITU4"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/ADAFRUITU4/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/ADAFRUITU4/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#atavrusbrf01" caption="Board Support - ATAVRUSBRF01">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_ATAVRUSBRF01"/>
-
-				<device-support value="at90usb1287"/>
-				<build type="define" name="BOARD" value="BOARD_ATAVRUSBRF01"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#benito" caption="Board Support - BENITO">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_BENITO"/>
-
-				<device-support value="at90usb162"/>
-				<build type="define" name="BOARD" value="BOARD_BENITO"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/BENITO/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/BENITO/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/BENITO/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#big_multio" caption="Board Support - BIGMULTIO">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_BIGMULTIO"/>
-
-				<device-support value="atmega32u4"/>
-				<build type="define" name="BOARD" value="BOARD_BIGMULTIO"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/BIGMULTIO/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/BIGMULTIO/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#blackcat" caption="Board Support - BLACKCAT">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_BLACKCAT"/>
-
-				<device-support value="at90usb162"/>
-				<build type="define" name="BOARD" value="BOARD_BLACKCAT"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/BLACKCAT/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/BLACKCAT/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#bui" caption="Board Support - BUI">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_BUI"/>
-
-				<device-support value="at90usb646"/>
-				<build type="define" name="BOARD" value="BOARD_BUI"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/BUI/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/BUI/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#bumbleb" caption="Board Support - BUMBLEB">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_BUMBLEB"/>
-
-				<device-support value="at90usb162"/>
-				<build type="define" name="BOARD" value="BOARD_BUMBLEB"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-				<require idref="lufa.drivers.board.joystick"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Joystick.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#culv3" caption="Board Support - CULV3">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_CULV3"/>
-
-				<device-support value="atmega32u4"/>
-				<build type="define" name="BOARD" value="BOARD_CULV3"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/CULV3/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/CULV3/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/CULV3/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#duce" caption="Board Support - DUCE">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_DUCE"/>
-
-				<device-support value="atmega32u2"/>
-				<build type="define" name="BOARD" value="BOARD_DUCE"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/DUCE/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/DUCE/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#evk527" caption="Board Support - EVK527">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK527"/>
-
-				<device-support value="atmega32u4"/>
-				<build type="define" name="BOARD" value="BOARD_EVK527"/>
-
-				<require idref="lufa.drivers.misc.at45db321c"/>
-				<require idref="lufa.drivers.peripheral.spi"/>
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.dataflash"/>
-				<require idref="lufa.drivers.board.joystick"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Dataflash.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Joystick.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/EVK527/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#jm_db_u2" caption="Board Support - JMDBU2">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_JMDBU2"/>
-
-				<device-support value="atmega32u2"/>
-				<build type="define" name="BOARD" value="BOARD_JMDBU2"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/JMDBU2/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/JMDBU2/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/JMDBU2/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#leonardo" caption="Board Support - LEONARDO">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_LEONARDO"/>
-
-				<device-support value="atmega32u4"/>
-				<build type="define" name="BOARD" value="BOARD_LEONARDO"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/LEONARDO/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/LEONARDO/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#maximus" caption="Board Support - MAXIMUS">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MAXIMUS"/>
-
-				<device-support value="at90usb162"/>
-				<build type="define" name="BOARD" value="BOARD_MAXIMUS"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MAXIMUS/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MAXIMUS/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#micropendous_32u2" caption="Board Support - MICROPENDOUS_32U2">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_32U2"/>
-
-				<device-support value="atmega32u2"/>
-				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_32U2"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#micropendous_a" caption="Board Support - MICROPENDOUS_A">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_A"/>
-
-				<device-support value="at90usb1287"/>
-				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_A"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#micropendous_1" caption="Board Support - MICROPENDOUS_1">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_1"/>
-
-				<device-support value="at90usb162"/>
-				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_1"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#micropendous_2" caption="Board Support - MICROPENDOUS_2">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_2"/>
-
-				<device-support value="atmega32u4"/>
-				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_2"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#micropendous_3" caption="Board Support - MICROPENDOUS_3">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_3"/>
-
-				<device-support value="at90usb1287"/>
-				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_3"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#micropendous_4" caption="Board Support - MICROPENDOUS_4">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_4"/>
-
-				<device-support value="at90usb1287"/>
-				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_4"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#micropendous_dip" caption="Board Support - MICROPENDOUS_DIP">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_DIP"/>
-
-				<device-support value="at90usb1287"/>
-				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_DIP"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#micropendous_rev1" caption="Board Support - MICROPENDOUS_REV1">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_REV1"/>
-
-				<device-support value="at90usb1287"/>
-				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_REV1"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#micropendous_rev2" caption="Board Support - MICROPENDOUS_REV2">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_REV2"/>
-
-				<device-support value="at90usb1287"/>
-				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_REV2"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#microsin_162" caption="Board Support - MICROSIN162">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROSIN162"/>
-
-				<device-support value="atmega162"/>
-				<build type="define" name="BOARD" value="BOARD_MICROSIN162"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/LEDs.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#minimus" caption="Board Support - MINIMUS">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MINIMUS"/>
-
-				<device-support value="atmega32u2"/>
-				<build type="define" name="BOARD" value="BOARD_MINIMUS"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MINIMUS/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MINIMUS/LEDs.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MINIMUS/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#multio" caption="Board Support - MULTIO">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MULTIO"/>
-
-				<device-support value="at90usb162"/>
-				<build type="define" name="BOARD" value="BOARD_MULTIO"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MULTIO/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MULTIO/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#olimex_162" caption="Board Support - OLIMEX162">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEX162"/>
-
-				<device-support value="at90usb162"/>
-				<build type="define" name="BOARD" value="BOARD_OLIMEX162"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/LEDs.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#olimex_32u4" caption="Board Support - OLIMEX32U4">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEX32U4"/>
-
-				<device-support value="atmega32u4"/>
-				<build type="define" name="BOARD" value="BOARD_OLIMEX32U4"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/LEDs.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#olimex_isp_mkii" caption="Board Support - OLIMEXISPMK2">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEXISPMK2"/>
-
-				<device-support value="at90usb162"/>
-				<build type="define" name="BOARD" value="BOARD_OLIMEXISPMK2"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#olimex_t32u4" caption="Board Support - OLIMEX_T32U4">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEXT32U4"/>
-
-				<device-support value="atmega32u4"/>
-				<build type="define" name="BOARD" value="BOARD_OLIMEXT32U4"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-				<require idref="lufa.drivers.board.buttons"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#rzusbstick" caption="Board Support - RZUSBSTICK">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_RZUSBSTICK"/>
-
-				<device-support value="at90usb1287"/>
-				<build type="define" name="BOARD" value="BOARD_RZUSBSTICK"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/RZUSBSTICK/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/RZUSBSTICK/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#sparkfun_8u2" caption="Board Support - SPARKFUN8U2">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_SPARKFUN8U2"/>
-
-				<device-support value="atmega8u2"/>
-				<build type="define" name="BOARD" value="BOARD_SPARKFUN8U2"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/SPARKFUN8U2/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#stk525" caption="Board Support - STK525">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_STK525"/>
-
-				<device-support value="at90usb1287"/>
-				<device-support value="at90usb1286"/>
-				<device-support value="at90usb647"/>
-				<device-support value="at90usb646"/>
-				<build type="define" name="BOARD" value="BOARD_STK525"/>
-
-				<require idref="lufa.drivers.misc.at45db321c"/>
-				<require idref="lufa.drivers.peripheral.spi"/>
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.dataflash"/>
-				<require idref="lufa.drivers.board.joystick"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/STK525/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/STK525/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/STK525/Dataflash.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/STK525/Joystick.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/STK525/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#stk526" caption="Board Support - STK526">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_STK526"/>
-
-				<device-support value="at90usb162"/>
-				<device-support value="at90usb82"/>
-				<device-support value="atmega32u2"/>
-				<device-support value="atmega16u2"/>
-				<device-support value="atmega8u2"/>
-				<build type="define" name="BOARD" value="BOARD_STK526"/>
-
-				<require idref="lufa.drivers.misc.at45db642d"/>
-				<require idref="lufa.drivers.peripheral.spi"/>
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.dataflash"/>
-				<require idref="lufa.drivers.board.joystick"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/STK526/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/STK526/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/STK526/Dataflash.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/STK526/Joystick.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/STK526/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#teensy" caption="Board Support - TEENSY">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_TEENSY"/>
-
-				<device-support value="at90usb162"/>
-				<build type="define" name="BOARD" value="BOARD_TEENSY"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#teensy2" caption="Board Support - TEENSY2">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_TEENSY2"/>
-
-				<device-support value="at90usb646"/>
-				<build type="define" name="BOARD" value="BOARD_TEENSY2"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#tul" caption="Board Support - TUL">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_TUL"/>
-
-				<device-support value="atmega32u4"/>
-				<build type="define" name="BOARD" value="BOARD_TUL"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/TUL/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/TUL/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/TUL/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#udip" caption="Board Support - UDIP">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_UDIP"/>
-
-				<device-support value="atmega32u2"/>
-				<build type="define" name="BOARD" value="BOARD_UDIP"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/UDIP/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/UDIP/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/UDIP/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#uno" caption="Board Support - UNO">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_UNO"/>
-
-				<device-support value="atmega8u2"/>
-				<device-support value="atmega16u2"/>
-				<build type="define" name="BOARD" value="BOARD_UNO"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/UNO/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/UNO/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#usb2ax" caption="Board Support - USB2AX">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX"/>
-
-				<device-support value="atmega32u2"/>
-				<build type="define" name="BOARD" value="BOARD_USB2AX"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#usb2ax_v3" caption="Board Support - USB2AX_V3">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX_V3"/>
-
-				<device-support value="atmega32u2"/>
-				<build type="define" name="BOARD" value="BOARD_USB2AX_V3"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#usb2ax_v3_1" caption="Board Support - USB2AX_V31">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX_V31"/>
-
-				<device-support value="atmega32u2"/>
-				<build type="define" name="BOARD" value="BOARD_USB2AX_V31"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#usbfoo" caption="Board Support - USBFOO">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_USBFOO"/>
-
-				<device-support value="atmega162"/>
-				<build type="define" name="BOARD" value="BOARD_USBFOO"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/USBFOO/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USBFOO/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USBFOO/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#usbkey" caption="Board Support - USBKEY">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_USBKEY"/>
-
-				<device-support value="at90usb1287"/>
-				<build type="define" name="BOARD" value="BOARD_USBKEY"/>
-
-				<require idref="lufa.drivers.misc.at45db642d"/>
-				<require idref="lufa.drivers.peripheral.spi"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.dataflash"/>
-				<require idref="lufa.drivers.board.joystick"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Dataflash.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Joystick.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#usbtiny_mkii" caption="Board Support - USBTINYMKII">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_USBTINYMKII"/>
-
-				<device-support value="at90usb162"/>
-				<build type="define" name="BOARD" value="BOARD_USBTINYMKII"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/LEDs.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#xplain_rev1" caption="Board Support - XPLAIN (HW Rev 1)">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_XPLAIN_REV1"/>
-
-				<device-support value="at90usb1287"/>
-
-				<require idref="lufa.drivers.misc.at45db642d"/>
-				<require idref="lufa.drivers.peripheral.spi"/>
-				<require idref="lufa.drivers.board.dataflash"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Dataflash.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_XPLAIN_REV1"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#xplain" caption="Board Support - XPLAIN (HW Rev 2+)">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_XPLAIN"/>
-
-				<device-support value="at90usb1287"/>
-
-				<require idref="lufa.drivers.misc.at45db642d"/>
-				<require idref="lufa.drivers.peripheral.spi"/>
-				<require idref="lufa.drivers.board.dataflash"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Dataflash.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_XPLAIN"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#a3bu_xplained" caption="Board Support - A3BU_XPLAINED">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_A3BU_XPLAINED"/>
-
-				<device-support value="atxmega256a3bu"/>
-
-				<require idref="lufa.drivers.misc.at45db642d"/>
-				<require idref="lufa.drivers.peripheral.usart_spi"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.dataflash"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h"/>
-				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h"/>
-				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_A3BU_XPLAINED"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#b1_xplained" caption="Board Support - B1_XPLAINED">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_B1_XPLAINED"/>
-
-				<device-support value="atxmega128b1"/>
-
-				<require idref="lufa.drivers.misc.at45db642d"/>
-				<require idref="lufa.drivers.peripheral.usart_spi"/>
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.dataflash"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Board.h"/>
-				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h"/>
-				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_B1_XPLAINED"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#evk1100" caption="Board Support - EVK1100">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK1100"/>
-
-				<device-support value="at32uc3a0512"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.joystick"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/UC3/EVK1100/Board.h"/>
-				<build type="header-file" value="Drivers/Board/UC3/EVK1100/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/UC3/EVK1100/Joystick.h"/>
-				<build type="header-file" value="Drivers/Board/UC3/EVK1100/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_EVK1100"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#evk1101" caption="Board Support - EVK1101">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK1101"/>
-
-				<device-support value="at32uc3b0256"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.joystick"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/UC3/EVK1101/Board.h"/>
-				<build type="header-file" value="Drivers/Board/UC3/EVK1101/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/UC3/EVK1101/Joystick.h"/>
-				<build type="header-file" value="Drivers/Board/UC3/EVK1101/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_EVK1101"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#evk1104" caption="Board Support - EVK1104">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK1104"/>
-
-				<device-support value="at32uc3a3256"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/UC3/EVK1104/Board.h"/>
-				<build type="header-file" value="Drivers/Board/UC3/EVK1104/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/UC3/EVK1104/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_EVK1104"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#uc3a3_xplained" caption="Board Support - UC3A3_XPLAINED">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_UC3_A3_XPLAINED"/>
-
-				<device-support value="at32uc3a3256"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/Board.h"/>
-				<build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_UC3A3_XPLAINED"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#stange_isp" caption="Board Support - STANGE_ISP">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_STANGE_ISP"/>
-
-				<device-support value="at90usb162"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_STANGE_ISP"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#c3_xplained" caption="Board Support - C3_XPLAINED">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_C3_XPLAINED"/>
-
-				<device-support value="atxmega384c3"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/Board.h"/>
-				<build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_C3_XPLAINED"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#u2s" caption="Board Support - U2S">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_U2S"/>
-
-				<device-support value="atmega32u2"/>
-
-				<require idref="lufa.drivers.board.buttons"/>
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/U2S/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/U2S/Buttons.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/U2S/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_U2S"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#yun" caption="Board Support - YUN">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_YUN"/>
-
-				<device-support value="atmega32u4"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/YUN/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/YUN/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_YUN"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.board#micro" caption="Board Support - MICRO">
-				<build type="doxygen-entry-point" value="Group_BoardInfo_MICRO"/>
-
-				<device-support value="atmega32u4"/>
-
-				<require idref="lufa.drivers.board.leds"/>
-
-				<build type="header-file" value="Drivers/Board/AVR8/MICRO/Board.h"/>
-				<build type="header-file" value="Drivers/Board/AVR8/MICRO/LEDs.h"/>
-
-				<build type="define" name="BOARD" value="BOARD_MICRO"/>
-			</module>
-		</select-by-config>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-config id="lufa.drivers.board" name="lufa.drivers.board.name" default="none" caption="LUFA Board Support">
+			<info type="description" value="summary">
+				Board hardware (LEDs, Buttons, etc.) drivers for the preconfigured LUFA boards. Note that only the boards
+				compatible with the currently selected device will be shown.
+
+				To disable all hardware drivers silently, use NONE. To supply customer drivers, use USER (see manual).
+			</info>
+
+			<module type="driver" id="lufa.drivers.board#none" caption="Board Support - None">
+				<device-support value="avr"/>
+				<build type="define" name="BOARD" value="BOARD_NONE"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#user" caption="Board Support - User Supplied">
+				<device-support value="avr"/>
+				<build type="define" name="BOARD" value="BOARD_USER"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#adafruit_u4" caption="Board Support - ADAFRUITU4">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_ADAFRUITU4"/>
+
+				<device-support value="atmega32u4"/>
+				<build type="define" name="BOARD" value="BOARD_ADAFRUITU4"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/ADAFRUITU4/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/ADAFRUITU4/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#atavrusbrf01" caption="Board Support - ATAVRUSBRF01">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_ATAVRUSBRF01"/>
+
+				<device-support value="at90usb1287"/>
+				<build type="define" name="BOARD" value="BOARD_ATAVRUSBRF01"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#benito" caption="Board Support - BENITO">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_BENITO"/>
+
+				<device-support value="at90usb162"/>
+				<build type="define" name="BOARD" value="BOARD_BENITO"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/BENITO/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/BENITO/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/BENITO/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#big_multio" caption="Board Support - BIGMULTIO">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_BIGMULTIO"/>
+
+				<device-support value="atmega32u4"/>
+				<build type="define" name="BOARD" value="BOARD_BIGMULTIO"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/BIGMULTIO/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/BIGMULTIO/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#blackcat" caption="Board Support - BLACKCAT">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_BLACKCAT"/>
+
+				<device-support value="at90usb162"/>
+				<build type="define" name="BOARD" value="BOARD_BLACKCAT"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/BLACKCAT/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/BLACKCAT/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#bui" caption="Board Support - BUI">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_BUI"/>
+
+				<device-support value="at90usb646"/>
+				<build type="define" name="BOARD" value="BOARD_BUI"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/BUI/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/BUI/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#bumbleb" caption="Board Support - BUMBLEB">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_BUMBLEB"/>
+
+				<device-support value="at90usb162"/>
+				<build type="define" name="BOARD" value="BOARD_BUMBLEB"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+				<require idref="lufa.drivers.board.joystick"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Joystick.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#culv3" caption="Board Support - CULV3">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_CULV3"/>
+
+				<device-support value="atmega32u4"/>
+				<build type="define" name="BOARD" value="BOARD_CULV3"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/CULV3/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/CULV3/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/CULV3/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#duce" caption="Board Support - DUCE">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_DUCE"/>
+
+				<device-support value="atmega32u2"/>
+				<build type="define" name="BOARD" value="BOARD_DUCE"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/DUCE/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/DUCE/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#evk527" caption="Board Support - EVK527">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK527"/>
+
+				<device-support value="atmega32u4"/>
+				<build type="define" name="BOARD" value="BOARD_EVK527"/>
+
+				<require idref="lufa.drivers.misc.at45db321c"/>
+				<require idref="lufa.drivers.peripheral.spi"/>
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.dataflash"/>
+				<require idref="lufa.drivers.board.joystick"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Dataflash.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Joystick.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/EVK527/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#jm_db_u2" caption="Board Support - JMDBU2">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_JMDBU2"/>
+
+				<device-support value="atmega32u2"/>
+				<build type="define" name="BOARD" value="BOARD_JMDBU2"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/JMDBU2/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/JMDBU2/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/JMDBU2/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#leonardo" caption="Board Support - LEONARDO">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_LEONARDO"/>
+
+				<device-support value="atmega32u4"/>
+				<build type="define" name="BOARD" value="BOARD_LEONARDO"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/LEONARDO/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/LEONARDO/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#maximus" caption="Board Support - MAXIMUS">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MAXIMUS"/>
+
+				<device-support value="at90usb162"/>
+				<build type="define" name="BOARD" value="BOARD_MAXIMUS"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MAXIMUS/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MAXIMUS/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#micropendous_32u2" caption="Board Support - MICROPENDOUS_32U2">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_32U2"/>
+
+				<device-support value="atmega32u2"/>
+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_32U2"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#micropendous_a" caption="Board Support - MICROPENDOUS_A">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_A"/>
+
+				<device-support value="at90usb1287"/>
+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_A"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#micropendous_1" caption="Board Support - MICROPENDOUS_1">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_1"/>
+
+				<device-support value="at90usb162"/>
+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_1"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#micropendous_2" caption="Board Support - MICROPENDOUS_2">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_2"/>
+
+				<device-support value="atmega32u4"/>
+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_2"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#micropendous_3" caption="Board Support - MICROPENDOUS_3">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_3"/>
+
+				<device-support value="at90usb1287"/>
+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_3"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#micropendous_4" caption="Board Support - MICROPENDOUS_4">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_4"/>
+
+				<device-support value="at90usb1287"/>
+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_4"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#micropendous_dip" caption="Board Support - MICROPENDOUS_DIP">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_DIP"/>
+
+				<device-support value="at90usb1287"/>
+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_DIP"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#micropendous_rev1" caption="Board Support - MICROPENDOUS_REV1">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_REV1"/>
+
+				<device-support value="at90usb1287"/>
+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_REV1"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#micropendous_rev2" caption="Board Support - MICROPENDOUS_REV2">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_REV2"/>
+
+				<device-support value="at90usb1287"/>
+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_REV2"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#microsin_162" caption="Board Support - MICROSIN162">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROSIN162"/>
+
+				<device-support value="atmega162"/>
+				<build type="define" name="BOARD" value="BOARD_MICROSIN162"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/LEDs.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#minimus" caption="Board Support - MINIMUS">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MINIMUS"/>
+
+				<device-support value="atmega32u2"/>
+				<build type="define" name="BOARD" value="BOARD_MINIMUS"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MINIMUS/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MINIMUS/LEDs.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MINIMUS/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#multio" caption="Board Support - MULTIO">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MULTIO"/>
+
+				<device-support value="at90usb162"/>
+				<build type="define" name="BOARD" value="BOARD_MULTIO"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MULTIO/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MULTIO/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#olimex_162" caption="Board Support - OLIMEX162">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEX162"/>
+
+				<device-support value="at90usb162"/>
+				<build type="define" name="BOARD" value="BOARD_OLIMEX162"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/LEDs.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#olimex_32u4" caption="Board Support - OLIMEX32U4">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEX32U4"/>
+
+				<device-support value="atmega32u4"/>
+				<build type="define" name="BOARD" value="BOARD_OLIMEX32U4"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/LEDs.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#olimex_isp_mkii" caption="Board Support - OLIMEXISPMK2">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEXISPMK2"/>
+
+				<device-support value="at90usb162"/>
+				<build type="define" name="BOARD" value="BOARD_OLIMEXISPMK2"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#olimex_t32u4" caption="Board Support - OLIMEX_T32U4">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEXT32U4"/>
+
+				<device-support value="atmega32u4"/>
+				<build type="define" name="BOARD" value="BOARD_OLIMEXT32U4"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+				<require idref="lufa.drivers.board.buttons"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#rzusbstick" caption="Board Support - RZUSBSTICK">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_RZUSBSTICK"/>
+
+				<device-support value="at90usb1287"/>
+				<build type="define" name="BOARD" value="BOARD_RZUSBSTICK"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/RZUSBSTICK/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/RZUSBSTICK/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#sparkfun_8u2" caption="Board Support - SPARKFUN8U2">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_SPARKFUN8U2"/>
+
+				<device-support value="atmega8u2"/>
+				<build type="define" name="BOARD" value="BOARD_SPARKFUN8U2"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/SPARKFUN8U2/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#stk525" caption="Board Support - STK525">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_STK525"/>
+
+				<device-support value="at90usb1287"/>
+				<device-support value="at90usb1286"/>
+				<device-support value="at90usb647"/>
+				<device-support value="at90usb646"/>
+				<build type="define" name="BOARD" value="BOARD_STK525"/>
+
+				<require idref="lufa.drivers.misc.at45db321c"/>
+				<require idref="lufa.drivers.peripheral.spi"/>
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.dataflash"/>
+				<require idref="lufa.drivers.board.joystick"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/STK525/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/STK525/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/STK525/Dataflash.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/STK525/Joystick.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/STK525/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#stk526" caption="Board Support - STK526">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_STK526"/>
+
+				<device-support value="at90usb162"/>
+				<device-support value="at90usb82"/>
+				<device-support value="atmega32u2"/>
+				<device-support value="atmega16u2"/>
+				<device-support value="atmega8u2"/>
+				<build type="define" name="BOARD" value="BOARD_STK526"/>
+
+				<require idref="lufa.drivers.misc.at45db642d"/>
+				<require idref="lufa.drivers.peripheral.spi"/>
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.dataflash"/>
+				<require idref="lufa.drivers.board.joystick"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/STK526/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/STK526/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/STK526/Dataflash.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/STK526/Joystick.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/STK526/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#teensy" caption="Board Support - TEENSY">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_TEENSY"/>
+
+				<device-support value="at90usb162"/>
+				<build type="define" name="BOARD" value="BOARD_TEENSY"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#teensy2" caption="Board Support - TEENSY2">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_TEENSY2"/>
+
+				<device-support value="at90usb646"/>
+				<build type="define" name="BOARD" value="BOARD_TEENSY2"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#tul" caption="Board Support - TUL">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_TUL"/>
+
+				<device-support value="atmega32u4"/>
+				<build type="define" name="BOARD" value="BOARD_TUL"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/TUL/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/TUL/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/TUL/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#udip" caption="Board Support - UDIP">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_UDIP"/>
+
+				<device-support value="atmega32u2"/>
+				<build type="define" name="BOARD" value="BOARD_UDIP"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/UDIP/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/UDIP/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/UDIP/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#uno" caption="Board Support - UNO">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_UNO"/>
+
+				<device-support value="atmega8u2"/>
+				<device-support value="atmega16u2"/>
+				<build type="define" name="BOARD" value="BOARD_UNO"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/UNO/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/UNO/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#usb2ax" caption="Board Support - USB2AX">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX"/>
+
+				<device-support value="atmega32u2"/>
+				<build type="define" name="BOARD" value="BOARD_USB2AX"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#usb2ax_v3" caption="Board Support - USB2AX_V3">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX_V3"/>
+
+				<device-support value="atmega32u2"/>
+				<build type="define" name="BOARD" value="BOARD_USB2AX_V3"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#usb2ax_v3_1" caption="Board Support - USB2AX_V31">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX_V31"/>
+
+				<device-support value="atmega32u2"/>
+				<build type="define" name="BOARD" value="BOARD_USB2AX_V31"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#usbfoo" caption="Board Support - USBFOO">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_USBFOO"/>
+
+				<device-support value="atmega162"/>
+				<build type="define" name="BOARD" value="BOARD_USBFOO"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/USBFOO/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USBFOO/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USBFOO/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#usbkey" caption="Board Support - USBKEY">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_USBKEY"/>
+
+				<device-support value="at90usb1287"/>
+				<build type="define" name="BOARD" value="BOARD_USBKEY"/>
+
+				<require idref="lufa.drivers.misc.at45db642d"/>
+				<require idref="lufa.drivers.peripheral.spi"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.dataflash"/>
+				<require idref="lufa.drivers.board.joystick"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Dataflash.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Joystick.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#usbtiny_mkii" caption="Board Support - USBTINYMKII">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_USBTINYMKII"/>
+
+				<device-support value="at90usb162"/>
+				<build type="define" name="BOARD" value="BOARD_USBTINYMKII"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/LEDs.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#xplain_rev1" caption="Board Support - XPLAIN (HW Rev 1)">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_XPLAIN_REV1"/>
+
+				<device-support value="at90usb1287"/>
+
+				<require idref="lufa.drivers.misc.at45db642d"/>
+				<require idref="lufa.drivers.peripheral.spi"/>
+				<require idref="lufa.drivers.board.dataflash"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Dataflash.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_XPLAIN_REV1"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#xplain" caption="Board Support - XPLAIN (HW Rev 2+)">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_XPLAIN"/>
+
+				<device-support value="at90usb1287"/>
+
+				<require idref="lufa.drivers.misc.at45db642d"/>
+				<require idref="lufa.drivers.peripheral.spi"/>
+				<require idref="lufa.drivers.board.dataflash"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Dataflash.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_XPLAIN"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#a3bu_xplained" caption="Board Support - A3BU_XPLAINED">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_A3BU_XPLAINED"/>
+
+				<device-support value="atxmega256a3bu"/>
+
+				<require idref="lufa.drivers.misc.at45db642d"/>
+				<require idref="lufa.drivers.peripheral.usart_spi"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.dataflash"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h"/>
+				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h"/>
+				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_A3BU_XPLAINED"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#b1_xplained" caption="Board Support - B1_XPLAINED">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_B1_XPLAINED"/>
+
+				<device-support value="atxmega128b1"/>
+
+				<require idref="lufa.drivers.misc.at45db642d"/>
+				<require idref="lufa.drivers.peripheral.usart_spi"/>
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.dataflash"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Board.h"/>
+				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h"/>
+				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_B1_XPLAINED"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#evk1100" caption="Board Support - EVK1100">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK1100"/>
+
+				<device-support value="at32uc3a0512"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.joystick"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/UC3/EVK1100/Board.h"/>
+				<build type="header-file" value="Drivers/Board/UC3/EVK1100/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/UC3/EVK1100/Joystick.h"/>
+				<build type="header-file" value="Drivers/Board/UC3/EVK1100/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_EVK1100"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#evk1101" caption="Board Support - EVK1101">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK1101"/>
+
+				<device-support value="at32uc3b0256"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.joystick"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/UC3/EVK1101/Board.h"/>
+				<build type="header-file" value="Drivers/Board/UC3/EVK1101/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/UC3/EVK1101/Joystick.h"/>
+				<build type="header-file" value="Drivers/Board/UC3/EVK1101/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_EVK1101"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#evk1104" caption="Board Support - EVK1104">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK1104"/>
+
+				<device-support value="at32uc3a3256"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/UC3/EVK1104/Board.h"/>
+				<build type="header-file" value="Drivers/Board/UC3/EVK1104/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/UC3/EVK1104/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_EVK1104"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#uc3a3_xplained" caption="Board Support - UC3A3_XPLAINED">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_UC3_A3_XPLAINED"/>
+
+				<device-support value="at32uc3a3256"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/Board.h"/>
+				<build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_UC3A3_XPLAINED"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#stange_isp" caption="Board Support - STANGE_ISP">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_STANGE_ISP"/>
+
+				<device-support value="at90usb162"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_STANGE_ISP"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#c3_xplained" caption="Board Support - C3_XPLAINED">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_C3_XPLAINED"/>
+
+				<device-support value="atxmega384c3"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/Board.h"/>
+				<build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_C3_XPLAINED"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#u2s" caption="Board Support - U2S">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_U2S"/>
+
+				<device-support value="atmega32u2"/>
+
+				<require idref="lufa.drivers.board.buttons"/>
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/U2S/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/U2S/Buttons.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/U2S/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_U2S"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#yun" caption="Board Support - YUN">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_YUN"/>
+
+				<device-support value="atmega32u4"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/YUN/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/YUN/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_YUN"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.board#micro" caption="Board Support - MICRO">
+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICRO"/>
+
+				<device-support value="atmega32u4"/>
+
+				<require idref="lufa.drivers.board.leds"/>
+
+				<build type="header-file" value="Drivers/Board/AVR8/MICRO/Board.h"/>
+				<build type="header-file" value="Drivers/Board/AVR8/MICRO/LEDs.h"/>
+
+				<build type="define" name="BOARD" value="BOARD_MICRO"/>
+			</module>
+		</select-by-config>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_drivers_misc.xml b/LUFA/StudioIntegration/lufa_drivers_misc.xml
index ee72f33db0..4585887742 100644
--- a/LUFA/StudioIntegration/lufa_drivers_misc.xml
+++ b/LUFA/StudioIntegration/lufa_drivers_misc.xml
@@ -1,57 +1,57 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<module type="component" id="lufa.drivers.misc.at45db321c" caption="LUFA AT45DB321C Dataflash Commands">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_AT45DB321C"/>
-
-			<build type="include-path" value=".."/>
-			<build type="header-file" subtype="api" value="Drivers/Misc/AT45DB321C.h"/>
-		</module>
-
-		<module type="component" id="lufa.drivers.misc.at45db642d" caption="LUFA AT45DB642D Dataflash Commands">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_AT45DB321C"/>
-
-			<build type="include-path" value=".."/>
-			<build type="header-file" subtype="api" value="Drivers/Misc/AT45DB642D.h"/>
-		</module>
-
-		<module type="service" id="lufa.drivers.misc.ringbuffer" caption="LUFA Ring Buffer">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_RingBuff"/>
-
-			<build type="include-path" value=".."/>
-			<build type="header-file" subtype="api" value="Drivers/Misc/RingBuffer.h"/>
-		</module>
-
-		<module type="service" id="lufa.drivers.misc.ansi" caption="LUFA ANSI Terminal Commands">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_Terminal"/>
-
-			<build type="include-path" value=".."/>
-			<build type="header-file" subtype="api" value="Drivers/Misc/TerminalCodes.h"/>
-		</module>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<module type="component" id="lufa.drivers.misc.at45db321c" caption="LUFA AT45DB321C Dataflash Commands">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_AT45DB321C"/>
+
+			<build type="include-path" value=".."/>
+			<build type="header-file" subtype="api" value="Drivers/Misc/AT45DB321C.h"/>
+		</module>
+
+		<module type="component" id="lufa.drivers.misc.at45db642d" caption="LUFA AT45DB642D Dataflash Commands">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_AT45DB321C"/>
+
+			<build type="include-path" value=".."/>
+			<build type="header-file" subtype="api" value="Drivers/Misc/AT45DB642D.h"/>
+		</module>
+
+		<module type="service" id="lufa.drivers.misc.ringbuffer" caption="LUFA Ring Buffer">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_RingBuff"/>
+
+			<build type="include-path" value=".."/>
+			<build type="header-file" subtype="api" value="Drivers/Misc/RingBuffer.h"/>
+		</module>
+
+		<module type="service" id="lufa.drivers.misc.ansi" caption="LUFA ANSI Terminal Commands">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_Terminal"/>
+
+			<build type="include-path" value=".."/>
+			<build type="header-file" subtype="api" value="Drivers/Misc/TerminalCodes.h"/>
+		</module>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_drivers_peripheral.xml b/LUFA/StudioIntegration/lufa_drivers_peripheral.xml
index b4eb8747a2..55cf3fa889 100644
--- a/LUFA/StudioIntegration/lufa_drivers_peripheral.xml
+++ b/LUFA/StudioIntegration/lufa_drivers_peripheral.xml
@@ -1,198 +1,198 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<select-by-device id="lufa.drivers.peripheral.usart" caption="LUFA USART Driver">
-			<module type="driver" id="lufa.drivers.peripheral.usart#avr8" caption="LUFA USART Driver - AVR8">
-				<device-support-alias value="lufa_avr8"/>
-
-				<build type="doxygen-entry-point" value="Group_Serial"/>
-
-				<require idref="lufa.common"/>
-				<require idref="lufa.drivers.misc.ansi"/>
-
-				<build type="c-source" value="Drivers/Peripheral/AVR8/Serial_AVR8.c"/>
-				<build type="header-file" value="Drivers/Peripheral/AVR8/Serial_AVR8.h"/>
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.peripheral.usart#xmega" caption="LUFA USART Driver - AVR8">
-				<device-support-alias value="lufa_xmega"/>
-
-				<build type="doxygen-entry-point" value="Group_Serial"/>
-
-				<require idref="lufa.common"/>
-				<require idref="lufa.drivers.misc.ansi"/>
-
-				<build type="c-source" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.c"/>
-				<build type="header-file" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.h"/>
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.peripheral.usart#uc3" caption="LUFA USART Driver - UC3">
-				<device-support-alias value="lufa_uc3"/>
-
-				<build type="doxygen-entry-point" value="Group_Serial"/>
-
-				<require idref="lufa.common"/>
-				<require idref="lufa.drivers.misc.ansi"/>
-
-				<info type="gui-flag" value="hidden"/>
-			</module>
-		</select-by-device>
-
-		<select-by-device id="lufa.drivers.peripheral.spi" caption="LUFA SPI Driver">
-			<module type="driver" id="lufa.drivers.peripheral.spi#avr8" caption="LUFA SPI Driver - AVR8">
-				<device-support-alias value="lufa_avr8"/>
-
-				<build type="doxygen-entry-point" value="Group_SPI"/>
-
-				<require idref="lufa.common"/>
-
-				<build type="header-file" value="Drivers/Peripheral/AVR8/SPI_AVR8.h"/>
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.peripheral.spi#xmega" caption="LUFA SPI Driver - XMEGA">
-				<device-support-alias value="lufa_xmega"/>
-
-				<build type="doxygen-entry-point" value="Group_SPI"/>
-
-				<require idref="lufa.common"/>
-
-				<build type="header-file" value="Drivers/Peripheral/XMEGA/SPI_XMEGA.h"/>
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.peripheral.spi#uc3" caption="LUFA SPI Driver - UC3">
-				<device-support-alias value="lufa_uc3"/>
-
-				<build type="doxygen-entry-point" value="Group_SPI"/>
-
-				<require idref="lufa.common"/>
-
-				<info type="gui-flag" value="hidden"/>
-			</module>
-		</select-by-device>
-
-		<select-by-device id="lufa.drivers.peripheral.usart_spi" caption="LUFA USART SPI Driver">
-			<module type="driver" id="lufa.drivers.peripheral.usart_spi#avr8" caption="LUFA USART SPI Driver - AVR8">
-				<device-support-alias value="lufa_avr8"/>
-
-				<build type="doxygen-entry-point" value="Group_SerialSPI"/>
-
-				<require idref="lufa.common"/>
-
-				<build type="header-file" value="Drivers/Peripheral/AVR8/SerialSPI_AVR8.h"/>
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api"  value="Drivers/Peripheral/SerialSPI.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.peripheral.usart_spi#xmega" caption="LUFA USART SPI Driver - XMEGA">
-				<device-support-alias value="lufa_xmega"/>
-
-				<build type="doxygen-entry-point" value="Group_SerialSPI"/>
-
-				<require idref="lufa.common"/>
-
-				<build type="header-file" value="Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h"/>
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api" value="Drivers/Peripheral/SerialSPI.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.peripheral.usart_spi#uc3" caption="LUFA USART SPI Driver - UC3">
-				<device-support-alias value="lufa_uc3"/>
-
-				<build type="doxygen-entry-point" value="Group_SerialSPI"/>
-
-				<require idref="lufa.common"/>
-
-				<info type="gui-flag" value="hidden"/>
-			</module>
-		</select-by-device>
-
-		<select-by-device id="lufa.drivers.peripheral.twi" caption="LUFA TWI Master Driver">
-			<module type="driver" id="lufa.drivers.peripheral.twi#avr8" caption="LUFA TWI Master Driver - AVR8">
-				<device-support-alias value="lufa_avr8"/>
-
-				<build type="doxygen-entry-point" value="Group_TWI"/>
-
-				<require idref="lufa.common"/>
-
-				<build type="c-source" value="Drivers/Peripheral/AVR8/TWI_AVR8.c"/>
-				<build type="header-file" value="Drivers/Peripheral/AVR8/TWI_AVR8.h"/>
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.peripheral.twi#xmega" caption="LUFA TWI Master Driver - XMEGA">
-				<device-support-alias value="lufa_xmega"/>
-
-				<build type="doxygen-entry-point" value="Group_TWI"/>
-
-				<require idref="lufa.common"/>
-
-				<build type="c-source" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.c"/>
-				<build type="header-file" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.h"/>
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.peripheral.twi#uc3" caption="LUFA TWI Master Driver - UC3">
-				<device-support-alias value="lufa_uc3"/>
-
-				<build type="doxygen-entry-point" value="Group_TWI"/>
-
-				<require idref="lufa.common"/>
-
-				<info type="gui-flag" value="hidden"/>
-			</module>
-		</select-by-device>
-
-		<select-by-device id="lufa.drivers.peripheral.adc" caption="LUFA ADC Driver">
-			<module type="driver" id="lufa.drivers.peripheral.adc#avr8" caption="LUFA ADC Driver - AVR8">
-				<device-support-alias value="lufa_avr8"/>
-
-				<build type="doxygen-entry-point" value="Group_ADC"/>
-
-				<require idref="lufa.common"/>
-
-				<build type="header-file" value="Drivers/Peripheral/AVR8/ADC_AVR8.h"/>
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api" value="Drivers/Peripheral/ADC.h"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.peripheral.adc#xmega" caption="LUFA ADC Driver - XMEGA">
-				<device-support-alias value="lufa_xmega"/>
-
-				<build type="doxygen-entry-point" value="Group_ADC"/>
-
-				<require idref="lufa.common"/>
-
-				<info type="gui-flag" value="hidden"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.peripheral.adc#uc3" caption="LUFA ADC Driver - UC3">
-				<device-support-alias value="lufa_uc3"/>
-
-				<build type="doxygen-entry-point" value="Group_ADC"/>
-
-				<require idref="lufa.common"/>
-
-				<info type="gui-flag" value="hidden"/>
-			</module>
-		</select-by-device>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-device id="lufa.drivers.peripheral.usart" caption="LUFA USART Driver">
+			<module type="driver" id="lufa.drivers.peripheral.usart#avr8" caption="LUFA USART Driver - AVR8">
+				<device-support-alias value="lufa_avr8"/>
+
+				<build type="doxygen-entry-point" value="Group_Serial"/>
+
+				<require idref="lufa.common"/>
+				<require idref="lufa.drivers.misc.ansi"/>
+
+				<build type="c-source" value="Drivers/Peripheral/AVR8/Serial_AVR8.c"/>
+				<build type="header-file" value="Drivers/Peripheral/AVR8/Serial_AVR8.h"/>
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.peripheral.usart#xmega" caption="LUFA USART Driver - AVR8">
+				<device-support-alias value="lufa_xmega"/>
+
+				<build type="doxygen-entry-point" value="Group_Serial"/>
+
+				<require idref="lufa.common"/>
+				<require idref="lufa.drivers.misc.ansi"/>
+
+				<build type="c-source" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.c"/>
+				<build type="header-file" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.h"/>
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.peripheral.usart#uc3" caption="LUFA USART Driver - UC3">
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="doxygen-entry-point" value="Group_Serial"/>
+
+				<require idref="lufa.common"/>
+				<require idref="lufa.drivers.misc.ansi"/>
+
+				<info type="gui-flag" value="hidden"/>
+			</module>
+		</select-by-device>
+
+		<select-by-device id="lufa.drivers.peripheral.spi" caption="LUFA SPI Driver">
+			<module type="driver" id="lufa.drivers.peripheral.spi#avr8" caption="LUFA SPI Driver - AVR8">
+				<device-support-alias value="lufa_avr8"/>
+
+				<build type="doxygen-entry-point" value="Group_SPI"/>
+
+				<require idref="lufa.common"/>
+
+				<build type="header-file" value="Drivers/Peripheral/AVR8/SPI_AVR8.h"/>
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.peripheral.spi#xmega" caption="LUFA SPI Driver - XMEGA">
+				<device-support-alias value="lufa_xmega"/>
+
+				<build type="doxygen-entry-point" value="Group_SPI"/>
+
+				<require idref="lufa.common"/>
+
+				<build type="header-file" value="Drivers/Peripheral/XMEGA/SPI_XMEGA.h"/>
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.peripheral.spi#uc3" caption="LUFA SPI Driver - UC3">
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="doxygen-entry-point" value="Group_SPI"/>
+
+				<require idref="lufa.common"/>
+
+				<info type="gui-flag" value="hidden"/>
+			</module>
+		</select-by-device>
+
+		<select-by-device id="lufa.drivers.peripheral.usart_spi" caption="LUFA USART SPI Driver">
+			<module type="driver" id="lufa.drivers.peripheral.usart_spi#avr8" caption="LUFA USART SPI Driver - AVR8">
+				<device-support-alias value="lufa_avr8"/>
+
+				<build type="doxygen-entry-point" value="Group_SerialSPI"/>
+
+				<require idref="lufa.common"/>
+
+				<build type="header-file" value="Drivers/Peripheral/AVR8/SerialSPI_AVR8.h"/>
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api"  value="Drivers/Peripheral/SerialSPI.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.peripheral.usart_spi#xmega" caption="LUFA USART SPI Driver - XMEGA">
+				<device-support-alias value="lufa_xmega"/>
+
+				<build type="doxygen-entry-point" value="Group_SerialSPI"/>
+
+				<require idref="lufa.common"/>
+
+				<build type="header-file" value="Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h"/>
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api" value="Drivers/Peripheral/SerialSPI.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.peripheral.usart_spi#uc3" caption="LUFA USART SPI Driver - UC3">
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="doxygen-entry-point" value="Group_SerialSPI"/>
+
+				<require idref="lufa.common"/>
+
+				<info type="gui-flag" value="hidden"/>
+			</module>
+		</select-by-device>
+
+		<select-by-device id="lufa.drivers.peripheral.twi" caption="LUFA TWI Master Driver">
+			<module type="driver" id="lufa.drivers.peripheral.twi#avr8" caption="LUFA TWI Master Driver - AVR8">
+				<device-support-alias value="lufa_avr8"/>
+
+				<build type="doxygen-entry-point" value="Group_TWI"/>
+
+				<require idref="lufa.common"/>
+
+				<build type="c-source" value="Drivers/Peripheral/AVR8/TWI_AVR8.c"/>
+				<build type="header-file" value="Drivers/Peripheral/AVR8/TWI_AVR8.h"/>
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.peripheral.twi#xmega" caption="LUFA TWI Master Driver - XMEGA">
+				<device-support-alias value="lufa_xmega"/>
+
+				<build type="doxygen-entry-point" value="Group_TWI"/>
+
+				<require idref="lufa.common"/>
+
+				<build type="c-source" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.c"/>
+				<build type="header-file" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.h"/>
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.peripheral.twi#uc3" caption="LUFA TWI Master Driver - UC3">
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="doxygen-entry-point" value="Group_TWI"/>
+
+				<require idref="lufa.common"/>
+
+				<info type="gui-flag" value="hidden"/>
+			</module>
+		</select-by-device>
+
+		<select-by-device id="lufa.drivers.peripheral.adc" caption="LUFA ADC Driver">
+			<module type="driver" id="lufa.drivers.peripheral.adc#avr8" caption="LUFA ADC Driver - AVR8">
+				<device-support-alias value="lufa_avr8"/>
+
+				<build type="doxygen-entry-point" value="Group_ADC"/>
+
+				<require idref="lufa.common"/>
+
+				<build type="header-file" value="Drivers/Peripheral/AVR8/ADC_AVR8.h"/>
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api" value="Drivers/Peripheral/ADC.h"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.peripheral.adc#xmega" caption="LUFA ADC Driver - XMEGA">
+				<device-support-alias value="lufa_xmega"/>
+
+				<build type="doxygen-entry-point" value="Group_ADC"/>
+
+				<require idref="lufa.common"/>
+
+				<info type="gui-flag" value="hidden"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.peripheral.adc#uc3" caption="LUFA ADC Driver - UC3">
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="doxygen-entry-point" value="Group_ADC"/>
+
+				<require idref="lufa.common"/>
+
+				<info type="gui-flag" value="hidden"/>
+			</module>
+		</select-by-device>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_drivers_usb.xml b/LUFA/StudioIntegration/lufa_drivers_usb.xml
index f07aad672b..15c65bf861 100644
--- a/LUFA/StudioIntegration/lufa_drivers_usb.xml
+++ b/LUFA/StudioIntegration/lufa_drivers_usb.xml
@@ -1,32 +1,32 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<module type="driver" id="lufa.drivers.usb" caption="LUFA USB Driver">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_USB"/>
-
-			<build type="define" name="USE_LUFA_CONFIG_HEADER" value=""/>
-			<build type="module-config" subtype="path" value="CodeTemplates"/>
-			<build type="module-config" subtype="required-header-file" value="LUFAConfig.h"/>
-
-			<build type="include-path" value=".."/>
-			<build type="header-file" subtype="api" value="Drivers/USB/USB.h"/>
-
-			<require idref="lufa.common"/>
-			<require idref="lufa.drivers.usb.class"/>
-			<require idref="lufa.drivers.usb.core"/>
-		</module>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<module type="driver" id="lufa.drivers.usb" caption="LUFA USB Driver">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_USB"/>
+
+			<build type="define" name="USE_LUFA_CONFIG_HEADER" value=""/>
+			<build type="module-config" subtype="path" value="CodeTemplates"/>
+			<build type="module-config" subtype="required-header-file" value="LUFAConfig.h"/>
+
+			<build type="include-path" value=".."/>
+			<build type="header-file" subtype="api" value="Drivers/USB/USB.h"/>
+
+			<require idref="lufa.common"/>
+			<require idref="lufa.drivers.usb.class"/>
+			<require idref="lufa.drivers.usb.core"/>
+		</module>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_drivers_usb_class.xml b/LUFA/StudioIntegration/lufa_drivers_usb_class.xml
index 123d60643b..5d07af05ea 100644
--- a/LUFA/StudioIntegration/lufa_drivers_usb_class.xml
+++ b/LUFA/StudioIntegration/lufa_drivers_usb_class.xml
@@ -1,32 +1,32 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<module type="service" id="lufa.drivers.usb.class" caption="LUFA USB Class Drivers">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<info type="gui-flag" value="hidden"/>
-			<build type="doxygen-entry-point" value="Group_USBClassDrivers"/>
-
-			<require idref="lufa.drivers.usb.class.android"/>
-			<require idref="lufa.drivers.usb.class.audio"/>
-			<require idref="lufa.drivers.usb.class.cdc"/>
-			<require idref="lufa.drivers.usb.class.hid"/>
-			<require idref="lufa.drivers.usb.class.ms"/>
-			<require idref="lufa.drivers.usb.class.midi"/>
-			<require idref="lufa.drivers.usb.class.printer"/>
-			<require idref="lufa.drivers.usb.class.rndis"/>
-			<require idref="lufa.drivers.usb.class.si"/>
-		</module>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<module type="service" id="lufa.drivers.usb.class" caption="LUFA USB Class Drivers">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<info type="gui-flag" value="hidden"/>
+			<build type="doxygen-entry-point" value="Group_USBClassDrivers"/>
+
+			<require idref="lufa.drivers.usb.class.android"/>
+			<require idref="lufa.drivers.usb.class.audio"/>
+			<require idref="lufa.drivers.usb.class.cdc"/>
+			<require idref="lufa.drivers.usb.class.hid"/>
+			<require idref="lufa.drivers.usb.class.ms"/>
+			<require idref="lufa.drivers.usb.class.midi"/>
+			<require idref="lufa.drivers.usb.class.printer"/>
+			<require idref="lufa.drivers.usb.class.rndis"/>
+			<require idref="lufa.drivers.usb.class.si"/>
+		</module>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_drivers_usb_core.xml b/LUFA/StudioIntegration/lufa_drivers_usb_core.xml
index 095bcd2798..bfcd0f1e8d 100644
--- a/LUFA/StudioIntegration/lufa_drivers_usb_core.xml
+++ b/LUFA/StudioIntegration/lufa_drivers_usb_core.xml
@@ -1,85 +1,85 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<module type="driver" id="lufa.drivers.usb.core.common" caption="LUFA USB Core Driver - Common">
-			<device-support-alias value="lufa_avr8"/>
-			<device-support-alias value="lufa_xmega"/>
-			<device-support-alias value="lufa_uc3"/>
-
-			<build type="doxygen-entry-point" value="Group_USBManagement"/>
-
-			<info type="gui-flag" value="hidden"/>
-
-			<build type="header-file" value="Drivers/USB/Core/Device.h"/>
-			<build type="header-file" value="Drivers/USB/Core/Endpoint.h"/>
-			<build type="header-file" value="Drivers/USB/Core/Host.h"/>
-			<build type="header-file" value="Drivers/USB/Core/Pipe.h"/>
-			<build type="header-file" value="Drivers/USB/Core/OTG.h"/>
-			<build type="header-file" value="Drivers/USB/Core/USBController.h"/>
-			<build type="header-file" value="Drivers/USB/Core/USBInterrupt.h"/>
-			<build type="header-file" value="Drivers/USB/Core/EndpointStream.h"/>
-			<build type="header-file" value="Drivers/USB/Core/PipeStream.h"/>
-	        <build type="c-source"    value="Drivers/USB/Core/ConfigDescriptors.c"/>
-			<build type="header-file" value="Drivers/USB/Core/ConfigDescriptors.h"/>
-	        <build type="c-source"    value="Drivers/USB/Core/DeviceStandardReq.c"/>
-			<build type="header-file" value="Drivers/USB/Core/DeviceStandardReq.h"/>
-	        <build type="c-source"    value="Drivers/USB/Core/Events.c"/>
-			<build type="header-file" value="Drivers/USB/Core/Events.h"/>
-	        <build type="c-source"    value="Drivers/USB/Core/HostStandardReq.c"/>
-			<build type="header-file" value="Drivers/USB/Core/HostStandardReq.h"/>
-	        <build type="c-source"    value="Drivers/USB/Core/USBTask.c"/>
-			<build type="header-file" value="Drivers/USB/Core/USBTask.h"/>
-			<build type="header-file" value="Drivers/USB/Core/USBMode.h"/>
-			<build type="header-file" value="Drivers/USB/Core/StdDescriptors.h"/>
-			<build type="header-file" value="Drivers/USB/Core/StdRequestType.h"/>
-
-	        <build type="c-source"    value="Drivers/USB/Class/Common/HIDParser.c"/>
-	        <build type="header-file" value="Drivers/USB/Class/Common/HIDParser.h"/>
-	        <build type="header-file" value="Drivers/USB/Class/Common/HIDReportData.h"/>
-	    </module>
-
-		<select-by-device id="lufa.drivers.usb.core" caption="LUFA USB Core Driver">
-			<module type="driver" id="lufa.drivers.usb.core#avr8" caption="LUFA USB Core Driver - AVR8">
-				<device-support-alias value="lufa_avr8"/>
-
-				<info type="gui-flag" value="hidden"/>
-
-				<build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>
-
-				<require idref="lufa.drivers.usb.core.common"/>
-				<require idref="lufa.drivers.usb.core.avr8"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.usb.core#xmega" caption="LUFA USB Core Driver - XMEGA">
-				<device-support-alias value="lufa_xmega"/>
-
-				<info type="gui-flag" value="hidden"/>
-
-				<build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>
-
-				<require idref="lufa.drivers.usb.core.common"/>
-				<require idref="lufa.drivers.usb.core.xmega"/>
-			</module>
-
-			<module type="driver" id="lufa.drivers.usb.core#uc3" caption="LUFA USB Core Driver - UC3">
-				<device-support-alias value="lufa_uc3"/>
-
-				<info type="gui-flag" value="hidden"/>
-
-				<build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>
-
-				<require idref="lufa.drivers.usb.core.common"/>
-				<require idref="lufa.drivers.usb.core.uc3"/>
-			</module>
-		</select-by-device>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<module type="driver" id="lufa.drivers.usb.core.common" caption="LUFA USB Core Driver - Common">
+			<device-support-alias value="lufa_avr8"/>
+			<device-support-alias value="lufa_xmega"/>
+			<device-support-alias value="lufa_uc3"/>
+
+			<build type="doxygen-entry-point" value="Group_USBManagement"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<build type="header-file" value="Drivers/USB/Core/Device.h"/>
+			<build type="header-file" value="Drivers/USB/Core/Endpoint.h"/>
+			<build type="header-file" value="Drivers/USB/Core/Host.h"/>
+			<build type="header-file" value="Drivers/USB/Core/Pipe.h"/>
+			<build type="header-file" value="Drivers/USB/Core/OTG.h"/>
+			<build type="header-file" value="Drivers/USB/Core/USBController.h"/>
+			<build type="header-file" value="Drivers/USB/Core/USBInterrupt.h"/>
+			<build type="header-file" value="Drivers/USB/Core/EndpointStream.h"/>
+			<build type="header-file" value="Drivers/USB/Core/PipeStream.h"/>
+	        <build type="c-source"    value="Drivers/USB/Core/ConfigDescriptors.c"/>
+			<build type="header-file" value="Drivers/USB/Core/ConfigDescriptors.h"/>
+	        <build type="c-source"    value="Drivers/USB/Core/DeviceStandardReq.c"/>
+			<build type="header-file" value="Drivers/USB/Core/DeviceStandardReq.h"/>
+	        <build type="c-source"    value="Drivers/USB/Core/Events.c"/>
+			<build type="header-file" value="Drivers/USB/Core/Events.h"/>
+	        <build type="c-source"    value="Drivers/USB/Core/HostStandardReq.c"/>
+			<build type="header-file" value="Drivers/USB/Core/HostStandardReq.h"/>
+	        <build type="c-source"    value="Drivers/USB/Core/USBTask.c"/>
+			<build type="header-file" value="Drivers/USB/Core/USBTask.h"/>
+			<build type="header-file" value="Drivers/USB/Core/USBMode.h"/>
+			<build type="header-file" value="Drivers/USB/Core/StdDescriptors.h"/>
+			<build type="header-file" value="Drivers/USB/Core/StdRequestType.h"/>
+
+	        <build type="c-source"    value="Drivers/USB/Class/Common/HIDParser.c"/>
+	        <build type="header-file" value="Drivers/USB/Class/Common/HIDParser.h"/>
+	        <build type="header-file" value="Drivers/USB/Class/Common/HIDReportData.h"/>
+	    </module>
+
+		<select-by-device id="lufa.drivers.usb.core" caption="LUFA USB Core Driver">
+			<module type="driver" id="lufa.drivers.usb.core#avr8" caption="LUFA USB Core Driver - AVR8">
+				<device-support-alias value="lufa_avr8"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>
+
+				<require idref="lufa.drivers.usb.core.common"/>
+				<require idref="lufa.drivers.usb.core.avr8"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.usb.core#xmega" caption="LUFA USB Core Driver - XMEGA">
+				<device-support-alias value="lufa_xmega"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>
+
+				<require idref="lufa.drivers.usb.core.common"/>
+				<require idref="lufa.drivers.usb.core.xmega"/>
+			</module>
+
+			<module type="driver" id="lufa.drivers.usb.core#uc3" caption="LUFA USB Core Driver - UC3">
+				<device-support-alias value="lufa_uc3"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>
+
+				<require idref="lufa.drivers.usb.core.common"/>
+				<require idref="lufa.drivers.usb.core.uc3"/>
+			</module>
+		</select-by-device>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml b/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml
index b2792cb2f7..51493b460a 100644
--- a/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml
+++ b/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml
@@ -1,43 +1,43 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<module type="driver" id="lufa.drivers.usb.core.avr8" caption="LUFA USB Core Driver for AVR8">
-			<device-support-alias value="lufa_avr8"/>
-
-			<info type="gui-flag" value="hidden"/>
-
-			<build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>
-
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/Device_AVR8.c"/>
-			<build type="header-file" value="Drivers/USB/Core/AVR8/Device_AVR8.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/Endpoint_AVR8.c"/>
-			<build type="header-file" value="Drivers/USB/Core/AVR8/Endpoint_AVR8.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/Host_AVR8.c"/>
-			<build type="header-file" value="Drivers/USB/Core/AVR8/Host_AVR8.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/Pipe_AVR8.c"/>
-			<build type="header-file" value="Drivers/USB/Core/AVR8/Pipe_AVR8.h"/>
-			<build type="header-file" value="Drivers/USB/Core/AVR8/OTG_AVR8.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/USBController_AVR8.c"/>
-			<build type="header-file" value="Drivers/USB/Core/AVR8/USBController_AVR8.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c"/>
-			<build type="header-file" value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.c"/>
-			<build type="header-file" value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/AVR8/PipeStream_AVR8.c"/>
-			<build type="header-file" value="Drivers/USB/Core/AVR8/PipeStream_AVR8.h"/>
-		</module>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<module type="driver" id="lufa.drivers.usb.core.avr8" caption="LUFA USB Core Driver for AVR8">
+			<device-support-alias value="lufa_avr8"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>
+
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Device_AVR8.c"/>
+			<build type="header-file" value="Drivers/USB/Core/AVR8/Device_AVR8.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Endpoint_AVR8.c"/>
+			<build type="header-file" value="Drivers/USB/Core/AVR8/Endpoint_AVR8.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Host_AVR8.c"/>
+			<build type="header-file" value="Drivers/USB/Core/AVR8/Host_AVR8.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Pipe_AVR8.c"/>
+			<build type="header-file" value="Drivers/USB/Core/AVR8/Pipe_AVR8.h"/>
+			<build type="header-file" value="Drivers/USB/Core/AVR8/OTG_AVR8.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/USBController_AVR8.c"/>
+			<build type="header-file" value="Drivers/USB/Core/AVR8/USBController_AVR8.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c"/>
+			<build type="header-file" value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.c"/>
+			<build type="header-file" value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/AVR8/PipeStream_AVR8.c"/>
+			<build type="header-file" value="Drivers/USB/Core/AVR8/PipeStream_AVR8.h"/>
+		</module>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml b/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml
index d815fca449..055ebde23f 100644
--- a/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml
+++ b/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml
@@ -1,42 +1,42 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<module type="driver" id="lufa.drivers.usb.core.uc3" caption="LUFA USB Core Driver for UC3">
-			<device-support-alias value="lufa_uc3"/>
-
-			<info type="gui-flag" value="hidden"/>
-
-			<build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>
-
-			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/UC3/Device_UC3.c"/>
-			<build type="header-file" value="Drivers/USB/Core/UC3/Device_UC3.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/UC3/Endpoint_UC3.c"/>
-			<build type="header-file" value="Drivers/USB/Core/UC3/Endpoint_UC3.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/UC3/Host_UC3.c"/>
-			<build type="header-file" value="Drivers/USB/Core/UC3/Host_UC3.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/UC3/Pipe_UC3.c"/>
-			<build type="header-file" value="Drivers/USB/Core/UC3/Pipe_UC3.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/UC3/USBController_UC3.c"/>
-			<build type="header-file" value="Drivers/USB/Core/UC3/USBController_UC3.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/UC3/USBInterrupt_UC3.c"/>
-			<build type="header-file" value="Drivers/USB/Core/UC3/USBInterrupt_UC3.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/UC3/EndpointStream_UC3.c"/>
-			<build type="header-file" value="Drivers/USB/Core/UC3/EndpointStream_UC3.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/UC3/PipeStream_UC3.c"/>
-			<build type="header-file" value="Drivers/USB/Core/UC3/PipeStream_UC3.h"/>
-		</module>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<module type="driver" id="lufa.drivers.usb.core.uc3" caption="LUFA USB Core Driver for UC3">
+			<device-support-alias value="lufa_uc3"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>
+
+			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/UC3/Device_UC3.c"/>
+			<build type="header-file" value="Drivers/USB/Core/UC3/Device_UC3.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/UC3/Endpoint_UC3.c"/>
+			<build type="header-file" value="Drivers/USB/Core/UC3/Endpoint_UC3.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/UC3/Host_UC3.c"/>
+			<build type="header-file" value="Drivers/USB/Core/UC3/Host_UC3.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/UC3/Pipe_UC3.c"/>
+			<build type="header-file" value="Drivers/USB/Core/UC3/Pipe_UC3.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/UC3/USBController_UC3.c"/>
+			<build type="header-file" value="Drivers/USB/Core/UC3/USBController_UC3.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/UC3/USBInterrupt_UC3.c"/>
+			<build type="header-file" value="Drivers/USB/Core/UC3/USBInterrupt_UC3.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/UC3/EndpointStream_UC3.c"/>
+			<build type="header-file" value="Drivers/USB/Core/UC3/EndpointStream_UC3.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/UC3/PipeStream_UC3.c"/>
+			<build type="header-file" value="Drivers/USB/Core/UC3/PipeStream_UC3.h"/>
+		</module>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml b/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml
index 364a0f3ed5..085fe85e82 100644
--- a/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml
+++ b/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml
@@ -1,36 +1,36 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<module type="driver" id="lufa.drivers.usb.core.xmega" caption="LUFA USB Core Driver for XMEGA">
-			<device-support-alias value="lufa_xmega"/>
-
-			<info type="gui-flag" value="hidden"/>
-
-			<build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>
-
-			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Device_XMEGA.c"/>
-			<build type="header-file" value="Drivers/USB/Core/XMEGA/Device_XMEGA.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c"/>
-			<build type="header-file" value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Pipe_XMEGA.c"/>
-			<build type="c-source"    value="Drivers/USB/Core/XMEGA/USBController_XMEGA.c"/>
-			<build type="header-file" value="Drivers/USB/Core/XMEGA/USBController_XMEGA.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c"/>
-			<build type="header-file" value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h"/>
-			<build type="c-source"    value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c"/>
-			<build type="header-file" value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h"/>
-		</module>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<module type="driver" id="lufa.drivers.usb.core.xmega" caption="LUFA USB Core Driver for XMEGA">
+			<device-support-alias value="lufa_xmega"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>
+
+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Device_XMEGA.c"/>
+			<build type="header-file" value="Drivers/USB/Core/XMEGA/Device_XMEGA.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c"/>
+			<build type="header-file" value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Pipe_XMEGA.c"/>
+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/USBController_XMEGA.c"/>
+			<build type="header-file" value="Drivers/USB/Core/XMEGA/USBController_XMEGA.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c"/>
+			<build type="header-file" value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h"/>
+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c"/>
+			<build type="header-file" value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h"/>
+		</module>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_platform.xml b/LUFA/StudioIntegration/lufa_platform.xml
index e20b718fb0..d33f435c6a 100644
--- a/LUFA/StudioIntegration/lufa_platform.xml
+++ b/LUFA/StudioIntegration/lufa_platform.xml
@@ -1,60 +1,60 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<select-by-device id="lufa.platform" caption="LUFA Platform Specific Support">
-			<module type="service" id="lufa.platform#avr8" caption="LUFA Platform Specific Support - AVR8">
-				<device-support-alias value="lufa_avr8"/>
-
-				<build type="define" name="ARCH" value="ARCH_AVR8"/>
-
-				<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
-
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api" value="Platform/Platform.h"/>
-
-				<require idref="lufa.common"/>
-			</module>
-
-			<module type="service" id="lufa.platform#xmega" caption="LUFA Platform Specific Support - XMEGA">
-				<device-support-alias value="lufa_xmega"/>
-
-				<build type="define" name="ARCH" value="ARCH_XMEGA"/>
-
-				<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
-
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api" value="Platform/Platform.h"/>
-
-				<build type="distribute" value="Platform/XMEGA/XMEGAExperimentalInfo.txt" subtype="license"/>
-
-				<require idref="lufa.platform.xmega"/>
-				<require idref="lufa.common"/>
-			</module>
-
-			<module type="service" id="lufa.platform#uc3" caption="LUFA Platform Specific Support - UC3">
-				<device-support-alias value="lufa_uc3"/>
-
-				<build type="define" name="ARCH" value="ARCH_UC3"/>
-
-				<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
-
-				<build type="include-path" value=".."/>
-				<build type="header-file" subtype="api" value="Platform/Platform.h"/>
-
-				<build type="distribute" value="Platform/UC3/UC3ExperimentalInfo.txt" subtype="license"/>
-
-				<require idref="lufa.platform.uc3"/>
-				<require idref="lufa.common"/>
-			</module>
-		</select-by-device>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-device id="lufa.platform" caption="LUFA Platform Specific Support">
+			<module type="service" id="lufa.platform#avr8" caption="LUFA Platform Specific Support - AVR8">
+				<device-support-alias value="lufa_avr8"/>
+
+				<build type="define" name="ARCH" value="ARCH_AVR8"/>
+
+				<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
+
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api" value="Platform/Platform.h"/>
+
+				<require idref="lufa.common"/>
+			</module>
+
+			<module type="service" id="lufa.platform#xmega" caption="LUFA Platform Specific Support - XMEGA">
+				<device-support-alias value="lufa_xmega"/>
+
+				<build type="define" name="ARCH" value="ARCH_XMEGA"/>
+
+				<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
+
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api" value="Platform/Platform.h"/>
+
+				<build type="distribute" value="Platform/XMEGA/XMEGAExperimentalInfo.txt" subtype="license"/>
+
+				<require idref="lufa.platform.xmega"/>
+				<require idref="lufa.common"/>
+			</module>
+
+			<module type="service" id="lufa.platform#uc3" caption="LUFA Platform Specific Support - UC3">
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="define" name="ARCH" value="ARCH_UC3"/>
+
+				<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
+
+				<build type="include-path" value=".."/>
+				<build type="header-file" subtype="api" value="Platform/Platform.h"/>
+
+				<build type="distribute" value="Platform/UC3/UC3ExperimentalInfo.txt" subtype="license"/>
+
+				<require idref="lufa.platform.uc3"/>
+				<require idref="lufa.common"/>
+			</module>
+		</select-by-device>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_platform_uc3.xml b/LUFA/StudioIntegration/lufa_platform_uc3.xml
index 8c26d2304f..3e875699ae 100644
--- a/LUFA/StudioIntegration/lufa_platform_uc3.xml
+++ b/LUFA/StudioIntegration/lufa_platform_uc3.xml
@@ -1,26 +1,26 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<module type="driver" id="lufa.platform.uc3" caption="LUFA UC3 Platform Drivers">
-			<device-support-alias value="lufa_uc3"/>
-
-			<info type="gui-flag" value="hidden"/>
-
-			<build type="doxygen-entry-point" value="Group_PlatformDrivers_UC3"/>
-
-			<build type="header-file" value="Platform/UC3/ClockManagement.h"/>
-			<build type="header-file" value="Platform/UC3/InterruptManagement.h"/>
-			<build type="c-source" value="Platform/UC3/InterruptManagement.c"/>
-			<build type="asm-source" value="Platform/UC3/Exception.S"/>
-		</module>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<module type="driver" id="lufa.platform.uc3" caption="LUFA UC3 Platform Drivers">
+			<device-support-alias value="lufa_uc3"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<build type="doxygen-entry-point" value="Group_PlatformDrivers_UC3"/>
+
+			<build type="header-file" value="Platform/UC3/ClockManagement.h"/>
+			<build type="header-file" value="Platform/UC3/InterruptManagement.h"/>
+			<build type="c-source" value="Platform/UC3/InterruptManagement.c"/>
+			<build type="asm-source" value="Platform/UC3/Exception.S"/>
+		</module>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_platform_xmega.xml b/LUFA/StudioIntegration/lufa_platform_xmega.xml
index 299c859662..2704bcf005 100644
--- a/LUFA/StudioIntegration/lufa_platform_xmega.xml
+++ b/LUFA/StudioIntegration/lufa_platform_xmega.xml
@@ -1,23 +1,23 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf xmlversion="1.0">
-		<module type="driver" id="lufa.platform.xmega" caption="LUFA XMEGA Platform Drivers">
-			<device-support-alias value="lufa_xmega"/>
-
-			<info type="gui-flag" value="hidden"/>
-
-			<build type="doxygen-entry-point" value="Group_PlatformDrivers_XMEGA"/>
-
-			<build type="header-file" value="Platform/XMEGA/ClockManagement.h"/>
-		</module>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf xmlversion="1.0">
+		<module type="driver" id="lufa.platform.xmega" caption="LUFA XMEGA Platform Drivers">
+			<device-support-alias value="lufa_xmega"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<build type="doxygen-entry-point" value="Group_PlatformDrivers_XMEGA"/>
+
+			<build type="header-file" value="Platform/XMEGA/ClockManagement.h"/>
+		</module>
+	</asf>
+</lufa>
diff --git a/LUFA/StudioIntegration/lufa_toolchain.xml b/LUFA/StudioIntegration/lufa_toolchain.xml
index 66b416e28b..b1f4062d55 100644
--- a/LUFA/StudioIntegration/lufa_toolchain.xml
+++ b/LUFA/StudioIntegration/lufa_toolchain.xml
@@ -1,45 +1,45 @@
-<!--
-             LUFA Library
-     Copyright (C) Dean Camera, 2017.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
-	<asf>
-		<select-by-device id="common.utils.toolchain_config" caption="Toolchain configuration defaults">
-			<module type="build-specific" id="common.utils.toolchain_config#avr" caption="Toolchain configuration defaults for 8-bit AVR">
-				<info type="gui-flag" value="hidden"/>
-				<device-support value="avr"/>
-
-				<toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avrgcc"/>
-				<toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avrgcc"/>
-				<toolchain-config name="avrgcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avrgcc"/>
-				<toolchain-config name="avrgcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avrgcc"/>
-				<toolchain-config name="avrgcc.compiler.warnings.AllWarnings" value="True" toolchain="avrgcc"/>
-				<toolchain-config name="avrgcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -fno-jump-tables" toolchain="avrgcc"/>
-				<toolchain-config name="avrgcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avrgcc"/>
-				<toolchain-config name="avrgcc.linker.optimization.RelaxBranches" value="True" toolchain="avrgcc"/>
-				<toolchain-config name="avrgcc.linker.miscellaneous.LinkerFlags" value="-Wl,--relax" toolchain="avrgcc"/>
-			</module>
-		</select-by-device>
-
-		<module type="build-specific" id="common.utils.toolchain_config#uc3" caption="Toolchain configuration defaults for 32-bit AVR">
-			<info type="gui-flag" value="hidden"/>
-			<device-support value="uc3"/>
-
-			<toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avr32gcc"/>
-			<toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avr32gcc"/>
-			<toolchain-config name="avr32gcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avr32gcc"/>
-			<toolchain-config name="avr32gcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avr32gcc"/>
-			<toolchain-config name="avr32gcc.compiler.warnings.AllWarnings" value="True" toolchain="avr32gcc"/>
-			<toolchain-config name="avr32gcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -mno-cond-exec-before-reload" toolchain="avr32gcc"/>
-			<toolchain-config name="avr32gcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avr32gcc"/>
-			<toolchain-config name="avr32gcc.linker.optimization.RelaxBranches" value="True" toolchain="avr32gcc"/>
-			<toolchain-config name="avr32gcc.linker.miscellaneous.LinkerFlags" value="-Wl,--relax" toolchain="avr32gcc"/>
-		</module>
-	</asf>
-</lufa>
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-device id="common.utils.toolchain_config" caption="Toolchain configuration defaults">
+			<module type="build-specific" id="common.utils.toolchain_config#avr" caption="Toolchain configuration defaults for 8-bit AVR">
+				<info type="gui-flag" value="hidden"/>
+				<device-support value="avr"/>
+
+				<toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avrgcc"/>
+				<toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avrgcc"/>
+				<toolchain-config name="avrgcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avrgcc"/>
+				<toolchain-config name="avrgcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avrgcc"/>
+				<toolchain-config name="avrgcc.compiler.warnings.AllWarnings" value="True" toolchain="avrgcc"/>
+				<toolchain-config name="avrgcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -fno-jump-tables" toolchain="avrgcc"/>
+				<toolchain-config name="avrgcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avrgcc"/>
+				<toolchain-config name="avrgcc.linker.optimization.RelaxBranches" value="True" toolchain="avrgcc"/>
+				<toolchain-config name="avrgcc.linker.miscellaneous.LinkerFlags" value="-Wl,--relax" toolchain="avrgcc"/>
+			</module>
+		</select-by-device>
+
+		<module type="build-specific" id="common.utils.toolchain_config#uc3" caption="Toolchain configuration defaults for 32-bit AVR">
+			<info type="gui-flag" value="hidden"/>
+			<device-support value="uc3"/>
+
+			<toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avr32gcc"/>
+			<toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avr32gcc"/>
+			<toolchain-config name="avr32gcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avr32gcc"/>
+			<toolchain-config name="avr32gcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avr32gcc"/>
+			<toolchain-config name="avr32gcc.compiler.warnings.AllWarnings" value="True" toolchain="avr32gcc"/>
+			<toolchain-config name="avr32gcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -mno-cond-exec-before-reload" toolchain="avr32gcc"/>
+			<toolchain-config name="avr32gcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avr32gcc"/>
+			<toolchain-config name="avr32gcc.linker.optimization.RelaxBranches" value="True" toolchain="avr32gcc"/>
+			<toolchain-config name="avr32gcc.linker.miscellaneous.LinkerFlags" value="-Wl,--relax" toolchain="avr32gcc"/>
+		</module>
+	</asf>
+</lufa>
diff --git a/Projects/AVRISP-MKII/asf.xml b/Projects/AVRISP-MKII/asf.xml
index 11467236b8..d774b8c6bb 100644
--- a/Projects/AVRISP-MKII/asf.xml
+++ b/Projects/AVRISP-MKII/asf.xml
@@ -1,91 +1,91 @@
-<asf xmlversion="1.0">
-	<project caption="AVRISP-MKII Clone Programmer" id="lufa.projects.avrispmkii_clone.avr8">
- 		<require idref="lufa.projects.avrispmkii_clone"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<!-- Required by the XPLAIN Bridge project as well, so split into a meta module -->
-	<module type="meta" id="lufa.projects.avrispmkii_clone.src" caption="AVRISP-MKII Clone Programmer">
-		<info type="gui-flag" value="hidden"/>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<build type="include-path" value="."/>
-
-		<build type="c-source" value="AVRISPDescriptors.c"/>
-		<build type="header-file" value="AVRISPDescriptors.h"/>
-
-		<build type="include-path" value="Lib"/>
-
-		<build type="header-file" value="Lib/V2ProtocolConstants.h"/>
-		<build type="c-source" value="Lib/V2Protocol.c"/>
-		<build type="header-file" value="Lib/V2Protocol.h"/>
-		<build type="c-source" value="Lib/V2ProtocolParams.c"/>
-		<build type="header-file" value="Lib/V2ProtocolParams.h"/>
-		<build type="c-source" value="Lib/ISP/ISPProtocol.c"/>
-		<build type="header-file" value="Lib/ISP/ISPProtocol.h"/>
-		<build type="c-source" value="Lib/ISP/ISPTarget.c"/>
-		<build type="header-file" value="Lib/ISP/ISPTarget.h"/>
-		<build type="c-source" value="Lib/XPROG/XPROGTarget.c"/>
-		<build type="header-file" value="Lib/XPROG/XPROGTarget.h"/>
-		<build type="c-source" value="Lib/XPROG/XPROGProtocol.c"/>
-		<build type="header-file" value="Lib/XPROG/XPROGProtocol.h"/>
-		<build type="c-source" value="Lib/XPROG/XMEGANVM.c"/>
-		<build type="header-file" value="Lib/XPROG/XMEGANVM.h"/>
-		<build type="c-source" value="Lib/XPROG/TINYNVM.c"/>
-		<build type="header-file" value="Lib/XPROG/TINYNVM.h"/>
-
-		<require idref="lufa.drivers.peripheral.adc"/>
-		<require idref="lufa.drivers.peripheral.spi"/>
-	</module>
-
-	<module type="application" id="lufa.projects.avrispmkii_clone" caption="AVRISP-MKII Clone Programmer">
-		<info type="description" value="summary">
-		Clone firmware of the Atmel AVRISP-MKII programmer.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AVRISP-MKII.txt"/>
-		<build type="distribute" subtype="directory" value="WindowsDriver"/>
-
-		<build type="c-source" value="AVRISP-MKII.c"/>
-		<build type="header-file" value="AVRISP-MKII.h"/>
-
-		<require idref="lufa.projects.avrispmkii_clone.src"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.adc"/>
-		<require idref="lufa.drivers.peripheral.spi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="AVRISP-MKII Clone Programmer" id="lufa.projects.avrispmkii_clone.avr8">
+ 		<require idref="lufa.projects.avrispmkii_clone"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<!-- Required by the XPLAIN Bridge project as well, so split into a meta module -->
+	<module type="meta" id="lufa.projects.avrispmkii_clone.src" caption="AVRISP-MKII Clone Programmer">
+		<info type="gui-flag" value="hidden"/>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<build type="include-path" value="."/>
+
+		<build type="c-source" value="AVRISPDescriptors.c"/>
+		<build type="header-file" value="AVRISPDescriptors.h"/>
+
+		<build type="include-path" value="Lib"/>
+
+		<build type="header-file" value="Lib/V2ProtocolConstants.h"/>
+		<build type="c-source" value="Lib/V2Protocol.c"/>
+		<build type="header-file" value="Lib/V2Protocol.h"/>
+		<build type="c-source" value="Lib/V2ProtocolParams.c"/>
+		<build type="header-file" value="Lib/V2ProtocolParams.h"/>
+		<build type="c-source" value="Lib/ISP/ISPProtocol.c"/>
+		<build type="header-file" value="Lib/ISP/ISPProtocol.h"/>
+		<build type="c-source" value="Lib/ISP/ISPTarget.c"/>
+		<build type="header-file" value="Lib/ISP/ISPTarget.h"/>
+		<build type="c-source" value="Lib/XPROG/XPROGTarget.c"/>
+		<build type="header-file" value="Lib/XPROG/XPROGTarget.h"/>
+		<build type="c-source" value="Lib/XPROG/XPROGProtocol.c"/>
+		<build type="header-file" value="Lib/XPROG/XPROGProtocol.h"/>
+		<build type="c-source" value="Lib/XPROG/XMEGANVM.c"/>
+		<build type="header-file" value="Lib/XPROG/XMEGANVM.h"/>
+		<build type="c-source" value="Lib/XPROG/TINYNVM.c"/>
+		<build type="header-file" value="Lib/XPROG/TINYNVM.h"/>
+
+		<require idref="lufa.drivers.peripheral.adc"/>
+		<require idref="lufa.drivers.peripheral.spi"/>
+	</module>
+
+	<module type="application" id="lufa.projects.avrispmkii_clone" caption="AVRISP-MKII Clone Programmer">
+		<info type="description" value="summary">
+		Clone firmware of the Atmel AVRISP-MKII programmer.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="AVRISP-MKII.txt"/>
+		<build type="distribute" subtype="directory" value="WindowsDriver"/>
+
+		<build type="c-source" value="AVRISP-MKII.c"/>
+		<build type="header-file" value="AVRISP-MKII.h"/>
+
+		<require idref="lufa.projects.avrispmkii_clone.src"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.adc"/>
+		<require idref="lufa.drivers.peripheral.spi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Projects/Benito/asf.xml b/Projects/Benito/asf.xml
index 6f36da7671..e138b0ccd3 100644
--- a/Projects/Benito/asf.xml
+++ b/Projects/Benito/asf.xml
@@ -1,53 +1,53 @@
-<asf xmlversion="1.0">
-	<project caption="Benito Programmer" id="lufa.projects.benito.avr8">
-		<require idref="lufa.projects.benito"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.benito" caption="Benito Programmer">
-		<info type="description" value="summary">
-		Benito AVR programmer.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="CDC Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="Benito.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA Benito Programmer.inf"/>
-
-		<build type="c-source" value="Benito.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Benito.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ringbuffer"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Benito Programmer" id="lufa.projects.benito.avr8">
+		<require idref="lufa.projects.benito"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.benito" caption="Benito Programmer">
+		<info type="description" value="summary">
+		Benito AVR programmer.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="CDC Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="Benito.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA Benito Programmer.inf"/>
+
+		<build type="c-source" value="Benito.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Benito.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ringbuffer"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Projects/HIDReportViewer/asf.xml b/Projects/HIDReportViewer/asf.xml
index 7819aabf87..eb5d4bbe8d 100644
--- a/Projects/HIDReportViewer/asf.xml
+++ b/Projects/HIDReportViewer/asf.xml
@@ -1,48 +1,48 @@
-<asf xmlversion="1.0">
-	<project caption="HID Report Viewer" id="lufa.projects.hid_viewer.avr8">
-		<require idref="lufa.projects.hid_viewer"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.hid_viewer" caption="HID Report Viewer">
-		<info type="description" value="summary">
-		HID device report viewer project.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Host"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="HIDReportViewer.txt"/>
-
-		<build type="c-source" value="HIDReportViewer.c"/>
-		<build type="header-file" value="HIDReportViewer.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.misc.ansi"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="HID Report Viewer" id="lufa.projects.hid_viewer.avr8">
+		<require idref="lufa.projects.hid_viewer"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.hid_viewer" caption="HID Report Viewer">
+		<info type="description" value="summary">
+		HID device report viewer project.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Host"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="HIDReportViewer.txt"/>
+
+		<build type="c-source" value="HIDReportViewer.c"/>
+		<build type="header-file" value="HIDReportViewer.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.misc.ansi"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Projects/LEDNotifier/asf.xml b/Projects/LEDNotifier/asf.xml
index 01f3468381..c3f42899a8 100644
--- a/Projects/LEDNotifier/asf.xml
+++ b/Projects/LEDNotifier/asf.xml
@@ -1,51 +1,51 @@
-<asf xmlversion="1.0">
-	<project caption="LED Notifier Widget" id="lufa.projects.led_notifier.avr8">
-		<require idref="lufa.projects.led_notifier"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.led_notifier" caption="LED Notifier Widget">
-		<info type="description" value="summary">
-		RGB LED notification widget project.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="CDC Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="LEDNotifier.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA LED Notifier.inf"/>
-		<build type="distribute" subtype="directory" value="CPUUsageApp"/>
-		<build type="distribute" subtype="directory" value="LEDMixerApp"/>
-
-		<build type="c-source" value="LEDNotifier.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="LEDNotifier.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="LED Notifier Widget" id="lufa.projects.led_notifier.avr8">
+		<require idref="lufa.projects.led_notifier"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.led_notifier" caption="LED Notifier Widget">
+		<info type="description" value="summary">
+		RGB LED notification widget project.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="CDC Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="LEDNotifier.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA LED Notifier.inf"/>
+		<build type="distribute" subtype="directory" value="CPUUsageApp"/>
+		<build type="distribute" subtype="directory" value="LEDMixerApp"/>
+
+		<build type="c-source" value="LEDNotifier.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="LEDNotifier.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Projects/MIDIToneGenerator/asf.xml b/Projects/MIDIToneGenerator/asf.xml
index 6795c1bb8e..258393ac57 100644
--- a/Projects/MIDIToneGenerator/asf.xml
+++ b/Projects/MIDIToneGenerator/asf.xml
@@ -1,50 +1,50 @@
-<asf xmlversion="1.0">
-	<project caption="MIDI Tone Generator" id="lufa.projects.midi_tone_gen.avr8">
-		<require idref="lufa.projects.midi_tone_gen"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.midi_tone_gen" caption="MIDI Tone Generator">
-		<info type="description" value="summary">
-		MIDI tone generator project.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="MIDI Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MIDIToneGenerator.txt"/>
-
-		<build type="c-source" value="MIDIToneGenerator.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="MIDIToneGenerator.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="MIDI Tone Generator" id="lufa.projects.midi_tone_gen.avr8">
+		<require idref="lufa.projects.midi_tone_gen"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.midi_tone_gen" caption="MIDI Tone Generator">
+		<info type="description" value="summary">
+		MIDI tone generator project.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="MIDI Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MIDIToneGenerator.txt"/>
+
+		<build type="c-source" value="MIDIToneGenerator.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="MIDIToneGenerator.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Projects/Magstripe/asf.xml b/Projects/Magstripe/asf.xml
index 9fc5311e26..068eaa6fce 100644
--- a/Projects/Magstripe/asf.xml
+++ b/Projects/Magstripe/asf.xml
@@ -1,52 +1,52 @@
-<asf xmlversion="1.0">
-	<project caption="Magnetic Strip Card Reader" id="lufa.projects.magstripe.avr8">
-		<require idref="lufa.projects.magstripe"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.magstripe" caption="Magnetic Strip Card Reader">
-		<info type="description" value="summary">
-		Magnetic strip card reader project.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="Magstripe.txt"/>
-
-		<build type="c-source" value="Magstripe.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Magstripe.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="c-source" value="Lib/CircularBitBuffer.c"/>
-		<build type="header-file" value="Lib/CircularBitBuffer.h"/>
-		<build type="header-file" value="Lib/MagstripeHW.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Magnetic Strip Card Reader" id="lufa.projects.magstripe.avr8">
+		<require idref="lufa.projects.magstripe"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.magstripe" caption="Magnetic Strip Card Reader">
+		<info type="description" value="summary">
+		Magnetic strip card reader project.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="Magstripe.txt"/>
+
+		<build type="c-source" value="Magstripe.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Magstripe.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="c-source" value="Lib/CircularBitBuffer.c"/>
+		<build type="header-file" value="Lib/CircularBitBuffer.h"/>
+		<build type="header-file" value="Lib/MagstripeHW.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+	</module>
+</asf>
diff --git a/Projects/MediaController/asf.xml b/Projects/MediaController/asf.xml
index 2d476da51a..8a9fa2af9d 100644
--- a/Projects/MediaController/asf.xml
+++ b/Projects/MediaController/asf.xml
@@ -1,50 +1,50 @@
-<asf xmlversion="1.0">
-	<project caption="Media Controller" id="lufa.projects.media_control.avr8">
-		<require idref="lufa.projects.media_control"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.media_control" caption="Media Controller">
-		<info type="description" value="summary">
-		Magnetic strip card reader project.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MediaController.txt"/>
-
-		<build type="c-source" value="MediaController.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="MediaController.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Media Controller" id="lufa.projects.media_control.avr8">
+		<require idref="lufa.projects.media_control"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.media_control" caption="Media Controller">
+		<info type="description" value="summary">
+		Magnetic strip card reader project.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MediaController.txt"/>
+
+		<build type="c-source" value="MediaController.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="MediaController.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+	</module>
+</asf>
diff --git a/Projects/MissileLauncher/asf.xml b/Projects/MissileLauncher/asf.xml
index 1b8ac1bd56..6e359ccb0e 100644
--- a/Projects/MissileLauncher/asf.xml
+++ b/Projects/MissileLauncher/asf.xml
@@ -1,49 +1,49 @@
-<asf xmlversion="1.0">
-	<project caption="Missile Launcher" id="lufa.projects.missile_launcher.avr8">
-		<require idref="lufa.projects.missile_launcher"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.missile_launcher" caption="Missile Launcher">
-		<info type="description" value="summary">
-		Missile launcher project.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Host"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="MissileLauncher.txt"/>
-
-		<build type="c-source" value="MissileLauncher.c"/>
-		<build type="c-source" value="ConfigDescriptor.c"/>
-		<build type="header-file" value="MissileLauncher.h"/>
-		<build type="header-file" value="ConfigDescriptor.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.buttons"/>
-		<require idref="lufa.drivers.board.joystick"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Missile Launcher" id="lufa.projects.missile_launcher.avr8">
+		<require idref="lufa.projects.missile_launcher"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.missile_launcher" caption="Missile Launcher">
+		<info type="description" value="summary">
+		Missile launcher project.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Host"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="MissileLauncher.txt"/>
+
+		<build type="c-source" value="MissileLauncher.c"/>
+		<build type="c-source" value="ConfigDescriptor.c"/>
+		<build type="header-file" value="MissileLauncher.h"/>
+		<build type="header-file" value="ConfigDescriptor.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.buttons"/>
+		<require idref="lufa.drivers.board.joystick"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Projects/RelayBoard/asf.xml b/Projects/RelayBoard/asf.xml
index e3a2ef4b20..ca71c21440 100644
--- a/Projects/RelayBoard/asf.xml
+++ b/Projects/RelayBoard/asf.xml
@@ -1,47 +1,47 @@
-<asf xmlversion="1.0">
-	<project caption="Relay Board Controller" id="lufa.projects.relay_board.avr8">
-		<require idref="lufa.projects.relay_board"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.relay_board" caption="Relay Board Controller">
-		<info type="description" value="summary">
-		Relay Board Controller project.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Low Level APIs"/>
-			<keyword value="USB Device"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="RelayBoard.txt"/>
-
-		<build type="c-source" value="RelayBoard.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="RelayBoard.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Relay Board Controller" id="lufa.projects.relay_board.avr8">
+		<require idref="lufa.projects.relay_board"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.relay_board" caption="Relay Board Controller">
+		<info type="description" value="summary">
+		Relay Board Controller project.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Low Level APIs"/>
+			<keyword value="USB Device"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="RelayBoard.txt"/>
+
+		<build type="c-source" value="RelayBoard.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="RelayBoard.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+	</module>
+</asf>
diff --git a/Projects/SerialToLCD/asf.xml b/Projects/SerialToLCD/asf.xml
index f298727949..e0a41823e3 100644
--- a/Projects/SerialToLCD/asf.xml
+++ b/Projects/SerialToLCD/asf.xml
@@ -1,51 +1,51 @@
-<asf xmlversion="1.0">
-	<project caption="USB Serial to LCD Display" id="lufa.projects.serial_to_lcd.avr8">
-		<require idref="lufa.projects.serial_to_lcd"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.serial_to_lcd" caption="USB Serial to LCD Display">
-		<info type="description" value="summary">
-		USB Serial to LCD Controller project.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="CDC Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="SerialToLCD.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA SerialToLCD.inf"/>
-
-		<build type="c-source" value="SerialToLCD.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="SerialToLCD.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="c-source" value="Lib/HD44780.c"/>
-		<build type="header-file" value="Lib/HD44780.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.misc.ringbuffer"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="USB Serial to LCD Display" id="lufa.projects.serial_to_lcd.avr8">
+		<require idref="lufa.projects.serial_to_lcd"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.serial_to_lcd" caption="USB Serial to LCD Display">
+		<info type="description" value="summary">
+		USB Serial to LCD Controller project.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="CDC Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="SerialToLCD.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA SerialToLCD.inf"/>
+
+		<build type="c-source" value="SerialToLCD.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="SerialToLCD.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="c-source" value="Lib/HD44780.c"/>
+		<build type="header-file" value="Lib/HD44780.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.misc.ringbuffer"/>
+	</module>
+</asf>
diff --git a/Projects/TempDataLogger/asf.xml b/Projects/TempDataLogger/asf.xml
index bf7ee2c3f0..ca08c55b4c 100644
--- a/Projects/TempDataLogger/asf.xml
+++ b/Projects/TempDataLogger/asf.xml
@@ -1,72 +1,72 @@
-<asf xmlversion="1.0">
-	<project caption="Temperature Datalogger" id="lufa.projects.temp_datalogger.avr8">
-		<require idref="lufa.projects.temp_datalogger"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.temp_datalogger" caption="Temperature Datalogger">
-		<info type="description" value="summary">
-		Temperature Datalogger project.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="HID Class"/>
-			<keyword value="Mass Storage Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="TemperatureDataLogger.txt"/>
-		<build type="distribute" subtype="directory" value="TempLogHostApp"/>
-		<build type="distribute" subtype="directory" value="TempLogHostApp_Python"/>
-
-		<build type="c-source" value="TempDataLogger.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="TempDataLogger.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="c-source" value="Lib/DataflashManager.c"/>
-		<build type="header-file" value="Lib/DataflashManager.h"/>
-		<build type="c-source" value="Lib/RTC.c"/>
-		<build type="header-file" value="Lib/RTC.h"/>
-		<build type="c-source" value="Lib/SCSI.c"/>
-		<build type="header-file" value="Lib/SCSI.h"/>
-
-		<build type="include-path" value="Lib/FATFs/"/>
-		<build type="c-source" value="Lib/FATFs/ff.c"/>
-		<build type="header-file" value="Lib/FATFs/ff.h"/>
-		<build type="c-source" value="Lib/FATFs/diskio.c"/>
-		<build type="header-file" value="Lib/FATFs/diskio.h"/>
-		<build type="header-file" value="Lib/FATFs/ffconf.h"/>
-		<build type="header-file" value="Lib/FATFs/integer.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.temperature"/>
-		<require idref="lufa.drivers.board.dataflash"/>
-		<require idref="lufa.drivers.peripheral.adc"/>
-		<require idref="lufa.drivers.peripheral.twi"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="Temperature Datalogger" id="lufa.projects.temp_datalogger.avr8">
+		<require idref="lufa.projects.temp_datalogger"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.temp_datalogger" caption="Temperature Datalogger">
+		<info type="description" value="summary">
+		Temperature Datalogger project.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="HID Class"/>
+			<keyword value="Mass Storage Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="TemperatureDataLogger.txt"/>
+		<build type="distribute" subtype="directory" value="TempLogHostApp"/>
+		<build type="distribute" subtype="directory" value="TempLogHostApp_Python"/>
+
+		<build type="c-source" value="TempDataLogger.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="TempDataLogger.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="c-source" value="Lib/DataflashManager.c"/>
+		<build type="header-file" value="Lib/DataflashManager.h"/>
+		<build type="c-source" value="Lib/RTC.c"/>
+		<build type="header-file" value="Lib/RTC.h"/>
+		<build type="c-source" value="Lib/SCSI.c"/>
+		<build type="header-file" value="Lib/SCSI.h"/>
+
+		<build type="include-path" value="Lib/FATFs/"/>
+		<build type="c-source" value="Lib/FATFs/ff.c"/>
+		<build type="header-file" value="Lib/FATFs/ff.h"/>
+		<build type="c-source" value="Lib/FATFs/diskio.c"/>
+		<build type="header-file" value="Lib/FATFs/diskio.h"/>
+		<build type="header-file" value="Lib/FATFs/ffconf.h"/>
+		<build type="header-file" value="Lib/FATFs/integer.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.temperature"/>
+		<require idref="lufa.drivers.board.dataflash"/>
+		<require idref="lufa.drivers.peripheral.adc"/>
+		<require idref="lufa.drivers.peripheral.twi"/>
+	</module>
+</asf>
diff --git a/Projects/USBtoSerial/asf.xml b/Projects/USBtoSerial/asf.xml
index 5afcafe7c2..13f9ba8fb1 100644
--- a/Projects/USBtoSerial/asf.xml
+++ b/Projects/USBtoSerial/asf.xml
@@ -1,51 +1,51 @@
-<asf xmlversion="1.0">
-	<project caption="USB to Serial Converter" id="lufa.projects.usb_to_serial.avr8">
-		<require idref="lufa.projects.usb_to_serial"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.usb_to_serial" caption="USB to Serial Converter">
-		<info type="description" value="summary">
-		USB to Serial USART converter project.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="CDC Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="USBtoSerial.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA USBtoSerial.inf"/>
-
-		<build type="c-source" value="USBtoSerial.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="USBtoSerial.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.peripheral.usart"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.misc.ringbuffer"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="USB to Serial Converter" id="lufa.projects.usb_to_serial.avr8">
+		<require idref="lufa.projects.usb_to_serial"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.usb_to_serial" caption="USB to Serial Converter">
+		<info type="description" value="summary">
+		USB to Serial USART converter project.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Device"/>
+			<keyword value="CDC Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="USBtoSerial.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA USBtoSerial.inf"/>
+
+		<build type="c-source" value="USBtoSerial.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="USBtoSerial.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.peripheral.usart"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.misc.ringbuffer"/>
+	</module>
+</asf>
diff --git a/Projects/Webserver/asf.xml b/Projects/Webserver/asf.xml
index ea6b4c66f0..ca1733e85f 100644
--- a/Projects/Webserver/asf.xml
+++ b/Projects/Webserver/asf.xml
@@ -1,96 +1,96 @@
-<asf xmlversion="1.0">
-	<project caption="RNDIS Webserver" id="lufa.projects.webserver.avr8">
-		<require idref="lufa.projects.webserver"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="usbkey"/>
-
-		<build type="define" name="F_CPU" value="8000000UL"/>
-		<build type="define" name="F_USB" value="8000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.projects.webserver" caption="RNDIS Webserver">
-		<info type="description" value="summary">
-		RNDIS Webserver project, using the open source uIP network stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Dual Role"/>
-			<keyword value="RNDIS Class"/>
-			<keyword value="Mass Storage Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="Webserver.txt"/>
-		<build type="distribute" subtype="user-file" value="LUFA Webserver RNDIS.inf"/>
-
-		<build type="c-source" value="Webserver.c"/>
-		<build type="c-source" value="USBDeviceMode.c"/>
-		<build type="c-source" value="USBHostMode.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="Webserver.h"/>
-		<build type="header-file" value="USBDeviceMode.h"/>
-		<build type="header-file" value="USBHostMode.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="c-source" value="Lib/DataflashManager.c"/>
-		<build type="header-file" value="Lib/DataflashManager.h"/>
-		<build type="c-source" value="Lib/DHCPClientApp.c"/>
-		<build type="header-file" value="Lib/DHCPClientApp.h"/>
-		<build type="c-source" value="Lib/DHCPCommon.c"/>
-		<build type="header-file" value="Lib/DHCPCommon.h"/>
-		<build type="c-source" value="Lib/DHCPServerApp.c"/>
-		<build type="header-file" value="Lib/DHCPServerApp.h"/>
-		<build type="c-source" value="Lib/HTTPServerApp.c"/>
-		<build type="header-file" value="Lib/HTTPServerApp.h"/>
-		<build type="c-source" value="Lib/SCSI.c"/>
-		<build type="header-file" value="Lib/SCSI.h"/>
-		<build type="c-source" value="Lib/TELNETServerApp.c"/>
-		<build type="header-file" value="Lib/TELNETServerApp.h"/>
-		<build type="c-source" value="Lib/uIPManagement.c"/>
-		<build type="header-file" value="Lib/uIPManagement.h"/>
-
-		<build type="include-path" value="Lib/FATFs/"/>
-		<build type="c-source" value="Lib/FATFs/ff.c"/>
-		<build type="header-file" value="Lib/FATFs/ff.h"/>
-		<build type="c-source" value="Lib/FATFs/diskio.c"/>
-		<build type="header-file" value="Lib/FATFs/diskio.h"/>
-		<build type="header-file" value="Lib/FATFs/ffconf.h"/>
-		<build type="header-file" value="Lib/FATFs/integer.h"/>
-
-		<build type="include-path" value="Lib/uip/"/>
-		<build type="c-source" value="Lib/uip/clock.c"/>
-		<build type="header-file" value="Lib/uip/clock.h"/>
-		<build type="c-source" value="Lib/uip/timer.c"/>
-		<build type="header-file" value="Lib/uip/timer.h"/>
-		<build type="c-source" value="Lib/uip/uip.c"/>
-		<build type="header-file" value="Lib/uip/uip.h"/>
-		<build type="c-source" value="Lib/uip/uip_arp.c"/>
-		<build type="header-file" value="Lib/uip/uip_arp.h"/>
-		<build type="c-source" value="Lib/uip/uip-split.c"/>
-		<build type="header-file" value="Lib/uip/uip-split.h"/>
-		<build type="header-file" value="Lib/uip/uipopt.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.dataflash"/>
-		<require idref="lufa.drivers.peripheral.spi"/>
-	</module>
-</asf>
+<asf xmlversion="1.0">
+	<project caption="RNDIS Webserver" id="lufa.projects.webserver.avr8">
+		<require idref="lufa.projects.webserver"/>
+		<require idref="lufa.boards.dummy.avr8"/>
+		<generator value="as5_8"/>
+
+		<device-support value="at90usb1287"/>
+		<config name="lufa.drivers.board.name" value="usbkey"/>
+
+		<build type="define" name="F_CPU" value="8000000UL"/>
+		<build type="define" name="F_USB" value="8000000UL"/>
+	</project>
+
+	<module type="application" id="lufa.projects.webserver" caption="RNDIS Webserver">
+		<info type="description" value="summary">
+		RNDIS Webserver project, using the open source uIP network stack.
+		</info>
+
+ 		<info type="gui-flag" value="move-to-root"/>
+
+		<info type="keyword" value="Technology">
+			<keyword value="Class Driver APIs"/>
+			<keyword value="USB Dual Role"/>
+			<keyword value="RNDIS Class"/>
+			<keyword value="Mass Storage Class"/>
+		</info>
+
+		<device-support-alias value="lufa_avr8"/>
+		<device-support-alias value="lufa_xmega"/>
+		<device-support-alias value="lufa_uc3"/>
+
+		<build type="distribute" subtype="user-file" value="doxyfile"/>
+		<build type="distribute" subtype="user-file" value="Webserver.txt"/>
+		<build type="distribute" subtype="user-file" value="LUFA Webserver RNDIS.inf"/>
+
+		<build type="c-source" value="Webserver.c"/>
+		<build type="c-source" value="USBDeviceMode.c"/>
+		<build type="c-source" value="USBHostMode.c"/>
+		<build type="c-source" value="Descriptors.c"/>
+		<build type="header-file" value="Webserver.h"/>
+		<build type="header-file" value="USBDeviceMode.h"/>
+		<build type="header-file" value="USBHostMode.h"/>
+		<build type="header-file" value="Descriptors.h"/>
+
+		<build type="c-source" value="Lib/DataflashManager.c"/>
+		<build type="header-file" value="Lib/DataflashManager.h"/>
+		<build type="c-source" value="Lib/DHCPClientApp.c"/>
+		<build type="header-file" value="Lib/DHCPClientApp.h"/>
+		<build type="c-source" value="Lib/DHCPCommon.c"/>
+		<build type="header-file" value="Lib/DHCPCommon.h"/>
+		<build type="c-source" value="Lib/DHCPServerApp.c"/>
+		<build type="header-file" value="Lib/DHCPServerApp.h"/>
+		<build type="c-source" value="Lib/HTTPServerApp.c"/>
+		<build type="header-file" value="Lib/HTTPServerApp.h"/>
+		<build type="c-source" value="Lib/SCSI.c"/>
+		<build type="header-file" value="Lib/SCSI.h"/>
+		<build type="c-source" value="Lib/TELNETServerApp.c"/>
+		<build type="header-file" value="Lib/TELNETServerApp.h"/>
+		<build type="c-source" value="Lib/uIPManagement.c"/>
+		<build type="header-file" value="Lib/uIPManagement.h"/>
+
+		<build type="include-path" value="Lib/FATFs/"/>
+		<build type="c-source" value="Lib/FATFs/ff.c"/>
+		<build type="header-file" value="Lib/FATFs/ff.h"/>
+		<build type="c-source" value="Lib/FATFs/diskio.c"/>
+		<build type="header-file" value="Lib/FATFs/diskio.h"/>
+		<build type="header-file" value="Lib/FATFs/ffconf.h"/>
+		<build type="header-file" value="Lib/FATFs/integer.h"/>
+
+		<build type="include-path" value="Lib/uip/"/>
+		<build type="c-source" value="Lib/uip/clock.c"/>
+		<build type="header-file" value="Lib/uip/clock.h"/>
+		<build type="c-source" value="Lib/uip/timer.c"/>
+		<build type="header-file" value="Lib/uip/timer.h"/>
+		<build type="c-source" value="Lib/uip/uip.c"/>
+		<build type="header-file" value="Lib/uip/uip.h"/>
+		<build type="c-source" value="Lib/uip/uip_arp.c"/>
+		<build type="header-file" value="Lib/uip/uip_arp.h"/>
+		<build type="c-source" value="Lib/uip/uip-split.c"/>
+		<build type="header-file" value="Lib/uip/uip-split.h"/>
+		<build type="header-file" value="Lib/uip/uipopt.h"/>
+
+		<build type="module-config" subtype="path" value="Config"/>
+		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
+		<build type="header-file" value="Config/AppConfig.h"/>
+		<build type="header-file" value="Config/LUFAConfig.h"/>
+
+		<require idref="lufa.common"/>
+		<require idref="lufa.platform"/>
+		<require idref="lufa.drivers.usb"/>
+		<require idref="lufa.drivers.board"/>
+		<require idref="lufa.drivers.board.leds"/>
+		<require idref="lufa.drivers.board.dataflash"/>
+		<require idref="lufa.drivers.peripheral.spi"/>
+	</module>
+</asf>

From 7ea8753b72ed7ddecdcb2db5b223ca920f8155b3 Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Mon, 10 Jul 2017 13:46:39 +0300
Subject: [PATCH 02/17] Don't run dfu-programmer unless specified as a target

This introduces a grep dependency, which I believe we didn't have
before, but it should be available and installed by default on all the
supported systems.
---
 tmk_core/avr.mk | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk
index ccecdb1929..a36d219dd0 100644
--- a/tmk_core/avr.mk
+++ b/tmk_core/avr.mk
@@ -115,11 +115,11 @@ dfu: $(BUILD_DIR)/$(TARGET).hex sizeafter
 		echo "Error: Bootloader not found. Trying again in 5s." ;\
 		sleep 5 ;\
 	done
-ifneq (, $(findstring 0.7, $(shell $(DFU_PROGRAMMER) --version 2>&1)))
-	$(DFU_PROGRAMMER) $(MCU) erase --force
-else
-	$(DFU_PROGRAMMER) $(MCU) erase
-endif
+	if $(DFU_PROGRAMMER) --version 2>&1 | grep -q 0.7 ; then\
+		$(DFU_PROGRAMMER) $(MCU) erase --force;\
+	else\
+		$(DFU_PROGRAMMER) $(MCU) erase;\
+	fi
 	$(DFU_PROGRAMMER) $(MCU) flash $(BUILD_DIR)/$(TARGET).hex
 	$(DFU_PROGRAMMER) $(MCU) reset
 
@@ -135,11 +135,11 @@ flip-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep
 	$(REMOVE) $(BUILD_DIR)/$(TARGET)eep.hex
 
 dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep
-ifneq (, $(findstring 0.7, $(shell dfu-programmer --version 2>&1)))
-	$(DFU_PROGRAMMER) $(MCU) flash --eeprom $(BUILD_DIR)/$(TARGET).eep
-else
-	$(DFU_PROGRAMMER) $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep
-endif
+	if $(DFU_PROGRAMMER) --version 2>&1 | grep -q 0.7 ; then\
+		$(DFU_PROGRAMMER) $(MCU) flash --eeprom $(BUILD_DIR)/$(TARGET).eep;\
+	else\
+		$(DFU_PROGRAMMER) $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep;\
+	fi
 	$(DFU_PROGRAMMER) $(MCU) reset
 
 # Convert hex to bin.

From ba405cfbb4b887af8007edfeed4d9fc43766d911 Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Mon, 10 Jul 2017 13:50:07 +0300
Subject: [PATCH 03/17] Don't search for TEENSY_LOADER_CLI if it's already
 defined

---
 tmk_core/avr.mk | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk
index a36d219dd0..6773726ee3 100644
--- a/tmk_core/avr.mk
+++ b/tmk_core/avr.mk
@@ -87,11 +87,13 @@ DEBUG_PORT = 4242
 DEBUG_HOST = localhost
 
 #============================================================================
-# Autodecct teensy loader
-ifneq (, $(shell which teensy-loader-cli 2>/dev/null))
-  TEENSY_LOADER_CLI ?= teensy-loader-cli
-else
-  TEENSY_LOADER_CLI ?= teensy_loader_cli
+# Autodetect teensy loader
+ifndef TEENSY_LOADER_CLI
+    ifneq (, $(shell which teensy-loader-cli 2>/dev/null))
+        TEENSY_LOADER_CLI ?= teensy-loader-cli
+    else
+        TEENSY_LOADER_CLI ?= teensy_loader_cli
+    endif
 endif
 
 # Program the device.

From 1ff5fb000f7d38f16710e753886d8bc9635d47e2 Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Mon, 10 Jul 2017 13:04:27 +0300
Subject: [PATCH 04/17] Fix Makefile error_occured output for unit tests

---
 Makefile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Makefile b/Makefile
index f789409b7e..b429200fe8 100644
--- a/Makefile
+++ b/Makefile
@@ -483,6 +483,8 @@ define RUN_TEST
 +error_occurred=0;\
 $($(TEST)_COMMAND)\
 if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi;
+
+
 endef
 
 # Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps

From aca0f4dcaed3af3ae2ed689e3ae556269c3f6691 Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Sun, 9 Jul 2017 13:20:03 +0300
Subject: [PATCH 05/17] Move GDISP drivers to /drivers/ugfx

---
 drivers/ugfx/gdisp/IS31FL3731C/driver.mk      |   2 +
 .../gdisp/IS31FL3731C/gdisp_IS31FL3731C.c     |   2 +-
 .../gdisp/IS31FL3731C/gdisp_lld_config.h      |   0
 drivers/ugfx/gdisp/st7565ergodox/driver.mk    |   2 +
 .../gdisp/st7565ergodox/gdisp_lld_ST7565.c    |   4 +-
 .../gdisp/st7565ergodox/gdisp_lld_config.h    |   0
 .../ugfx}/gdisp/st7565ergodox/st7565.h        |   0
 .../IS31FL3731C => }/board_IS31FL3731C.h      |   0
 .../gdisp/st7565ergodox => }/board_ST7565.h   |   0
 .../drivers/gdisp/IS31FL3731C/driver.mk       |   2 -
 .../drivers/gdisp/st7565ergodox/driver.mk     |   2 -
 keyboards/ergodox/infinity/rules.mk           |   4 +-
 .../IS31FL3731C => }/board_IS31FL3731C.h      |   0
 .../drivers/gdisp/IS31FL3731C/driver.mk       |   2 -
 .../gdisp/IS31FL3731C/gdisp_IS31FL3731C.c     | 312 ------------------
 .../gdisp/IS31FL3731C/gdisp_lld_config.h      |  36 --
 keyboards/whitefox/rules.mk                   |   2 +-
 17 files changed, 10 insertions(+), 360 deletions(-)
 create mode 100644 drivers/ugfx/gdisp/IS31FL3731C/driver.mk
 rename {keyboards/ergodox/infinity/drivers => drivers/ugfx}/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c (99%)
 rename {keyboards/ergodox/infinity/drivers => drivers/ugfx}/gdisp/IS31FL3731C/gdisp_lld_config.h (100%)
 create mode 100644 drivers/ugfx/gdisp/st7565ergodox/driver.mk
 rename {keyboards/ergodox/infinity/drivers => drivers/ugfx}/gdisp/st7565ergodox/gdisp_lld_ST7565.c (98%)
 rename {keyboards/ergodox/infinity/drivers => drivers/ugfx}/gdisp/st7565ergodox/gdisp_lld_config.h (100%)
 rename {keyboards/ergodox/infinity/drivers => drivers/ugfx}/gdisp/st7565ergodox/st7565.h (100%)
 rename keyboards/ergodox/infinity/{drivers/gdisp/IS31FL3731C => }/board_IS31FL3731C.h (100%)
 rename keyboards/ergodox/infinity/{drivers/gdisp/st7565ergodox => }/board_ST7565.h (100%)
 delete mode 100644 keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/driver.mk
 delete mode 100644 keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/driver.mk
 rename keyboards/whitefox/{drivers/gdisp/IS31FL3731C => }/board_IS31FL3731C.h (100%)
 delete mode 100644 keyboards/whitefox/drivers/gdisp/IS31FL3731C/driver.mk
 delete mode 100644 keyboards/whitefox/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
 delete mode 100644 keyboards/whitefox/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h

diff --git a/drivers/ugfx/gdisp/IS31FL3731C/driver.mk b/drivers/ugfx/gdisp/IS31FL3731C/driver.mk
new file mode 100644
index 0000000000..58a16d2096
--- /dev/null
+++ b/drivers/ugfx/gdisp/IS31FL3731C/driver.mk
@@ -0,0 +1,2 @@
+GFXINC += drivers/ugfx/gdisp/IS31FL3731C
+GFXSRC += drivers/ugfx/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c b/drivers/ugfx/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
similarity index 99%
rename from keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
rename to drivers/ugfx/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
index b4a5c84b0a..2d78a5533c 100644
--- a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
+++ b/drivers/ugfx/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
@@ -20,7 +20,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #if GFX_USE_GDISP
 
 #define GDISP_DRIVER_VMT			GDISPVMT_IS31FL3731C_ERGODOX
-#include "drivers/gdisp/IS31FL3731C/gdisp_lld_config.h"
+#include "gdisp_lld_config.h"
 #include "src/gdisp/gdisp_driver.h"
 
 #include "board_IS31FL3731C.h"
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h b/drivers/ugfx/gdisp/IS31FL3731C/gdisp_lld_config.h
similarity index 100%
rename from keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h
rename to drivers/ugfx/gdisp/IS31FL3731C/gdisp_lld_config.h
diff --git a/drivers/ugfx/gdisp/st7565ergodox/driver.mk b/drivers/ugfx/gdisp/st7565ergodox/driver.mk
new file mode 100644
index 0000000000..401e15e691
--- /dev/null
+++ b/drivers/ugfx/gdisp/st7565ergodox/driver.mk
@@ -0,0 +1,2 @@
+GFXINC += drivers/ugfx/gdisp/st7565ergodox
+GFXSRC += drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_ST7565.c
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c b/drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_ST7565.c
similarity index 98%
rename from keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c
rename to drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_ST7565.c
index b04ad02935..c576280a12 100644
--- a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c
+++ b/drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_ST7565.c
@@ -10,7 +10,7 @@
 #if GFX_USE_GDISP
 
 #define GDISP_DRIVER_VMT			GDISPVMT_ST7565_ERGODOX
-#include "drivers/gdisp/st7565ergodox/gdisp_lld_config.h"
+#include "gdisp_lld_config.h"
 #include "src/gdisp/gdisp_driver.h"
 
 #include "board_ST7565.h"
@@ -34,7 +34,7 @@
 
 #define GDISP_FLG_NEEDFLUSH			(GDISP_FLG_DRIVER<<0)
 
-#include "drivers/gdisp/st7565ergodox/st7565.h"
+#include "st7565.h"
 
 /*===========================================================================*/
 /* Driver config defaults for backward compatibility.               	     */
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_config.h b/drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_config.h
similarity index 100%
rename from keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_config.h
rename to drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_config.h
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/st7565.h b/drivers/ugfx/gdisp/st7565ergodox/st7565.h
similarity index 100%
rename from keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/st7565.h
rename to drivers/ugfx/gdisp/st7565ergodox/st7565.h
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h b/keyboards/ergodox/infinity/board_IS31FL3731C.h
similarity index 100%
rename from keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h
rename to keyboards/ergodox/infinity/board_IS31FL3731C.h
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/board_ST7565.h b/keyboards/ergodox/infinity/board_ST7565.h
similarity index 100%
rename from keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/board_ST7565.h
rename to keyboards/ergodox/infinity/board_ST7565.h
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/driver.mk b/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/driver.mk
deleted file mode 100644
index f32d0d8685..0000000000
--- a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/driver.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-GFXINC += drivers/gdisp/IS31FL3731C
-GFXSRC += drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/driver.mk b/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/driver.mk
deleted file mode 100644
index 889a1a0317..0000000000
--- a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/driver.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-GFXINC += drivers/gdisp/st7565ergodox
-GFXSRC += drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c
diff --git a/keyboards/ergodox/infinity/rules.mk b/keyboards/ergodox/infinity/rules.mk
index bbb0f6efea..9e22463637 100644
--- a/keyboards/ergodox/infinity/rules.mk
+++ b/keyboards/ergodox/infinity/rules.mk
@@ -67,5 +67,5 @@ LCD_BACKLIGHT_ENABLE = yes
 MIDI_ENABLE = no
 RGBLIGHT_ENABLE = no
 
-include $(SUBPROJECT_PATH)/drivers/gdisp/st7565ergodox/driver.mk
-include $(SUBPROJECT_PATH)/drivers/gdisp/IS31FL3731C/driver.mk
\ No newline at end of file
+include $(TOP_DIR)/drivers/ugfx/gdisp/st7565ergodox/driver.mk
+include $(TOP_DIR)/drivers/ugfx/gdisp/IS31FL3731C/driver.mk
\ No newline at end of file
diff --git a/keyboards/whitefox/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h b/keyboards/whitefox/board_IS31FL3731C.h
similarity index 100%
rename from keyboards/whitefox/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h
rename to keyboards/whitefox/board_IS31FL3731C.h
diff --git a/keyboards/whitefox/drivers/gdisp/IS31FL3731C/driver.mk b/keyboards/whitefox/drivers/gdisp/IS31FL3731C/driver.mk
deleted file mode 100644
index f32d0d8685..0000000000
--- a/keyboards/whitefox/drivers/gdisp/IS31FL3731C/driver.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-GFXINC += drivers/gdisp/IS31FL3731C
-GFXSRC += drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
diff --git a/keyboards/whitefox/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c b/keyboards/whitefox/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
deleted file mode 100644
index c807cbd1e2..0000000000
--- a/keyboards/whitefox/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "gfx.h"
-
-#if GFX_USE_GDISP
-
-#define GDISP_DRIVER_VMT			GDISPVMT_IS31FL3731C_WHITEFOX
-#include "drivers/gdisp/IS31FL3731C/gdisp_lld_config.h"
-#include "src/gdisp/gdisp_driver.h"
-
-#include "board_IS31FL3731C.h"
-
-
-// Can't include led_tables from here
-extern const uint8_t CIE1931_CURVE[];
-
-/*===========================================================================*/
-/* Driver local definitions.                                                 */
-/*===========================================================================*/
-
-#ifndef GDISP_SCREEN_HEIGHT
-	#define GDISP_SCREEN_HEIGHT		9
-#endif
-#ifndef GDISP_SCREEN_WIDTH
-	#define GDISP_SCREEN_WIDTH		16
-#endif
-#ifndef GDISP_INITIAL_CONTRAST
-	#define GDISP_INITIAL_CONTRAST	0
-#endif
-#ifndef GDISP_INITIAL_BACKLIGHT
-	#define GDISP_INITIAL_BACKLIGHT	0
-#endif
-
-#define GDISP_FLG_NEEDFLUSH			(GDISP_FLG_DRIVER<<0)
-
-#define IS31_ADDR_DEFAULT 0x74
-
-#define IS31_REG_CONFIG  0x00
-// bits in reg
-#define IS31_REG_CONFIG_PICTUREMODE 0x00
-#define IS31_REG_CONFIG_AUTOPLAYMODE 0x08
-#define IS31_REG_CONFIG_AUDIOPLAYMODE 0x18
-// D2:D0 bits are starting frame for autoplay mode
-
-#define IS31_REG_PICTDISP 0x01 // D2:D0 frame select for picture mode
-
-#define IS31_REG_AUTOPLAYCTRL1 0x02
-// D6:D4 number of loops (000=infty)
-// D2:D0 number of frames to be used
-
-#define IS31_REG_AUTOPLAYCTRL2 0x03 // D5:D0 delay time (*11ms)
-
-#define IS31_REG_DISPLAYOPT 0x05
-#define IS31_REG_DISPLAYOPT_INTENSITY_SAME 0x20 // same intensity for all frames
-#define IS31_REG_DISPLAYOPT_BLINK_ENABLE 0x8
-// D2:D0 bits blink period time (*0.27s)
-
-#define IS31_REG_AUDIOSYNC 0x06
-#define IS31_REG_AUDIOSYNC_ENABLE 0x1
-
-#define IS31_REG_FRAMESTATE 0x07
-
-#define IS31_REG_BREATHCTRL1 0x08
-// D6:D4 fade out time (26ms*2^i)
-// D2:D0 fade in time (26ms*2^i)
-
-#define IS31_REG_BREATHCTRL2 0x09
-#define IS31_REG_BREATHCTRL2_ENABLE 0x10
-// D2:D0 extinguish time (3.5ms*2^i)
-
-#define IS31_REG_SHUTDOWN 0x0A
-#define IS31_REG_SHUTDOWN_OFF 0x0
-#define IS31_REG_SHUTDOWN_ON 0x1
-
-#define IS31_REG_AGCCTRL 0x0B
-#define IS31_REG_ADCRATE 0x0C
-
-#define IS31_COMMANDREGISTER 0xFD
-#define IS31_FUNCTIONREG 0x0B    // helpfully called 'page nine'
-#define IS31_FUNCTIONREG_SIZE 0xD
-
-#define IS31_FRAME_SIZE 0xB4
-
-#define IS31_PWM_REG 0x24
-#define IS31_PWM_SIZE 0x90
-
-#define IS31_LED_MASK_SIZE 0x12
-#define IS31_SCREEN_WIDTH 16
-
-#define IS31
-
-/*===========================================================================*/
-/* Driver local functions.                                                   */
-/*===========================================================================*/
-
-typedef struct{
-    uint8_t write_buffer_offset;
-    uint8_t write_buffer[IS31_FRAME_SIZE];
-    uint8_t frame_buffer[GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH];
-    uint8_t page;
-}__attribute__((__packed__)) PrivData;
-
-// Some common routines and macros
-#define PRIV(g)                         ((PrivData*)g->priv)
-
-/*===========================================================================*/
-/* Driver exported functions.                                                */
-/*===========================================================================*/
-
-static GFXINLINE void write_page(GDisplay* g, uint8_t page) {
-    uint8_t tx[2] __attribute__((aligned(2)));
-    tx[0] = IS31_COMMANDREGISTER;
-    tx[1] = page;
-    write_data(g, tx, 2);
-}
-
-static GFXINLINE void write_register(GDisplay* g, uint8_t page, uint8_t reg, uint8_t data) {
-    uint8_t tx[2] __attribute__((aligned(2)));
-    tx[0] = reg;
-    tx[1] = data;
-    write_page(g, page);
-    write_data(g, tx, 2);
-}
-
-static GFXINLINE void write_ram(GDisplay *g, uint8_t page, uint16_t offset, uint16_t length) {
-    PRIV(g)->write_buffer_offset = offset;
-    write_page(g, page);
-    write_data(g, (uint8_t*)PRIV(g), length + 1);
-}
-
-LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
-	// The private area is the display surface.
-	g->priv = gfxAlloc(sizeof(PrivData));
-    __builtin_memset(PRIV(g), 0, sizeof(PrivData));
-	PRIV(g)->page = 0;
-
-	// Initialise the board interface
-	init_board(g);
-	gfxSleepMilliseconds(10);
-
-    // zero function page, all registers (assuming full_page is all zeroes)
-    write_ram(g, IS31_FUNCTIONREG, 0, IS31_FUNCTIONREG_SIZE);
-    set_hardware_shutdown(g, false);
-    gfxSleepMilliseconds(10);
-    // software shutdown
-    write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
-    gfxSleepMilliseconds(10);
-    // zero function page, all registers
-    write_ram(g, IS31_FUNCTIONREG, 0, IS31_FUNCTIONREG_SIZE);
-    gfxSleepMilliseconds(10);
-
-
-    // zero all LED registers on all 8 pages, and enable the mask
-    __builtin_memcpy(PRIV(g)->write_buffer, get_led_mask(g), IS31_LED_MASK_SIZE);
-    for(uint8_t i=0; i<8; i++) {
-        write_ram(g, i, 0, IS31_FRAME_SIZE);
-        gfxSleepMilliseconds(1);
-    }
-
-    // software shutdown disable (i.e. turn stuff on)
-    write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
-    gfxSleepMilliseconds(10);
-
-    // Finish Init
-    post_init_board(g);
-
-	/* Initialise the GDISP structure */
-	g->g.Width = GDISP_SCREEN_WIDTH;
-	g->g.Height = GDISP_SCREEN_HEIGHT;
-	g->g.Orientation = GDISP_ROTATE_0;
-	g->g.Powermode = powerOff;
-	g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
-	g->g.Contrast = GDISP_INITIAL_CONTRAST;
-	return TRUE;
-}
-
-#if GDISP_HARDWARE_FLUSH
-	LLDSPEC void gdisp_lld_flush(GDisplay *g) {
-		// Don't flush if we don't need it.
-		if (!(g->flags & GDISP_FLG_NEEDFLUSH))
-			return;
-
-		PRIV(g)->page++;
-		PRIV(g)->page %= 2;
-		// TODO: some smarter algorithm for this
-		// We should run only one physical page at a time
-		// This way we don't need to send so much data, and
-		// we could use slightly less memory
-		uint8_t* src = PRIV(g)->frame_buffer;
-		for (int y=0;y<GDISP_SCREEN_HEIGHT;y++) {
-		    for (int x=0;x<GDISP_SCREEN_WIDTH;x++) {
-		        uint8_t val = (uint16_t)*src * g->g.Backlight / 100;
-		        PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[val];
-		        ++src;
-		    }
-		}
-        write_ram(g, PRIV(g)->page, IS31_PWM_REG, IS31_PWM_SIZE);
-        gfxSleepMilliseconds(1);
-        write_register(g, IS31_FUNCTIONREG, IS31_REG_PICTDISP, PRIV(g)->page);
-
-		g->flags &= ~GDISP_FLG_NEEDFLUSH;
-	}
-#endif
-
-#if GDISP_HARDWARE_DRAWPIXEL
-	LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) {
-		coord_t		x, y;
-
-		switch(g->g.Orientation) {
-		default:
-		case GDISP_ROTATE_0:
-			x = g->p.x;
-			y = g->p.y;
-			break;
-		case GDISP_ROTATE_180:
-			x = GDISP_SCREEN_WIDTH-1 - g->p.x;
-			y = g->p.y;
-			break;
-		}
-		PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x] = gdispColor2Native(g->p.color);
-		g->flags |= GDISP_FLG_NEEDFLUSH;
-	}
-#endif
-
-#if GDISP_HARDWARE_PIXELREAD
-	LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
-		coord_t		x, y;
-
-		switch(g->g.Orientation) {
-		default:
-		case GDISP_ROTATE_0:
-			x = g->p.x;
-			y = g->p.y;
-			break;
-		case GDISP_ROTATE_180:
-			x = GDISP_SCREEN_WIDTH-1 - g->p.x;
-			y = g->p.y;
-			break;
-		}
-		return gdispNative2Color(PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x]);
-	}
-#endif
-
-#if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL
-	LLDSPEC void gdisp_lld_control(GDisplay *g) {
-		switch(g->p.x) {
-		case GDISP_CONTROL_POWER:
-			if (g->g.Powermode == (powermode_t)g->p.ptr)
-				return;
-			switch((powermode_t)g->p.ptr) {
-			case powerOff:
-			case powerSleep:
-			case powerDeepSleep:
-                write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
-				break;
-			case powerOn:
-                write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_ON);
-				break;
-			default:
-				return;
-			}
-			g->g.Powermode = (powermode_t)g->p.ptr;
-			return;
-
-		case GDISP_CONTROL_ORIENTATION:
-			if (g->g.Orientation == (orientation_t)g->p.ptr)
-				return;
-			switch((orientation_t)g->p.ptr) {
-			/* Rotation is handled by the drawing routines */
-			case GDISP_ROTATE_0:
-			case GDISP_ROTATE_180:
-				g->g.Height = GDISP_SCREEN_HEIGHT;
-				g->g.Width = GDISP_SCREEN_WIDTH;
-				break;
-			case GDISP_ROTATE_90:
-			case GDISP_ROTATE_270:
-				g->g.Height = GDISP_SCREEN_WIDTH;
-				g->g.Width = GDISP_SCREEN_HEIGHT;
-				break;
-			default:
-				return;
-			}
-			g->g.Orientation = (orientation_t)g->p.ptr;
-			return;
-
-		case GDISP_CONTROL_BACKLIGHT:
-		    if (g->g.Backlight == (unsigned)g->p.ptr)
-                return;
-		    unsigned val = (unsigned)g->p.ptr;
-		    g->g.Backlight = val > 100 ? 100 : val;
-            g->flags |= GDISP_FLG_NEEDFLUSH;
-		    return;
-		}
-	}
-#endif // GDISP_NEED_CONTROL
-
-#endif // GFX_USE_GDISP
diff --git a/keyboards/whitefox/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h b/keyboards/whitefox/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h
deleted file mode 100644
index bb28ad775e..0000000000
--- a/keyboards/whitefox/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _GDISP_LLD_CONFIG_H
-#define _GDISP_LLD_CONFIG_H
-
-#if GFX_USE_GDISP
-
-/*===========================================================================*/
-/* Driver hardware support.                                                  */
-/*===========================================================================*/
-
-#define GDISP_HARDWARE_FLUSH			TRUE		// This controller requires flushing
-#define GDISP_HARDWARE_DRAWPIXEL		TRUE
-#define GDISP_HARDWARE_PIXELREAD		TRUE
-#define GDISP_HARDWARE_CONTROL			TRUE
-
-#define GDISP_LLD_PIXELFORMAT			GDISP_PIXELFORMAT_GRAY256
-
-#endif	/* GFX_USE_GDISP */
-
-#endif	/* _GDISP_LLD_CONFIG_H */
diff --git a/keyboards/whitefox/rules.mk b/keyboards/whitefox/rules.mk
index fb34dbb9a4..4cf23a3900 100644
--- a/keyboards/whitefox/rules.mk
+++ b/keyboards/whitefox/rules.mk
@@ -70,4 +70,4 @@ CUSTOM_MATRIX = yes # Custom matrix file
 BACKLIGHT_ENABLE = yes
 VISUALIZER_ENABLE = yes
 
-include $(KEYBOARD_PATH)/drivers/gdisp/IS31FL3731C/driver.mk
+include $(TOP_DIR)/drivers/ugfx/gdisp/IS31FL3731C/driver.mk

From 630f065376618d94f4616687629aadb3ee91e562 Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Sun, 9 Jul 2017 13:37:24 +0300
Subject: [PATCH 06/17] Remove ergodox from gdisp driver names

---
 drivers/ugfx/gdisp/IS31FL3731C/driver.mk                      | 2 --
 drivers/ugfx/gdisp/is31fl3731c/driver.mk                      | 2 ++
 .../gdisp_IS31FL3731C.c => is31fl3731c/gdisp_is31fl3731c.c}   | 2 +-
 .../gdisp/{IS31FL3731C => is31fl3731c}/gdisp_lld_config.h     | 0
 drivers/ugfx/gdisp/st7565/driver.mk                           | 2 ++
 .../ugfx/gdisp/{st7565ergodox => st7565}/gdisp_lld_ST7565.c   | 2 +-
 .../ugfx/gdisp/{st7565ergodox => st7565}/gdisp_lld_config.h   | 0
 drivers/ugfx/gdisp/{st7565ergodox => st7565}/st7565.h         | 0
 drivers/ugfx/gdisp/st7565ergodox/driver.mk                    | 2 --
 keyboards/ergodox/infinity/gfxconf.h                          | 2 +-
 keyboards/ergodox/infinity/rules.mk                           | 4 ++--
 keyboards/whitefox/gfxconf.h                                  | 2 +-
 keyboards/whitefox/rules.mk                                   | 2 +-
 13 files changed, 11 insertions(+), 11 deletions(-)
 delete mode 100644 drivers/ugfx/gdisp/IS31FL3731C/driver.mk
 create mode 100644 drivers/ugfx/gdisp/is31fl3731c/driver.mk
 rename drivers/ugfx/gdisp/{IS31FL3731C/gdisp_IS31FL3731C.c => is31fl3731c/gdisp_is31fl3731c.c} (99%)
 rename drivers/ugfx/gdisp/{IS31FL3731C => is31fl3731c}/gdisp_lld_config.h (100%)
 create mode 100644 drivers/ugfx/gdisp/st7565/driver.mk
 rename drivers/ugfx/gdisp/{st7565ergodox => st7565}/gdisp_lld_ST7565.c (99%)
 rename drivers/ugfx/gdisp/{st7565ergodox => st7565}/gdisp_lld_config.h (100%)
 rename drivers/ugfx/gdisp/{st7565ergodox => st7565}/st7565.h (100%)
 delete mode 100644 drivers/ugfx/gdisp/st7565ergodox/driver.mk

diff --git a/drivers/ugfx/gdisp/IS31FL3731C/driver.mk b/drivers/ugfx/gdisp/IS31FL3731C/driver.mk
deleted file mode 100644
index 58a16d2096..0000000000
--- a/drivers/ugfx/gdisp/IS31FL3731C/driver.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-GFXINC += drivers/ugfx/gdisp/IS31FL3731C
-GFXSRC += drivers/ugfx/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
diff --git a/drivers/ugfx/gdisp/is31fl3731c/driver.mk b/drivers/ugfx/gdisp/is31fl3731c/driver.mk
new file mode 100644
index 0000000000..c9de62d1e8
--- /dev/null
+++ b/drivers/ugfx/gdisp/is31fl3731c/driver.mk
@@ -0,0 +1,2 @@
+GFXINC += drivers/ugfx/gdisp/is31fl3731c
+GFXSRC += drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
diff --git a/drivers/ugfx/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c b/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
similarity index 99%
rename from drivers/ugfx/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
rename to drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
index 2d78a5533c..c55dd0a0ea 100644
--- a/drivers/ugfx/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
+++ b/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
@@ -19,7 +19,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #if GFX_USE_GDISP
 
-#define GDISP_DRIVER_VMT			GDISPVMT_IS31FL3731C_ERGODOX
+#define GDISP_DRIVER_VMT			GDISPVMT_IS31FL3731C_QMK
 #include "gdisp_lld_config.h"
 #include "src/gdisp/gdisp_driver.h"
 
diff --git a/drivers/ugfx/gdisp/IS31FL3731C/gdisp_lld_config.h b/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h
similarity index 100%
rename from drivers/ugfx/gdisp/IS31FL3731C/gdisp_lld_config.h
rename to drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h
diff --git a/drivers/ugfx/gdisp/st7565/driver.mk b/drivers/ugfx/gdisp/st7565/driver.mk
new file mode 100644
index 0000000000..0190b60194
--- /dev/null
+++ b/drivers/ugfx/gdisp/st7565/driver.mk
@@ -0,0 +1,2 @@
+GFXINC += drivers/ugfx/gdisp/st7565
+GFXSRC += drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
diff --git a/drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_ST7565.c b/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
similarity index 99%
rename from drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_ST7565.c
rename to drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
index c576280a12..69c5747728 100644
--- a/drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_ST7565.c
+++ b/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
@@ -9,7 +9,7 @@
 
 #if GFX_USE_GDISP
 
-#define GDISP_DRIVER_VMT			GDISPVMT_ST7565_ERGODOX
+#define GDISP_DRIVER_VMT			GDISPVMT_ST7565_QMK
 #include "gdisp_lld_config.h"
 #include "src/gdisp/gdisp_driver.h"
 
diff --git a/drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_config.h b/drivers/ugfx/gdisp/st7565/gdisp_lld_config.h
similarity index 100%
rename from drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_config.h
rename to drivers/ugfx/gdisp/st7565/gdisp_lld_config.h
diff --git a/drivers/ugfx/gdisp/st7565ergodox/st7565.h b/drivers/ugfx/gdisp/st7565/st7565.h
similarity index 100%
rename from drivers/ugfx/gdisp/st7565ergodox/st7565.h
rename to drivers/ugfx/gdisp/st7565/st7565.h
diff --git a/drivers/ugfx/gdisp/st7565ergodox/driver.mk b/drivers/ugfx/gdisp/st7565ergodox/driver.mk
deleted file mode 100644
index 401e15e691..0000000000
--- a/drivers/ugfx/gdisp/st7565ergodox/driver.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-GFXINC += drivers/ugfx/gdisp/st7565ergodox
-GFXSRC += drivers/ugfx/gdisp/st7565ergodox/gdisp_lld_ST7565.c
diff --git a/keyboards/ergodox/infinity/gfxconf.h b/keyboards/ergodox/infinity/gfxconf.h
index 45b9f58580..a3fb5b0c78 100644
--- a/keyboards/ergodox/infinity/gfxconf.h
+++ b/keyboards/ergodox/infinity/gfxconf.h
@@ -130,7 +130,7 @@
 //#define GDISP_TOTAL_DISPLAYS		                 2
 
 #ifndef EMULATOR
-#define GDISP_DRIVER_LIST                            GDISPVMT_ST7565_ERGODOX, GDISPVMT_IS31FL3731C_ERGODOX
+#define GDISP_DRIVER_LIST                            GDISPVMT_ST7565_QMK, GDISPVMT_IS31FL3731C_QMK
 #else
 #define GDISP_DRIVER_LIST                            GDISPVMT_EMULATOR_LCD_ERGODOX, GDISPVMT_EMULATOR_LED_ERGODOX
 #endif
diff --git a/keyboards/ergodox/infinity/rules.mk b/keyboards/ergodox/infinity/rules.mk
index 9e22463637..18171560da 100644
--- a/keyboards/ergodox/infinity/rules.mk
+++ b/keyboards/ergodox/infinity/rules.mk
@@ -67,5 +67,5 @@ LCD_BACKLIGHT_ENABLE = yes
 MIDI_ENABLE = no
 RGBLIGHT_ENABLE = no
 
-include $(TOP_DIR)/drivers/ugfx/gdisp/st7565ergodox/driver.mk
-include $(TOP_DIR)/drivers/ugfx/gdisp/IS31FL3731C/driver.mk
\ No newline at end of file
+include $(TOP_DIR)/drivers/ugfx/gdisp/st7565/driver.mk
+include $(TOP_DIR)/drivers/ugfx/gdisp/is31fl3731c/driver.mk
\ No newline at end of file
diff --git a/keyboards/whitefox/gfxconf.h b/keyboards/whitefox/gfxconf.h
index 890317a0f4..27dfb94fbf 100644
--- a/keyboards/whitefox/gfxconf.h
+++ b/keyboards/whitefox/gfxconf.h
@@ -130,7 +130,7 @@
 //#define GDISP_TOTAL_DISPLAYS		                 2
 
 #ifndef EMULATOR
-#define GDISP_DRIVER_LIST                            GDISPVMT_IS31FL3731C_WHITEFOX
+#define GDISP_DRIVER_LIST                            GDISPVMT_IS31FL3731C_QMK
 #endif
 
     #ifdef GDISP_DRIVER_LIST
diff --git a/keyboards/whitefox/rules.mk b/keyboards/whitefox/rules.mk
index 4cf23a3900..c0effcb7b7 100644
--- a/keyboards/whitefox/rules.mk
+++ b/keyboards/whitefox/rules.mk
@@ -70,4 +70,4 @@ CUSTOM_MATRIX = yes # Custom matrix file
 BACKLIGHT_ENABLE = yes
 VISUALIZER_ENABLE = yes
 
-include $(TOP_DIR)/drivers/ugfx/gdisp/IS31FL3731C/driver.mk
+include $(TOP_DIR)/drivers/ugfx/gdisp/is31fl3731c/driver.mk

From 011ee294414800eaa18ce7c3f9447054d9eae765 Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Sun, 9 Jul 2017 13:50:18 +0300
Subject: [PATCH 07/17] Fixup mixed tabs/spaces

---
 .../gdisp/is31fl3731c/gdisp_is31fl3731c.c     | 244 +++++++++---------
 .../ugfx/gdisp/is31fl3731c/gdisp_lld_config.h |  14 +-
 drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c  |  36 +--
 drivers/ugfx/gdisp/st7565/gdisp_lld_config.h  |   6 +-
 keyboards/ergodox/infinity/board_ST7565.h     |   6 +-
 5 files changed, 153 insertions(+), 153 deletions(-)

diff --git a/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c b/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
index c55dd0a0ea..0691dbfbf3 100644
--- a/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
+++ b/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
@@ -19,7 +19,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #if GFX_USE_GDISP
 
-#define GDISP_DRIVER_VMT			GDISPVMT_IS31FL3731C_QMK
+#define GDISP_DRIVER_VMT            GDISPVMT_IS31FL3731C_QMK
 #include "gdisp_lld_config.h"
 #include "src/gdisp/gdisp_driver.h"
 
@@ -34,26 +34,26 @@ extern const uint8_t CIE1931_CURVE[];
 /*===========================================================================*/
 
 #ifndef GDISP_SCREEN_HEIGHT
-	#define GDISP_SCREEN_HEIGHT		9
+    #define GDISP_SCREEN_HEIGHT       9
 #endif
 #ifndef GDISP_SCREEN_WIDTH
-	#define GDISP_SCREEN_WIDTH		16
+    #define GDISP_SCREEN_WIDTH        16
 #endif
 #ifndef GDISP_INITIAL_CONTRAST
-	#define GDISP_INITIAL_CONTRAST	0
+    #define GDISP_INITIAL_CONTRAST    0
 #endif
 #ifndef GDISP_INITIAL_BACKLIGHT
-	#define GDISP_INITIAL_BACKLIGHT	0
+    #define GDISP_INITIAL_BACKLIGHT   0
 #endif
 
-#define GDISP_FLG_NEEDFLUSH			(GDISP_FLG_DRIVER<<0)
+#define GDISP_FLG_NEEDFLUSH           (GDISP_FLG_DRIVER<<0)
 
 #define IS31_ADDR_DEFAULT 0x74
 
-#define IS31_REG_CONFIG  0x00
+#define IS31_REG_CONFIG   0x00
 // bits in reg
-#define IS31_REG_CONFIG_PICTUREMODE 0x00
-#define IS31_REG_CONFIG_AUTOPLAYMODE 0x08
+#define IS31_REG_CONFIG_PICTUREMODE   0x00
+#define IS31_REG_CONFIG_AUTOPLAYMODE  0x08
 #define IS31_REG_CONFIG_AUDIOPLAYMODE 0x18
 // D2:D0 bits are starting frame for autoplay mode
 
@@ -144,14 +144,14 @@ static GFXINLINE void write_ram(GDisplay *g, uint8_t page, uint16_t offset, uint
 }
 
 LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
-	// The private area is the display surface.
-	g->priv = gfxAlloc(sizeof(PrivData));
+    // The private area is the display surface.
+    g->priv = gfxAlloc(sizeof(PrivData));
     __builtin_memset(PRIV(g), 0, sizeof(PrivData));
-	PRIV(g)->page = 0;
+    PRIV(g)->page = 0;
 
-	// Initialise the board interface
-	init_board(g);
-	gfxSleepMilliseconds(10);
+    // Initialise the board interface
+    init_board(g);
+    gfxSleepMilliseconds(10);
 
     // zero function page, all registers (assuming full_page is all zeroes)
     write_ram(g, IS31_FUNCTIONREG, 0, IS31_FUNCTIONREG_SIZE);
@@ -179,134 +179,134 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
     // Finish Init
     post_init_board(g);
 
-	/* Initialise the GDISP structure */
-	g->g.Width = GDISP_SCREEN_WIDTH;
-	g->g.Height = GDISP_SCREEN_HEIGHT;
-	g->g.Orientation = GDISP_ROTATE_0;
-	g->g.Powermode = powerOff;
-	g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
-	g->g.Contrast = GDISP_INITIAL_CONTRAST;
-	return TRUE;
+    /* Initialise the GDISP structure */
+    g->g.Width = GDISP_SCREEN_WIDTH;
+    g->g.Height = GDISP_SCREEN_HEIGHT;
+    g->g.Orientation = GDISP_ROTATE_0;
+    g->g.Powermode = powerOff;
+    g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
+    g->g.Contrast = GDISP_INITIAL_CONTRAST;
+    return TRUE;
 }
 
 #if GDISP_HARDWARE_FLUSH
-	LLDSPEC void gdisp_lld_flush(GDisplay *g) {
-		// Don't flush if we don't need it.
-		if (!(g->flags & GDISP_FLG_NEEDFLUSH))
-			return;
+    LLDSPEC void gdisp_lld_flush(GDisplay *g) {
+        // Don't flush if we don't need it.
+        if (!(g->flags & GDISP_FLG_NEEDFLUSH))
+            return;
 
-		PRIV(g)->page++;
-		PRIV(g)->page %= 2;
-		// TODO: some smarter algorithm for this
-		// We should run only one physical page at a time
-		// This way we don't need to send so much data, and
-		// we could use slightly less memory
-		uint8_t* src = PRIV(g)->frame_buffer;
-		for (int y=0;y<GDISP_SCREEN_HEIGHT;y++) {
-		    for (int x=0;x<GDISP_SCREEN_WIDTH;x++) {
-		        uint8_t val = (uint16_t)*src * g->g.Backlight / 100;
-		        PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[val];
-		        ++src;
-		    }
-		}
+        PRIV(g)->page++;
+        PRIV(g)->page %= 2;
+        // TODO: some smarter algorithm for this
+        // We should run only one physical page at a time
+        // This way we don't need to send so much data, and
+        // we could use slightly less memory
+        uint8_t* src = PRIV(g)->frame_buffer;
+        for (int y=0;y<GDISP_SCREEN_HEIGHT;y++) {
+            for (int x=0;x<GDISP_SCREEN_WIDTH;x++) {
+                uint8_t val = (uint16_t)*src * g->g.Backlight / 100;
+                PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[val];
+                ++src;
+            }
+        }
         write_ram(g, PRIV(g)->page, IS31_PWM_REG, IS31_PWM_SIZE);
         gfxSleepMilliseconds(1);
         write_register(g, IS31_FUNCTIONREG, IS31_REG_PICTDISP, PRIV(g)->page);
 
-		g->flags &= ~GDISP_FLG_NEEDFLUSH;
-	}
+        g->flags &= ~GDISP_FLG_NEEDFLUSH;
+    }
 #endif
 
 #if GDISP_HARDWARE_DRAWPIXEL
-	LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) {
-		coord_t		x, y;
+    LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) {
+        coord_t        x, y;
 
-		switch(g->g.Orientation) {
-		default:
-		case GDISP_ROTATE_0:
-			x = g->p.x;
-			y = g->p.y;
-			break;
-		case GDISP_ROTATE_180:
-			x = GDISP_SCREEN_WIDTH-1 - g->p.x;
-			y = g->p.y;
-			break;
-		}
-		PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x] = gdispColor2Native(g->p.color);
-		g->flags |= GDISP_FLG_NEEDFLUSH;
-	}
+        switch(g->g.Orientation) {
+        default:
+        case GDISP_ROTATE_0:
+            x = g->p.x;
+            y = g->p.y;
+            break;
+        case GDISP_ROTATE_180:
+            x = GDISP_SCREEN_WIDTH-1 - g->p.x;
+            y = g->p.y;
+            break;
+        }
+        PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x] = gdispColor2Native(g->p.color);
+        g->flags |= GDISP_FLG_NEEDFLUSH;
+    }
 #endif
 
 #if GDISP_HARDWARE_PIXELREAD
-	LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
-		coord_t		x, y;
+    LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
+        coord_t        x, y;
 
-		switch(g->g.Orientation) {
-		default:
-		case GDISP_ROTATE_0:
-			x = g->p.x;
-			y = g->p.y;
-			break;
-		case GDISP_ROTATE_180:
-			x = GDISP_SCREEN_WIDTH-1 - g->p.x;
-			y = g->p.y;
-			break;
-		}
-		return gdispNative2Color(PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x]);
-	}
+        switch(g->g.Orientation) {
+        default:
+        case GDISP_ROTATE_0:
+            x = g->p.x;
+            y = g->p.y;
+            break;
+        case GDISP_ROTATE_180:
+            x = GDISP_SCREEN_WIDTH-1 - g->p.x;
+            y = g->p.y;
+            break;
+        }
+        return gdispNative2Color(PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x]);
+    }
 #endif
 
 #if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL
-	LLDSPEC void gdisp_lld_control(GDisplay *g) {
-		switch(g->p.x) {
-		case GDISP_CONTROL_POWER:
-			if (g->g.Powermode == (powermode_t)g->p.ptr)
-				return;
-			switch((powermode_t)g->p.ptr) {
-			case powerOff:
-			case powerSleep:
-			case powerDeepSleep:
-                write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
-				break;
-			case powerOn:
-                write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_ON);
-				break;
-			default:
-				return;
-			}
-			g->g.Powermode = (powermode_t)g->p.ptr;
-			return;
-
-		case GDISP_CONTROL_ORIENTATION:
-			if (g->g.Orientation == (orientation_t)g->p.ptr)
-				return;
-			switch((orientation_t)g->p.ptr) {
-			/* Rotation is handled by the drawing routines */
-			case GDISP_ROTATE_0:
-			case GDISP_ROTATE_180:
-				g->g.Height = GDISP_SCREEN_HEIGHT;
-				g->g.Width = GDISP_SCREEN_WIDTH;
-				break;
-			case GDISP_ROTATE_90:
-			case GDISP_ROTATE_270:
-				g->g.Height = GDISP_SCREEN_WIDTH;
-				g->g.Width = GDISP_SCREEN_HEIGHT;
-				break;
-			default:
-				return;
-			}
-			g->g.Orientation = (orientation_t)g->p.ptr;
-			return;
-
-		case GDISP_CONTROL_BACKLIGHT:
-		    if (g->g.Backlight == (unsigned)g->p.ptr)
+    LLDSPEC void gdisp_lld_control(GDisplay *g) {
+        switch(g->p.x) {
+        case GDISP_CONTROL_POWER:
+            if (g->g.Powermode == (powermode_t)g->p.ptr)
                 return;
-		    unsigned val = (unsigned)g->p.ptr;
-		    g->g.Backlight = val > 100 ? 100 : val;
+            switch((powermode_t)g->p.ptr) {
+            case powerOff:
+            case powerSleep:
+            case powerDeepSleep:
+                write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
+                break;
+            case powerOn:
+                write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_ON);
+                break;
+            default:
+                return;
+            }
+            g->g.Powermode = (powermode_t)g->p.ptr;
+            return;
+
+        case GDISP_CONTROL_ORIENTATION:
+            if (g->g.Orientation == (orientation_t)g->p.ptr)
+                return;
+            switch((orientation_t)g->p.ptr) {
+            /* Rotation is handled by the drawing routines */
+            case GDISP_ROTATE_0:
+            case GDISP_ROTATE_180:
+                g->g.Height = GDISP_SCREEN_HEIGHT;
+                g->g.Width = GDISP_SCREEN_WIDTH;
+                break;
+            case GDISP_ROTATE_90:
+            case GDISP_ROTATE_270:
+                g->g.Height = GDISP_SCREEN_WIDTH;
+                g->g.Width = GDISP_SCREEN_HEIGHT;
+                break;
+            default:
+                return;
+            }
+            g->g.Orientation = (orientation_t)g->p.ptr;
+            return;
+
+        case GDISP_CONTROL_BACKLIGHT:
+            if (g->g.Backlight == (unsigned)g->p.ptr)
+                return;
+            unsigned val = (unsigned)g->p.ptr;
+            g->g.Backlight = val > 100 ? 100 : val;
             g->flags |= GDISP_FLG_NEEDFLUSH;
-		    return;
-		}
-	}
+            return;
+        }
+    }
 #endif // GDISP_NEED_CONTROL
 
 #endif // GFX_USE_GDISP
diff --git a/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h b/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h
index bb28ad775e..588d688cf6 100644
--- a/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h
+++ b/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h
@@ -24,13 +24,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* Driver hardware support.                                                  */
 /*===========================================================================*/
 
-#define GDISP_HARDWARE_FLUSH			TRUE		// This controller requires flushing
-#define GDISP_HARDWARE_DRAWPIXEL		TRUE
-#define GDISP_HARDWARE_PIXELREAD		TRUE
-#define GDISP_HARDWARE_CONTROL			TRUE
+#define GDISP_HARDWARE_FLUSH            TRUE        // This controller requires flushing
+#define GDISP_HARDWARE_DRAWPIXEL        TRUE
+#define GDISP_HARDWARE_PIXELREAD        TRUE
+#define GDISP_HARDWARE_CONTROL          TRUE
 
-#define GDISP_LLD_PIXELFORMAT			GDISP_PIXELFORMAT_GRAY256
+#define GDISP_LLD_PIXELFORMAT           GDISP_PIXELFORMAT_GRAY256
 
-#endif	/* GFX_USE_GDISP */
+#endif    /* GFX_USE_GDISP */
 
-#endif	/* _GDISP_LLD_CONFIG_H */
+#endif    /* _GDISP_LLD_CONFIG_H */
diff --git a/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c b/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
index 69c5747728..55552cb795 100644
--- a/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
+++ b/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
@@ -9,7 +9,7 @@
 
 #if GFX_USE_GDISP
 
-#define GDISP_DRIVER_VMT			GDISPVMT_ST7565_QMK
+#define GDISP_DRIVER_VMT            GDISPVMT_ST7565_QMK
 #include "gdisp_lld_config.h"
 #include "src/gdisp/gdisp_driver.h"
 
@@ -20,24 +20,24 @@
 /*===========================================================================*/
 
 #ifndef GDISP_SCREEN_HEIGHT
-#define GDISP_SCREEN_HEIGHT		32
+#define GDISP_SCREEN_HEIGHT         32
 #endif
 #ifndef GDISP_SCREEN_WIDTH
-#define GDISP_SCREEN_WIDTH		128
+#define GDISP_SCREEN_WIDTH          128
 #endif
 #ifndef GDISP_INITIAL_CONTRAST
-#define GDISP_INITIAL_CONTRAST	35
+#define GDISP_INITIAL_CONTRAST      35
 #endif
 #ifndef GDISP_INITIAL_BACKLIGHT
-#define GDISP_INITIAL_BACKLIGHT	100
+#define GDISP_INITIAL_BACKLIGHT     100
 #endif
 
-#define GDISP_FLG_NEEDFLUSH			(GDISP_FLG_DRIVER<<0)
+#define GDISP_FLG_NEEDFLUSH         (GDISP_FLG_DRIVER<<0)
 
 #include "st7565.h"
 
 /*===========================================================================*/
-/* Driver config defaults for backward compatibility.               	     */
+/* Driver config defaults for backward compatibility.                        */
 /*===========================================================================*/
 #ifndef ST7565_LCD_BIAS
 #define ST7565_LCD_BIAS         ST7565_LCD_BIAS_7
@@ -65,7 +65,7 @@ typedef struct{
 
 // Some common routines and macros
 #define PRIV(g)                         ((PrivData*)g->priv)
-#define RAM(g)							(PRIV(g)->ram)
+#define RAM(g)                          (PRIV(g)->ram)
 
 static GFXINLINE void write_cmd(GDisplay* g, uint8_t cmd) {
     PRIV(g)->data[PRIV(g)->data_pos++] = cmd;
@@ -76,15 +76,15 @@ static GFXINLINE void flush_cmd(GDisplay* g) {
     PRIV(g)->data_pos = 0;
 }
 
-#define write_cmd2(g, cmd1, cmd2)		{ write_cmd(g, cmd1); write_cmd(g, cmd2); }
-#define write_cmd3(g, cmd1, cmd2, cmd3)	{ write_cmd(g, cmd1); write_cmd(g, cmd2); write_cmd(g, cmd3); }
+#define write_cmd2(g, cmd1, cmd2)        { write_cmd(g, cmd1); write_cmd(g, cmd2); }
+#define write_cmd3(g, cmd1, cmd2, cmd3)  { write_cmd(g, cmd1); write_cmd(g, cmd2); write_cmd(g, cmd3); }
 
 // Some common routines and macros
-#define delay(us)			gfxSleepMicroseconds(us)
-#define delay_ms(ms)		gfxSleepMilliseconds(ms)
+#define delay(us)           gfxSleepMicroseconds(us)
+#define delay_ms(ms)        gfxSleepMilliseconds(ms)
 
-#define xyaddr(x, y)		((x) + ((y)>>3)*GDISP_SCREEN_WIDTH)
-#define xybit(y)			(1<<((y)&7))
+#define xyaddr(x, y)        ((x) + ((y)>>3)*GDISP_SCREEN_WIDTH)
+#define xybit(y)            (1<<((y)&7))
 
 /*===========================================================================*/
 /* Driver exported functions.                                                */
@@ -150,7 +150,7 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
 
 #if GDISP_HARDWARE_FLUSH
 LLDSPEC void gdisp_lld_flush(GDisplay *g) {
-    unsigned	p;
+    unsigned    p;
 
     // Don't flush if we don't need it.
     if (!(g->flags & GDISP_FLG_NEEDFLUSH))
@@ -181,7 +181,7 @@ LLDSPEC void gdisp_lld_flush(GDisplay *g) {
 
 #if GDISP_HARDWARE_DRAWPIXEL
 LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) {
-    coord_t		x, y;
+    coord_t        x, y;
 
     switch(g->g.Orientation) {
     default:
@@ -212,7 +212,7 @@ LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) {
 
 #if GDISP_HARDWARE_PIXELREAD
 LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
-    coord_t		x, y;
+    coord_t        x, y;
 
     switch(g->g.Orientation) {
     default:
@@ -257,7 +257,7 @@ LLDSPEC void gdisp_lld_blit_area(GDisplay *g) {
             else {
                 *dst &= ~xybit(dsty);
             }
-			dstx++;
+            dstx++;
             srcbit++;
         }
     }
diff --git a/drivers/ugfx/gdisp/st7565/gdisp_lld_config.h b/drivers/ugfx/gdisp/st7565/gdisp_lld_config.h
index 2b66a877c8..4446bd38bc 100644
--- a/drivers/ugfx/gdisp/st7565/gdisp_lld_config.h
+++ b/drivers/ugfx/gdisp/st7565/gdisp_lld_config.h
@@ -14,7 +14,7 @@
 /* Driver hardware support.                                                  */
 /*===========================================================================*/
 
-#define GDISP_HARDWARE_FLUSH            TRUE		// This controller requires flushing
+#define GDISP_HARDWARE_FLUSH            TRUE        // This controller requires flushing
 #define GDISP_HARDWARE_DRAWPIXEL        TRUE
 #define GDISP_HARDWARE_PIXELREAD        TRUE
 #define GDISP_HARDWARE_CONTROL          TRUE
@@ -22,6 +22,6 @@
 
 #define GDISP_LLD_PIXELFORMAT           GDISP_PIXELFORMAT_MONO
 
-#endif	/* GFX_USE_GDISP */
+#endif    /* GFX_USE_GDISP */
 
-#endif	/* _GDISP_LLD_CONFIG_H */
+#endif    /* _GDISP_LLD_CONFIG_H */
diff --git a/keyboards/ergodox/infinity/board_ST7565.h b/keyboards/ergodox/infinity/board_ST7565.h
index 9650ffb440..9ab636c95d 100644
--- a/keyboards/ergodox/infinity/board_ST7565.h
+++ b/keyboards/ergodox/infinity/board_ST7565.h
@@ -83,7 +83,7 @@ static GFXINLINE void init_board(GDisplay *g) {
 }
 
 static GFXINLINE void post_init_board(GDisplay *g) {
-	(void) g;
+    (void) g;
 }
 
 static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) {
@@ -106,8 +106,8 @@ static GFXINLINE void enter_cmd_mode(GDisplay *g) {
 
 
 static GFXINLINE void write_data(GDisplay *g, uint8_t* data, uint16_t length) {
-	(void) g;
-	spiSend(&SPID1, length, data);
+    (void) g;
+    spiSend(&SPID1, length, data);
 }
 
 #endif /* _GDISP_LLD_BOARD_H */

From 8a962f7b271e965fa69eeb9aeab23a5969669984 Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Sun, 9 Jul 2017 14:03:36 +0300
Subject: [PATCH 08/17] Define visualizer thread priority by default

---
 keyboards/ergodox/infinity/config.h | 2 --
 keyboards/whitefox/config.h         | 4 +---
 quantum/visualizer/visualizer.c     | 3 ++-
 3 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/keyboards/ergodox/infinity/config.h b/keyboards/ergodox/infinity/config.h
index 25cc8af0fc..fa157a893f 100644
--- a/keyboards/ergodox/infinity/config.h
+++ b/keyboards/ergodox/infinity/config.h
@@ -51,8 +51,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #define SERIAL_LINK_BAUD 562500
 #define SERIAL_LINK_THREAD_PRIORITY (NORMALPRIO - 1)
-// The visualizer needs gfx thread priorities
-#define VISUALIZER_THREAD_PRIORITY (NORMAL_PRIORITY - 2)
 
 #define VISUALIZER_USER_DATA_SIZE 16
 
diff --git a/keyboards/whitefox/config.h b/keyboards/whitefox/config.h
index 08de9b9aa8..76040bd744 100644
--- a/keyboards/whitefox/config.h
+++ b/keyboards/whitefox/config.h
@@ -87,6 +87,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define LED_DISPLAY_NUMBER 0
 
 #define LED_NUM_ROWS 5
-#define LED_NUM_COLS 16
-
-#define VISUALIZER_THREAD_PRIORITY (NORMAL_PRIORITY - 2)
+#define LED_NUM_COLS 16
\ No newline at end of file
diff --git a/quantum/visualizer/visualizer.c b/quantum/visualizer/visualizer.c
index cc99d1e3b6..68b86f590c 100644
--- a/quantum/visualizer/visualizer.c
+++ b/quantum/visualizer/visualizer.c
@@ -52,7 +52,8 @@ SOFTWARE.
 
 // Define this in config.h
 #ifndef VISUALIZER_THREAD_PRIORITY
-#define "Visualizer thread priority not defined"
+// The visualizer needs gfx thread priorities
+#define VISUALIZER_THREAD_PRIORITY (NORMAL_PRIORITY - 2)
 #endif
 
 static visualizer_keyboard_status_t current_status = {

From f3c113fb5a5ea89762b5c51d5d182093f6fb999d Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Sun, 9 Jul 2017 14:31:38 +0300
Subject: [PATCH 09/17] Shared gfxconf

---
 keyboards/ergodox/infinity/gfxconf.h | 300 +------------------------
 keyboards/whitefox/gfxconf.h         | 300 +------------------------
 quantum/visualizer/common_gfxconf.h  | 325 +++++++++++++++++++++++++++
 quantum/visualizer/visualizer.mk     |   3 +
 4 files changed, 330 insertions(+), 598 deletions(-)
 create mode 100644 quantum/visualizer/common_gfxconf.h

diff --git a/keyboards/ergodox/infinity/gfxconf.h b/keyboards/ergodox/infinity/gfxconf.h
index a3fb5b0c78..0d017aea97 100644
--- a/keyboards/ergodox/infinity/gfxconf.h
+++ b/keyboards/ergodox/infinity/gfxconf.h
@@ -22,310 +22,12 @@
 #ifndef _GFXCONF_H
 #define _GFXCONF_H
 
-
-///////////////////////////////////////////////////////////////////////////
-// GOS - One of these must be defined, preferably in your Makefile       //
-///////////////////////////////////////////////////////////////////////////
-//#define GFX_USE_OS_CHIBIOS                           TRUE
-//#define GFX_USE_OS_FREERTOS                          FALSE
-//    #define GFX_FREERTOS_USE_TRACE                   FALSE
-//#define GFX_USE_OS_WIN32                             FALSE
-//#define GFX_USE_OS_LINUX                             FALSE
-//#define GFX_USE_OS_OSX                               FALSE
-//#define GFX_USE_OS_ECOS                              FALSE
-//#define GFX_USE_OS_RAWRTOS                           FALSE
-//#define GFX_USE_OS_ARDUINO                           FALSE
-//#define GFX_USE_OS_KEIL                              FALSE
-//#define GFX_USE_OS_CMSIS                             FALSE
-//#define GFX_USE_OS_RAW32                             FALSE
-//    #define INTERRUPTS_OFF()                         optional_code
-//    #define INTERRUPTS_ON()                          optional_code
-// These are not defined by default for some reason
-#define GOS_NEED_X_THREADS	FALSE
-#define GOS_NEED_X_HEAP		FALSE
-
-// Options that (should where relevant) apply to all operating systems
-    #define GFX_NO_INLINE                            FALSE
-//    #define GFX_COMPILER                             GFX_COMPILER_UNKNOWN
-//    #define GFX_CPU                                  GFX_CPU_UNKNOWN
-//    #define GFX_OS_HEAP_SIZE                         0
-//    #define GFX_OS_NO_INIT                           FALSE
-//    #define GFX_OS_INIT_NO_WARNING                   FALSE
-//    #define GFX_OS_PRE_INIT_FUNCTION                 myHardwareInitRoutine
-//    #define GFX_OS_EXTRA_INIT_FUNCTION               myOSInitRoutine
-//    #define GFX_OS_EXTRA_DEINIT_FUNCTION             myOSDeInitRoutine
-
-
-///////////////////////////////////////////////////////////////////////////
-// GDISP                                                                 //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GDISP                                TRUE
-
-//#define GDISP_NEED_AUTOFLUSH                         FALSE
-//#define GDISP_NEED_TIMERFLUSH                        FALSE
-//#define GDISP_NEED_VALIDATION                        TRUE
-//#define GDISP_NEED_CLIP                              TRUE
-#define GDISP_NEED_CIRCLE                            TRUE
-#define GDISP_NEED_ELLIPSE                           TRUE
-#define GDISP_NEED_ARC                               TRUE
-#define GDISP_NEED_ARCSECTORS                        TRUE
-#define GDISP_NEED_CONVEX_POLYGON                    TRUE
-//#define GDISP_NEED_SCROLL                            FALSE
-#define GDISP_NEED_PIXELREAD                         TRUE
-#define GDISP_NEED_CONTROL                           TRUE
-//#define GDISP_NEED_QUERY                             FALSE
-//#define GDISP_NEED_MULTITHREAD                       FALSE
-//#define GDISP_NEED_STREAMING                         FALSE
-#define GDISP_NEED_TEXT                              TRUE
-//    #define GDISP_NEED_TEXT_WORDWRAP                 FALSE
-//    #define GDISP_NEED_ANTIALIAS                     FALSE
-//    #define GDISP_NEED_UTF8                          FALSE
-    #define GDISP_NEED_TEXT_KERNING                  TRUE
-//    #define GDISP_INCLUDE_FONT_UI1                   FALSE
-//    #define GDISP_INCLUDE_FONT_UI2                   FALSE		// The smallest preferred font.
-//    #define GDISP_INCLUDE_FONT_LARGENUMBERS          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS10          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS12          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS16          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS20          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS24          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS32          FALSE
-    #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12      TRUE
-//    #define GDISP_INCLUDE_FONT_FIXED_10X20           FALSE
-//    #define GDISP_INCLUDE_FONT_FIXED_7X14            FALSE
-    #define GDISP_INCLUDE_FONT_FIXED_5X8             TRUE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA       FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA       FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS20_AA       FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA       FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA       FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA   FALSE
-//    #define GDISP_INCLUDE_USER_FONTS                 FALSE
-
-//#define GDISP_NEED_IMAGE                             FALSE
-//    #define GDISP_NEED_IMAGE_NATIVE                  FALSE
-//    #define GDISP_NEED_IMAGE_GIF                     FALSE
-//    #define GDISP_NEED_IMAGE_BMP                     FALSE
-//        #define GDISP_NEED_IMAGE_BMP_1               FALSE
-//        #define GDISP_NEED_IMAGE_BMP_4               FALSE
-//        #define GDISP_NEED_IMAGE_BMP_4_RLE           FALSE
-//        #define GDISP_NEED_IMAGE_BMP_8               FALSE
-//        #define GDISP_NEED_IMAGE_BMP_8_RLE           FALSE
-//        #define GDISP_NEED_IMAGE_BMP_16              FALSE
-//        #define GDISP_NEED_IMAGE_BMP_24              FALSE
-//        #define GDISP_NEED_IMAGE_BMP_32              FALSE
-//    #define GDISP_NEED_IMAGE_JPG                     FALSE
-//    #define GDISP_NEED_IMAGE_PNG                     FALSE
-//    #define GDISP_NEED_IMAGE_ACCOUNTING              FALSE
-#ifdef EMULATOR
-#define GDISP_NEED_PIXMAP                            TRUE
-#endif
-//    #define GDISP_NEED_PIXMAP_IMAGE                  FALSE
-
-//#define GDISP_DEFAULT_ORIENTATION                    GDISP_ROTATE_LANDSCAPE    // If not defined the native hardware orientation is used.
-//#define GDISP_LINEBUF_SIZE                           128
-//#define GDISP_STARTUP_COLOR                          Black
-#define GDISP_NEED_STARTUP_LOGO                      FALSE
-
-//#define GDISP_TOTAL_DISPLAYS		                 2
-
 #ifndef EMULATOR
 #define GDISP_DRIVER_LIST                            GDISPVMT_ST7565_QMK, GDISPVMT_IS31FL3731C_QMK
 #else
 #define GDISP_DRIVER_LIST                            GDISPVMT_EMULATOR_LCD_ERGODOX, GDISPVMT_EMULATOR_LED_ERGODOX
 #endif
 
-    #ifdef GDISP_DRIVER_LIST
-        // For code and speed optimization define as TRUE or FALSE if all controllers have the same capability
-        #define GDISP_HARDWARE_STREAM_WRITE          FALSE
-        #define GDISP_HARDWARE_STREAM_READ           FALSE
-        #define GDISP_HARDWARE_STREAM_POS            FALSE
-        #define GDISP_HARDWARE_DRAWPIXEL             TRUE
-        #define GDISP_HARDWARE_CLEARS                FALSE
-        #define GDISP_HARDWARE_FILLS                 FALSE
-        //#define GDISP_HARDWARE_BITFILLS              FALSE
-        #define GDISP_HARDWARE_SCROLL                FALSE
-        #define GDISP_HARDWARE_PIXELREAD             TRUE
-        #define GDISP_HARDWARE_CONTROL               TRUE
-        #define GDISP_HARDWARE_QUERY                 FALSE
-        #define GDISP_HARDWARE_CLIP                  FALSE
-
-        #define GDISP_PIXELFORMAT                    GDISP_PIXELFORMAT_RGB888
-    #endif
-
-// The custom format is not defined for some reason, so define it as error
-// so we don't get compiler warnings
-#define GDISP_PIXELFORMAT_CUSTOM GDISP_PIXELFORMAT_ERROR
-
-#define GDISP_USE_GFXNET                             FALSE
-//    #define GDISP_GFXNET_PORT                        13001
-//    #define GDISP_GFXNET_CUSTOM_LWIP_STARTUP         FALSE
-//    #define GDISP_DONT_WAIT_FOR_NET_DISPLAY          FALSE
-//    #define GDISP_GFXNET_UNSAFE_SOCKETS              FALSE
-
-
-///////////////////////////////////////////////////////////////////////////
-// GWIN                                                                  //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GWIN                                 FALSE
-
-//#define GWIN_NEED_WINDOWMANAGER                      FALSE
-//    #define GWIN_REDRAW_IMMEDIATE                    FALSE
-//    #define GWIN_REDRAW_SINGLEOP                     FALSE
-//    #define GWIN_NEED_FLASHING                       FALSE
-//        #define GWIN_FLASHING_PERIOD                 250
-
-//#define GWIN_NEED_CONSOLE                            FALSE
-//    #define GWIN_CONSOLE_USE_HISTORY                 FALSE
-//        #define GWIN_CONSOLE_HISTORY_AVERAGING       FALSE
-//        #define GWIN_CONSOLE_HISTORY_ATCREATE        FALSE
-//    #define GWIN_CONSOLE_ESCSEQ                      FALSE
-//    #define GWIN_CONSOLE_USE_BASESTREAM              FALSE
-//    #define GWIN_CONSOLE_USE_FLOAT                   FALSE
-//#define GWIN_NEED_GRAPH                              FALSE
-//#define GWIN_NEED_GL3D                               FALSE
-
-//#define GWIN_NEED_WIDGET                             FALSE
-//#define GWIN_FOCUS_HIGHLIGHT_WIDTH                   1
-//    #define GWIN_NEED_LABEL                          FALSE
-//        #define GWIN_LABEL_ATTRIBUTE                 FALSE
-//    #define GWIN_NEED_BUTTON                         FALSE
-//        #define GWIN_BUTTON_LAZY_RELEASE             FALSE
-//    #define GWIN_NEED_SLIDER                         FALSE
-//        #define GWIN_SLIDER_NOSNAP                   FALSE
-//        #define GWIN_SLIDER_DEAD_BAND                5
-//        #define GWIN_SLIDER_TOGGLE_INC               20
-//    #define GWIN_NEED_CHECKBOX                       FALSE
-//    #define GWIN_NEED_IMAGE                          FALSE
-//        #define GWIN_NEED_IMAGE_ANIMATION            FALSE
-//    #define GWIN_NEED_RADIO                          FALSE
-//    #define GWIN_NEED_LIST                           FALSE
-//        #define GWIN_NEED_LIST_IMAGES                FALSE
-//    #define GWIN_NEED_PROGRESSBAR                    FALSE
-//        #define GWIN_PROGRESSBAR_AUTO                FALSE
-//    #define GWIN_NEED_KEYBOARD                       FALSE
-//        #define GWIN_KEYBOARD_DEFAULT_LAYOUT         VirtualKeyboard_English1
-//        #define GWIN_NEED_KEYBOARD_ENGLISH1          TRUE
-//    #define GWIN_NEED_TEXTEDIT                       FALSE
-//    #define GWIN_FLAT_STYLING                        FALSE
-//    #define GWIN_WIDGET_TAGS                         FALSE
-
-//#define GWIN_NEED_CONTAINERS                         FALSE
-//    #define GWIN_NEED_CONTAINER                      FALSE
-//    #define GWIN_NEED_FRAME                          FALSE
-//    #define GWIN_NEED_TABSET                         FALSE
-//        #define GWIN_TABSET_TABHEIGHT                18
-
-
-///////////////////////////////////////////////////////////////////////////
-// GEVENT                                                                //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GEVENT                               TRUE
-
-//#define GEVENT_ASSERT_NO_RESOURCE                    FALSE
-//#define GEVENT_MAXIMUM_SIZE                          32
-//#define GEVENT_MAX_SOURCE_LISTENERS                  32
-
-
-///////////////////////////////////////////////////////////////////////////
-// GTIMER                                                                //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GTIMER                               FALSE
-
-//#define GTIMER_THREAD_PRIORITY                       HIGH_PRIORITY
-//#define GTIMER_THREAD_WORKAREA_SIZE                  2048
-
-
-///////////////////////////////////////////////////////////////////////////
-// GQUEUE                                                                //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GQUEUE                               FALSE
-
-//#define GQUEUE_NEED_ASYNC                            FALSE
-//#define GQUEUE_NEED_GSYNC                            FALSE
-//#define GQUEUE_NEED_FSYNC                            FALSE
-//#define GQUEUE_NEED_BUFFERS                          FALSE
-
-///////////////////////////////////////////////////////////////////////////
-// GINPUT                                                                //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GINPUT                               FALSE
-
-//#define GINPUT_NEED_MOUSE                            FALSE
-//    #define GINPUT_TOUCH_STARTRAW                    FALSE
-//    #define GINPUT_TOUCH_NOTOUCH                     FALSE
-//    #define GINPUT_TOUCH_NOCALIBRATE                 FALSE
-//    #define GINPUT_TOUCH_NOCALIBRATE_GUI             FALSE
-//    #define GINPUT_MOUSE_POLL_PERIOD                 25
-//    #define GINPUT_MOUSE_CLICK_TIME                  300
-//    #define GINPUT_TOUCH_CXTCLICK_TIME               700
-//    #define GINPUT_TOUCH_USER_CALIBRATION_LOAD       FALSE
-//    #define GINPUT_TOUCH_USER_CALIBRATION_SAVE       FALSE
-//    #define GMOUSE_DRIVER_LIST                       GMOUSEVMT_Win32, GMOUSEVMT_Win32
-//#define GINPUT_NEED_KEYBOARD                         FALSE
-//    #define GINPUT_KEYBOARD_POLL_PERIOD              200
-//    #define GKEYBOARD_DRIVER_LIST                    GKEYBOARDVMT_Win32, GKEYBOARDVMT_Win32
-//    #define GKEYBOARD_LAYOUT_OFF                     FALSE
-//        #define GKEYBOARD_LAYOUT_SCANCODE2_US        FALSE
-//#define GINPUT_NEED_TOGGLE                           FALSE
-//#define GINPUT_NEED_DIAL                             FALSE
-
-
-///////////////////////////////////////////////////////////////////////////
-// GFILE                                                                 //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GFILE                                FALSE
-
-//#define GFILE_NEED_PRINTG                            FALSE
-//#define GFILE_NEED_SCANG                             FALSE
-//#define GFILE_NEED_STRINGS                           FALSE
-//#define GFILE_NEED_FILELISTS                         FALSE
-//#define GFILE_NEED_STDIO                             FALSE
-//#define GFILE_NEED_NOAUTOMOUNT                       FALSE
-//#define GFILE_NEED_NOAUTOSYNC                        FALSE
-
-//#define GFILE_NEED_MEMFS                             FALSE
-//#define GFILE_NEED_ROMFS                             FALSE
-//#define GFILE_NEED_RAMFS                             FALSE
-//#define GFILE_NEED_FATFS                             FALSE
-//#define GFILE_NEED_NATIVEFS                          FALSE
-//#define GFILE_NEED_CHBIOSFS                          FALSE
-
-//#define GFILE_ALLOW_FLOATS                           FALSE
-//#define GFILE_ALLOW_DEVICESPECIFIC                   FALSE
-//#define GFILE_MAX_GFILES                             3
-
-///////////////////////////////////////////////////////////////////////////
-// GADC                                                                  //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GADC                                 FALSE
-
-//#define GADC_MAX_LOWSPEED_DEVICES                    4
-
-
-///////////////////////////////////////////////////////////////////////////
-// GAUDIO                                                                //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GAUDIO                               FALSE
-// There seems to be a bug in the ugfx code, the wrong define is used
-// So define it in order to avoid warnings
-#define GFX_USE_GAUDIN                               GFX_USE_GAUDIO
-//    #define GAUDIO_NEED_PLAY                         FALSE
-//    #define GAUDIO_NEED_RECORD                       FALSE
-
-
-///////////////////////////////////////////////////////////////////////////
-// GMISC                                                                 //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GMISC                                TRUE
-
-//#define GMISC_NEED_ARRAYOPS                          FALSE
-//#define GMISC_NEED_FASTTRIG                          FALSE
-//#define GMISC_NEED_FIXEDTRIG                         FALSE
-//#define GMISC_NEED_INVSQRT                           FALSE
-//    #define GMISC_INVSQRT_MIXED_ENDIAN               FALSE
-//    #define GMISC_INVSQRT_REAL_SLOW                  FALSE
-#define GMISC_NEED_MATRIXFLOAT2D                     TRUE
-#define GMISC_NEED_MATRIXFIXED2D                     FALSE
+#include "common_gfxconf.h"
 
 #endif /* _GFXCONF_H */
diff --git a/keyboards/whitefox/gfxconf.h b/keyboards/whitefox/gfxconf.h
index 27dfb94fbf..eb93f92ebb 100644
--- a/keyboards/whitefox/gfxconf.h
+++ b/keyboards/whitefox/gfxconf.h
@@ -22,308 +22,10 @@
 #ifndef _GFXCONF_H
 #define _GFXCONF_H
 
-
-///////////////////////////////////////////////////////////////////////////
-// GOS - One of these must be defined, preferably in your Makefile       //
-///////////////////////////////////////////////////////////////////////////
-//#define GFX_USE_OS_CHIBIOS                           TRUE
-//#define GFX_USE_OS_FREERTOS                          FALSE
-//    #define GFX_FREERTOS_USE_TRACE                   FALSE
-//#define GFX_USE_OS_WIN32                             FALSE
-//#define GFX_USE_OS_LINUX                             FALSE
-//#define GFX_USE_OS_OSX                               FALSE
-//#define GFX_USE_OS_ECOS                              FALSE
-//#define GFX_USE_OS_RAWRTOS                           FALSE
-//#define GFX_USE_OS_ARDUINO                           FALSE
-//#define GFX_USE_OS_KEIL                              FALSE
-//#define GFX_USE_OS_CMSIS                             FALSE
-//#define GFX_USE_OS_RAW32                             FALSE
-//    #define INTERRUPTS_OFF()                         optional_code
-//    #define INTERRUPTS_ON()                          optional_code
-// These are not defined by default for some reason
-#define GOS_NEED_X_THREADS	FALSE
-#define GOS_NEED_X_HEAP		FALSE
-
-// Options that (should where relevant) apply to all operating systems
-    #define GFX_NO_INLINE                            FALSE
-//    #define GFX_COMPILER                             GFX_COMPILER_UNKNOWN
-//    #define GFX_CPU                                  GFX_CPU_UNKNOWN
-//    #define GFX_OS_HEAP_SIZE                         0
-//    #define GFX_OS_NO_INIT                           FALSE
-//    #define GFX_OS_INIT_NO_WARNING                   FALSE
-//    #define GFX_OS_PRE_INIT_FUNCTION                 myHardwareInitRoutine
-//    #define GFX_OS_EXTRA_INIT_FUNCTION               myOSInitRoutine
-//    #define GFX_OS_EXTRA_DEINIT_FUNCTION             myOSDeInitRoutine
-
-
-///////////////////////////////////////////////////////////////////////////
-// GDISP                                                                 //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GDISP                                TRUE
-
-//#define GDISP_NEED_AUTOFLUSH                         FALSE
-//#define GDISP_NEED_TIMERFLUSH                        FALSE
-//#define GDISP_NEED_VALIDATION                        TRUE
-//#define GDISP_NEED_CLIP                              TRUE
-#define GDISP_NEED_CIRCLE                            TRUE
-#define GDISP_NEED_ELLIPSE                           TRUE
-#define GDISP_NEED_ARC                               TRUE
-#define GDISP_NEED_ARCSECTORS                        TRUE
-#define GDISP_NEED_CONVEX_POLYGON                    TRUE
-//#define GDISP_NEED_SCROLL                            FALSE
-#define GDISP_NEED_PIXELREAD                         TRUE
-#define GDISP_NEED_CONTROL                           TRUE
-//#define GDISP_NEED_QUERY                             FALSE
-//#define GDISP_NEED_MULTITHREAD                       FALSE
-//#define GDISP_NEED_STREAMING                         FALSE
-#define GDISP_NEED_TEXT                              TRUE
-//    #define GDISP_NEED_TEXT_WORDWRAP                 FALSE
-//    #define GDISP_NEED_ANTIALIAS                     FALSE
-//    #define GDISP_NEED_UTF8                          FALSE
-    #define GDISP_NEED_TEXT_KERNING                  TRUE
-//    #define GDISP_INCLUDE_FONT_UI1                   FALSE
-//    #define GDISP_INCLUDE_FONT_UI2                   FALSE		// The smallest preferred font.
-//    #define GDISP_INCLUDE_FONT_LARGENUMBERS          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS10          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS12          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS16          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS20          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS24          FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS32          FALSE
-    #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12      TRUE
-//    #define GDISP_INCLUDE_FONT_FIXED_10X20           FALSE
-//    #define GDISP_INCLUDE_FONT_FIXED_7X14            FALSE
-    #define GDISP_INCLUDE_FONT_FIXED_5X8             TRUE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA       FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA       FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS20_AA       FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA       FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA       FALSE
-//    #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA   FALSE
-//    #define GDISP_INCLUDE_USER_FONTS                 FALSE
-
-//#define GDISP_NEED_IMAGE                             FALSE
-//    #define GDISP_NEED_IMAGE_NATIVE                  FALSE
-//    #define GDISP_NEED_IMAGE_GIF                     FALSE
-//    #define GDISP_NEED_IMAGE_BMP                     FALSE
-//        #define GDISP_NEED_IMAGE_BMP_1               FALSE
-//        #define GDISP_NEED_IMAGE_BMP_4               FALSE
-//        #define GDISP_NEED_IMAGE_BMP_4_RLE           FALSE
-//        #define GDISP_NEED_IMAGE_BMP_8               FALSE
-//        #define GDISP_NEED_IMAGE_BMP_8_RLE           FALSE
-//        #define GDISP_NEED_IMAGE_BMP_16              FALSE
-//        #define GDISP_NEED_IMAGE_BMP_24              FALSE
-//        #define GDISP_NEED_IMAGE_BMP_32              FALSE
-//    #define GDISP_NEED_IMAGE_JPG                     FALSE
-//    #define GDISP_NEED_IMAGE_PNG                     FALSE
-//    #define GDISP_NEED_IMAGE_ACCOUNTING              FALSE
-#ifdef EMULATOR
-#define GDISP_NEED_PIXMAP                            TRUE
-#endif
-//    #define GDISP_NEED_PIXMAP_IMAGE                  FALSE
-
-//#define GDISP_DEFAULT_ORIENTATION                    GDISP_ROTATE_LANDSCAPE    // If not defined the native hardware orientation is used.
-//#define GDISP_LINEBUF_SIZE                           128
-//#define GDISP_STARTUP_COLOR                          Black
-#define GDISP_NEED_STARTUP_LOGO                      FALSE
-
-//#define GDISP_TOTAL_DISPLAYS		                 2
-
 #ifndef EMULATOR
 #define GDISP_DRIVER_LIST                            GDISPVMT_IS31FL3731C_QMK
 #endif
 
-    #ifdef GDISP_DRIVER_LIST
-        // For code and speed optimization define as TRUE or FALSE if all controllers have the same capability
-        #define GDISP_HARDWARE_STREAM_WRITE          FALSE
-        #define GDISP_HARDWARE_STREAM_READ           FALSE
-        #define GDISP_HARDWARE_STREAM_POS            FALSE
-        #define GDISP_HARDWARE_DRAWPIXEL             TRUE
-        #define GDISP_HARDWARE_CLEARS                FALSE
-        #define GDISP_HARDWARE_FILLS                 FALSE
-        //#define GDISP_HARDWARE_BITFILLS              FALSE
-        #define GDISP_HARDWARE_SCROLL                FALSE
-        #define GDISP_HARDWARE_PIXELREAD             TRUE
-        #define GDISP_HARDWARE_CONTROL               TRUE
-        #define GDISP_HARDWARE_QUERY                 FALSE
-        #define GDISP_HARDWARE_CLIP                  FALSE
-
-        #define GDISP_PIXELFORMAT                    GDISP_PIXELFORMAT_RGB888
-    #endif
-
-// The custom format is not defined for some reason, so define it as error
-// so we don't get compiler warnings
-#define GDISP_PIXELFORMAT_CUSTOM GDISP_PIXELFORMAT_ERROR
-
-#define GDISP_USE_GFXNET                             FALSE
-//    #define GDISP_GFXNET_PORT                        13001
-//    #define GDISP_GFXNET_CUSTOM_LWIP_STARTUP         FALSE
-//    #define GDISP_DONT_WAIT_FOR_NET_DISPLAY          FALSE
-//    #define GDISP_GFXNET_UNSAFE_SOCKETS              FALSE
-
-
-///////////////////////////////////////////////////////////////////////////
-// GWIN                                                                  //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GWIN                                 FALSE
-
-//#define GWIN_NEED_WINDOWMANAGER                      FALSE
-//    #define GWIN_REDRAW_IMMEDIATE                    FALSE
-//    #define GWIN_REDRAW_SINGLEOP                     FALSE
-//    #define GWIN_NEED_FLASHING                       FALSE
-//        #define GWIN_FLASHING_PERIOD                 250
-
-//#define GWIN_NEED_CONSOLE                            FALSE
-//    #define GWIN_CONSOLE_USE_HISTORY                 FALSE
-//        #define GWIN_CONSOLE_HISTORY_AVERAGING       FALSE
-//        #define GWIN_CONSOLE_HISTORY_ATCREATE        FALSE
-//    #define GWIN_CONSOLE_ESCSEQ                      FALSE
-//    #define GWIN_CONSOLE_USE_BASESTREAM              FALSE
-//    #define GWIN_CONSOLE_USE_FLOAT                   FALSE
-//#define GWIN_NEED_GRAPH                              FALSE
-//#define GWIN_NEED_GL3D                               FALSE
-
-//#define GWIN_NEED_WIDGET                             FALSE
-//#define GWIN_FOCUS_HIGHLIGHT_WIDTH                   1
-//    #define GWIN_NEED_LABEL                          FALSE
-//        #define GWIN_LABEL_ATTRIBUTE                 FALSE
-//    #define GWIN_NEED_BUTTON                         FALSE
-//        #define GWIN_BUTTON_LAZY_RELEASE             FALSE
-//    #define GWIN_NEED_SLIDER                         FALSE
-//        #define GWIN_SLIDER_NOSNAP                   FALSE
-//        #define GWIN_SLIDER_DEAD_BAND                5
-//        #define GWIN_SLIDER_TOGGLE_INC               20
-//    #define GWIN_NEED_CHECKBOX                       FALSE
-//    #define GWIN_NEED_IMAGE                          FALSE
-//        #define GWIN_NEED_IMAGE_ANIMATION            FALSE
-//    #define GWIN_NEED_RADIO                          FALSE
-//    #define GWIN_NEED_LIST                           FALSE
-//        #define GWIN_NEED_LIST_IMAGES                FALSE
-//    #define GWIN_NEED_PROGRESSBAR                    FALSE
-//        #define GWIN_PROGRESSBAR_AUTO                FALSE
-//    #define GWIN_NEED_KEYBOARD                       FALSE
-//        #define GWIN_KEYBOARD_DEFAULT_LAYOUT         VirtualKeyboard_English1
-//        #define GWIN_NEED_KEYBOARD_ENGLISH1          TRUE
-//    #define GWIN_NEED_TEXTEDIT                       FALSE
-//    #define GWIN_FLAT_STYLING                        FALSE
-//    #define GWIN_WIDGET_TAGS                         FALSE
-
-//#define GWIN_NEED_CONTAINERS                         FALSE
-//    #define GWIN_NEED_CONTAINER                      FALSE
-//    #define GWIN_NEED_FRAME                          FALSE
-//    #define GWIN_NEED_TABSET                         FALSE
-//        #define GWIN_TABSET_TABHEIGHT                18
-
-
-///////////////////////////////////////////////////////////////////////////
-// GEVENT                                                                //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GEVENT                               TRUE
-
-//#define GEVENT_ASSERT_NO_RESOURCE                    FALSE
-//#define GEVENT_MAXIMUM_SIZE                          32
-//#define GEVENT_MAX_SOURCE_LISTENERS                  32
-
-
-///////////////////////////////////////////////////////////////////////////
-// GTIMER                                                                //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GTIMER                               FALSE
-
-//#define GTIMER_THREAD_PRIORITY                       HIGH_PRIORITY
-//#define GTIMER_THREAD_WORKAREA_SIZE                  2048
-
-
-///////////////////////////////////////////////////////////////////////////
-// GQUEUE                                                                //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GQUEUE                               FALSE
-
-//#define GQUEUE_NEED_ASYNC                            FALSE
-//#define GQUEUE_NEED_GSYNC                            FALSE
-//#define GQUEUE_NEED_FSYNC                            FALSE
-//#define GQUEUE_NEED_BUFFERS                          FALSE
-
-///////////////////////////////////////////////////////////////////////////
-// GINPUT                                                                //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GINPUT                               FALSE
-
-//#define GINPUT_NEED_MOUSE                            FALSE
-//    #define GINPUT_TOUCH_STARTRAW                    FALSE
-//    #define GINPUT_TOUCH_NOTOUCH                     FALSE
-//    #define GINPUT_TOUCH_NOCALIBRATE                 FALSE
-//    #define GINPUT_TOUCH_NOCALIBRATE_GUI             FALSE
-//    #define GINPUT_MOUSE_POLL_PERIOD                 25
-//    #define GINPUT_MOUSE_CLICK_TIME                  300
-//    #define GINPUT_TOUCH_CXTCLICK_TIME               700
-//    #define GINPUT_TOUCH_USER_CALIBRATION_LOAD       FALSE
-//    #define GINPUT_TOUCH_USER_CALIBRATION_SAVE       FALSE
-//    #define GMOUSE_DRIVER_LIST                       GMOUSEVMT_Win32, GMOUSEVMT_Win32
-//#define GINPUT_NEED_KEYBOARD                         FALSE
-//    #define GINPUT_KEYBOARD_POLL_PERIOD              200
-//    #define GKEYBOARD_DRIVER_LIST                    GKEYBOARDVMT_Win32, GKEYBOARDVMT_Win32
-//    #define GKEYBOARD_LAYOUT_OFF                     FALSE
-//        #define GKEYBOARD_LAYOUT_SCANCODE2_US        FALSE
-//#define GINPUT_NEED_TOGGLE                           FALSE
-//#define GINPUT_NEED_DIAL                             FALSE
-
-
-///////////////////////////////////////////////////////////////////////////
-// GFILE                                                                 //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GFILE                                FALSE
-
-//#define GFILE_NEED_PRINTG                            FALSE
-//#define GFILE_NEED_SCANG                             FALSE
-//#define GFILE_NEED_STRINGS                           FALSE
-//#define GFILE_NEED_FILELISTS                         FALSE
-//#define GFILE_NEED_STDIO                             FALSE
-//#define GFILE_NEED_NOAUTOMOUNT                       FALSE
-//#define GFILE_NEED_NOAUTOSYNC                        FALSE
-
-//#define GFILE_NEED_MEMFS                             FALSE
-//#define GFILE_NEED_ROMFS                             FALSE
-//#define GFILE_NEED_RAMFS                             FALSE
-//#define GFILE_NEED_FATFS                             FALSE
-//#define GFILE_NEED_NATIVEFS                          FALSE
-//#define GFILE_NEED_CHBIOSFS                          FALSE
-
-//#define GFILE_ALLOW_FLOATS                           FALSE
-//#define GFILE_ALLOW_DEVICESPECIFIC                   FALSE
-//#define GFILE_MAX_GFILES                             3
-
-///////////////////////////////////////////////////////////////////////////
-// GADC                                                                  //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GADC                                 FALSE
-
-//#define GADC_MAX_LOWSPEED_DEVICES                    4
-
-
-///////////////////////////////////////////////////////////////////////////
-// GAUDIO                                                                //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GAUDIO                               FALSE
-// There seems to be a bug in the ugfx code, the wrong define is used
-// So define it in order to avoid warnings
-#define GFX_USE_GAUDIN                               GFX_USE_GAUDIO
-//    #define GAUDIO_NEED_PLAY                         FALSE
-//    #define GAUDIO_NEED_RECORD                       FALSE
-
-
-///////////////////////////////////////////////////////////////////////////
-// GMISC                                                                 //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GMISC                                TRUE
-
-//#define GMISC_NEED_ARRAYOPS                          FALSE
-//#define GMISC_NEED_FASTTRIG                          FALSE
-//#define GMISC_NEED_FIXEDTRIG                         FALSE
-//#define GMISC_NEED_INVSQRT                           FALSE
-//    #define GMISC_INVSQRT_MIXED_ENDIAN               FALSE
-//    #define GMISC_INVSQRT_REAL_SLOW                  FALSE
-#define GMISC_NEED_MATRIXFLOAT2D                     TRUE
-#define GMISC_NEED_MATRIXFIXED2D                     FALSE
+#include "common_gfxconf.h"
 
 #endif /* _GFXCONF_H */
diff --git a/quantum/visualizer/common_gfxconf.h b/quantum/visualizer/common_gfxconf.h
new file mode 100644
index 0000000000..eb705b1881
--- /dev/null
+++ b/quantum/visualizer/common_gfxconf.h
@@ -0,0 +1,325 @@
+/**
+ * This file has a different license to the rest of the uGFX system.
+ * You can copy, modify and distribute this file as you see fit.
+ * You do not need to publish your source modifications to this file.
+ * The only thing you are not permitted to do is to relicense it
+ * under a different license.
+ */
+
+/**
+ * Copy this file into your project directory and rename it as gfxconf.h
+ * Edit your copy to turn on the uGFX features you want to use.
+ * The values below are the defaults.
+ *
+ * Only remove the comments from lines where you want to change the
+ * default value. This allows definitions to be included from
+ * driver makefiles when required and provides the best future
+ * compatibility for your project.
+ *
+ * Please use spaces instead of tabs in this file.
+ */
+
+#ifndef COMMON_GFXCONF_H
+#define COMMON_GFXCONF_H
+
+
+///////////////////////////////////////////////////////////////////////////
+// GOS - One of these must be defined, preferably in your Makefile       //
+///////////////////////////////////////////////////////////////////////////
+//#define GFX_USE_OS_CHIBIOS                           TRUE
+//#define GFX_USE_OS_FREERTOS                          FALSE
+//    #define GFX_FREERTOS_USE_TRACE                   FALSE
+//#define GFX_USE_OS_WIN32                             FALSE
+//#define GFX_USE_OS_LINUX                             FALSE
+//#define GFX_USE_OS_OSX                               FALSE
+//#define GFX_USE_OS_ECOS                              FALSE
+//#define GFX_USE_OS_RAWRTOS                           FALSE
+//#define GFX_USE_OS_ARDUINO                           FALSE
+//#define GFX_USE_OS_KEIL                              FALSE
+//#define GFX_USE_OS_CMSIS                             FALSE
+//#define GFX_USE_OS_RAW32                             FALSE
+//    #define INTERRUPTS_OFF()                         optional_code
+//    #define INTERRUPTS_ON()                          optional_code
+// These are not defined by default for some reason
+#define GOS_NEED_X_THREADS	FALSE
+#define GOS_NEED_X_HEAP		FALSE
+
+// Options that (should where relevant) apply to all operating systems
+    #define GFX_NO_INLINE                            FALSE
+//    #define GFX_COMPILER                             GFX_COMPILER_UNKNOWN
+//    #define GFX_CPU                                  GFX_CPU_UNKNOWN
+//    #define GFX_OS_HEAP_SIZE                         0
+//    #define GFX_OS_NO_INIT                           FALSE
+//    #define GFX_OS_INIT_NO_WARNING                   FALSE
+//    #define GFX_OS_PRE_INIT_FUNCTION                 myHardwareInitRoutine
+//    #define GFX_OS_EXTRA_INIT_FUNCTION               myOSInitRoutine
+//    #define GFX_OS_EXTRA_DEINIT_FUNCTION             myOSDeInitRoutine
+
+
+///////////////////////////////////////////////////////////////////////////
+// GDISP                                                                 //
+///////////////////////////////////////////////////////////////////////////
+#define GFX_USE_GDISP                                TRUE
+
+//#define GDISP_NEED_AUTOFLUSH                         FALSE
+//#define GDISP_NEED_TIMERFLUSH                        FALSE
+//#define GDISP_NEED_VALIDATION                        TRUE
+//#define GDISP_NEED_CLIP                              TRUE
+#define GDISP_NEED_CIRCLE                            TRUE
+#define GDISP_NEED_ELLIPSE                           TRUE
+#define GDISP_NEED_ARC                               TRUE
+#define GDISP_NEED_ARCSECTORS                        TRUE
+#define GDISP_NEED_CONVEX_POLYGON                    TRUE
+//#define GDISP_NEED_SCROLL                            FALSE
+#define GDISP_NEED_PIXELREAD                         TRUE
+#define GDISP_NEED_CONTROL                           TRUE
+//#define GDISP_NEED_QUERY                             FALSE
+//#define GDISP_NEED_MULTITHREAD                       FALSE
+//#define GDISP_NEED_STREAMING                         FALSE
+#define GDISP_NEED_TEXT                              TRUE
+//    #define GDISP_NEED_TEXT_WORDWRAP                 FALSE
+//    #define GDISP_NEED_ANTIALIAS                     FALSE
+//    #define GDISP_NEED_UTF8                          FALSE
+    #define GDISP_NEED_TEXT_KERNING                  TRUE
+//    #define GDISP_INCLUDE_FONT_UI1                   FALSE
+//    #define GDISP_INCLUDE_FONT_UI2                   FALSE		// The smallest preferred font.
+//    #define GDISP_INCLUDE_FONT_LARGENUMBERS          FALSE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANS10          FALSE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANS12          FALSE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANS16          FALSE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANS20          FALSE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANS24          FALSE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANS32          FALSE
+    #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12      TRUE
+//    #define GDISP_INCLUDE_FONT_FIXED_10X20           FALSE
+//    #define GDISP_INCLUDE_FONT_FIXED_7X14            FALSE
+    #define GDISP_INCLUDE_FONT_FIXED_5X8             TRUE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA       FALSE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA       FALSE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANS20_AA       FALSE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA       FALSE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA       FALSE
+//    #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA   FALSE
+//    #define GDISP_INCLUDE_USER_FONTS                 FALSE
+
+//#define GDISP_NEED_IMAGE                             FALSE
+//    #define GDISP_NEED_IMAGE_NATIVE                  FALSE
+//    #define GDISP_NEED_IMAGE_GIF                     FALSE
+//    #define GDISP_NEED_IMAGE_BMP                     FALSE
+//        #define GDISP_NEED_IMAGE_BMP_1               FALSE
+//        #define GDISP_NEED_IMAGE_BMP_4               FALSE
+//        #define GDISP_NEED_IMAGE_BMP_4_RLE           FALSE
+//        #define GDISP_NEED_IMAGE_BMP_8               FALSE
+//        #define GDISP_NEED_IMAGE_BMP_8_RLE           FALSE
+//        #define GDISP_NEED_IMAGE_BMP_16              FALSE
+//        #define GDISP_NEED_IMAGE_BMP_24              FALSE
+//        #define GDISP_NEED_IMAGE_BMP_32              FALSE
+//    #define GDISP_NEED_IMAGE_JPG                     FALSE
+//    #define GDISP_NEED_IMAGE_PNG                     FALSE
+//    #define GDISP_NEED_IMAGE_ACCOUNTING              FALSE
+#ifdef EMULATOR
+#define GDISP_NEED_PIXMAP                            TRUE
+#endif
+//    #define GDISP_NEED_PIXMAP_IMAGE                  FALSE
+
+//#define GDISP_DEFAULT_ORIENTATION                    GDISP_ROTATE_LANDSCAPE    // If not defined the native hardware orientation is used.
+//#define GDISP_LINEBUF_SIZE                           128
+//#define GDISP_STARTUP_COLOR                          Black
+#define GDISP_NEED_STARTUP_LOGO                      FALSE
+
+//#define GDISP_TOTAL_DISPLAYS		                 2
+
+    #ifdef GDISP_DRIVER_LIST
+        // For code and speed optimization define as TRUE or FALSE if all controllers have the same capability
+        #define GDISP_HARDWARE_STREAM_WRITE          FALSE
+        #define GDISP_HARDWARE_STREAM_READ           FALSE
+        #define GDISP_HARDWARE_STREAM_POS            FALSE
+        #define GDISP_HARDWARE_DRAWPIXEL             TRUE
+        #define GDISP_HARDWARE_CLEARS                FALSE
+        #define GDISP_HARDWARE_FILLS                 FALSE
+        //#define GDISP_HARDWARE_BITFILLS              FALSE
+        #define GDISP_HARDWARE_SCROLL                FALSE
+        #define GDISP_HARDWARE_PIXELREAD             TRUE
+        #define GDISP_HARDWARE_CONTROL               TRUE
+        #define GDISP_HARDWARE_QUERY                 FALSE
+        #define GDISP_HARDWARE_CLIP                  FALSE
+
+        #define GDISP_PIXELFORMAT                    GDISP_PIXELFORMAT_RGB888
+    #endif
+
+// The custom format is not defined for some reason, so define it as error
+// so we don't get compiler warnings
+#define GDISP_PIXELFORMAT_CUSTOM GDISP_PIXELFORMAT_ERROR
+
+#define GDISP_USE_GFXNET                             FALSE
+//    #define GDISP_GFXNET_PORT                        13001
+//    #define GDISP_GFXNET_CUSTOM_LWIP_STARTUP         FALSE
+//    #define GDISP_DONT_WAIT_FOR_NET_DISPLAY          FALSE
+//    #define GDISP_GFXNET_UNSAFE_SOCKETS              FALSE
+
+
+///////////////////////////////////////////////////////////////////////////
+// GWIN                                                                  //
+///////////////////////////////////////////////////////////////////////////
+#define GFX_USE_GWIN                                 FALSE
+
+//#define GWIN_NEED_WINDOWMANAGER                      FALSE
+//    #define GWIN_REDRAW_IMMEDIATE                    FALSE
+//    #define GWIN_REDRAW_SINGLEOP                     FALSE
+//    #define GWIN_NEED_FLASHING                       FALSE
+//        #define GWIN_FLASHING_PERIOD                 250
+
+//#define GWIN_NEED_CONSOLE                            FALSE
+//    #define GWIN_CONSOLE_USE_HISTORY                 FALSE
+//        #define GWIN_CONSOLE_HISTORY_AVERAGING       FALSE
+//        #define GWIN_CONSOLE_HISTORY_ATCREATE        FALSE
+//    #define GWIN_CONSOLE_ESCSEQ                      FALSE
+//    #define GWIN_CONSOLE_USE_BASESTREAM              FALSE
+//    #define GWIN_CONSOLE_USE_FLOAT                   FALSE
+//#define GWIN_NEED_GRAPH                              FALSE
+//#define GWIN_NEED_GL3D                               FALSE
+
+//#define GWIN_NEED_WIDGET                             FALSE
+//#define GWIN_FOCUS_HIGHLIGHT_WIDTH                   1
+//    #define GWIN_NEED_LABEL                          FALSE
+//        #define GWIN_LABEL_ATTRIBUTE                 FALSE
+//    #define GWIN_NEED_BUTTON                         FALSE
+//        #define GWIN_BUTTON_LAZY_RELEASE             FALSE
+//    #define GWIN_NEED_SLIDER                         FALSE
+//        #define GWIN_SLIDER_NOSNAP                   FALSE
+//        #define GWIN_SLIDER_DEAD_BAND                5
+//        #define GWIN_SLIDER_TOGGLE_INC               20
+//    #define GWIN_NEED_CHECKBOX                       FALSE
+//    #define GWIN_NEED_IMAGE                          FALSE
+//        #define GWIN_NEED_IMAGE_ANIMATION            FALSE
+//    #define GWIN_NEED_RADIO                          FALSE
+//    #define GWIN_NEED_LIST                           FALSE
+//        #define GWIN_NEED_LIST_IMAGES                FALSE
+//    #define GWIN_NEED_PROGRESSBAR                    FALSE
+//        #define GWIN_PROGRESSBAR_AUTO                FALSE
+//    #define GWIN_NEED_KEYBOARD                       FALSE
+//        #define GWIN_KEYBOARD_DEFAULT_LAYOUT         VirtualKeyboard_English1
+//        #define GWIN_NEED_KEYBOARD_ENGLISH1          TRUE
+//    #define GWIN_NEED_TEXTEDIT                       FALSE
+//    #define GWIN_FLAT_STYLING                        FALSE
+//    #define GWIN_WIDGET_TAGS                         FALSE
+
+//#define GWIN_NEED_CONTAINERS                         FALSE
+//    #define GWIN_NEED_CONTAINER                      FALSE
+//    #define GWIN_NEED_FRAME                          FALSE
+//    #define GWIN_NEED_TABSET                         FALSE
+//        #define GWIN_TABSET_TABHEIGHT                18
+
+
+///////////////////////////////////////////////////////////////////////////
+// GEVENT                                                                //
+///////////////////////////////////////////////////////////////////////////
+#define GFX_USE_GEVENT                               TRUE
+
+//#define GEVENT_ASSERT_NO_RESOURCE                    FALSE
+//#define GEVENT_MAXIMUM_SIZE                          32
+//#define GEVENT_MAX_SOURCE_LISTENERS                  32
+
+
+///////////////////////////////////////////////////////////////////////////
+// GTIMER                                                                //
+///////////////////////////////////////////////////////////////////////////
+#define GFX_USE_GTIMER                               FALSE
+
+//#define GTIMER_THREAD_PRIORITY                       HIGH_PRIORITY
+//#define GTIMER_THREAD_WORKAREA_SIZE                  2048
+
+
+///////////////////////////////////////////////////////////////////////////
+// GQUEUE                                                                //
+///////////////////////////////////////////////////////////////////////////
+#define GFX_USE_GQUEUE                               FALSE
+
+//#define GQUEUE_NEED_ASYNC                            FALSE
+//#define GQUEUE_NEED_GSYNC                            FALSE
+//#define GQUEUE_NEED_FSYNC                            FALSE
+//#define GQUEUE_NEED_BUFFERS                          FALSE
+
+///////////////////////////////////////////////////////////////////////////
+// GINPUT                                                                //
+///////////////////////////////////////////////////////////////////////////
+#define GFX_USE_GINPUT                               FALSE
+
+//#define GINPUT_NEED_MOUSE                            FALSE
+//    #define GINPUT_TOUCH_STARTRAW                    FALSE
+//    #define GINPUT_TOUCH_NOTOUCH                     FALSE
+//    #define GINPUT_TOUCH_NOCALIBRATE                 FALSE
+//    #define GINPUT_TOUCH_NOCALIBRATE_GUI             FALSE
+//    #define GINPUT_MOUSE_POLL_PERIOD                 25
+//    #define GINPUT_MOUSE_CLICK_TIME                  300
+//    #define GINPUT_TOUCH_CXTCLICK_TIME               700
+//    #define GINPUT_TOUCH_USER_CALIBRATION_LOAD       FALSE
+//    #define GINPUT_TOUCH_USER_CALIBRATION_SAVE       FALSE
+//    #define GMOUSE_DRIVER_LIST                       GMOUSEVMT_Win32, GMOUSEVMT_Win32
+//#define GINPUT_NEED_KEYBOARD                         FALSE
+//    #define GINPUT_KEYBOARD_POLL_PERIOD              200
+//    #define GKEYBOARD_DRIVER_LIST                    GKEYBOARDVMT_Win32, GKEYBOARDVMT_Win32
+//    #define GKEYBOARD_LAYOUT_OFF                     FALSE
+//        #define GKEYBOARD_LAYOUT_SCANCODE2_US        FALSE
+//#define GINPUT_NEED_TOGGLE                           FALSE
+//#define GINPUT_NEED_DIAL                             FALSE
+
+
+///////////////////////////////////////////////////////////////////////////
+// GFILE                                                                 //
+///////////////////////////////////////////////////////////////////////////
+#define GFX_USE_GFILE                                FALSE
+
+//#define GFILE_NEED_PRINTG                            FALSE
+//#define GFILE_NEED_SCANG                             FALSE
+//#define GFILE_NEED_STRINGS                           FALSE
+//#define GFILE_NEED_FILELISTS                         FALSE
+//#define GFILE_NEED_STDIO                             FALSE
+//#define GFILE_NEED_NOAUTOMOUNT                       FALSE
+//#define GFILE_NEED_NOAUTOSYNC                        FALSE
+
+//#define GFILE_NEED_MEMFS                             FALSE
+//#define GFILE_NEED_ROMFS                             FALSE
+//#define GFILE_NEED_RAMFS                             FALSE
+//#define GFILE_NEED_FATFS                             FALSE
+//#define GFILE_NEED_NATIVEFS                          FALSE
+//#define GFILE_NEED_CHBIOSFS                          FALSE
+
+//#define GFILE_ALLOW_FLOATS                           FALSE
+//#define GFILE_ALLOW_DEVICESPECIFIC                   FALSE
+//#define GFILE_MAX_GFILES                             3
+
+///////////////////////////////////////////////////////////////////////////
+// GADC                                                                  //
+///////////////////////////////////////////////////////////////////////////
+#define GFX_USE_GADC                                 FALSE
+
+//#define GADC_MAX_LOWSPEED_DEVICES                    4
+
+
+///////////////////////////////////////////////////////////////////////////
+// GAUDIO                                                                //
+///////////////////////////////////////////////////////////////////////////
+#define GFX_USE_GAUDIO                               FALSE
+// There seems to be a bug in the ugfx code, the wrong define is used
+// So define it in order to avoid warnings
+#define GFX_USE_GAUDIN                               GFX_USE_GAUDIO
+//    #define GAUDIO_NEED_PLAY                         FALSE
+//    #define GAUDIO_NEED_RECORD                       FALSE
+
+
+///////////////////////////////////////////////////////////////////////////
+// GMISC                                                                 //
+///////////////////////////////////////////////////////////////////////////
+#define GFX_USE_GMISC                                TRUE
+
+//#define GMISC_NEED_ARRAYOPS                          FALSE
+//#define GMISC_NEED_FASTTRIG                          FALSE
+//#define GMISC_NEED_FIXEDTRIG                         FALSE
+//#define GMISC_NEED_INVSQRT                           FALSE
+//    #define GMISC_INVSQRT_MIXED_ENDIAN               FALSE
+//    #define GMISC_INVSQRT_REAL_SLOW                  FALSE
+#define GMISC_NEED_MATRIXFLOAT2D                     TRUE
+#define GMISC_NEED_MATRIXFIXED2D                     FALSE
+
+#endif /* COMMON_GFXCONF_H */
diff --git a/quantum/visualizer/visualizer.mk b/quantum/visualizer/visualizer.mk
index 0f7d8636cf..1fe7435d97 100644
--- a/quantum/visualizer/visualizer.mk
+++ b/quantum/visualizer/visualizer.mk
@@ -47,6 +47,9 @@ SRC += $(VISUALIZER_DIR)/led_keyframes.c
 endif
 
 include $(GFXLIB)/gfx.mk
+# For the common_gfxconf.h
+GFXINC += quantum/visualizer
+
 GFXSRC := $(patsubst $(TOP_DIR)/%,%,$(GFXSRC))
 GFXDEFS := $(patsubst %,-D%,$(patsubst -D%,%,$(GFXDEFS)))
 

From 2251560256ff1a139178dc80b18dd8ef1d8e83d6 Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Sun, 9 Jul 2017 17:46:51 +0300
Subject: [PATCH 10/17] Clarify naming between LCD_BACKLIGHT and LED_BACKLIGHT

---
 keyboards/ergodox/infinity/animations.c       | 44 +++++++++----------
 .../ergodox/infinity/simple_visualizer.h      |  2 +-
 keyboards/ergodox/infinity/visualizer.c       |  4 +-
 keyboards/whitefox/animations.c               | 36 +++++++--------
 ...t_keyframes.h => lcd_backlight_keyframes.h |  8 ++--
 quantum/visualizer/lcd_backlight_keyframes.c  |  8 ++--
 ..._keyframes.c => led_backlight_keyframes.c} | 20 ++++-----
 ..._keyframes.h => led_backlight_keyframes.h} | 22 +++++-----
 quantum/visualizer/visualizer.mk              |  2 +-
 9 files changed, 73 insertions(+), 73 deletions(-)
 rename quantum/visualizer/lcd_backlight_keyframes.h => lcd_backlight_keyframes.h (74%)
 rename quantum/visualizer/{led_keyframes.c => led_backlight_keyframes.c} (82%)
 rename quantum/visualizer/{led_keyframes.h => led_backlight_keyframes.h} (56%)

diff --git a/keyboards/ergodox/infinity/animations.c b/keyboards/ergodox/infinity/animations.c
index ebc08fde36..faac96215a 100644
--- a/keyboards/ergodox/infinity/animations.c
+++ b/keyboards/ergodox/infinity/animations.c
@@ -26,7 +26,7 @@
 #endif
 
 #ifdef BACKLIGHT_ENABLE
-#include "led_keyframes.h"
+#include "led_backlight_keyframes.h"
 #endif
 
 #include "visualizer_keyframes.h"
@@ -39,10 +39,10 @@ static bool keyframe_enable(keyframe_animation_t* animation, visualizer_state_t*
     lcd_keyframe_enable(animation, state);
 #endif
 #ifdef LCD_BACKLIGHT_ENABLE
-    backlight_keyframe_enable(animation, state);
+    lcd_backlight_keyframe_enable(animation, state);
 #endif
 #ifdef BACKLIGHT_ENABLE
-    led_keyframe_enable(animation, state);
+    led_backlight_keyframe_enable(animation, state);
 #endif
     return false;
 }
@@ -52,10 +52,10 @@ static bool keyframe_disable(keyframe_animation_t* animation, visualizer_state_t
     lcd_keyframe_disable(animation, state);
 #endif
 #ifdef LCD_BACKLIGHT_ENABLE
-    backlight_keyframe_disable(animation, state);
+    lcd_backlight_keyframe_disable(animation, state);
 #endif
 #ifdef BACKLIGHT_ENABLE
-    led_keyframe_disable(animation, state);
+    led_backlight_keyframe_disable(animation, state);
 #endif
     return false;
 }
@@ -63,10 +63,10 @@ static bool keyframe_disable(keyframe_animation_t* animation, visualizer_state_t
 static bool keyframe_fade_in(keyframe_animation_t* animation, visualizer_state_t* state) {
     bool ret = false;
 #ifdef LCD_BACKLIGHT_ENABLE
-    ret |= backlight_keyframe_animate_color(animation, state);
+    ret |= lcd_backlight_keyframe_animate_color(animation, state);
 #endif
 #ifdef BACKLIGHT_ENABLE
-    ret |= led_keyframe_fade_in_all(animation, state);
+    ret |= led_backlight_keyframe_fade_in_all(animation, state);
 #endif
     return ret;
 }
@@ -74,10 +74,10 @@ static bool keyframe_fade_in(keyframe_animation_t* animation, visualizer_state_t
 static bool keyframe_fade_out(keyframe_animation_t* animation, visualizer_state_t* state) {
     bool ret = false;
 #ifdef LCD_BACKLIGHT_ENABLE
-    ret |= backlight_keyframe_animate_color(animation, state);
+    ret |= lcd_backlight_keyframe_animate_color(animation, state);
 #endif
 #ifdef BACKLIGHT_ENABLE
-    ret |= led_keyframe_fade_out_all(animation, state);
+    ret |= led_backlight_keyframe_fade_out_all(animation, state);
 #endif
     return ret;
 }
@@ -133,20 +133,20 @@ keyframe_animation_t led_test_animation = {
 
     },
     .frame_functions = {
-        led_keyframe_fade_in_all,
+        led_backlight_keyframe_fade_in_all,
         keyframe_no_operation,
-        led_keyframe_fade_out_all,
-        led_keyframe_crossfade,
-        led_keyframe_left_to_right_gradient,
-        led_keyframe_crossfade,
-        led_keyframe_top_to_bottom_gradient,
-        led_keyframe_mirror_orientation,
-        led_keyframe_crossfade,
-        led_keyframe_left_to_right_gradient,
-        led_keyframe_crossfade,
-        led_keyframe_top_to_bottom_gradient,
-        led_keyframe_normal_orientation,
-        led_keyframe_crossfade,
+        led_backlight_keyframe_fade_out_all,
+        led_backlight_keyframe_crossfade,
+        led_backlight_keyframe_left_to_right_gradient,
+        led_backlight_keyframe_crossfade,
+        led_backlight_keyframe_top_to_bottom_gradient,
+        led_backlight_keyframe_mirror_orientation,
+        led_backlight_keyframe_crossfade,
+        led_backlight_keyframe_left_to_right_gradient,
+        led_backlight_keyframe_crossfade,
+        led_backlight_keyframe_top_to_bottom_gradient,
+        led_backlight_keyframe_normal_orientation,
+        led_backlight_keyframe_crossfade,
     },
 };
 #endif
diff --git a/keyboards/ergodox/infinity/simple_visualizer.h b/keyboards/ergodox/infinity/simple_visualizer.h
index ded8a3222e..88e96f2af9 100644
--- a/keyboards/ergodox/infinity/simple_visualizer.h
+++ b/keyboards/ergodox/infinity/simple_visualizer.h
@@ -58,7 +58,7 @@ static keyframe_animation_t color_animation = {
     // this prevents the color from changing when activating the layer
     // momentarily
     .frame_lengths = {gfxMillisecondsToTicks(200), gfxMillisecondsToTicks(500)},
-    .frame_functions = {keyframe_no_operation, backlight_keyframe_animate_color},
+    .frame_functions = {keyframe_no_operation, lcd_backlight_keyframe_animate_color},
 };
 
 void initialize_user_visualizer(visualizer_state_t* state) {
diff --git a/keyboards/ergodox/infinity/visualizer.c b/keyboards/ergodox/infinity/visualizer.c
index 5b6b320074..047a1119ce 100644
--- a/keyboards/ergodox/infinity/visualizer.c
+++ b/keyboards/ergodox/infinity/visualizer.c
@@ -79,7 +79,7 @@ static keyframe_animation_t one_led_color = {
     .num_frames = 1,
     .loop = false,
     .frame_lengths = {gfxMillisecondsToTicks(0)},
-    .frame_functions = {backlight_keyframe_set_color},
+    .frame_functions = {lcd_backlight_keyframe_set_color},
 };
 
 bool swap_led_target_color(keyframe_animation_t* animation, visualizer_state_t* state) {
@@ -94,7 +94,7 @@ static keyframe_animation_t two_led_colors = {
     .num_frames = 2,
     .loop = true,
     .frame_lengths = {gfxMillisecondsToTicks(1000), gfxMillisecondsToTicks(0)},
-    .frame_functions = {backlight_keyframe_set_color, swap_led_target_color},
+    .frame_functions = {lcd_backlight_keyframe_set_color, swap_led_target_color},
 };
 
 // The LCD animation alternates between the layer name display and a
diff --git a/keyboards/whitefox/animations.c b/keyboards/whitefox/animations.c
index ed1d75efb8..a15d46ccda 100644
--- a/keyboards/whitefox/animations.c
+++ b/keyboards/whitefox/animations.c
@@ -20,7 +20,7 @@
 #include "visualizer.h"
 
 #ifdef BACKLIGHT_ENABLE
-#include "led_keyframes.h"
+#include "led_backlight_keyframes.h"
 #endif
 
 #include "visualizer_keyframes.h"
@@ -30,14 +30,14 @@
 
 static bool keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
 #ifdef BACKLIGHT_ENABLE
-    led_keyframe_enable(animation, state);
+    led_backlight_keyframe_enable(animation, state);
 #endif
     return false;
 }
 
 static bool keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
 #ifdef BACKLIGHT_ENABLE
-    led_keyframe_disable(animation, state);
+    led_backlight_keyframe_disable(animation, state);
 #endif
     return false;
 }
@@ -45,7 +45,7 @@ static bool keyframe_disable(keyframe_animation_t* animation, visualizer_state_t
 static bool keyframe_fade_in(keyframe_animation_t* animation, visualizer_state_t* state) {
     bool ret = false;
 #ifdef BACKLIGHT_ENABLE
-    ret |= led_keyframe_fade_in_all(animation, state);
+    ret |= led_backlight_keyframe_fade_in_all(animation, state);
 #endif
     return ret;
 }
@@ -53,7 +53,7 @@ static bool keyframe_fade_in(keyframe_animation_t* animation, visualizer_state_t
 static bool keyframe_fade_out(keyframe_animation_t* animation, visualizer_state_t* state) {
     bool ret = false;
 #ifdef BACKLIGHT_ENABLE
-    ret |= led_keyframe_fade_out_all(animation, state);
+    ret |= led_backlight_keyframe_fade_out_all(animation, state);
 #endif
     return ret;
 }
@@ -107,20 +107,20 @@ keyframe_animation_t led_test_animation = {
 
     },
     .frame_functions = {
-        led_keyframe_fade_in_all,
+        led_backlight_keyframe_fade_in_all,
         keyframe_no_operation,
-        led_keyframe_fade_out_all,
-        led_keyframe_crossfade,
-        led_keyframe_left_to_right_gradient,
-        led_keyframe_crossfade,
-        led_keyframe_top_to_bottom_gradient,
-        led_keyframe_mirror_orientation,
-        led_keyframe_crossfade,
-        led_keyframe_left_to_right_gradient,
-        led_keyframe_crossfade,
-        led_keyframe_top_to_bottom_gradient,
-        led_keyframe_normal_orientation,
-        led_keyframe_crossfade,
+        led_backlight_keyframe_fade_out_all,
+        led_backlight_keyframe_crossfade,
+        led_backlight_keyframe_left_to_right_gradient,
+        led_backlight_keyframe_crossfade,
+        led_backlight_keyframe_top_to_bottom_gradient,
+        led_backlight_keyframe_mirror_orientation,
+        led_backlight_keyframe_crossfade,
+        led_backlight_keyframe_left_to_right_gradient,
+        led_backlight_keyframe_crossfade,
+        led_backlight_keyframe_top_to_bottom_gradient,
+        led_backlight_keyframe_normal_orientation,
+        led_backlight_keyframe_crossfade,
     },
 };
 #endif
diff --git a/quantum/visualizer/lcd_backlight_keyframes.h b/lcd_backlight_keyframes.h
similarity index 74%
rename from quantum/visualizer/lcd_backlight_keyframes.h
rename to lcd_backlight_keyframes.h
index e1c125cf91..bde118449b 100644
--- a/quantum/visualizer/lcd_backlight_keyframes.h
+++ b/lcd_backlight_keyframes.h
@@ -20,11 +20,11 @@
 #include "visualizer.h"
 
 // Animates the LCD backlight color between the current color and the target color (of the state)
-bool backlight_keyframe_animate_color(keyframe_animation_t* animation, visualizer_state_t* state);
+bool lcd_backlight_keyframe_animate_color(keyframe_animation_t* animation, visualizer_state_t* state);
 // Sets the backlight color to the target color
-bool backlight_keyframe_set_color(keyframe_animation_t* animation, visualizer_state_t* state);
+bool lcd_backlight_keyframe_set_color(keyframe_animation_t* animation, visualizer_state_t* state);
 
-bool backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
-bool backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
+bool lcd_backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
+bool lcd_backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
 
 #endif /* QUANTUM_VISUALIZER_LCD_BACKLIGHT_KEYFRAMES_H_ */
diff --git a/quantum/visualizer/lcd_backlight_keyframes.c b/quantum/visualizer/lcd_backlight_keyframes.c
index 8436d4e3dd..8c402baf6c 100644
--- a/quantum/visualizer/lcd_backlight_keyframes.c
+++ b/quantum/visualizer/lcd_backlight_keyframes.c
@@ -16,7 +16,7 @@
 
 #include "lcd_backlight_keyframes.h"
 
-bool backlight_keyframe_animate_color(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool lcd_backlight_keyframe_animate_color(keyframe_animation_t* animation, visualizer_state_t* state) {
     int frame_length = animation->frame_lengths[animation->current_frame];
     int current_pos = frame_length - animation->time_left_in_frame;
     uint8_t t_h = LCD_HUE(state->target_lcd_color);
@@ -49,7 +49,7 @@ bool backlight_keyframe_animate_color(keyframe_animation_t* animation, visualize
     return true;
 }
 
-bool backlight_keyframe_set_color(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool lcd_backlight_keyframe_set_color(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)animation;
     state->prev_lcd_color = state->target_lcd_color;
     state->current_lcd_color = state->target_lcd_color;
@@ -60,14 +60,14 @@ bool backlight_keyframe_set_color(keyframe_animation_t* animation, visualizer_st
     return false;
 }
 
-bool backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool lcd_backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)animation;
     (void)state;
     lcd_backlight_hal_color(0, 0, 0);
     return false;
 }
 
-bool backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool lcd_backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)animation;
     (void)state;
     lcd_backlight_color(LCD_HUE(state->current_lcd_color),
diff --git a/quantum/visualizer/led_keyframes.c b/quantum/visualizer/led_backlight_keyframes.c
similarity index 82%
rename from quantum/visualizer/led_keyframes.c
rename to quantum/visualizer/led_backlight_keyframes.c
index 7e6e5d1ab9..d2921a391a 100644
--- a/quantum/visualizer/led_keyframes.c
+++ b/quantum/visualizer/led_backlight_keyframes.c
@@ -23,7 +23,7 @@ SOFTWARE.
 */
 #include "gfx.h"
 #include "math.h"
-#include "led_keyframes.h"
+#include "led_backlight_keyframes.h"
 
 static uint8_t fade_led_color(keyframe_animation_t* animation, int from, int to) {
     int frame_length = animation->frame_lengths[animation->current_frame];
@@ -55,19 +55,19 @@ static uint8_t compute_gradient_color(float t, float index, float num) {
     return (uint8_t)(255.0f * v);
 }
 
-bool led_keyframe_fade_in_all(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool led_backlight_keyframe_fade_in_all(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)state;
     keyframe_fade_all_leds_from_to(animation, 0, 255);
     return true;
 }
 
-bool led_keyframe_fade_out_all(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool led_backlight_keyframe_fade_out_all(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)state;
     keyframe_fade_all_leds_from_to(animation, 255, 0);
     return true;
 }
 
-bool led_keyframe_left_to_right_gradient(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool led_backlight_keyframe_left_to_right_gradient(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)state;
     float frame_length = animation->frame_lengths[animation->current_frame];
     float current_pos = frame_length - animation->time_left_in_frame;
@@ -79,7 +79,7 @@ bool led_keyframe_left_to_right_gradient(keyframe_animation_t* animation, visual
     return true;
 }
 
-bool led_keyframe_top_to_bottom_gradient(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool led_backlight_keyframe_top_to_bottom_gradient(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)state;
     float frame_length = animation->frame_lengths[animation->current_frame];
     float current_pos = frame_length - animation->time_left_in_frame;
@@ -98,7 +98,7 @@ static void copy_current_led_state(uint8_t* dest) {
         }
     }
 }
-bool led_keyframe_crossfade(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool led_backlight_keyframe_crossfade(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)state;
     if (animation->first_update_of_frame) {
         copy_current_led_state(&crossfade_start_frame[0][0]);
@@ -114,28 +114,28 @@ bool led_keyframe_crossfade(keyframe_animation_t* animation, visualizer_state_t*
     return true;
 }
 
-bool led_keyframe_mirror_orientation(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool led_backlight_keyframe_mirror_orientation(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)state;
     (void)animation;
     gdispGSetOrientation(LED_DISPLAY, GDISP_ROTATE_180);
     return false;
 }
 
-bool led_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool led_backlight_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)state;
     (void)animation;
     gdispGSetOrientation(LED_DISPLAY, GDISP_ROTATE_0);
     return false;
 }
 
-bool led_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool led_backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)state;
     (void)animation;
     gdispGSetPowerMode(LED_DISPLAY, powerOff);
     return false;
 }
 
-bool led_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
+bool led_backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)state;
     (void)animation;
     gdispGSetPowerMode(LED_DISPLAY, powerOn);
diff --git a/quantum/visualizer/led_keyframes.h b/quantum/visualizer/led_backlight_keyframes.h
similarity index 56%
rename from quantum/visualizer/led_keyframes.h
rename to quantum/visualizer/led_backlight_keyframes.h
index a59a4f37d1..487151013a 100644
--- a/quantum/visualizer/led_keyframes.h
+++ b/quantum/visualizer/led_backlight_keyframes.h
@@ -22,21 +22,21 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 */
 
-#ifndef LED_KEYFRAMES_H
-#define LED_KEYFRAMES_H
+#ifndef LED_BACKLIGHT_KEYFRAMES_H
+#define LED_BACKLIGHT_KEYFRAMES_H
 
 #include "visualizer.h"
 
-bool led_keyframe_fade_in_all(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_keyframe_fade_out_all(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_keyframe_left_to_right_gradient(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_keyframe_top_to_bottom_gradient(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_keyframe_crossfade(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_keyframe_mirror_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
+bool led_backlight_keyframe_fade_in_all(keyframe_animation_t* animation, visualizer_state_t* state);
+bool led_backlight_keyframe_fade_out_all(keyframe_animation_t* animation, visualizer_state_t* state);
+bool led_backlight_keyframe_left_to_right_gradient(keyframe_animation_t* animation, visualizer_state_t* state);
+bool led_backlight_keyframe_top_to_bottom_gradient(keyframe_animation_t* animation, visualizer_state_t* state);
+bool led_backlight_keyframe_crossfade(keyframe_animation_t* animation, visualizer_state_t* state);
+bool led_backlight_keyframe_mirror_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
+bool led_backlight_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
 
-bool led_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
+bool led_backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
+bool led_backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
 
 extern keyframe_animation_t led_test_animation;
 
diff --git a/quantum/visualizer/visualizer.mk b/quantum/visualizer/visualizer.mk
index 1fe7435d97..a04c9775fa 100644
--- a/quantum/visualizer/visualizer.mk
+++ b/quantum/visualizer/visualizer.mk
@@ -43,7 +43,7 @@ OPT_DEFS += -DLCD_BACKLIGHT_ENABLE
 endif
 
 ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
-SRC += $(VISUALIZER_DIR)/led_keyframes.c
+SRC += $(VISUALIZER_DIR)/led_backlight_keyframes.c
 endif
 
 include $(GFXLIB)/gfx.mk

From 4da3b19603255115f71812964383ee7b518637be Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Sun, 9 Jul 2017 17:50:01 +0300
Subject: [PATCH 11/17] Shared default animations

---
 keyboards/ergodox/infinity/rules.mk           |   3 +-
 .../ergodox/infinity/simple_visualizer.h      |   2 +-
 keyboards/ergodox/infinity/visualizer.c       |   2 +-
 keyboards/whitefox/animations.c               | 128 ------------------
 keyboards/whitefox/animations.h               |  30 ----
 keyboards/whitefox/rules.mk                   |   3 +-
 keyboards/whitefox/visualizer.c               |   2 +-
 .../visualizer/default_animations.c           |  28 +++-
 .../visualizer/default_animations.h           |   6 +-
 quantum/visualizer/visualizer.mk              |   2 +
 10 files changed, 35 insertions(+), 171 deletions(-)
 delete mode 100644 keyboards/whitefox/animations.c
 delete mode 100644 keyboards/whitefox/animations.h
 rename keyboards/ergodox/infinity/animations.c => quantum/visualizer/default_animations.c (92%)
 rename keyboards/ergodox/infinity/animations.h => quantum/visualizer/default_animations.h (87%)

diff --git a/keyboards/ergodox/infinity/rules.mk b/keyboards/ergodox/infinity/rules.mk
index 18171560da..2ccf98b8c5 100644
--- a/keyboards/ergodox/infinity/rules.mk
+++ b/keyboards/ergodox/infinity/rules.mk
@@ -1,7 +1,6 @@
 # project specific files
 SRC =	matrix.c \
-	led.c \
-	animations.c
+	led.c
 
 ## chip/board settings
 # - the next two should match the directories in
diff --git a/keyboards/ergodox/infinity/simple_visualizer.h b/keyboards/ergodox/infinity/simple_visualizer.h
index 88e96f2af9..73d0e08870 100644
--- a/keyboards/ergodox/infinity/simple_visualizer.h
+++ b/keyboards/ergodox/infinity/simple_visualizer.h
@@ -34,7 +34,7 @@
 #include "lcd_backlight_keyframes.h"
 #include "system/serial_link.h"
 #include "led.h"
-#include "animations.h"
+#include "default_animations.h"
 
 static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
 static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
diff --git a/keyboards/ergodox/infinity/visualizer.c b/keyboards/ergodox/infinity/visualizer.c
index 047a1119ce..4b16021abc 100644
--- a/keyboards/ergodox/infinity/visualizer.c
+++ b/keyboards/ergodox/infinity/visualizer.c
@@ -31,7 +31,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "lcd_keyframes.h"
 #include "lcd_backlight_keyframes.h"
 #include "system/serial_link.h"
-#include "animations.h"
+#include "default_animations.h"
 
 static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
 static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
diff --git a/keyboards/whitefox/animations.c b/keyboards/whitefox/animations.c
deleted file mode 100644
index a15d46ccda..0000000000
--- a/keyboards/whitefox/animations.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#if defined(VISUALIZER_ENABLE)
-
-#include "animations.h"
-#include "visualizer.h"
-
-#ifdef BACKLIGHT_ENABLE
-#include "led_backlight_keyframes.h"
-#endif
-
-#include "visualizer_keyframes.h"
-
-
-#if defined(LCD_ENABLE) || defined(LCD_BACKLIGHT_ENABLE) || defined(BACKLIGHT_ENABLE)
-
-static bool keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
-#ifdef BACKLIGHT_ENABLE
-    led_backlight_keyframe_enable(animation, state);
-#endif
-    return false;
-}
-
-static bool keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
-#ifdef BACKLIGHT_ENABLE
-    led_backlight_keyframe_disable(animation, state);
-#endif
-    return false;
-}
-
-static bool keyframe_fade_in(keyframe_animation_t* animation, visualizer_state_t* state) {
-    bool ret = false;
-#ifdef BACKLIGHT_ENABLE
-    ret |= led_backlight_keyframe_fade_in_all(animation, state);
-#endif
-    return ret;
-}
-
-static bool keyframe_fade_out(keyframe_animation_t* animation, visualizer_state_t* state) {
-    bool ret = false;
-#ifdef BACKLIGHT_ENABLE
-    ret |= led_backlight_keyframe_fade_out_all(animation, state);
-#endif
-    return ret;
-}
-
-
-// Don't worry, if the startup animation is long, you can use the keyboard like normal
-// during that time
-keyframe_animation_t default_startup_animation = {
-    .num_frames = 2,
-    .loop = false,
-    .frame_lengths = {0, gfxMillisecondsToTicks(5000)},
-    .frame_functions = {
-            keyframe_enable,
-            keyframe_fade_in,
-    },
-};
-
-keyframe_animation_t default_suspend_animation = {
-    .num_frames = 2,
-    .loop = false,
-    .frame_lengths = {gfxMillisecondsToTicks(1000), 0},
-    .frame_functions = {
-            keyframe_fade_out,
-            keyframe_disable,
-    },
-};
-#endif
-
-#if defined(BACKLIGHT_ENABLE)
-#define CROSSFADE_TIME 1000
-#define GRADIENT_TIME 3000
-
-keyframe_animation_t led_test_animation = {
-    .num_frames = 14,
-    .loop = true,
-    .frame_lengths = {
-        gfxMillisecondsToTicks(1000), // fade in
-        gfxMillisecondsToTicks(1000), // no op (leds on)
-        gfxMillisecondsToTicks(1000), // fade out
-        gfxMillisecondsToTicks(CROSSFADE_TIME), // crossfade
-        gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
-        gfxMillisecondsToTicks(CROSSFADE_TIME), // crossfade
-        gfxMillisecondsToTicks(GRADIENT_TIME), // top_to_bottom
-        0,           // mirror leds
-        gfxMillisecondsToTicks(CROSSFADE_TIME), // crossfade
-        gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
-        gfxMillisecondsToTicks(CROSSFADE_TIME), // crossfade
-        gfxMillisecondsToTicks(GRADIENT_TIME), // top_to_bottom
-        0,           // normal leds
-        gfxMillisecondsToTicks(CROSSFADE_TIME), // crossfade
-
-    },
-    .frame_functions = {
-        led_backlight_keyframe_fade_in_all,
-        keyframe_no_operation,
-        led_backlight_keyframe_fade_out_all,
-        led_backlight_keyframe_crossfade,
-        led_backlight_keyframe_left_to_right_gradient,
-        led_backlight_keyframe_crossfade,
-        led_backlight_keyframe_top_to_bottom_gradient,
-        led_backlight_keyframe_mirror_orientation,
-        led_backlight_keyframe_crossfade,
-        led_backlight_keyframe_left_to_right_gradient,
-        led_backlight_keyframe_crossfade,
-        led_backlight_keyframe_top_to_bottom_gradient,
-        led_backlight_keyframe_normal_orientation,
-        led_backlight_keyframe_crossfade,
-    },
-};
-#endif
-
-#endif
diff --git a/keyboards/whitefox/animations.h b/keyboards/whitefox/animations.h
deleted file mode 100644
index 6d8b9830d9..0000000000
--- a/keyboards/whitefox/animations.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef KEYBOARDS_ERGODOX_INFINITY_ANIMATIONS_H_
-#define KEYBOARDS_ERGODOX_INFINITY_ANIMATIONS_H_
-
-#include "visualizer.h"
-
-// You can use these default animations, but of course you can also write your own custom ones instead
-extern keyframe_animation_t default_startup_animation;
-extern keyframe_animation_t default_suspend_animation;
-
-// An animation for testing and demonstrating the led support, should probably not be used for real world
-// cases
-extern keyframe_animation_t led_test_animation;
-
-#endif /* KEYBOARDS_ERGODOX_INFINITY_ANIMATIONS_H_ */
diff --git a/keyboards/whitefox/rules.mk b/keyboards/whitefox/rules.mk
index c0effcb7b7..3911480718 100644
--- a/keyboards/whitefox/rules.mk
+++ b/keyboards/whitefox/rules.mk
@@ -1,7 +1,6 @@
 # project specific files
 SRC =	matrix.c \
-	led.c \
-	animations.c
+	led.c
 
 ## chip/board settings
 # - the next two should match the directories in
diff --git a/keyboards/whitefox/visualizer.c b/keyboards/whitefox/visualizer.c
index 167e0ec4de..e5bafcbe95 100644
--- a/keyboards/whitefox/visualizer.c
+++ b/keyboards/whitefox/visualizer.c
@@ -20,7 +20,7 @@
 #include "visualizer.h"
 #include "visualizer_keyframes.h"
 #include "led.h"
-#include "animations.h"
+#include "default_animations.h"
 
 
 static bool initial_update = true;
diff --git a/keyboards/ergodox/infinity/animations.c b/quantum/visualizer/default_animations.c
similarity index 92%
rename from keyboards/ergodox/infinity/animations.c
rename to quantum/visualizer/default_animations.c
index faac96215a..2d03273720 100644
--- a/keyboards/ergodox/infinity/animations.c
+++ b/quantum/visualizer/default_animations.c
@@ -16,7 +16,7 @@
 
 #if defined(VISUALIZER_ENABLE)
 
-#include "animations.h"
+#include "default_animations.h"
 #include "visualizer.h"
 #ifdef LCD_ENABLE
 #include "lcd_keyframes.h"
@@ -86,22 +86,44 @@ static bool keyframe_fade_out(keyframe_animation_t* animation, visualizer_state_
 // Don't worry, if the startup animation is long, you can use the keyboard like normal
 // during that time
 keyframe_animation_t default_startup_animation = {
+#if LCD_ENABLE
     .num_frames = 3,
+#else
+    .num_frames = 2,
+#endif
     .loop = false,
-    .frame_lengths = {0, 0, gfxMillisecondsToTicks(5000)},
+    .frame_lengths = {
+        0, 
+#if LCD_ENABLE
+        0, 
+#endif
+        gfxMillisecondsToTicks(5000)},
     .frame_functions = {
             keyframe_enable,
+#if LCD_ENABLE
             lcd_keyframe_draw_logo,
+#endif
             keyframe_fade_in,
     },
 };
 
 keyframe_animation_t default_suspend_animation = {
+#if LCD_ENABLE
     .num_frames = 3,
+#else
+    .num_frames = 2,
+#endif
     .loop = false,
-    .frame_lengths = {0, gfxMillisecondsToTicks(1000), 0},
+    .frame_lengths = {
+#if LCD_ENABLE
+        0, 
+#endif
+        gfxMillisecondsToTicks(1000), 
+        0},
     .frame_functions = {
+#if LCD_ENABLE
             lcd_keyframe_display_layer_text,
+#endif
             keyframe_fade_out,
             keyframe_disable,
     },
diff --git a/keyboards/ergodox/infinity/animations.h b/quantum/visualizer/default_animations.h
similarity index 87%
rename from keyboards/ergodox/infinity/animations.h
rename to quantum/visualizer/default_animations.h
index 6d8b9830d9..51320b8b8a 100644
--- a/keyboards/ergodox/infinity/animations.h
+++ b/quantum/visualizer/default_animations.h
@@ -14,8 +14,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef KEYBOARDS_ERGODOX_INFINITY_ANIMATIONS_H_
-#define KEYBOARDS_ERGODOX_INFINITY_ANIMATIONS_H_
+#ifndef DEFAULT_ANIMATIONS_H_
+#define DEFAULT_ANIMATIONS_H_
 
 #include "visualizer.h"
 
@@ -27,4 +27,4 @@ extern keyframe_animation_t default_suspend_animation;
 // cases
 extern keyframe_animation_t led_test_animation;
 
-#endif /* KEYBOARDS_ERGODOX_INFINITY_ANIMATIONS_H_ */
+#endif /* DEFAULT_ANIMATIONS_H_ */
diff --git a/quantum/visualizer/visualizer.mk b/quantum/visualizer/visualizer.mk
index a04c9775fa..3a0f771bca 100644
--- a/quantum/visualizer/visualizer.mk
+++ b/quantum/visualizer/visualizer.mk
@@ -46,6 +46,8 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
 SRC += $(VISUALIZER_DIR)/led_backlight_keyframes.c
 endif
 
+SRC += $(VISUALIZER_DIR)/default_animations.c
+
 include $(GFXLIB)/gfx.mk
 # For the common_gfxconf.h
 GFXINC += quantum/visualizer

From 9d8279960d8784d5602025f6845b0af92db12848 Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Sun, 9 Jul 2017 20:35:33 +0300
Subject: [PATCH 12/17] Make it easier to use drivers

---
 drivers/ugfx/gdisp/is31fl3731c/driver.mk      |  1 +
 .../gdisp/is31fl3731c/gdisp_is31fl3731c.c     | 12 +++----
 drivers/ugfx/gdisp/st7565/driver.mk           |  1 +
 drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c  |  4 +--
 .../ergodox/infinity/board_IS31FL3731C.h      |  3 --
 keyboards/ergodox/infinity/config.h           |  5 ---
 keyboards/ergodox/infinity/gfxconf.h          |  6 ----
 keyboards/ergodox/infinity/rules.mk           |  9 +++--
 keyboards/whitefox/board_IS31FL3731C.h        |  3 --
 keyboards/whitefox/config.h                   |  8 +----
 keyboards/whitefox/gfxconf.h                  |  4 ---
 keyboards/whitefox/rules.mk                   |  4 ++-
 quantum/visualizer/lcd_keyframes.c            |  4 +--
 quantum/visualizer/led_backlight_keyframes.c  |  4 +--
 quantum/visualizer/visualizer.mk              | 35 +++++++++++++++++++
 15 files changed, 58 insertions(+), 45 deletions(-)

diff --git a/drivers/ugfx/gdisp/is31fl3731c/driver.mk b/drivers/ugfx/gdisp/is31fl3731c/driver.mk
index c9de62d1e8..4364787c90 100644
--- a/drivers/ugfx/gdisp/is31fl3731c/driver.mk
+++ b/drivers/ugfx/gdisp/is31fl3731c/driver.mk
@@ -1,2 +1,3 @@
 GFXINC += drivers/ugfx/gdisp/is31fl3731c
 GFXSRC += drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
+GDISP_DRIVER_LIST += GDISPVMT_IS31FL3731C_QMK
\ No newline at end of file
diff --git a/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c b/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
index 0691dbfbf3..3faddcda8b 100644
--- a/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
+++ b/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
@@ -19,7 +19,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #if GFX_USE_GDISP
 
-#define GDISP_DRIVER_VMT            GDISPVMT_IS31FL3731C_QMK
+#define GDISP_DRIVER_VMT          GDISPVMT_IS31FL3731C_QMK
+#define GDISP_SCREEN_HEIGHT       LED_HEIGHT
+#define GDISP_SCREEN_WIDTH        LED_WIDTH
+
 #include "gdisp_lld_config.h"
 #include "src/gdisp/gdisp_driver.h"
 
@@ -33,12 +36,6 @@ extern const uint8_t CIE1931_CURVE[];
 /* Driver local definitions.                                                 */
 /*===========================================================================*/
 
-#ifndef GDISP_SCREEN_HEIGHT
-    #define GDISP_SCREEN_HEIGHT       9
-#endif
-#ifndef GDISP_SCREEN_WIDTH
-    #define GDISP_SCREEN_WIDTH        16
-#endif
 #ifndef GDISP_INITIAL_CONTRAST
     #define GDISP_INITIAL_CONTRAST    0
 #endif
@@ -100,7 +97,6 @@ extern const uint8_t CIE1931_CURVE[];
 #define IS31_PWM_SIZE 0x90
 
 #define IS31_LED_MASK_SIZE 0x12
-#define IS31_SCREEN_WIDTH 16
 
 #define IS31
 
diff --git a/drivers/ugfx/gdisp/st7565/driver.mk b/drivers/ugfx/gdisp/st7565/driver.mk
index 0190b60194..31fc8f1c76 100644
--- a/drivers/ugfx/gdisp/st7565/driver.mk
+++ b/drivers/ugfx/gdisp/st7565/driver.mk
@@ -1,2 +1,3 @@
 GFXINC += drivers/ugfx/gdisp/st7565
 GFXSRC += drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
+GDISP_DRIVER_LIST += GDISPVMT_ST7565_QMK
\ No newline at end of file
diff --git a/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c b/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
index 55552cb795..4a4c83e891 100644
--- a/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
+++ b/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
@@ -20,10 +20,10 @@
 /*===========================================================================*/
 
 #ifndef GDISP_SCREEN_HEIGHT
-#define GDISP_SCREEN_HEIGHT         32
+#define GDISP_SCREEN_HEIGHT         LCD_HEIGHT
 #endif
 #ifndef GDISP_SCREEN_WIDTH
-#define GDISP_SCREEN_WIDTH          128
+#define GDISP_SCREEN_WIDTH          LCD_WIDTH
 #endif
 #ifndef GDISP_INITIAL_CONTRAST
 #define GDISP_INITIAL_CONTRAST      35
diff --git a/keyboards/ergodox/infinity/board_IS31FL3731C.h b/keyboards/ergodox/infinity/board_IS31FL3731C.h
index 2ea73f1fb3..f248cc25ba 100644
--- a/keyboards/ergodox/infinity/board_IS31FL3731C.h
+++ b/keyboards/ergodox/infinity/board_IS31FL3731C.h
@@ -22,9 +22,6 @@ static const I2CConfig i2ccfg = {
   400000 // clock speed (Hz); 400kHz max for IS31
 };
 
-#define GDISP_SCREEN_WIDTH  7
-#define GDISP_SCREEN_HEIGHT 7
-
 static const uint8_t led_mask[] = {
 	0xFF, 0x00, /* C1-1 -> C1-16 */
 	0xFF, 0x00, /* C2-1 -> C2-16 */
diff --git a/keyboards/ergodox/infinity/config.h b/keyboards/ergodox/infinity/config.h
index fa157a893f..c46edeb7b2 100644
--- a/keyboards/ergodox/infinity/config.h
+++ b/keyboards/ergodox/infinity/config.h
@@ -54,11 +54,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #define VISUALIZER_USER_DATA_SIZE 16
 
-#define LCD_DISPLAY_NUMBER 0
-#define LED_DISPLAY_NUMBER 1
-
-#define LED_NUM_ROWS 7
-#define LED_NUM_COLS 7
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.
diff --git a/keyboards/ergodox/infinity/gfxconf.h b/keyboards/ergodox/infinity/gfxconf.h
index 0d017aea97..ca338399d3 100644
--- a/keyboards/ergodox/infinity/gfxconf.h
+++ b/keyboards/ergodox/infinity/gfxconf.h
@@ -22,12 +22,6 @@
 #ifndef _GFXCONF_H
 #define _GFXCONF_H
 
-#ifndef EMULATOR
-#define GDISP_DRIVER_LIST                            GDISPVMT_ST7565_QMK, GDISPVMT_IS31FL3731C_QMK
-#else
-#define GDISP_DRIVER_LIST                            GDISPVMT_EMULATOR_LCD_ERGODOX, GDISPVMT_EMULATOR_LED_ERGODOX
-#endif
-
 #include "common_gfxconf.h"
 
 #endif /* _GFXCONF_H */
diff --git a/keyboards/ergodox/infinity/rules.mk b/keyboards/ergodox/infinity/rules.mk
index 2ccf98b8c5..a341bbfce8 100644
--- a/keyboards/ergodox/infinity/rules.mk
+++ b/keyboards/ergodox/infinity/rules.mk
@@ -66,5 +66,10 @@ LCD_BACKLIGHT_ENABLE = yes
 MIDI_ENABLE = no
 RGBLIGHT_ENABLE = no
 
-include $(TOP_DIR)/drivers/ugfx/gdisp/st7565/driver.mk
-include $(TOP_DIR)/drivers/ugfx/gdisp/is31fl3731c/driver.mk
\ No newline at end of file
+LCD_DRIVER = st7565
+LCD_WIDTH = 128 
+LCD_HEIGHT = 32
+
+LED_DRIVER = is31fl3731c
+LED_WIDTH = 7 
+LED_HEIGHT = 7
\ No newline at end of file
diff --git a/keyboards/whitefox/board_IS31FL3731C.h b/keyboards/whitefox/board_IS31FL3731C.h
index 3dc5327a58..dea643f107 100644
--- a/keyboards/whitefox/board_IS31FL3731C.h
+++ b/keyboards/whitefox/board_IS31FL3731C.h
@@ -22,9 +22,6 @@ static const I2CConfig i2ccfg = {
   400000 // clock speed (Hz); 400kHz max for IS31
 };
 
-#define GDISP_SCREEN_WIDTH  16
-#define GDISP_SCREEN_HEIGHT 5
-
 static const uint8_t led_mask[] = {
 	0xFF, 0x00, /* C1-1 -> C1-16 */
 	0xFF, 0x00, /* C2-1 -> C2-16 */
diff --git a/keyboards/whitefox/config.h b/keyboards/whitefox/config.h
index 76040bd744..dc33a7ce5b 100644
--- a/keyboards/whitefox/config.h
+++ b/keyboards/whitefox/config.h
@@ -81,10 +81,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
 
-#endif
-
-// The visualizer needs gfx thread priorities
-#define LED_DISPLAY_NUMBER 0
-
-#define LED_NUM_ROWS 5
-#define LED_NUM_COLS 16
\ No newline at end of file
+#endif
\ No newline at end of file
diff --git a/keyboards/whitefox/gfxconf.h b/keyboards/whitefox/gfxconf.h
index eb93f92ebb..ca338399d3 100644
--- a/keyboards/whitefox/gfxconf.h
+++ b/keyboards/whitefox/gfxconf.h
@@ -22,10 +22,6 @@
 #ifndef _GFXCONF_H
 #define _GFXCONF_H
 
-#ifndef EMULATOR
-#define GDISP_DRIVER_LIST                            GDISPVMT_IS31FL3731C_QMK
-#endif
-
 #include "common_gfxconf.h"
 
 #endif /* _GFXCONF_H */
diff --git a/keyboards/whitefox/rules.mk b/keyboards/whitefox/rules.mk
index 3911480718..32273e08aa 100644
--- a/keyboards/whitefox/rules.mk
+++ b/keyboards/whitefox/rules.mk
@@ -69,4 +69,6 @@ CUSTOM_MATRIX = yes # Custom matrix file
 BACKLIGHT_ENABLE = yes
 VISUALIZER_ENABLE = yes
 
-include $(TOP_DIR)/drivers/ugfx/gdisp/is31fl3731c/driver.mk
+LED_DRIVER = is31fl3731c
+LED_WIDTH = 16 
+LED_HEIGHT = 5
\ No newline at end of file
diff --git a/quantum/visualizer/lcd_keyframes.c b/quantum/visualizer/lcd_keyframes.c
index 82e4184d2c..75eb457001 100644
--- a/quantum/visualizer/lcd_keyframes.c
+++ b/quantum/visualizer/lcd_keyframes.c
@@ -166,8 +166,8 @@ bool lcd_keyframe_draw_logo(keyframe_animation_t* animation, visualizer_state_t*
     // or state structs, here we use the image
 
     //gdispGBlitArea is a tricky function to use since it supports blitting part of the image
-    // if you have full screen image, then just use 128 and 32 for both source and target dimensions
-    gdispGBlitArea(GDISP, 0, 0, 128, 32, 0, 0, 128, (pixel_t*)resource_lcd_logo);
+    // if you have full screen image, then just use LCD_WIDTH and LCD_HEIGHT for both source and target dimensions
+    gdispGBlitArea(GDISP, 0, 0, LCD_WIDTH, LCD_HEIGHT, 0, 0, LCD_WIDTH, (pixel_t*)resource_lcd_logo);
 
     return false;
 }
diff --git a/quantum/visualizer/led_backlight_keyframes.c b/quantum/visualizer/led_backlight_keyframes.c
index d2921a391a..eb3f5561d8 100644
--- a/quantum/visualizer/led_backlight_keyframes.c
+++ b/quantum/visualizer/led_backlight_keyframes.c
@@ -41,8 +41,8 @@ static void keyframe_fade_all_leds_from_to(keyframe_animation_t* animation, uint
 }
 
 // TODO: Should be customizable per keyboard
-#define NUM_ROWS LED_NUM_ROWS
-#define NUM_COLS LED_NUM_COLS
+#define NUM_ROWS LED_HEIGHT
+#define NUM_COLS LED_WIDTH
 
 static uint8_t crossfade_start_frame[NUM_ROWS][NUM_COLS];
 static uint8_t crossfade_end_frame[NUM_ROWS][NUM_COLS];
diff --git a/quantum/visualizer/visualizer.mk b/quantum/visualizer/visualizer.mk
index 3a0f771bca..102d23b7ef 100644
--- a/quantum/visualizer/visualizer.mk
+++ b/quantum/visualizer/visualizer.mk
@@ -20,6 +20,30 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 # SOFTWARE.
 
+define ADD_DRIVER
+    $(1)_DRIVER:=$(strip $($(1)_DRIVER))
+    $(1)_WIDTH:=$(strip $($(1)_WIDTH))
+    $(1)_HEIGHT:=$(strip $($(1)_HEIGHT))
+    ifeq ($($(1)_DRIVER),)
+        $$(error $(1)_DRIVER is not defined)
+    endif
+    ifeq ($($(1)_WIDTH),)
+        $$(error $(1)_WIDTH is not defined)
+    endif
+    ifeq ($($(1)_HEIGHT),)
+        $$(error $(1)_HEIGHT is not defined)
+    endif
+    OPT_DEFS+=-D$(1)_WIDTH=$($(1)_WIDTH)
+    OPT_DEFS+=-D$(1)_HEIGHT=$($(1)_HEIGHT)
+    GFXDEFS+=-D$(1)_WIDTH=$($(1)_WIDTH)
+    GFXDEFS+=-D$(1)_HEIGHT=$($(1)_HEIGHT)
+    $(1)_DISPLAY_NUMBER:=$$(words $$(GDISP_DRIVER_LIST))
+    OPT_DEFS+=-D$(1)_DISPLAY_NUMBER=$$($(1)_DISPLAY_NUMBER)
+    include $(TOP_DIR)/drivers/ugfx/gdisp/$($(1)_DRIVER)/driver.mk
+endef
+
+GDISP_DRIVER_LIST:=
+
 SRC += $(VISUALIZER_DIR)/visualizer.c \
 	$(VISUALIZER_DIR)/visualizer_keyframes.c
 EXTRAINCDIRS += $(GFXINC) $(VISUALIZER_DIR)
@@ -40,10 +64,12 @@ SRC += $(VISUALIZER_DIR)/lcd_backlight_keyframes.c
 # Note, that the linker will strip out any resources that are not actually in use
 SRC += $(VISUALIZER_DIR)/resources/lcd_logo.c
 OPT_DEFS += -DLCD_BACKLIGHT_ENABLE
+$(eval $(call ADD_DRIVER,LCD))
 endif
 
 ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
 SRC += $(VISUALIZER_DIR)/led_backlight_keyframes.c
+$(eval $(call ADD_DRIVER,LED))
 endif
 
 SRC += $(VISUALIZER_DIR)/default_animations.c
@@ -55,6 +81,15 @@ GFXINC += quantum/visualizer
 GFXSRC := $(patsubst $(TOP_DIR)/%,%,$(GFXSRC))
 GFXDEFS := $(patsubst %,-D%,$(patsubst -D%,%,$(GFXDEFS)))
 
+GDISP_LIST_COMMA=,
+GDISP_LIST_EMPTY=
+GDISP_LIST_SPACE=$(GDISP_LIST_EMPTY) $(GDISP_LIST_EMPTY)
+
+GDISP_DRIVER_LIST := $(strip $(GDISP_DRIVER_LIST))
+GDISP_DRIVER_LIST := $(subst $(GDISP_LIST_SPACE),$(GDISP_LIST_COMMA),$(GDISP_DRIVER_LIST))
+
+GFXDEFS +=-DGDISP_DRIVER_LIST="$(GDISP_DRIVER_LIST)"
+
 ifneq ("$(wildcard $(KEYMAP_PATH)/visualizer.c)","")
     SRC += keyboards/$(KEYBOARD)/keymaps/$(KEYMAP)/visualizer.c
 else 

From 190b90892bf1b17f5cb24a1e7bd88c63047c3eb0 Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Mon, 10 Jul 2017 10:48:02 +0300
Subject: [PATCH 13/17] Rename board files to lowercase

---
 drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c              | 2 +-
 drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c                    | 2 +-
 .../infinity/{board_IS31FL3731C.h => board_is31fl3731c.h}       | 0
 keyboards/ergodox/infinity/{board_ST7565.h => board_st7565.h}   | 0
 keyboards/whitefox/{board_IS31FL3731C.h => board_is31fl3731c.h} | 0
 5 files changed, 2 insertions(+), 2 deletions(-)
 rename keyboards/ergodox/infinity/{board_IS31FL3731C.h => board_is31fl3731c.h} (100%)
 rename keyboards/ergodox/infinity/{board_ST7565.h => board_st7565.h} (100%)
 rename keyboards/whitefox/{board_IS31FL3731C.h => board_is31fl3731c.h} (100%)

diff --git a/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c b/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
index 3faddcda8b..917adadb84 100644
--- a/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
+++ b/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
@@ -26,7 +26,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "gdisp_lld_config.h"
 #include "src/gdisp/gdisp_driver.h"
 
-#include "board_IS31FL3731C.h"
+#include "board_is31fl3731c.h"
 
 
 // Can't include led_tables from here
diff --git a/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c b/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
index 4a4c83e891..c38194b069 100644
--- a/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
+++ b/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
@@ -13,7 +13,7 @@
 #include "gdisp_lld_config.h"
 #include "src/gdisp/gdisp_driver.h"
 
-#include "board_ST7565.h"
+#include "board_st7565.h"
 
 /*===========================================================================*/
 /* Driver local definitions.                                                 */
diff --git a/keyboards/ergodox/infinity/board_IS31FL3731C.h b/keyboards/ergodox/infinity/board_is31fl3731c.h
similarity index 100%
rename from keyboards/ergodox/infinity/board_IS31FL3731C.h
rename to keyboards/ergodox/infinity/board_is31fl3731c.h
diff --git a/keyboards/ergodox/infinity/board_ST7565.h b/keyboards/ergodox/infinity/board_st7565.h
similarity index 100%
rename from keyboards/ergodox/infinity/board_ST7565.h
rename to keyboards/ergodox/infinity/board_st7565.h
diff --git a/keyboards/whitefox/board_IS31FL3731C.h b/keyboards/whitefox/board_is31fl3731c.h
similarity index 100%
rename from keyboards/whitefox/board_IS31FL3731C.h
rename to keyboards/whitefox/board_is31fl3731c.h

From 551924f8a02b374201f7d0066755fa183a45accf Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Mon, 10 Jul 2017 10:49:50 +0300
Subject: [PATCH 14/17] Add template board files

---
 .../is31fl3731c/board_is31fl3731c_template.h  | 110 +++++++++++++++++
 .../ugfx/gdisp/st7565/board_st7565_template.h | 113 ++++++++++++++++++
 2 files changed, 223 insertions(+)
 create mode 100644 drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h
 create mode 100644 drivers/ugfx/gdisp/st7565/board_st7565_template.h

diff --git a/drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h b/drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h
new file mode 100644
index 0000000000..f248cc25ba
--- /dev/null
+++ b/drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h
@@ -0,0 +1,110 @@
+/*
+Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _GDISP_LLD_BOARD_H
+#define _GDISP_LLD_BOARD_H
+
+static const I2CConfig i2ccfg = {
+  400000 // clock speed (Hz); 400kHz max for IS31
+};
+
+static const uint8_t led_mask[] = {
+	0xFF, 0x00, /* C1-1 -> C1-16 */
+	0xFF, 0x00, /* C2-1 -> C2-16 */
+	0xFF, 0x00, /* C3-1 -> C3-16 */
+	0xFF, 0x00, /* C4-1 -> C4-16 */
+	0x3F, 0x00, /* C5-1 -> C5-16 */
+	0x00, 0x00, /* C6-1 -> C6-16 */
+	0x00, 0x00, /* C7-1 -> C7-16 */
+	0x00, 0x00, /* C8-1 -> C8-16 */
+	0x00, 0x00, /* C9-1 -> C9-16 */
+};
+
+// The address of the LED
+#define LA(c, r) (c + r * 16 )
+// Need to be an address that is not mapped, but inside the range of the controller matrix
+#define NA LA(8, 8)
+
+// The numbers in the comments are the led numbers DXX on the PCB
+// The mapping is taken from the schematic of left hand side
+static const uint8_t led_mapping[GDISP_SCREEN_HEIGHT][GDISP_SCREEN_WIDTH] = {
+//   45        44        43        42        41        40        39
+   { LA(1, 1), LA(1, 0), LA(0, 4), LA(0, 3), LA(0, 2), LA(0, 1), LA(0, 0)},
+//   52        51        50        49        48        47        46
+   { LA(2, 3), LA(2, 2), LA(2, 1), LA(2, 0), LA(1, 4), LA(1, 3), LA(1, 2) },
+//   58        57        56        55        54        53        N/A
+   { LA(3, 4), LA(3, 3), LA(3, 2), LA(3, 1), LA(3, 0), LA(2, 4), NA },
+//   67        66        65        64        63        62        61
+   { LA(5, 3), LA(5, 2), LA(5, 1), LA(5, 0), LA(4, 4), LA(4, 3), LA(4, 2) },
+//   76        75        74        73        72        60        59
+   { LA(7, 3), LA(7, 2), LA(7, 1), LA(7, 0), LA(6, 3), LA(4, 1), LA(4, 0) },
+//   N/A       N/A       N/A       N/A       N/A       N/A       68
+   { NA,       NA,       NA,       NA,       NA,       NA,       LA(5, 4) },
+//   N/A       N/A       N/A       N/A       71        70        69
+   { NA,       NA,       NA,       NA,       LA(6, 2), LA(6, 1), LA(6, 0) },
+};
+
+
+#define IS31_ADDR_DEFAULT 0x74 // AD connected to GND
+#define IS31_TIMEOUT 5000
+
+static GFXINLINE void init_board(GDisplay *g) {
+    (void) g;
+    /* I2C pins */
+    palSetPadMode(GPIOB, 0, PAL_MODE_ALTERNATIVE_2); // PTB0/I2C0/SCL
+    palSetPadMode(GPIOB, 1, PAL_MODE_ALTERNATIVE_2); // PTB1/I2C0/SDA
+    palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL);
+    palClearPad(GPIOB, 16);
+    /* start I2C */
+    i2cStart(&I2CD1, &i2ccfg);
+    // try high drive (from kiibohd)
+    I2CD1.i2c->C2 |= I2Cx_C2_HDRS;
+    // try glitch fixing (from kiibohd)
+    I2CD1.i2c->FLT = 4;
+}
+
+static GFXINLINE void post_init_board(GDisplay *g) {
+	(void) g;
+}
+
+static GFXINLINE const uint8_t* get_led_mask(GDisplay* g) {
+    (void) g;
+    return led_mask;
+}
+
+static GFXINLINE uint8_t get_led_address(GDisplay* g, uint16_t x, uint16_t y)
+{
+    (void) g;
+    return led_mapping[y][x];
+}
+
+static GFXINLINE void set_hardware_shutdown(GDisplay* g, bool shutdown) {
+    (void) g;
+    if(!shutdown) {
+        palSetPad(GPIOB, 16);
+    }
+    else {
+        palClearPad(GPIOB, 16);
+    }
+}
+
+static GFXINLINE void write_data(GDisplay *g, uint8_t* data, uint16_t length) {
+	(void) g;
+	i2cMasterTransmitTimeout(&I2CD1, IS31_ADDR_DEFAULT, data, length, 0, 0, US2ST(IS31_TIMEOUT));
+}
+
+#endif /* _GDISP_LLD_BOARD_H */
diff --git a/drivers/ugfx/gdisp/st7565/board_st7565_template.h b/drivers/ugfx/gdisp/st7565/board_st7565_template.h
new file mode 100644
index 0000000000..9ab636c95d
--- /dev/null
+++ b/drivers/ugfx/gdisp/st7565/board_st7565_template.h
@@ -0,0 +1,113 @@
+/*
+ * This file is subject to the terms of the GFX License. If a copy of
+ * the license was not distributed with this file, you can obtain one at:
+ *
+ *              http://ugfx.org/license.html
+ */
+
+#ifndef _GDISP_LLD_BOARD_H
+#define _GDISP_LLD_BOARD_H
+
+#define ST7565_LCD_BIAS         ST7565_LCD_BIAS_9 // actually 6
+#define ST7565_ADC              ST7565_ADC_NORMAL
+#define ST7565_COM_SCAN         ST7565_COM_SCAN_DEC
+#define ST7565_PAGE_ORDER       0,1,2,3
+/*
+ * Custom page order for several LCD boards, e.g. HEM12864-99
+ * #define ST7565_PAGE_ORDER       4,5,6,7,0,1,2,3
+ */
+
+#define ST7565_GPIOPORT GPIOC
+#define ST7565_PORT PORTC
+#define ST7565_A0_PIN 7
+#define ST7565_RST_PIN 8
+#define ST7565_MOSI_PIN 6
+#define ST7565_SLCK_PIN 5
+#define ST7565_SS_PIN 4
+
+#define palSetPadModeRaw(portname, bits) \
+    ST7565_PORT->PCR[ST7565_##portname##_PIN] = bits
+
+#define palSetPadModeNamed(portname, portmode) \
+    palSetPadMode(ST7565_GPIOPORT, ST7565_##portname##_PIN, portmode)
+
+#define ST7565_SPI_MODE PORTx_PCRn_DSE | PORTx_PCRn_MUX(2)
+// DSPI Clock and Transfer Attributes
+// Frame Size: 8 bits
+// MSB First
+// CLK Low by default
+static const SPIConfig spi1config = {
+   // Operation complete callback or @p NULL.
+  .end_cb = NULL,
+   //The chip select line port - when not using pcs.
+  .ssport = ST7565_GPIOPORT,
+   // brief The chip select line pad number - when not using pcs.
+  .sspad=ST7565_SS_PIN,
+   // SPI initialization data.
+  .tar0 =
+    SPIx_CTARn_FMSZ(7) // Frame size = 8 bytes
+    | SPIx_CTARn_ASC(1) // After SCK Delay Scaler (min 50 ns) = 55.56ns
+    | SPIx_CTARn_DT(0) // Delay After Transfer Scaler (no minimum)= 27.78ns
+    | SPIx_CTARn_CSSCK(0) // PCS to SCK Delay Scaler (min 20 ns) = 27.78ns
+    | SPIx_CTARn_PBR(0) // Baud Rate Prescaler = 2
+    | SPIx_CTARn_BR(0) // Baud rate (min 50ns) = 55.56ns
+};
+
+static GFXINLINE void acquire_bus(GDisplay *g) {
+    (void) g;
+    // Only the LCD is using the SPI bus, so no need to acquire
+    // spiAcquireBus(&SPID1);
+    spiSelect(&SPID1);
+}
+
+static GFXINLINE void release_bus(GDisplay *g) {
+    (void) g;
+    // Only the LCD is using the SPI bus, so no need to release
+    //spiReleaseBus(&SPID1);
+    spiUnselect(&SPID1);
+}
+
+static GFXINLINE void init_board(GDisplay *g) {
+    (void) g;
+    palSetPadModeNamed(A0, PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPad(ST7565_GPIOPORT, ST7565_A0_PIN);
+    palSetPadModeNamed(RST, PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPad(ST7565_GPIOPORT, ST7565_RST_PIN);
+    palSetPadModeRaw(MOSI, ST7565_SPI_MODE);
+    palSetPadModeRaw(SLCK, ST7565_SPI_MODE);
+    palSetPadModeNamed(SS, PAL_MODE_OUTPUT_PUSHPULL);
+
+    spiInit();
+    spiStart(&SPID1, &spi1config);
+    release_bus(g);
+}
+
+static GFXINLINE void post_init_board(GDisplay *g) {
+    (void) g;
+}
+
+static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) {
+    (void) g;
+    if (state) {
+        palClearPad(ST7565_GPIOPORT, ST7565_RST_PIN);
+    }
+    else {
+        palSetPad(ST7565_GPIOPORT, ST7565_RST_PIN);
+    }
+}
+
+static GFXINLINE void enter_data_mode(GDisplay *g) {
+    palSetPad(ST7565_GPIOPORT, ST7565_A0_PIN);
+}
+
+static GFXINLINE void enter_cmd_mode(GDisplay *g) {
+    palClearPad(ST7565_GPIOPORT, ST7565_A0_PIN);
+}
+
+
+static GFXINLINE void write_data(GDisplay *g, uint8_t* data, uint16_t length) {
+    (void) g;
+    spiSend(&SPID1, length, data);
+}
+
+#endif /* _GDISP_LLD_BOARD_H */

From 10546665f4cdc25e3405bfa108b066004d436aea Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Sat, 8 Jul 2017 18:42:13 +0300
Subject: [PATCH 15/17] Fix uninitialized backlight_level in the Visualizer

---
 quantum/visualizer/visualizer.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/quantum/visualizer/visualizer.c b/quantum/visualizer/visualizer.c
index 68b86f590c..5b4d8d603e 100644
--- a/quantum/visualizer/visualizer.c
+++ b/quantum/visualizer/visualizer.c
@@ -256,6 +256,9 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
         .mods = 0xFF,
         .leds = 0xFFFFFFFF,
         .suspended = false,
+    #ifdef BACKLIGHT_ENABLE
+        .backlight_level = 0,
+    #endif
     #ifdef VISUALIZER_USER_DATA_SIZE
         .user_data = {0},
     #endif
@@ -300,6 +303,7 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
                 else {
                     gdispGSetPowerMode(LED_DISPLAY, powerOff);
                 }
+                state.status.backlight_level = current_status.backlight_level;
             }
     #endif
             if (visualizer_enabled) {

From 42d5a324eb673b2214a87c8911d850105c3bdaab Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Mon, 10 Jul 2017 11:18:47 -0400
Subject: [PATCH 16/17] Start mvoing hardware drivers to /drivers/ (#1433)

* start driver isolation

* update nyquist and orthodox boards

* update atreus62

* move drivers to avr

* update avr conditional
---
 common.mk                                     |   6 +-
 common_features.mk                            |   2 +-
 {quantum => drivers/avr}/analog.c             |   0
 {quantum => drivers/avr}/analog.h             |   0
 .../common => drivers/avr}/glcdfont.c         |   0
 .../atreus62 => drivers/avr}/pro_micro.h      |   0
 {keyboards/orthodox => drivers/avr}/ssd1306.c |   2 +-
 .../lets_split => drivers/avr}/ssd1306.h      |   0
 .../light_ws2812.c => drivers/avr/ws2812.c    |   2 +-
 .../light_ws2812.h => drivers/avr/ws2812.h    |   0
 keyboards/handwired/promethium/rgbsps.c       |   2 +-
 keyboards/handwired/promethium/rules.mk       |   4 +-
 keyboards/lets_split/pro_micro.h              | 362 --------------
 keyboards/lets_split/ssd1306.c                | 470 ------------------
 keyboards/nyquist/pro_micro.h                 | 362 --------------
 keyboards/orthodox/pro_micro.h                | 362 --------------
 keyboards/orthodox/ssd1306.h                  |  17 -
 quantum/rgblight.h                            |   2 +-
 tmk_core/avr.mk                               |   2 +-
 19 files changed, 13 insertions(+), 1582 deletions(-)
 rename {quantum => drivers/avr}/analog.c (100%)
 rename {quantum => drivers/avr}/analog.h (100%)
 rename {keyboards/lets_split/common => drivers/avr}/glcdfont.c (100%)
 rename {keyboards/atreus62 => drivers/avr}/pro_micro.h (100%)
 rename {keyboards/orthodox => drivers/avr}/ssd1306.c (99%)
 rename {keyboards/lets_split => drivers/avr}/ssd1306.h (100%)
 rename quantum/light_ws2812.c => drivers/avr/ws2812.c (99%)
 mode change 100755 => 100644
 rename quantum/light_ws2812.h => drivers/avr/ws2812.h (100%)
 mode change 100755 => 100644
 delete mode 100644 keyboards/lets_split/pro_micro.h
 delete mode 100644 keyboards/lets_split/ssd1306.c
 delete mode 100644 keyboards/nyquist/pro_micro.h
 delete mode 100644 keyboards/orthodox/pro_micro.h
 delete mode 100644 keyboards/orthodox/ssd1306.h

diff --git a/common.mk b/common.mk
index f87c209341..5b49680ea1 100644
--- a/common.mk
+++ b/common.mk
@@ -9,6 +9,9 @@ LIB_PATH = $(TOP_DIR)/lib
 QUANTUM_DIR = quantum
 QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR)
 
+DRIVER_DIR = drivers
+DRIVER_PATH = $(TOP_DIR)/$(DRIVER_DIR)
+
 BUILD_DIR := $(TOP_DIR)/.build
 
 COMMON_VPATH := $(TOP_DIR)
@@ -17,4 +20,5 @@ COMMON_VPATH += $(QUANTUM_PATH)
 COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras
 COMMON_VPATH += $(QUANTUM_PATH)/audio
 COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
-COMMON_VPATH += $(QUANTUM_PATH)/api
\ No newline at end of file
+COMMON_VPATH += $(QUANTUM_PATH)/api
+COMMON_VPATH += $(DRIVER_PATH)
\ No newline at end of file
diff --git a/common_features.mk b/common_features.mk
index f5e7af01fa..5eb56ccbfc 100644
--- a/common_features.mk
+++ b/common_features.mk
@@ -87,7 +87,7 @@ endif
 
 ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
     OPT_DEFS += -DRGBLIGHT_ENABLE
-    SRC += $(QUANTUM_DIR)/light_ws2812.c
+    SRC += ws2812.c
     SRC += $(QUANTUM_DIR)/rgblight.c
     CIE1931_CURVE = yes
     LED_BREATHING_TABLE = yes
diff --git a/quantum/analog.c b/drivers/avr/analog.c
similarity index 100%
rename from quantum/analog.c
rename to drivers/avr/analog.c
diff --git a/quantum/analog.h b/drivers/avr/analog.h
similarity index 100%
rename from quantum/analog.h
rename to drivers/avr/analog.h
diff --git a/keyboards/lets_split/common/glcdfont.c b/drivers/avr/glcdfont.c
similarity index 100%
rename from keyboards/lets_split/common/glcdfont.c
rename to drivers/avr/glcdfont.c
diff --git a/keyboards/atreus62/pro_micro.h b/drivers/avr/pro_micro.h
similarity index 100%
rename from keyboards/atreus62/pro_micro.h
rename to drivers/avr/pro_micro.h
diff --git a/keyboards/orthodox/ssd1306.c b/drivers/avr/ssd1306.c
similarity index 99%
rename from keyboards/orthodox/ssd1306.c
rename to drivers/avr/ssd1306.c
index 5c6dff27f8..f9312d2dc1 100644
--- a/keyboards/orthodox/ssd1306.c
+++ b/drivers/avr/ssd1306.c
@@ -6,7 +6,7 @@
 #include <string.h>
 #include "print.h"
 #include "lets_split.h"
-#include "common/glcdfont.c"
+#include "glcdfont.c"
 #ifdef ADAFRUIT_BLE_ENABLE
 #include "adafruit_ble.h"
 #endif
diff --git a/keyboards/lets_split/ssd1306.h b/drivers/avr/ssd1306.h
similarity index 100%
rename from keyboards/lets_split/ssd1306.h
rename to drivers/avr/ssd1306.h
diff --git a/quantum/light_ws2812.c b/drivers/avr/ws2812.c
old mode 100755
new mode 100644
similarity index 99%
rename from quantum/light_ws2812.c
rename to drivers/avr/ws2812.c
index 2506e3d8ec..59e032bf71
--- a/quantum/light_ws2812.c
+++ b/drivers/avr/ws2812.c
@@ -21,7 +21,7 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#include "light_ws2812.h"
+#include "ws2812.h"
 #include <avr/interrupt.h>
 #include <avr/io.h>
 #include <util/delay.h>
diff --git a/quantum/light_ws2812.h b/drivers/avr/ws2812.h
old mode 100755
new mode 100644
similarity index 100%
rename from quantum/light_ws2812.h
rename to drivers/avr/ws2812.h
diff --git a/keyboards/handwired/promethium/rgbsps.c b/keyboards/handwired/promethium/rgbsps.c
index f30badd356..84fac1ae1f 100644
--- a/keyboards/handwired/promethium/rgbsps.c
+++ b/keyboards/handwired/promethium/rgbsps.c
@@ -1,4 +1,4 @@
-#include "light_ws2812.h"
+#include "ws2812.h"
 #include "rgbsps.h"
 
 struct cRGB led[RGBSPS_NUM];
diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk
index 6fa45b42b6..69903dcebe 100644
--- a/keyboards/handwired/promethium/rules.mk
+++ b/keyboards/handwired/promethium/rules.mk
@@ -72,7 +72,7 @@ BLUETOOTH = AdafruitBLE
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
 
-SRC += $(QUANTUM_DIR)/light_ws2812.c
+SRC += ws2812.c
 SRC += rgbsps.c
-SRC += $(QUANTUM_DIR)/analog.c
+SRC += analog.c
 SRC += matrix.c
diff --git a/keyboards/lets_split/pro_micro.h b/keyboards/lets_split/pro_micro.h
deleted file mode 100644
index f9e7ed75d9..0000000000
--- a/keyboards/lets_split/pro_micro.h
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
-  pins_arduino.h - Pin definition functions for Arduino
-  Part of Arduino - http://www.arduino.cc/
-
-  Copyright (c) 2007 David A. Mellis
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation; either
-  version 2.1 of the License, or (at your option) any later version.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General
-  Public License along with this library; if not, write to the
-  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
-  Boston, MA  02111-1307  USA
-
-  $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
-*/
-
-#ifndef Pins_Arduino_h
-#define Pins_Arduino_h
-
-#include <avr/pgmspace.h>
-
-// Workaround for wrong definitions in "iom32u4.h".
-// This should be fixed in the AVR toolchain.
-#undef UHCON
-#undef UHINT
-#undef UHIEN
-#undef UHADDR
-#undef UHFNUM
-#undef UHFNUML
-#undef UHFNUMH
-#undef UHFLEN
-#undef UPINRQX
-#undef UPINTX
-#undef UPNUM
-#undef UPRST
-#undef UPCONX
-#undef UPCFG0X
-#undef UPCFG1X
-#undef UPSTAX
-#undef UPCFG2X
-#undef UPIENX
-#undef UPDATX
-#undef TCCR2A
-#undef WGM20
-#undef WGM21
-#undef COM2B0
-#undef COM2B1
-#undef COM2A0
-#undef COM2A1
-#undef TCCR2B
-#undef CS20
-#undef CS21
-#undef CS22
-#undef WGM22
-#undef FOC2B
-#undef FOC2A
-#undef TCNT2
-#undef TCNT2_0
-#undef TCNT2_1
-#undef TCNT2_2
-#undef TCNT2_3
-#undef TCNT2_4
-#undef TCNT2_5
-#undef TCNT2_6
-#undef TCNT2_7
-#undef OCR2A
-#undef OCR2_0
-#undef OCR2_1
-#undef OCR2_2
-#undef OCR2_3
-#undef OCR2_4
-#undef OCR2_5
-#undef OCR2_6
-#undef OCR2_7
-#undef OCR2B
-#undef OCR2_0
-#undef OCR2_1
-#undef OCR2_2
-#undef OCR2_3
-#undef OCR2_4
-#undef OCR2_5
-#undef OCR2_6
-#undef OCR2_7
-
-#define NUM_DIGITAL_PINS  30
-#define NUM_ANALOG_INPUTS 12
-
-#define TX_RX_LED_INIT  DDRD |= (1<<5), DDRB |= (1<<0)
-#define TXLED0          PORTD |= (1<<5)
-#define TXLED1          PORTD &= ~(1<<5)
-#define RXLED0          PORTB |= (1<<0)
-#define RXLED1          PORTB &= ~(1<<0)
-
-static const uint8_t SDA = 2;
-static const uint8_t SCL = 3;
-#define LED_BUILTIN 13
-
-// Map SPI port to 'new' pins D14..D17
-static const uint8_t SS   = 17;
-static const uint8_t MOSI = 16;
-static const uint8_t MISO = 14;
-static const uint8_t SCK  = 15;
-
-// Mapping of analog pins as digital I/O
-// A6-A11 share with digital pins
-static const uint8_t ADC0 = 18;
-static const uint8_t ADC1 = 19;
-static const uint8_t ADC2 = 20;
-static const uint8_t ADC3 = 21;
-static const uint8_t ADC4 = 22;
-static const uint8_t ADC5 = 23;
-static const uint8_t ADC6 = 24;   // D4
-static const uint8_t ADC7 = 25;   // D6
-static const uint8_t ADC8 = 26;   // D8
-static const uint8_t ADC9 = 27;   // D9
-static const uint8_t ADC10 = 28;  // D10
-static const uint8_t ADC11 = 29;  // D12
-
-#define digitalPinToPCICR(p)    ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0))
-#define digitalPinToPCICRbit(p) 0
-#define digitalPinToPCMSK(p)    ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0))
-#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4))))))
-
-//  __AVR_ATmega32U4__ has an unusual mapping of pins to channels
-extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
-#define analogPinToChannel(P)  ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
-
-#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
-
-#ifdef ARDUINO_MAIN
-
-// On the Arduino board, digital pins are also used
-// for the analog output (software PWM).  Analog input
-// pins are a separate set.
-
-// ATMEL ATMEGA32U4 / ARDUINO LEONARDO
-//
-// D0               PD2                 RXD1/INT2
-// D1               PD3                 TXD1/INT3
-// D2               PD1     SDA         SDA/INT1
-// D3#              PD0     PWM8/SCL    OC0B/SCL/INT0
-// D4       A6      PD4                 ADC8
-// D5#              PC6     ???         OC3A/#OC4A
-// D6#      A7      PD7     FastPWM     #OC4D/ADC10
-// D7               PE6                 INT6/AIN0
-//
-// D8       A8      PB4                 ADC11/PCINT4
-// D9#      A9      PB5     PWM16       OC1A/#OC4B/ADC12/PCINT5
-// D10#     A10     PB6     PWM16       OC1B/0c4B/ADC13/PCINT6
-// D11#             PB7     PWM8/16     0C0A/OC1C/#RTS/PCINT7
-// D12      A11     PD6                 T1/#OC4D/ADC9
-// D13#             PC7     PWM10       CLK0/OC4A
-//
-// A0       D18     PF7                 ADC7
-// A1       D19     PF6                 ADC6
-// A2       D20     PF5                 ADC5
-// A3       D21     PF4                 ADC4
-// A4       D22     PF1                 ADC1
-// A5       D23     PF0                 ADC0
-//
-// New pins D14..D17 to map SPI port to digital pins
-//
-// MISO     D14     PB3                 MISO,PCINT3
-// SCK      D15     PB1                 SCK,PCINT1
-// MOSI     D16     PB2                 MOSI,PCINT2
-// SS       D17     PB0                 RXLED,SS/PCINT0
-//
-// Connected LEDs on board for TX and RX
-// TXLED    D24     PD5                 XCK1
-// RXLED    D17     PB0
-// HWB              PE2                 HWB
-
-// these arrays map port names (e.g. port B) to the
-// appropriate addresses for various functions (e.g. reading
-// and writing)
-const uint16_t PROGMEM port_to_mode_PGM[] = {
-    NOT_A_PORT,
-    NOT_A_PORT,
-    (uint16_t) &DDRB,
-    (uint16_t) &DDRC,
-    (uint16_t) &DDRD,
-    (uint16_t) &DDRE,
-    (uint16_t) &DDRF,
-};
-
-const uint16_t PROGMEM port_to_output_PGM[] = {
-    NOT_A_PORT,
-    NOT_A_PORT,
-    (uint16_t) &PORTB,
-    (uint16_t) &PORTC,
-    (uint16_t) &PORTD,
-    (uint16_t) &PORTE,
-    (uint16_t) &PORTF,
-};
-
-const uint16_t PROGMEM port_to_input_PGM[] = {
-    NOT_A_PORT,
-    NOT_A_PORT,
-    (uint16_t) &PINB,
-    (uint16_t) &PINC,
-    (uint16_t) &PIND,
-    (uint16_t) &PINE,
-    (uint16_t) &PINF,
-};
-
-const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
-    PD, // D0 - PD2
-    PD, // D1 - PD3
-    PD, // D2 - PD1
-    PD, // D3 - PD0
-    PD, // D4 - PD4
-    PC, // D5 - PC6
-    PD, // D6 - PD7
-    PE, // D7 - PE6
-
-    PB, // D8 - PB4
-    PB, // D9 - PB5
-    PB, // D10 - PB6
-    PB, // D11 - PB7
-    PD, // D12 - PD6
-    PC, // D13 - PC7
-
-    PB, // D14 - MISO - PB3
-    PB, // D15 - SCK - PB1
-    PB, // D16 - MOSI - PB2
-    PB, // D17 - SS - PB0
-
-    PF, // D18 - A0 - PF7
-    PF, // D19 - A1 - PF6
-    PF, // D20 - A2 - PF5
-    PF, // D21 - A3 - PF4
-    PF, // D22 - A4 - PF1
-    PF, // D23 - A5 - PF0
-
-    PD, // D24 - PD5
-    PD, // D25 / D6 - A7 - PD7
-    PB, // D26 / D8 - A8 - PB4
-    PB, // D27 / D9 - A9 - PB5
-    PB, // D28 / D10 - A10 - PB6
-    PD, // D29 / D12 - A11 - PD6
-};
-
-const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
-    _BV(2), // D0 - PD2
-    _BV(3), // D1 - PD3
-    _BV(1), // D2 - PD1
-    _BV(0), // D3 - PD0
-    _BV(4), // D4 - PD4
-    _BV(6), // D5 - PC6
-    _BV(7), // D6 - PD7
-    _BV(6), // D7 - PE6
-
-    _BV(4), // D8 - PB4
-    _BV(5), // D9 - PB5
-    _BV(6), // D10 - PB6
-    _BV(7), // D11 - PB7
-    _BV(6), // D12 - PD6
-    _BV(7), // D13 - PC7
-
-    _BV(3), // D14 - MISO - PB3
-    _BV(1), // D15 - SCK - PB1
-    _BV(2), // D16 - MOSI - PB2
-    _BV(0), // D17 - SS - PB0
-
-    _BV(7), // D18 - A0 - PF7
-    _BV(6), // D19 - A1 - PF6
-    _BV(5), // D20 - A2 - PF5
-    _BV(4), // D21 - A3 - PF4
-    _BV(1), // D22 - A4 - PF1
-    _BV(0), // D23 - A5 - PF0
-
-    _BV(5), // D24 - PD5
-    _BV(7), // D25 / D6 - A7 - PD7
-    _BV(4), // D26 / D8 - A8 - PB4
-    _BV(5), // D27 / D9 - A9 - PB5
-    _BV(6), // D28 / D10 - A10 - PB6
-    _BV(6), // D29 / D12 - A11 - PD6
-};
-
-const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    TIMER0B,        /* 3 */
-    NOT_ON_TIMER,
-    TIMER3A,        /* 5 */
-    TIMER4D,        /* 6 */
-    NOT_ON_TIMER,
-
-    NOT_ON_TIMER,
-    TIMER1A,        /* 9 */
-    TIMER1B,        /* 10 */
-    TIMER0A,        /* 11 */
-
-    NOT_ON_TIMER,
-    TIMER4A,        /* 13 */
-
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-};
-
-const uint8_t PROGMEM analog_pin_to_channel_PGM[] = {
-    7,  // A0               PF7                 ADC7
-    6,  // A1               PF6                 ADC6
-    5,  // A2               PF5                 ADC5
-    4,  // A3               PF4                 ADC4
-    1,  // A4               PF1                 ADC1
-    0,  // A5               PF0                 ADC0
-    8,  // A6       D4      PD4                 ADC8
-    10, // A7       D6      PD7                 ADC10
-    11, // A8       D8      PB4                 ADC11
-    12, // A9       D9      PB5                 ADC12
-    13, // A10      D10     PB6                 ADC13
-    9   // A11      D12     PD6                 ADC9
-};
-
-#endif /* ARDUINO_MAIN */
-
-// These serial port names are intended to allow libraries and architecture-neutral
-// sketches to automatically default to the correct port name for a particular type
-// of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
-// the first hardware serial port whose RX/TX pins are not dedicated to another use.
-//
-// SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor
-//
-// SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial
-//
-// SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library
-//
-// SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.
-//
-// SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX
-//                            pins are NOT connected to anything by default.
-#define SERIAL_PORT_MONITOR        Serial
-#define SERIAL_PORT_USBVIRTUAL     Serial
-#define SERIAL_PORT_HARDWARE       Serial1
-#define SERIAL_PORT_HARDWARE_OPEN  Serial1
-
-#endif /* Pins_Arduino_h */
diff --git a/keyboards/lets_split/ssd1306.c b/keyboards/lets_split/ssd1306.c
deleted file mode 100644
index 5c6dff27f8..0000000000
--- a/keyboards/lets_split/ssd1306.c
+++ /dev/null
@@ -1,470 +0,0 @@
-#ifdef SSD1306OLED
-
-#include "ssd1306.h"
-#include "config.h"
-#include "i2c.h"
-#include <string.h>
-#include "print.h"
-#include "lets_split.h"
-#include "common/glcdfont.c"
-#ifdef ADAFRUIT_BLE_ENABLE
-#include "adafruit_ble.h"
-#endif
-#ifdef PROTOCOL_LUFA
-#include "lufa.h"
-#endif
-#include "sendchar.h"
-#include "pincontrol.h"
-
-//assign the right code to your layers
-#define _BASE 0
-#define _LOWER 8
-#define _RAISE 16
-#define _FNLAYER 64
-#define _NUMLAY 128
-#define _NLOWER 136
-#define _NFNLAYER 192
-#define _MOUSECURSOR 256
-#define _ADJUST 65560
-
-// Set this to 1 to help diagnose early startup problems
-// when testing power-on with ble.  Turn it off otherwise,
-// as the latency of printing most of the debug info messes
-// with the matrix scan, causing keys to drop.
-#define DEBUG_TO_SCREEN 0
-
-// Controls the SSD1306 128x32 OLED display via i2c
-
-#define i2cAddress 0x3C
-
-#define DisplayHeight 32
-#define DisplayWidth 128
-
-#define FontHeight 8
-#define FontWidth 6
-
-#define MatrixRows (DisplayHeight / FontHeight)
-#define MatrixCols (DisplayWidth / FontWidth)
-
-struct CharacterMatrix {
-  uint8_t display[MatrixRows][MatrixCols];
-  uint8_t *cursor;
-  bool dirty;
-};
-
-static struct CharacterMatrix display;
-//static uint16_t last_battery_update;
-//static uint32_t vbat;
-//#define BatteryUpdateInterval 10000 /* milliseconds */
-#define ScreenOffInterval 300000 /* milliseconds */
-#if DEBUG_TO_SCREEN
-static uint8_t displaying;
-#endif
-static uint16_t last_flush;
-
-enum ssd1306_cmds {
-  DisplayOff = 0xAE,
-  DisplayOn = 0xAF,
-
-  SetContrast = 0x81,
-  DisplayAllOnResume = 0xA4,
-
-  DisplayAllOn = 0xA5,
-  NormalDisplay = 0xA6,
-  InvertDisplay = 0xA7,
-  SetDisplayOffset = 0xD3,
-  SetComPins = 0xda,
-  SetVComDetect = 0xdb,
-  SetDisplayClockDiv = 0xD5,
-  SetPreCharge = 0xd9,
-  SetMultiPlex = 0xa8,
-  SetLowColumn = 0x00,
-  SetHighColumn = 0x10,
-  SetStartLine = 0x40,
-
-  SetMemoryMode = 0x20,
-  ColumnAddr = 0x21,
-  PageAddr = 0x22,
-
-  ComScanInc = 0xc0,
-  ComScanDec = 0xc8,
-  SegRemap = 0xa0,
-  SetChargePump = 0x8d,
-  ExternalVcc = 0x01,
-  SwitchCapVcc = 0x02,
-
-  ActivateScroll = 0x2f,
-  DeActivateScroll = 0x2e,
-  SetVerticalScrollArea = 0xa3,
-  RightHorizontalScroll = 0x26,
-  LeftHorizontalScroll = 0x27,
-  VerticalAndRightHorizontalScroll = 0x29,
-  VerticalAndLeftHorizontalScroll = 0x2a,
-};
-
-
-// Write command sequence.
-// Returns true on success.
-static inline bool _send_cmd1(uint8_t cmd) {
-  bool res = false;
-
-  if (i2c_start_write(i2cAddress)) {
-    xprintf("failed to start write to %d\n", i2cAddress);
-    goto done;
-  }
-
-  if (i2c_master_write(0x0 /* command byte follows */)) {
-    print("failed to write control byte\n");
-
-    goto done;
-  }
-
-  if (i2c_master_write(cmd)) {
-    xprintf("failed to write command %d\n", cmd);
-    goto done;
-  }
-  res = true;
-done:
-  i2c_master_stop();
-  return res;
-}
-
-// Write 2-byte command sequence.
-// Returns true on success
-static inline bool _send_cmd2(uint8_t cmd, uint8_t opr) {
-  if (!_send_cmd1(cmd)) {
-    return false;
-  }
-  return _send_cmd1(opr);
-}
-
-// Write 3-byte command sequence.
-// Returns true on success
-static inline bool _send_cmd3(uint8_t cmd, uint8_t opr1, uint8_t opr2) {
-  if (!_send_cmd1(cmd)) {
-    return false;
-  }
-  if (!_send_cmd1(opr1)) {
-    return false;
-  }
-  return _send_cmd1(opr2);
-}
-
-#define send_cmd1(c) if (!_send_cmd1(c)) {goto done;}
-#define send_cmd2(c,o) if (!_send_cmd2(c,o)) {goto done;}
-#define send_cmd3(c,o1,o2) if (!_send_cmd3(c,o1,o2)) {goto done;}
-
-static void matrix_clear(struct CharacterMatrix *matrix);
-
-static void clear_display(void) {
-  matrix_clear(&display);
-
-  // Clear all of the display bits (there can be random noise
-  // in the RAM on startup)
-  send_cmd3(PageAddr, 0, (DisplayHeight / 8) - 1);
-  send_cmd3(ColumnAddr, 0, DisplayWidth - 1);
-
-  if (i2c_start_write(i2cAddress)) {
-    goto done;
-  }
-  if (i2c_master_write(0x40)) {
-    // Data mode
-    goto done;
-  }
-  for (uint8_t row = 0; row < MatrixRows; ++row) {
-    for (uint8_t col = 0; col < DisplayWidth; ++col) {
-      i2c_master_write(0);
-    }
-  }
-
-  display.dirty = false;
-
-done:
-  i2c_master_stop();
-}
-
-#if DEBUG_TO_SCREEN
-#undef sendchar
-static int8_t capture_sendchar(uint8_t c) {
-  sendchar(c);
-  iota_gfx_write_char(c);
-
-  if (!displaying) {
-    iota_gfx_flush();
-  }
-  return 0;
-}
-#endif
-
-bool iota_gfx_init(void) {
-  bool success = false;
-
-  send_cmd1(DisplayOff);
-  send_cmd2(SetDisplayClockDiv, 0x80);
-  send_cmd2(SetMultiPlex, DisplayHeight - 1);
-
-  send_cmd2(SetDisplayOffset, 0);
-
-
-  send_cmd1(SetStartLine | 0x0);
-  send_cmd2(SetChargePump, 0x14 /* Enable */);
-  send_cmd2(SetMemoryMode, 0 /* horizontal addressing */);
-
-/// Flips the display orientation 0 degrees
-  send_cmd1(SegRemap | 0x1);
-  send_cmd1(ComScanDec);
-/*
-// the following Flip the display orientation 180 degrees
-  send_cmd1(SegRemap);
-  send_cmd1(ComScanInc);
-// end flip */
-  send_cmd2(SetComPins, 0x2);
-  send_cmd2(SetContrast, 0x8f);
-  send_cmd2(SetPreCharge, 0xf1);
-  send_cmd2(SetVComDetect, 0x40);
-  send_cmd1(DisplayAllOnResume);
-  send_cmd1(NormalDisplay);
-  send_cmd1(DeActivateScroll);
-  send_cmd1(DisplayOn);
-
-  send_cmd2(SetContrast, 0); // Dim
-
-  clear_display();
-
-  success = true;
-
-  iota_gfx_flush();
-
-#if DEBUG_TO_SCREEN
-  print_set_sendchar(capture_sendchar);
-#endif
-
-done:
-  return success;
-}
-
-bool iota_gfx_off(void) {
-  bool success = false;
-
-  send_cmd1(DisplayOff);
-  success = true;
-
-done:
-  return success;
-} 
-
-bool iota_gfx_on(void) {
-  bool success = false;
-
-  send_cmd1(DisplayOn);
-  success = true;
-
-done:
-  return success;
-}
-
-static void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c) {
-  *matrix->cursor = c;
-  ++matrix->cursor;
-
-  if (matrix->cursor - &matrix->display[0][0] == sizeof(matrix->display)) {
-    // We went off the end; scroll the display upwards by one line
-    memmove(&matrix->display[0], &matrix->display[1],
-            MatrixCols * (MatrixRows - 1));
-    matrix->cursor = &matrix->display[MatrixRows - 1][0];
-    memset(matrix->cursor, ' ', MatrixCols);
-  }
-}
-
-static void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c) {
-  matrix->dirty = true;
-
-  if (c == '\n') {
-    // Clear to end of line from the cursor and then move to the
-    // start of the next line
-    uint8_t cursor_col = (matrix->cursor - &matrix->display[0][0]) % MatrixCols;
-
-    while (cursor_col++ < MatrixCols) {
-      matrix_write_char_inner(matrix, ' ');
-    }
-    return;
-  }
-
-  matrix_write_char_inner(matrix, c);
-}
-
-void iota_gfx_write_char(uint8_t c) {
-  matrix_write_char(&display, c);
-}
-
-static void matrix_write(struct CharacterMatrix *matrix, const char *data) {
-  const char *end = data + strlen(data);
-  while (data < end) {
-    matrix_write_char(matrix, *data);
-    ++data;
-  }
-}
-
-void iota_gfx_write(const char *data) {
-  matrix_write(&display, data);
-}
-
-static void matrix_write_P(struct CharacterMatrix *matrix, const char *data) {
-  while (true) {
-    uint8_t c = pgm_read_byte(data);
-    if (c == 0) {
-      return;
-    }
-    matrix_write_char(matrix, c);
-    ++data;
-  }
-}
-
-void iota_gfx_write_P(const char *data) {
-  matrix_write_P(&display, data);
-}
-
-static void matrix_clear(struct CharacterMatrix *matrix) {
-  memset(matrix->display, ' ', sizeof(matrix->display));
-  matrix->cursor = &matrix->display[0][0];
-  matrix->dirty = true;
-}
-
-void iota_gfx_clear_screen(void) {
-  matrix_clear(&display);
-}
-
-static void matrix_render(struct CharacterMatrix *matrix) {
-  last_flush = timer_read();
-  iota_gfx_on();
-#if DEBUG_TO_SCREEN
-  ++displaying;
-#endif
-
-  // Move to the home position
-  send_cmd3(PageAddr, 0, MatrixRows - 1);
-  send_cmd3(ColumnAddr, 0, (MatrixCols * FontWidth) - 1);
-
-  if (i2c_start_write(i2cAddress)) {
-    goto done;
-  }
-  if (i2c_master_write(0x40)) {
-    // Data mode
-    goto done;
-  }
-
-  for (uint8_t row = 0; row < MatrixRows; ++row) {
-    for (uint8_t col = 0; col < MatrixCols; ++col) {
-      const uint8_t *glyph = font + (matrix->display[row][col] * (FontWidth - 1));
-
-      for (uint8_t glyphCol = 0; glyphCol < FontWidth - 1; ++glyphCol) {
-        uint8_t colBits = pgm_read_byte(glyph + glyphCol);
-        i2c_master_write(colBits);
-      }
-
-      // 1 column of space between chars (it's not included in the glyph)
-      i2c_master_write(0);
-    }
-  }
-
-  matrix->dirty = false;
-
-done:
-  i2c_master_stop();
-#if DEBUG_TO_SCREEN
-  --displaying;
-#endif
-}
-
-void iota_gfx_flush(void) {
-  matrix_render(&display);
-}
-
-static void matrix_update(struct CharacterMatrix *dest,
-                          const struct CharacterMatrix *source) {
-  if (memcmp(dest->display, source->display, sizeof(dest->display))) {
-    memcpy(dest->display, source->display, sizeof(dest->display));
-    dest->dirty = true;
-  }
-}
-
-static void render_status_info(void) {
-#if DEBUG_TO_SCREEN
-  if (debug_enable) {
-    return;
-  }
-#endif
-
-  struct CharacterMatrix matrix;
-
-  matrix_clear(&matrix);
-  matrix_write_P(&matrix, PSTR("USB: "));
-#ifdef PROTOCOL_LUFA
-  switch (USB_DeviceState) {
-    case DEVICE_STATE_Unattached:
-      matrix_write_P(&matrix, PSTR("Unattached"));
-      break;
-    case DEVICE_STATE_Suspended:
-      matrix_write_P(&matrix, PSTR("Suspended"));
-      break;
-    case DEVICE_STATE_Configured:
-      matrix_write_P(&matrix, PSTR("Connected"));
-      break;
-    case DEVICE_STATE_Powered:
-      matrix_write_P(&matrix, PSTR("Powered"));
-      break;
-    case DEVICE_STATE_Default:
-      matrix_write_P(&matrix, PSTR("Default"));
-      break;
-    case DEVICE_STATE_Addressed:
-      matrix_write_P(&matrix, PSTR("Addressed"));
-      break;
-    default:
-      matrix_write_P(&matrix, PSTR("Invalid"));
-  }
-#endif
-
-// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
-
-  char buf[40];
-  snprintf(buf,sizeof(buf), "Undef-%ld", layer_state);
-  matrix_write_P(&matrix, PSTR("\n\nLayer: "));
-    switch (layer_state) {
-        case _BASE:
-           matrix_write_P(&matrix, PSTR("Default"));
-           break;
-        case _RAISE:
-           matrix_write_P(&matrix, PSTR("Raise"));
-           break;
-        case _LOWER:
-           matrix_write_P(&matrix, PSTR("Lower"));
-           break;
-        case _ADJUST:
-           matrix_write_P(&matrix, PSTR("ADJUST"));
-           break;
-        default:
-           matrix_write(&matrix, buf);
- }
-  
-  // Host Keyboard LED Status
-  char led[40];
-    snprintf(led, sizeof(led), "\n%s  %s  %s",
-            (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : "       ",
-            (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : "    ",
-            (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : "    ");
-  matrix_write(&matrix, led);
-  matrix_update(&display, &matrix);
-}
-
-void iota_gfx_task(void) {
-  render_status_info();
-
-  if (display.dirty) {
-    iota_gfx_flush();
-  }
-
-  if (timer_elapsed(last_flush) > ScreenOffInterval) {
-    iota_gfx_off();
-  }
-}
-#endif
diff --git a/keyboards/nyquist/pro_micro.h b/keyboards/nyquist/pro_micro.h
deleted file mode 100644
index f9e7ed75d9..0000000000
--- a/keyboards/nyquist/pro_micro.h
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
-  pins_arduino.h - Pin definition functions for Arduino
-  Part of Arduino - http://www.arduino.cc/
-
-  Copyright (c) 2007 David A. Mellis
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation; either
-  version 2.1 of the License, or (at your option) any later version.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General
-  Public License along with this library; if not, write to the
-  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
-  Boston, MA  02111-1307  USA
-
-  $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
-*/
-
-#ifndef Pins_Arduino_h
-#define Pins_Arduino_h
-
-#include <avr/pgmspace.h>
-
-// Workaround for wrong definitions in "iom32u4.h".
-// This should be fixed in the AVR toolchain.
-#undef UHCON
-#undef UHINT
-#undef UHIEN
-#undef UHADDR
-#undef UHFNUM
-#undef UHFNUML
-#undef UHFNUMH
-#undef UHFLEN
-#undef UPINRQX
-#undef UPINTX
-#undef UPNUM
-#undef UPRST
-#undef UPCONX
-#undef UPCFG0X
-#undef UPCFG1X
-#undef UPSTAX
-#undef UPCFG2X
-#undef UPIENX
-#undef UPDATX
-#undef TCCR2A
-#undef WGM20
-#undef WGM21
-#undef COM2B0
-#undef COM2B1
-#undef COM2A0
-#undef COM2A1
-#undef TCCR2B
-#undef CS20
-#undef CS21
-#undef CS22
-#undef WGM22
-#undef FOC2B
-#undef FOC2A
-#undef TCNT2
-#undef TCNT2_0
-#undef TCNT2_1
-#undef TCNT2_2
-#undef TCNT2_3
-#undef TCNT2_4
-#undef TCNT2_5
-#undef TCNT2_6
-#undef TCNT2_7
-#undef OCR2A
-#undef OCR2_0
-#undef OCR2_1
-#undef OCR2_2
-#undef OCR2_3
-#undef OCR2_4
-#undef OCR2_5
-#undef OCR2_6
-#undef OCR2_7
-#undef OCR2B
-#undef OCR2_0
-#undef OCR2_1
-#undef OCR2_2
-#undef OCR2_3
-#undef OCR2_4
-#undef OCR2_5
-#undef OCR2_6
-#undef OCR2_7
-
-#define NUM_DIGITAL_PINS  30
-#define NUM_ANALOG_INPUTS 12
-
-#define TX_RX_LED_INIT  DDRD |= (1<<5), DDRB |= (1<<0)
-#define TXLED0          PORTD |= (1<<5)
-#define TXLED1          PORTD &= ~(1<<5)
-#define RXLED0          PORTB |= (1<<0)
-#define RXLED1          PORTB &= ~(1<<0)
-
-static const uint8_t SDA = 2;
-static const uint8_t SCL = 3;
-#define LED_BUILTIN 13
-
-// Map SPI port to 'new' pins D14..D17
-static const uint8_t SS   = 17;
-static const uint8_t MOSI = 16;
-static const uint8_t MISO = 14;
-static const uint8_t SCK  = 15;
-
-// Mapping of analog pins as digital I/O
-// A6-A11 share with digital pins
-static const uint8_t ADC0 = 18;
-static const uint8_t ADC1 = 19;
-static const uint8_t ADC2 = 20;
-static const uint8_t ADC3 = 21;
-static const uint8_t ADC4 = 22;
-static const uint8_t ADC5 = 23;
-static const uint8_t ADC6 = 24;   // D4
-static const uint8_t ADC7 = 25;   // D6
-static const uint8_t ADC8 = 26;   // D8
-static const uint8_t ADC9 = 27;   // D9
-static const uint8_t ADC10 = 28;  // D10
-static const uint8_t ADC11 = 29;  // D12
-
-#define digitalPinToPCICR(p)    ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0))
-#define digitalPinToPCICRbit(p) 0
-#define digitalPinToPCMSK(p)    ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0))
-#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4))))))
-
-//  __AVR_ATmega32U4__ has an unusual mapping of pins to channels
-extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
-#define analogPinToChannel(P)  ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
-
-#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
-
-#ifdef ARDUINO_MAIN
-
-// On the Arduino board, digital pins are also used
-// for the analog output (software PWM).  Analog input
-// pins are a separate set.
-
-// ATMEL ATMEGA32U4 / ARDUINO LEONARDO
-//
-// D0               PD2                 RXD1/INT2
-// D1               PD3                 TXD1/INT3
-// D2               PD1     SDA         SDA/INT1
-// D3#              PD0     PWM8/SCL    OC0B/SCL/INT0
-// D4       A6      PD4                 ADC8
-// D5#              PC6     ???         OC3A/#OC4A
-// D6#      A7      PD7     FastPWM     #OC4D/ADC10
-// D7               PE6                 INT6/AIN0
-//
-// D8       A8      PB4                 ADC11/PCINT4
-// D9#      A9      PB5     PWM16       OC1A/#OC4B/ADC12/PCINT5
-// D10#     A10     PB6     PWM16       OC1B/0c4B/ADC13/PCINT6
-// D11#             PB7     PWM8/16     0C0A/OC1C/#RTS/PCINT7
-// D12      A11     PD6                 T1/#OC4D/ADC9
-// D13#             PC7     PWM10       CLK0/OC4A
-//
-// A0       D18     PF7                 ADC7
-// A1       D19     PF6                 ADC6
-// A2       D20     PF5                 ADC5
-// A3       D21     PF4                 ADC4
-// A4       D22     PF1                 ADC1
-// A5       D23     PF0                 ADC0
-//
-// New pins D14..D17 to map SPI port to digital pins
-//
-// MISO     D14     PB3                 MISO,PCINT3
-// SCK      D15     PB1                 SCK,PCINT1
-// MOSI     D16     PB2                 MOSI,PCINT2
-// SS       D17     PB0                 RXLED,SS/PCINT0
-//
-// Connected LEDs on board for TX and RX
-// TXLED    D24     PD5                 XCK1
-// RXLED    D17     PB0
-// HWB              PE2                 HWB
-
-// these arrays map port names (e.g. port B) to the
-// appropriate addresses for various functions (e.g. reading
-// and writing)
-const uint16_t PROGMEM port_to_mode_PGM[] = {
-    NOT_A_PORT,
-    NOT_A_PORT,
-    (uint16_t) &DDRB,
-    (uint16_t) &DDRC,
-    (uint16_t) &DDRD,
-    (uint16_t) &DDRE,
-    (uint16_t) &DDRF,
-};
-
-const uint16_t PROGMEM port_to_output_PGM[] = {
-    NOT_A_PORT,
-    NOT_A_PORT,
-    (uint16_t) &PORTB,
-    (uint16_t) &PORTC,
-    (uint16_t) &PORTD,
-    (uint16_t) &PORTE,
-    (uint16_t) &PORTF,
-};
-
-const uint16_t PROGMEM port_to_input_PGM[] = {
-    NOT_A_PORT,
-    NOT_A_PORT,
-    (uint16_t) &PINB,
-    (uint16_t) &PINC,
-    (uint16_t) &PIND,
-    (uint16_t) &PINE,
-    (uint16_t) &PINF,
-};
-
-const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
-    PD, // D0 - PD2
-    PD, // D1 - PD3
-    PD, // D2 - PD1
-    PD, // D3 - PD0
-    PD, // D4 - PD4
-    PC, // D5 - PC6
-    PD, // D6 - PD7
-    PE, // D7 - PE6
-
-    PB, // D8 - PB4
-    PB, // D9 - PB5
-    PB, // D10 - PB6
-    PB, // D11 - PB7
-    PD, // D12 - PD6
-    PC, // D13 - PC7
-
-    PB, // D14 - MISO - PB3
-    PB, // D15 - SCK - PB1
-    PB, // D16 - MOSI - PB2
-    PB, // D17 - SS - PB0
-
-    PF, // D18 - A0 - PF7
-    PF, // D19 - A1 - PF6
-    PF, // D20 - A2 - PF5
-    PF, // D21 - A3 - PF4
-    PF, // D22 - A4 - PF1
-    PF, // D23 - A5 - PF0
-
-    PD, // D24 - PD5
-    PD, // D25 / D6 - A7 - PD7
-    PB, // D26 / D8 - A8 - PB4
-    PB, // D27 / D9 - A9 - PB5
-    PB, // D28 / D10 - A10 - PB6
-    PD, // D29 / D12 - A11 - PD6
-};
-
-const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
-    _BV(2), // D0 - PD2
-    _BV(3), // D1 - PD3
-    _BV(1), // D2 - PD1
-    _BV(0), // D3 - PD0
-    _BV(4), // D4 - PD4
-    _BV(6), // D5 - PC6
-    _BV(7), // D6 - PD7
-    _BV(6), // D7 - PE6
-
-    _BV(4), // D8 - PB4
-    _BV(5), // D9 - PB5
-    _BV(6), // D10 - PB6
-    _BV(7), // D11 - PB7
-    _BV(6), // D12 - PD6
-    _BV(7), // D13 - PC7
-
-    _BV(3), // D14 - MISO - PB3
-    _BV(1), // D15 - SCK - PB1
-    _BV(2), // D16 - MOSI - PB2
-    _BV(0), // D17 - SS - PB0
-
-    _BV(7), // D18 - A0 - PF7
-    _BV(6), // D19 - A1 - PF6
-    _BV(5), // D20 - A2 - PF5
-    _BV(4), // D21 - A3 - PF4
-    _BV(1), // D22 - A4 - PF1
-    _BV(0), // D23 - A5 - PF0
-
-    _BV(5), // D24 - PD5
-    _BV(7), // D25 / D6 - A7 - PD7
-    _BV(4), // D26 / D8 - A8 - PB4
-    _BV(5), // D27 / D9 - A9 - PB5
-    _BV(6), // D28 / D10 - A10 - PB6
-    _BV(6), // D29 / D12 - A11 - PD6
-};
-
-const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    TIMER0B,        /* 3 */
-    NOT_ON_TIMER,
-    TIMER3A,        /* 5 */
-    TIMER4D,        /* 6 */
-    NOT_ON_TIMER,
-
-    NOT_ON_TIMER,
-    TIMER1A,        /* 9 */
-    TIMER1B,        /* 10 */
-    TIMER0A,        /* 11 */
-
-    NOT_ON_TIMER,
-    TIMER4A,        /* 13 */
-
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-};
-
-const uint8_t PROGMEM analog_pin_to_channel_PGM[] = {
-    7,  // A0               PF7                 ADC7
-    6,  // A1               PF6                 ADC6
-    5,  // A2               PF5                 ADC5
-    4,  // A3               PF4                 ADC4
-    1,  // A4               PF1                 ADC1
-    0,  // A5               PF0                 ADC0
-    8,  // A6       D4      PD4                 ADC8
-    10, // A7       D6      PD7                 ADC10
-    11, // A8       D8      PB4                 ADC11
-    12, // A9       D9      PB5                 ADC12
-    13, // A10      D10     PB6                 ADC13
-    9   // A11      D12     PD6                 ADC9
-};
-
-#endif /* ARDUINO_MAIN */
-
-// These serial port names are intended to allow libraries and architecture-neutral
-// sketches to automatically default to the correct port name for a particular type
-// of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
-// the first hardware serial port whose RX/TX pins are not dedicated to another use.
-//
-// SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor
-//
-// SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial
-//
-// SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library
-//
-// SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.
-//
-// SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX
-//                            pins are NOT connected to anything by default.
-#define SERIAL_PORT_MONITOR        Serial
-#define SERIAL_PORT_USBVIRTUAL     Serial
-#define SERIAL_PORT_HARDWARE       Serial1
-#define SERIAL_PORT_HARDWARE_OPEN  Serial1
-
-#endif /* Pins_Arduino_h */
diff --git a/keyboards/orthodox/pro_micro.h b/keyboards/orthodox/pro_micro.h
deleted file mode 100644
index f9e7ed75d9..0000000000
--- a/keyboards/orthodox/pro_micro.h
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
-  pins_arduino.h - Pin definition functions for Arduino
-  Part of Arduino - http://www.arduino.cc/
-
-  Copyright (c) 2007 David A. Mellis
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation; either
-  version 2.1 of the License, or (at your option) any later version.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General
-  Public License along with this library; if not, write to the
-  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
-  Boston, MA  02111-1307  USA
-
-  $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
-*/
-
-#ifndef Pins_Arduino_h
-#define Pins_Arduino_h
-
-#include <avr/pgmspace.h>
-
-// Workaround for wrong definitions in "iom32u4.h".
-// This should be fixed in the AVR toolchain.
-#undef UHCON
-#undef UHINT
-#undef UHIEN
-#undef UHADDR
-#undef UHFNUM
-#undef UHFNUML
-#undef UHFNUMH
-#undef UHFLEN
-#undef UPINRQX
-#undef UPINTX
-#undef UPNUM
-#undef UPRST
-#undef UPCONX
-#undef UPCFG0X
-#undef UPCFG1X
-#undef UPSTAX
-#undef UPCFG2X
-#undef UPIENX
-#undef UPDATX
-#undef TCCR2A
-#undef WGM20
-#undef WGM21
-#undef COM2B0
-#undef COM2B1
-#undef COM2A0
-#undef COM2A1
-#undef TCCR2B
-#undef CS20
-#undef CS21
-#undef CS22
-#undef WGM22
-#undef FOC2B
-#undef FOC2A
-#undef TCNT2
-#undef TCNT2_0
-#undef TCNT2_1
-#undef TCNT2_2
-#undef TCNT2_3
-#undef TCNT2_4
-#undef TCNT2_5
-#undef TCNT2_6
-#undef TCNT2_7
-#undef OCR2A
-#undef OCR2_0
-#undef OCR2_1
-#undef OCR2_2
-#undef OCR2_3
-#undef OCR2_4
-#undef OCR2_5
-#undef OCR2_6
-#undef OCR2_7
-#undef OCR2B
-#undef OCR2_0
-#undef OCR2_1
-#undef OCR2_2
-#undef OCR2_3
-#undef OCR2_4
-#undef OCR2_5
-#undef OCR2_6
-#undef OCR2_7
-
-#define NUM_DIGITAL_PINS  30
-#define NUM_ANALOG_INPUTS 12
-
-#define TX_RX_LED_INIT  DDRD |= (1<<5), DDRB |= (1<<0)
-#define TXLED0          PORTD |= (1<<5)
-#define TXLED1          PORTD &= ~(1<<5)
-#define RXLED0          PORTB |= (1<<0)
-#define RXLED1          PORTB &= ~(1<<0)
-
-static const uint8_t SDA = 2;
-static const uint8_t SCL = 3;
-#define LED_BUILTIN 13
-
-// Map SPI port to 'new' pins D14..D17
-static const uint8_t SS   = 17;
-static const uint8_t MOSI = 16;
-static const uint8_t MISO = 14;
-static const uint8_t SCK  = 15;
-
-// Mapping of analog pins as digital I/O
-// A6-A11 share with digital pins
-static const uint8_t ADC0 = 18;
-static const uint8_t ADC1 = 19;
-static const uint8_t ADC2 = 20;
-static const uint8_t ADC3 = 21;
-static const uint8_t ADC4 = 22;
-static const uint8_t ADC5 = 23;
-static const uint8_t ADC6 = 24;   // D4
-static const uint8_t ADC7 = 25;   // D6
-static const uint8_t ADC8 = 26;   // D8
-static const uint8_t ADC9 = 27;   // D9
-static const uint8_t ADC10 = 28;  // D10
-static const uint8_t ADC11 = 29;  // D12
-
-#define digitalPinToPCICR(p)    ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0))
-#define digitalPinToPCICRbit(p) 0
-#define digitalPinToPCMSK(p)    ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0))
-#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4))))))
-
-//  __AVR_ATmega32U4__ has an unusual mapping of pins to channels
-extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
-#define analogPinToChannel(P)  ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
-
-#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
-
-#ifdef ARDUINO_MAIN
-
-// On the Arduino board, digital pins are also used
-// for the analog output (software PWM).  Analog input
-// pins are a separate set.
-
-// ATMEL ATMEGA32U4 / ARDUINO LEONARDO
-//
-// D0               PD2                 RXD1/INT2
-// D1               PD3                 TXD1/INT3
-// D2               PD1     SDA         SDA/INT1
-// D3#              PD0     PWM8/SCL    OC0B/SCL/INT0
-// D4       A6      PD4                 ADC8
-// D5#              PC6     ???         OC3A/#OC4A
-// D6#      A7      PD7     FastPWM     #OC4D/ADC10
-// D7               PE6                 INT6/AIN0
-//
-// D8       A8      PB4                 ADC11/PCINT4
-// D9#      A9      PB5     PWM16       OC1A/#OC4B/ADC12/PCINT5
-// D10#     A10     PB6     PWM16       OC1B/0c4B/ADC13/PCINT6
-// D11#             PB7     PWM8/16     0C0A/OC1C/#RTS/PCINT7
-// D12      A11     PD6                 T1/#OC4D/ADC9
-// D13#             PC7     PWM10       CLK0/OC4A
-//
-// A0       D18     PF7                 ADC7
-// A1       D19     PF6                 ADC6
-// A2       D20     PF5                 ADC5
-// A3       D21     PF4                 ADC4
-// A4       D22     PF1                 ADC1
-// A5       D23     PF0                 ADC0
-//
-// New pins D14..D17 to map SPI port to digital pins
-//
-// MISO     D14     PB3                 MISO,PCINT3
-// SCK      D15     PB1                 SCK,PCINT1
-// MOSI     D16     PB2                 MOSI,PCINT2
-// SS       D17     PB0                 RXLED,SS/PCINT0
-//
-// Connected LEDs on board for TX and RX
-// TXLED    D24     PD5                 XCK1
-// RXLED    D17     PB0
-// HWB              PE2                 HWB
-
-// these arrays map port names (e.g. port B) to the
-// appropriate addresses for various functions (e.g. reading
-// and writing)
-const uint16_t PROGMEM port_to_mode_PGM[] = {
-    NOT_A_PORT,
-    NOT_A_PORT,
-    (uint16_t) &DDRB,
-    (uint16_t) &DDRC,
-    (uint16_t) &DDRD,
-    (uint16_t) &DDRE,
-    (uint16_t) &DDRF,
-};
-
-const uint16_t PROGMEM port_to_output_PGM[] = {
-    NOT_A_PORT,
-    NOT_A_PORT,
-    (uint16_t) &PORTB,
-    (uint16_t) &PORTC,
-    (uint16_t) &PORTD,
-    (uint16_t) &PORTE,
-    (uint16_t) &PORTF,
-};
-
-const uint16_t PROGMEM port_to_input_PGM[] = {
-    NOT_A_PORT,
-    NOT_A_PORT,
-    (uint16_t) &PINB,
-    (uint16_t) &PINC,
-    (uint16_t) &PIND,
-    (uint16_t) &PINE,
-    (uint16_t) &PINF,
-};
-
-const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
-    PD, // D0 - PD2
-    PD, // D1 - PD3
-    PD, // D2 - PD1
-    PD, // D3 - PD0
-    PD, // D4 - PD4
-    PC, // D5 - PC6
-    PD, // D6 - PD7
-    PE, // D7 - PE6
-
-    PB, // D8 - PB4
-    PB, // D9 - PB5
-    PB, // D10 - PB6
-    PB, // D11 - PB7
-    PD, // D12 - PD6
-    PC, // D13 - PC7
-
-    PB, // D14 - MISO - PB3
-    PB, // D15 - SCK - PB1
-    PB, // D16 - MOSI - PB2
-    PB, // D17 - SS - PB0
-
-    PF, // D18 - A0 - PF7
-    PF, // D19 - A1 - PF6
-    PF, // D20 - A2 - PF5
-    PF, // D21 - A3 - PF4
-    PF, // D22 - A4 - PF1
-    PF, // D23 - A5 - PF0
-
-    PD, // D24 - PD5
-    PD, // D25 / D6 - A7 - PD7
-    PB, // D26 / D8 - A8 - PB4
-    PB, // D27 / D9 - A9 - PB5
-    PB, // D28 / D10 - A10 - PB6
-    PD, // D29 / D12 - A11 - PD6
-};
-
-const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
-    _BV(2), // D0 - PD2
-    _BV(3), // D1 - PD3
-    _BV(1), // D2 - PD1
-    _BV(0), // D3 - PD0
-    _BV(4), // D4 - PD4
-    _BV(6), // D5 - PC6
-    _BV(7), // D6 - PD7
-    _BV(6), // D7 - PE6
-
-    _BV(4), // D8 - PB4
-    _BV(5), // D9 - PB5
-    _BV(6), // D10 - PB6
-    _BV(7), // D11 - PB7
-    _BV(6), // D12 - PD6
-    _BV(7), // D13 - PC7
-
-    _BV(3), // D14 - MISO - PB3
-    _BV(1), // D15 - SCK - PB1
-    _BV(2), // D16 - MOSI - PB2
-    _BV(0), // D17 - SS - PB0
-
-    _BV(7), // D18 - A0 - PF7
-    _BV(6), // D19 - A1 - PF6
-    _BV(5), // D20 - A2 - PF5
-    _BV(4), // D21 - A3 - PF4
-    _BV(1), // D22 - A4 - PF1
-    _BV(0), // D23 - A5 - PF0
-
-    _BV(5), // D24 - PD5
-    _BV(7), // D25 / D6 - A7 - PD7
-    _BV(4), // D26 / D8 - A8 - PB4
-    _BV(5), // D27 / D9 - A9 - PB5
-    _BV(6), // D28 / D10 - A10 - PB6
-    _BV(6), // D29 / D12 - A11 - PD6
-};
-
-const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    TIMER0B,        /* 3 */
-    NOT_ON_TIMER,
-    TIMER3A,        /* 5 */
-    TIMER4D,        /* 6 */
-    NOT_ON_TIMER,
-
-    NOT_ON_TIMER,
-    TIMER1A,        /* 9 */
-    TIMER1B,        /* 10 */
-    TIMER0A,        /* 11 */
-
-    NOT_ON_TIMER,
-    TIMER4A,        /* 13 */
-
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-    NOT_ON_TIMER,
-};
-
-const uint8_t PROGMEM analog_pin_to_channel_PGM[] = {
-    7,  // A0               PF7                 ADC7
-    6,  // A1               PF6                 ADC6
-    5,  // A2               PF5                 ADC5
-    4,  // A3               PF4                 ADC4
-    1,  // A4               PF1                 ADC1
-    0,  // A5               PF0                 ADC0
-    8,  // A6       D4      PD4                 ADC8
-    10, // A7       D6      PD7                 ADC10
-    11, // A8       D8      PB4                 ADC11
-    12, // A9       D9      PB5                 ADC12
-    13, // A10      D10     PB6                 ADC13
-    9   // A11      D12     PD6                 ADC9
-};
-
-#endif /* ARDUINO_MAIN */
-
-// These serial port names are intended to allow libraries and architecture-neutral
-// sketches to automatically default to the correct port name for a particular type
-// of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
-// the first hardware serial port whose RX/TX pins are not dedicated to another use.
-//
-// SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor
-//
-// SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial
-//
-// SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library
-//
-// SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.
-//
-// SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX
-//                            pins are NOT connected to anything by default.
-#define SERIAL_PORT_MONITOR        Serial
-#define SERIAL_PORT_USBVIRTUAL     Serial
-#define SERIAL_PORT_HARDWARE       Serial1
-#define SERIAL_PORT_HARDWARE_OPEN  Serial1
-
-#endif /* Pins_Arduino_h */
diff --git a/keyboards/orthodox/ssd1306.h b/keyboards/orthodox/ssd1306.h
deleted file mode 100644
index b0c74f987e..0000000000
--- a/keyboards/orthodox/ssd1306.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef SSD1306_H
-#define SSD1306_H
-
-#include <stdbool.h>
-#include <stdio.h>
-
-bool iota_gfx_init(void);
-void iota_gfx_task(void);
-bool iota_gfx_off(void);
-bool iota_gfx_on(void);
-void iota_gfx_flush(void);
-void iota_gfx_write_char(uint8_t c);
-void iota_gfx_write(const char *data);
-void iota_gfx_write_P(const char *data);
-void iota_gfx_clear_screen(void);
-
-#endif
diff --git a/quantum/rgblight.h b/quantum/rgblight.h
index 92130192ce..8fea96a9e8 100644
--- a/quantum/rgblight.h
+++ b/quantum/rgblight.h
@@ -61,7 +61,7 @@
 #include <stdint.h>
 #include <stdbool.h>
 #include "eeconfig.h"
-#include "light_ws2812.h"
+#include "ws2812.h"
 
 extern LED_TYPE led[RGBLED_NUM];
 
diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk
index 6773726ee3..4af34ba574 100644
--- a/tmk_core/avr.mk
+++ b/tmk_core/avr.mk
@@ -12,7 +12,7 @@ HEX = $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature
 EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) 
 BIN =
 
-
+COMMON_VPATH += $(DRIVER_PATH)/avr
 
 COMPILEFLAGS += -funsigned-char
 COMPILEFLAGS += -funsigned-bitfields

From 65c10790d4f7b89bef849ed3896db4ea30b13a40 Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Mon, 10 Jul 2017 11:53:18 -0400
Subject: [PATCH 17/17] Update README.md

---
 keyboards/handwired/magicforce68/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/keyboards/handwired/magicforce68/README.md b/keyboards/handwired/magicforce68/README.md
index 2877169ef4..a0de66069d 100644
--- a/keyboards/handwired/magicforce68/README.md
+++ b/keyboards/handwired/magicforce68/README.md
@@ -5,7 +5,7 @@ This firmware is for a Magicforce 68 that's had its PCB removed and is handwired
 
 ## Wiring Layout
 
-![Wiring Layout](http://imgur.com/NmTCv5u)
+![Wiring Layout](http://i.imgur.com/NmTCv5u.png)
 
 ## Pinout