aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
diff options
context:
space:
mode:
authorMichael Hanselmann <public@hansmi.ch>2013-12-19 23:44:23 +0100
committerMichael Hanselmann <public@hansmi.ch>2013-12-20 00:04:51 +0100
commit25a02432e72542015015b37d4ddfd518f4aea111 (patch)
tree91efdca610d043f7cf25bfed835e446a39c0c467 /LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
parent70a726b5aa6fb5a87193df1a780050d51110e6cb (diff)
downloadlufa-25a02432e72542015015b37d4ddfd518f4aea111.tar.gz
lufa-25a02432e72542015015b37d4ddfd518f4aea111.tar.bz2
lufa-25a02432e72542015015b37d4ddfd518f4aea111.zip
AVR8: Add option to keep 3.3V regulator enabled
The documentation contains example code[1] on how to restart into the bootloader. In the process of preparing for the reset, USB is disabled using “USB_Disable()”. For hardware making use of the AVR8's internal 3.3V regulator that call would also disable the regulator, resetting the processor immediately rather than setting the boot key and letting the watchdog reset the processor. This patch adds a new flag to be given to “USB_Init()” or to be defined in “USE_STATIC_OPTIONS” telling “USB_Disable()” to keep the regulator enabled. On November 1st, 2013 this issue was already mentioned on the mailing list[2], but no fix came from that discussion. [1] <http://www.fourwalledcubicle.com/files/LUFA/Doc/130901/ html/_page__software_bootloader_start.html> [2] <https://groups.google.com/d/msg/lufa-support/uwrFpRQpJzU/e9I6UK5jMJQJ> Signed-off-by: Michael Hanselmann <public@hansmi.ch>
Diffstat (limited to 'LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c')
-rw-r--r--LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c b/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
index 8faec1df0..dc96c0fe7 100644
--- a/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
+++ b/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
@@ -112,7 +112,8 @@ void USB_Disable(void)
if (!(USB_Options & USB_OPT_MANUAL_PLL))
USB_PLL_Off();
- USB_REG_Off();
+ if (!(USB_Options & USB_OPT_REG_KEEP_ENABLED))
+ USB_REG_Off();
#if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
USB_OTGPAD_Off();