forked from mfulz_github/qmk_firmware
Add option to the USB XMEGAs to set the USB bus interrupt priority level.
This commit is contained in:
parent
f07e766755
commit
a36012fc4b
|
@ -72,6 +72,13 @@ void USB_Init(
|
|||
NVM.CMD = NVM_CMD_READ_CALIB_ROW_gc;
|
||||
USB.CAL1 = pgm_read_byte(offsetof(NVM_PROD_SIGNATURES_t, USBCAL1));
|
||||
|
||||
if ((USB_Options & USB_OPT_BUSEVENT_PRIHIGH) == USB_OPT_BUSEVENT_PRIHIGH)
|
||||
USB.INTCTRLA = (3 << USB_INTLVL_gp);
|
||||
else if ((USB_Options & USB_OPT_BUSEVENT_PRIMED) == USB_OPT_BUSEVENT_PRIMED)
|
||||
USB.INTCTRLA = (2 << USB_INTLVL_gp);
|
||||
else
|
||||
USB.INTCTRLA = (1 << USB_INTLVL_gp);
|
||||
|
||||
SetGlobalInterruptMask(CurrentGlobalInt);
|
||||
|
||||
USB_ResetInterface();
|
||||
|
@ -98,10 +105,6 @@ void USB_ResetInterface(void)
|
|||
USB_INT_DisableAllInterrupts();
|
||||
USB_INT_ClearAllInterrupts();
|
||||
|
||||
// TODO: Config define for priority
|
||||
USB.INTCTRLA = (2 << USB_INTLVL_gp);
|
||||
PMIC.CTRL |= (1 << PMIC_MEDLVLEX_bp);
|
||||
|
||||
USB_Controller_Reset();
|
||||
USB_Init_Device();
|
||||
}
|
||||
|
|
|
@ -84,7 +84,25 @@
|
|||
#endif
|
||||
|
||||
/* Public Interface - May be used in end-application: */
|
||||
/* Macros: */
|
||||
/* Macros: */
|
||||
/** \name USB Controller Option Masks */
|
||||
//@{
|
||||
/** Sets the USB bus interrupt priority level to be low priority. The USB bus interrupt is used for Start of Frame events, bus suspend
|
||||
* and resume events, bus reset events and other events related to the management of the USB bus.
|
||||
*/
|
||||
#define USB_OPT_BUSEVENT_PRILOW ((0 << 1) | (0 << 1))
|
||||
|
||||
/** Sets the USB bus interrupt priority level to be medium priority. The USB bus interrupt is used for Start of Frame events, bus suspend
|
||||
* and resume events, bus reset events and other events related to the management of the USB bus.
|
||||
*/
|
||||
#define USB_OPT_BUSEVENT_PRIMED ((0 << 1) | (1 << 1))
|
||||
|
||||
/** Sets the USB bus interrupt priority level to be high priority. The USB bus interrupt is used for Start of Frame events, bus suspend
|
||||
* and resume events, bus reset events and other events related to the management of the USB bus.
|
||||
*/
|
||||
#define USB_OPT_BUSEVENT_PRIHIGH ((1 << 1) | (0 << 1))
|
||||
//@}
|
||||
|
||||
/** \name Endpoint/Pipe Type Masks */
|
||||
//@{
|
||||
/** Mask for a CONTROL type endpoint or pipe.
|
||||
|
|
Loading…
Reference in New Issue