mirror of
https://github.com/mfulz/qmk_firmware.git
synced 2025-05-29 19:21:16 +02:00
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;
|
NVM.CMD = NVM_CMD_READ_CALIB_ROW_gc;
|
||||||
USB.CAL1 = pgm_read_byte(offsetof(NVM_PROD_SIGNATURES_t, USBCAL1));
|
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);
|
SetGlobalInterruptMask(CurrentGlobalInt);
|
||||||
|
|
||||||
USB_ResetInterface();
|
USB_ResetInterface();
|
||||||
@ -98,10 +105,6 @@ void USB_ResetInterface(void)
|
|||||||
USB_INT_DisableAllInterrupts();
|
USB_INT_DisableAllInterrupts();
|
||||||
USB_INT_ClearAllInterrupts();
|
USB_INT_ClearAllInterrupts();
|
||||||
|
|
||||||
// TODO: Config define for priority
|
|
||||||
USB.INTCTRLA = (2 << USB_INTLVL_gp);
|
|
||||||
PMIC.CTRL |= (1 << PMIC_MEDLVLEX_bp);
|
|
||||||
|
|
||||||
USB_Controller_Reset();
|
USB_Controller_Reset();
|
||||||
USB_Init_Device();
|
USB_Init_Device();
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,25 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Public Interface - May be used in end-application: */
|
/* 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 */
|
/** \name Endpoint/Pipe Type Masks */
|
||||||
//@{
|
//@{
|
||||||
/** Mask for a CONTROL type endpoint or pipe.
|
/** Mask for a CONTROL type endpoint or pipe.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user