Add code to start the USBB Generic Clock from the user-specified master clock source...
[pub/lufa.git] / LUFA / Drivers / USB / Core / UC3B / USBController_UC3B.c
index 88dbcda..ee25de7 100644 (file)
@@ -92,6 +92,8 @@ void USB_Disable(void)
        USB_CurrentMode = USB_MODE_None;\r
        #endif\r
 \r
+       AVR32_PM.GCCTRL[3].cen = false;\r
+\r
        USB_IsInitialized = false;\r
 }\r
 \r
@@ -105,6 +107,12 @@ void USB_ResetInterface(void)
        USB_INT_ClearAllInterrupts();\r
 \r
        USB_Controller_Reset();\r
+       \r
+       AVR32_PM.GCCTRL[USB_GCLK_USBB_INDEX].pllsel = !(USB_Options & USB_OPT_GCLK_SRC_OSC);\r
+       AVR32_PM.GCCTRL[USB_GCLK_USBB_INDEX].oscsel = !(USB_Options & USB_OPT_GCLK_CHANNEL_0);\r
+       AVR32_PM.GCCTRL[USB_GCLK_USBB_INDEX].diven  = (F_CLOCK != 48000000UL);\r
+       AVR32_PM.GCCTRL[USB_GCLK_USBB_INDEX].div    = ((F_CLOCK / 2) / 48000000UL);\r
+       AVR32_PM.GCCTRL[USB_GCLK_USBB_INDEX].cen    = true;\r
 \r
        #if defined(USB_CAN_BE_BOTH)\r
        if (UIDModeSelectEnabled)\r