1 /* 2 * Copyright : (C) 2024 Phytium Information Technology, Inc. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Modify History: 7 * Ver Who Date Changes 8 * ----- ------ -------- -------------------------------------- 9 * 1.0 zhugengyu 2024/6/26 first commit 10 */ 11 #include "rtthread.h" 12 #include "interrupt.h" 13 14 #include "fparameters.h" 15 16 void USBH_IRQHandler(uint8_t busid); 17 usb_hc_xhci_interrupt_handler(int irqno,void * param)18static void usb_hc_xhci_interrupt_handler(int irqno, void *param) 19 { 20 if (irqno == FUSB3_0_IRQ_NUM) { 21 USBH_IRQHandler(FUSB3_ID_0); 22 } else if (irqno == FUSB3_1_IRQ_NUM) { 23 USBH_IRQHandler(FUSB3_ID_1); 24 } 25 } 26 usb_hc_setup_xhci_interrupt(uint32_t id)27void usb_hc_setup_xhci_interrupt(uint32_t id) 28 { 29 uint32_t irq_num = (id == FUSB3_ID_0) ? FUSB3_0_IRQ_NUM : FUSB3_1_IRQ_NUM; 30 rt_hw_interrupt_set_priority(irq_num, 0xd0); 31 rt_hw_interrupt_install(irq_num, usb_hc_xhci_interrupt_handler, 32 NULL, "xhci"); 33 rt_hw_interrupt_umask(irq_num); 34 } 35 usb_hc_revoke_xhci_interrupt(uint32_t id)36void usb_hc_revoke_xhci_interrupt(uint32_t id) 37 { 38 uint32_t irq_num = (id == FUSB3_ID_0) ? FUSB3_0_IRQ_NUM : FUSB3_1_IRQ_NUM; 39 40 rt_hw_interrupt_mask(irq_num); 41 } 42 usb_hc_get_register_base(uint32_t id)43unsigned long usb_hc_get_register_base(uint32_t id) 44 { 45 if (FUSB3_ID_0 == id) 46 return FUSB3_0_BASE_ADDR + FUSB3_XHCI_OFFSET; 47 else 48 return FUSB3_1_BASE_ADDR + FUSB3_XHCI_OFFSET; 49 }