Porting updates for the UC3B architecture - get UC3B partially enumerating using...
[pub/lufa.git] / LUFA / Drivers / USB / Core / UC3B / USBController_UC3B.c
index 191e084..8241e0b 100644 (file)
@@ -60,8 +60,6 @@ void USB_Init(
        USB_Options = Options;\r
        #endif\r
        \r
-       USB_INT_RegisterHandlers();\r
-\r
        #if defined(USB_CAN_BE_BOTH)\r
        if (Mode == USB_MODE_UID)\r
        {\r
@@ -71,6 +69,7 @@ void USB_Init(
        }\r
        else\r
        {\r
+               AVR32_USBB.USBCON.uide = false;\r
                USB_CurrentMode = Mode;\r
        }\r
        #endif\r
@@ -108,7 +107,7 @@ void USB_ResetInterface(void)
        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].div    = (F_CLOCK == 48000000UL) ? 0 : (uint32_t)(((F_CLOCK / 48000000UL) - 1) / 2);\r
        AVR32_PM.GCCTRL[USB_GCLK_USBB_INDEX].cen    = true;\r
 \r
        USB_INT_DisableAllInterrupts();\r
@@ -181,6 +180,7 @@ static void USB_Init_Device(void)
        USB_INT_Enable(USB_INT_EORSTI);\r
 \r
        USB_Attach();\r
+       USB_Device_SetDeviceAddress(0);\r
 }\r
 #endif\r
 \r