summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2026-06-30 21:24:21 +0800
committersakumisu <[email protected]>2026-06-30 21:24:21 +0800
commitf3106a569eb2fc90e060e1bbe1217c4b0f100cf0 (patch)
treec27cd52288ec5dd43b863b32b734683891852960
parentbec3b36fb8bce1f282964bfd4580a788f3571088 (diff)
update(port/musb/usb_glue_sifli): add zephyr support
Signed-off-by: sakumisu <[email protected]>
-rw-r--r--port/musb/usb_glue_sifli.c36
1 files changed, 29 insertions, 7 deletions
diff --git a/port/musb/usb_glue_sifli.c b/port/musb/usb_glue_sifli.c
index ec10d6ba..b993385d 100644
--- a/port/musb/usb_glue_sifli.c
+++ b/port/musb/usb_glue_sifli.c
@@ -7,6 +7,25 @@
#include "usbh_core.h"
#include "usb_musb_reg.h"
+void USBC_IRQHandler(void);
+
+#ifdef __ZEPHYR__
+#include <zephyr/irq.h>
+
+#ifdef CONFIG_SOC_SERIES_SF32LB58X
+#define SOC_SF32LB58X
+#elif defined(CONFIG_SOC_SERIES_SF32LB56X)
+#define SOC_SF32LB56X
+#elif defined(CONFIG_SOC_SERIES_SF32LB52X)
+#define SOC_SF32LB52X
+#elif defined(CONFIG_SOC_SERIES_SF32LB55X)
+#define SOC_SF32LB55X
+#else
+#error "SOC Undefined, please check if the right SOC series is selected"
+#endif // SoC Macro for zephyr
+
+#endif // __ZEPHYR__
+
#undef USB_POWER_SOFTCONN
#undef USB_DEVCTL_FSDEV
#undef USB_DEVCTL_LSDEV
@@ -44,7 +63,7 @@ void usbd_musb_delay_ms(uint8_t ms)
/* implement later */
}
-#ifdef PKG_CHERRYUSB_DEVICE
+#if defined(PKG_CHERRYUSB_DEVICE) || defined(CONFIG_CHERRYUSB_DEVICE)
void usb_dc_low_level_init(uint8_t busid)
{
HAL_RCC_EnableModule(RCC_MOD_USBC);
@@ -66,6 +85,9 @@ void usb_dc_low_level_init(uint8_t busid)
hwp_usbc->dpbrxdisl = 0xFE;
hwp_usbc->dpbtxdisl = 0xFE;
#endif
+#ifdef __ZEPHYR__
+ IRQ_CONNECT(USBC_IRQn, 0, USBC_IRQHandler, NULL, 0);
+#endif // __ZEPHYR__
NVIC_EnableIRQ(USBC_IRQn);
__HAL_SYSCFG_Enable_USB();
}
@@ -90,7 +112,7 @@ void usb_dc_low_level_deinit(uint8_t busid)
}
#endif
-#ifdef PKG_CHERRYUSB_HOST
+#if defined(PKG_CHERRYUSB_HOST) || defined(CONFIG_CHERRYUSB_HOST)
void usb_hc_low_level_init(struct usbh_bus *bus)
{
HAL_RCC_EnableModule(RCC_MOD_USBC);
@@ -118,7 +140,9 @@ void usb_hc_low_level_init(struct usbh_bus *bus)
__HAL_SYSCFG_Enable_USB();
hwp_usbc->usbcfg &= 0xEF;
hwp_usbc->dbgl = 0x80;
-
+#ifdef __ZEPHYR__
+ IRQ_CONNECT(USBC_IRQn, 0, USBC_IRQHandler, NULL, 0);
+#endif // __ZEPHYR__
NVIC_EnableIRQ(USBC_IRQn);
}
@@ -175,12 +199,10 @@ void musb_sifli_reset_port(struct usbh_bus *bus)
void USBC_IRQHandler(void)
{
- rt_interrupt_enter();
-#ifdef PKG_CHERRYUSB_DEVICE
+#if defined(PKG_CHERRYUSB_DEVICE) || defined(CONFIG_CHERRYUSB_DEVICE)
USBD_IRQHandler(0);
#endif
-#ifdef PKG_CHERRYUSB_HOST
+#if defined(PKG_CHERRYUSB_HOST) || defined(CONFIG_CHERRYUSB_HOST)
USBH_IRQHandler(0);
#endif
- rt_interrupt_leave();
} \ No newline at end of file