uint32_t USBH_OTG_ISR_Handler (USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTSTS_TypeDef gintsts; uint32_t retval = 0; gintsts.d32 = 0; /* Check if HOST Mode */ if (USB_OTG_IsHostMode(pdev)) { gintsts.d32 = USB_OTG_ReadCoreItr(pdev); if (!gintsts.d32) { return 0; } if (gintsts.b.sofintr) { retval |= USB_OTG_USBH_handle_sof_ISR (pdev); } if (gintsts.b.rxstsqlvl) { retval |= USB_OTG_USBH_handle_rx_qlvl_ISR (pdev); } if (gintsts.b.nptxfempty) { retval |= USB_OTG_USBH_handle_nptxfempty_ISR (pdev); } if (gintsts.b.ptxfempty) { retval |= USB_OTG_USBH_handle_ptxfempty_ISR (pdev); } if (gintsts.b.hcintr) { retval |= USB_OTG_USBH_handle_hc_ISR (pdev); } if (gintsts.b.portintr) { retval |= USB_OTG_USBH_handle_port_ISR (pdev); } if (gintsts.b.disconnect) { retval |= USB_OTG_USBH_handle_Disconnect_ISR (pdev); } if (gintsts.b.incomplisoout) { retval |= USB_OTG_USBH_handle_IncompletePeriodicXfer_ISR (pdev); } } return retval; }
// This function handles all USB Host Interrupts void USBH_OTG_ISR_Handler (USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTSTS_TypeDef gintsts; /* Check if HOST Mode : removed , always the case */ gintsts.d32 = USB_OTG_ReadCoreItr(pdev); if (!gintsts.d32) { return ; } if (gintsts.b.sofintr) { USB_OTG_USBH_handle_sof_ISR (pdev); } if (gintsts.b.rxstsqlvl) { USB_OTG_USBH_handle_rx_qlvl_ISR (pdev); } if (gintsts.b.nptxfempty) { USB_OTG_USBH_handle_nptxfempty_ISR (pdev); } if (gintsts.b.ptxfempty) { USB_OTG_USBH_handle_ptxfempty_ISR (pdev); } if (gintsts.b.hcintr) { USB_OTG_USBH_handle_hc_ISR (pdev); } if (gintsts.b.portintr) { USB_OTG_USBH_handle_port_ISR (pdev); } if (gintsts.b.disconnect) { USB_OTG_USBH_handle_Disconnect_ISR (pdev); } if (gintsts.b.incomplisoout) { USB_OTG_USBH_handle_IncompletePeriodicXfer_ISR (pdev); } }
void USBH_OTG_ISR_Handler() { USB_OTG_GINTSTS_TypeDef gintsts; uint32_t retval = 0; USB_OTG_CORE_HANDLE *pdev = &USB_OTG_Core; enter_interrupt(); gintsts.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GINTSTS); gintsts.d32 &= USB_OTG_READ_REG32(&pdev->regs.GREGS->GINTMSK); if (!gintsts.d32) { exit_interrupt(0); return ; } if (gintsts.b.rxstsqlvl) { gintsts.b.rxstsqlvl = 0; USB_OTG_USBH_handle_rx_qlvl_ISR(pdev); } if (gintsts.b.nptxfempty) { gintsts.b.nptxfempty = 0; USB_OTG_USBH_handle_nptxfempty_ISR(pdev); } if (gintsts.b.hcintr) { gintsts.b.hcintr = 0; retval = USB_OTG_USBH_handle_hc_ISR(pdev); } if (!gintsts.d32) goto end; if (gintsts.b.sofintr) { USB_OTG_USBH_handle_sof_ISR(pdev); } if (gintsts.b.ptxfempty) { USB_OTG_USBH_handle_ptxfempty_ISR(pdev); } if (gintsts.b.portintr) { USB_OTG_USBH_handle_port_ISR(pdev); } if (gintsts.b.disconnect) { USB_OTG_USBH_handle_Disconnect_ISR(pdev); } if (gintsts.b.incomplisoout) { USB_OTG_USBH_handle_IncompletePeriodicXfer_ISR(pdev); } if (gintsts.b.datafsusp) { } end: exit_interrupt(retval); }