Add option to the USB XMEGAs to set the USB bus interrupt priority level.
[pub/USBasp.git] / LUFA / Drivers / USB / Core / XMEGA / USBController_XMEGA.c
index c67575b..dcb506b 100644 (file)
@@ -72,6 +72,13 @@ void USB_Init(
        NVM.CMD  = NVM_CMD_READ_CALIB_ROW_gc;\r
        USB.CAL1 = pgm_read_byte(offsetof(NVM_PROD_SIGNATURES_t, USBCAL1));\r
        \r
+       if ((USB_Options & USB_OPT_BUSEVENT_PRIHIGH) == USB_OPT_BUSEVENT_PRIHIGH)\r
+         USB.INTCTRLA = (3 << USB_INTLVL_gp);\r
+       else if ((USB_Options & USB_OPT_BUSEVENT_PRIMED) == USB_OPT_BUSEVENT_PRIMED)\r
+         USB.INTCTRLA = (2 << USB_INTLVL_gp);\r
+       else\r
+         USB.INTCTRLA = (1 << USB_INTLVL_gp);\r
+\r
        SetGlobalInterruptMask(CurrentGlobalInt);\r
 \r
        USB_ResetInterface();   \r
@@ -98,10 +105,6 @@ void USB_ResetInterface(void)
        USB_INT_DisableAllInterrupts();\r
        USB_INT_ClearAllInterrupts();\r
 \r
-       // TODO: Config define for priority\r
-       USB.INTCTRLA = (2 << USB_INTLVL_gp);\r
-       PMIC.CTRL   |= (1 << PMIC_MEDLVLEX_bp);\r
-\r
        USB_Controller_Reset();\r
        USB_Init_Device();\r
 }\r