aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2012-08-12 13:46:24 +0000
committerDean Camera <dean@fourwalledcubicle.com>2012-08-12 13:46:24 +0000
commitffbb30e0f86a774e6bfd866db36254fc7c8926d8 (patch)
tree80bac5cef243aceb837656d4a23b3a3d3d38b032 /LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
parentfa664f8b46788f60961ed5b2ed878e10cea5236e (diff)
downloadlufa-ffbb30e0f86a774e6bfd866db36254fc7c8926d8.tar.gz
lufa-ffbb30e0f86a774e6bfd866db36254fc7c8926d8.tar.bz2
lufa-ffbb30e0f86a774e6bfd866db36254fc7c8926d8.zip
Added workaround for broken VBUS detection on AVR8 devices when a bootloader starts the application via a software jump without first turning off the OTG pad (thanks to Simon Inns)
Diffstat (limited to 'LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c')
-rw-r--r--LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c b/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
index 1f37dfd49..8285f7e92 100644
--- a/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
+++ b/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
@@ -63,6 +63,13 @@ void USB_Init(
USB_Options = Options;
#endif
+ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
+ /* Workaround for AVR8 bootloaders that fail to turn off the OTG pad before running
+ * the loaded application. This causes VBUS detection to fail unless we first force
+ * it off to reset it. */
+ USB_OTGPAD_Off();
+ #endif
+
if (!(USB_Options & USB_OPT_REG_DISABLED))
USB_REG_On();
else