avr-fw-modules/usb/src/usb_ll.c

63 lines
1.6 KiB
C

#include <usb/usb.h>
void usb_ll_enable_irq (uint16_t irq)
{
if (irq & USB_IRQ_ID_DEVICE)
UDIEN |= (irq & 0xFF);
else if (irq & USB_IRQ_ID_INTERFACE)
USBCON |= (irq & 0xFF);
else if (irq & USB_IRQ_ID_ENDPOINT)
UEIENX |= (irq & 0xFF);
};
void usb_ll_disable_irq (uint16_t irq)
{
if (irq & USB_IRQ_ID_DEVICE)
UDIEN &= ~(irq & 0xFF);
else if (irq & USB_IRQ_ID_INTERFACE)
USBCON &= ~(irq & 0xFF);
else if (irq & USB_IRQ_ID_ENDPOINT)
UEIENX &= ~(irq & 0xFF);
};
void usb_ll_clear_irq (uint16_t irq)
{
if (irq & USB_IRQ_ID_DEVICE)
UDINT &= ~(irq & 0xFF);
else if (irq & USB_IRQ_ID_INTERFACE)
USBINT &= ~(irq & 0xFF);
else if (irq & USB_IRQ_ID_ENDPOINT)
UEINTX &= ~(irq & 0xFF);
};
void usb_ll_disable_all_irq (void)
{
usb_ll_disable_irq( USB_IRQ_STARTOFFRAME );
usb_ll_disable_irq( USB_IRQ_ENDOFRESET );
usb_ll_disable_irq( USB_IRQ_ENDOFRESUME );
usb_ll_disable_irq( USB_IRQ_UPSTREAMRESUME );
usb_ll_disable_irq( USB_IRQ_WAKEUP );
usb_ll_disable_irq( USB_IRQ_SUSPEND );
usb_ll_disable_irq( USB_IRQ_VBUST );
usb_ll_disable_irq( USB_IRQ_SETUP );
usb_ll_disable_irq( USB_IRQ_FLOWERR );
usb_ll_disable_irq( USB_IRQ_NAKIN );
usb_ll_disable_irq( USB_IRQ_NAKOUT );
usb_ll_disable_irq( USB_IRQ_RXOUT );
usb_ll_disable_irq( USB_IRQ_STALLED );
usb_ll_disable_irq( USB_IRQ_TXIN );
};
void usb_ll_disable_all_endpoint_irq (void)
{
usb_ll_disable_irq( USB_IRQ_SETUP );
usb_ll_disable_irq( USB_IRQ_FLOWERR );
usb_ll_disable_irq( USB_IRQ_NAKIN );
usb_ll_disable_irq( USB_IRQ_NAKOUT );
usb_ll_disable_irq( USB_IRQ_RXOUT );
usb_ll_disable_irq( USB_IRQ_STALLED );
usb_ll_disable_irq( USB_IRQ_TXIN );
};