-       #if defined(USB_DEVICE_ONLY)
-       USB_INT_Clear(USB_INT_SUSPEND);
-       USB_INT_Enable(USB_INT_SUSPEND);
-       USB_INT_Clear(USB_INT_EORSTI);
-       USB_INT_Enable(USB_INT_EORSTI);
+       #if !defined(NO_DEVICE_SELF_POWER)
+       USB_CurrentlySelfPowered = false;
+       #endif
+
+       #if !defined(FIXED_CONTROL_ENDPOINT_SIZE)
+       USB_Descriptor_Device_t* DeviceDescriptorPtr;
+
+       if (CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr) != NO_DESCRIPTOR)
+       {                 
+               #if defined(USE_RAM_DESCRIPTORS)
+               USB_ControlEndpointSize = DeviceDescriptorPtr->Endpoint0Size;
+               #elif defined(USE_EEPROM_DESCRIPTORS)
+               USB_ControlEndpointSize = eeprom_read_byte(&DeviceDescriptorPtr->Endpoint0Size);
+               #else
+               USB_ControlEndpointSize = pgm_read_byte(&DeviceDescriptorPtr->Endpoint0Size);
+               #endif
+       }
+       #endif
+
+       #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
+       if (USB_Options & USB_DEVICE_OPT_LOWSPEED)
+         USB_Device_SetLowSpeed();
+       else
+         USB_Device_SetFullSpeed();