AnsweredAssumed Answered

USB driver interrupt handling: Can anyone clarify?

Question asked by G40 on Jul 3, 2012
Latest reply on Jul 24, 2012 by G40

Can I make sure I understand this correctly?

 

1. By default the 4 USB hardware interrupts (USB_DMAINT, USB_INT2 ... USB_INT0) are mapped via the SIC to IVG10.

2. The USB driver initialization code (InitProcessorSpecificConfiguration() in adi_usb_hdr.c) then effectively chains the 4 interrupt handler functions together and sets up the first in the chain to be invoked when an INT 10 is triggered?

3. The interrupt handler code (_adi_int_NestingISR() in adi_int_asm.asm) appears to each of the chained handlers in turn before returning from the interrupt?

4. So in the case of any USB interrupt all of the following 4 functions are called:

 

// all in adi_usb_hdr.c

UsbOtgInterruptHandler()

UsbTxInterruptHandler()

UsbRxInterruptHandler()

UsbDmaInterruptHandler()

 

5. Is it possible to establish the origin of the interrupt (i.e. one of the USB_DMAINT, USB_INT2, USB_INT1, USB_INT0) ? i.e. does one of the many registers contain said information or does it have to be inferred from checking USB_INTRUSB, USB_INTRRX, USB_INTRTX, and USB_DMA_INTERRUPT?

 

Thx++

Outcomes