1 /*
2  * Copyright (c) 2022-2025 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 #include "hpm_common.h"
8 #include "hpm_soc.h"
9 #include "hpm_l1c_drv.h"
10 #include "usb_config.h"
11 
12 void (*g_usb_hpm_irq[2])(uint8_t busid);
13 uint8_t g_usb_hpm_busid[2];
14 
hpm_usb_isr_enable(uint32_t base)15 ATTR_WEAK void hpm_usb_isr_enable(uint32_t base)
16 {
17     if (base == HPM_USB0_BASE) {
18         intc_m_enable_irq(IRQn_USB0);
19     } else {
20 #ifdef HPM_USB1_BASE
21         intc_m_enable_irq(IRQn_USB1);
22 #endif
23     }
24 }
25 
hpm_usb_isr_disable(uint32_t base)26 ATTR_WEAK void hpm_usb_isr_disable(uint32_t base)
27 {
28     if (base == HPM_USB0_BASE) {
29         intc_m_disable_irq(IRQn_USB0);
30     } else {
31 #ifdef HPM_USB1_BASE
32         intc_m_disable_irq(IRQn_USB1);
33 #endif
34     }
35 }
36 
37 #ifndef CONFIG_CHERRYUSB_CUSTOM_IRQ_HANDLER
SDK_DECLARE_EXT_ISR_M(IRQn_USB0,hpm_isr_usb0)38 SDK_DECLARE_EXT_ISR_M(IRQn_USB0, hpm_isr_usb0)
39 #endif
40 void hpm_isr_usb0(void)
41 {
42     g_usb_hpm_irq[0](g_usb_hpm_busid[0]);
43 }
44 
45 #ifdef HPM_USB1_BASE
46 #ifndef CONFIG_CHERRYUSB_CUSTOM_IRQ_HANDLER
SDK_DECLARE_EXT_ISR_M(IRQn_USB1,hpm_isr_usb1)47 SDK_DECLARE_EXT_ISR_M(IRQn_USB1, hpm_isr_usb1)
48 #endif
49 void hpm_isr_usb1(void)
50 {
51     g_usb_hpm_irq[1](g_usb_hpm_busid[1]);
52 }
53 #endif
54 
55 #ifdef CONFIG_USB_DCACHE_ENABLE
usb_dcache_clean(uintptr_t addr,size_t size)56 void usb_dcache_clean(uintptr_t addr, size_t size)
57 {
58     l1c_dc_writeback(addr, size);
59 }
60 
usb_dcache_invalidate(uintptr_t addr,size_t size)61 void usb_dcache_invalidate(uintptr_t addr, size_t size)
62 {
63     l1c_dc_invalidate(addr, size);
64 }
65 
usb_dcache_flush(uintptr_t addr,size_t size)66 void usb_dcache_flush(uintptr_t addr, size_t size)
67 {
68     l1c_dc_flush(addr, size);
69 }
70 #endif