From b19f70575a0aa4ed449f1e6ea737765bd724f3b3 Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Tue, 13 May 2025 23:15:48 +0800 Subject: [PATCH] feat: add nationstech support Signed-off-by: sakumisu <1203593632@qq.com> --- Kconfig | 4 + Kconfig.rtt | 4 + Kconfig.rttpkg | 4 + README.md | 2 + README_zh.md | 2 + SConscript | 6 ++ docs/assets/nationstech.jpg | Bin 0 -> 12618 bytes port/dwc2/README.md | 4 + port/dwc2/usb_glue_nation.c | 187 ++++++++++++++++++++++++++++++++++++ 9 files changed, 213 insertions(+) create mode 100644 docs/assets/nationstech.jpg create mode 100644 port/dwc2/usb_glue_nation.c diff --git a/Kconfig b/Kconfig index 811676a7..0084b833 100644 --- a/Kconfig +++ b/Kconfig @@ -40,6 +40,8 @@ if CHERRYUSB bool "dwc2_at" config CHERRYUSB_DEVICE_DWC2_HC bool "dwc2_hc" + config CHERRYUSB_DEVICE_DWC2_NATION + bool "dwc2_nation" config CHERRYUSB_DEVICE_DWC2_GD bool "dwc2_gd" config CHERRYUSB_DEVICE_DWC2_CUSTOM @@ -199,6 +201,8 @@ if CHERRYUSB bool "dwc2_kendryte" config CHERRYUSB_HOST_DWC2_HC bool "dwc2_hc" + config CHERRYUSB_HOST_DWC2_NATION + bool "dwc2_nation" config CHERRYUSB_HOST_DWC2_CUSTOM bool "dwc2_custom" config CHERRYUSB_HOST_MUSB_ES diff --git a/Kconfig.rtt b/Kconfig.rtt index 75681edf..4c1586e2 100644 --- a/Kconfig.rtt +++ b/Kconfig.rtt @@ -40,6 +40,8 @@ if RT_USING_CHERRYUSB bool "dwc2_at" config RT_CHERRYUSB_DEVICE_DWC2_HC bool "dwc2_hc" + config RT_CHERRYUSB_DEVICE_DWC2_NATION + bool "dwc2_nation" config RT_CHERRYUSB_DEVICE_DWC2_GD bool "dwc2_gd" config RT_CHERRYUSB_DEVICE_DWC2_CUSTOM @@ -203,6 +205,8 @@ if RT_USING_CHERRYUSB bool "dwc2_kendryte" config RT_CHERRYUSB_HOST_DWC2_HC bool "dwc2_hc" + config RT_CHERRYUSB_HOST_DWC2_NATION + bool "dwc2_nation" config RT_CHERRYUSB_HOST_DWC2_CUSTOM bool "dwc2_custom" config RT_CHERRYUSB_HOST_MUSB_ES diff --git a/Kconfig.rttpkg b/Kconfig.rttpkg index 74c99aae..2e328b85 100644 --- a/Kconfig.rttpkg +++ b/Kconfig.rttpkg @@ -41,6 +41,8 @@ if PKG_USING_CHERRYUSB bool "dwc2_at" config PKG_CHERRYUSB_DEVICE_DWC2_HC bool "dwc2_hc" + config PKG_CHERRYUSB_DEVICE_DWC2_NATION + bool "dwc2_nation" config PKG_CHERRYUSB_DEVICE_DWC2_GD bool "dwc2_gd" config PKG_CHERRYUSB_DEVICE_DWC2_CUSTOM @@ -202,6 +204,8 @@ if PKG_USING_CHERRYUSB bool "dwc2_kendryte" config PKG_CHERRYUSB_HOST_DWC2_HC bool "dwc2_hc" + config PKG_CHERRYUSB_HOST_DWC2_NATION + bool "dwc2_nation" config PKG_CHERRYUSB_HOST_DWC2_CUSTOM bool "dwc2_custom" config PKG_CHERRYUSB_HOST_MUSB_ES diff --git a/README.md b/README.md index a7c85d2c..6c8ddfa7 100644 --- a/README.md +++ b/README.md @@ -194,6 +194,7 @@ TODO |Espressif | esp32s2/esp32s3/esp32p4 | dwc2 |[esp32_repo](https://github.com/CherryUSB/cherryusb_esp32)|<= latest | Long-term | |NXP | mcx | kinetis/chipidea/ehci |[nxp_mcx_repo](https://github.com/CherryUSB/cherryusb_mcx)|<= latest | Long-term | |Kendryte | k230 | dwc2 |[k230_repo](https://github.com/CherryUSB/k230_sdk)|v1.2.0 | Long-term | +|Nationstech | n32h4x | dwc2 |[nation_repo](https://github.com/CherryUSB/cherryusb_nation)|>=1.5.0 | Long-term | |Raspberry pi | rp2040/rp2350 | rp2040 |[pico-examples](https://github.com/CherryUSB/pico-examples)|<= latest | Long-term | |AllwinnerTech | F1C100S/F1C200S | musb |[cherryusb_rtt_f1c100s](https://github.com/CherryUSB/cherryusb_rtt_f1c100s)|<= latest | the same with musb | |Bekencorp | bk7256/bk7258 | musb |[bk_idk](https://github.com/CherryUSB/bk_idk)| v0.7.0 | the same with musb | @@ -221,3 +222,4 @@ CherryUSB discord: https://discord.com/invite/wFfvrSAey8. Thanks to the following companies for their support (in no particular order): + diff --git a/README_zh.md b/README_zh.md index 45554a53..4afcb995 100644 --- a/README_zh.md +++ b/README_zh.md @@ -194,6 +194,7 @@ TODO |Espressif | esp32s2/esp32s3/esp32p4 | dwc2 |[esp32_repo](https://github.com/CherryUSB/cherryusb_esp32)|<= latest | Long-term | |NXP | mcx | kinetis/chipidea/ehci |[nxp_mcx_repo](https://github.com/CherryUSB/cherryusb_mcx)|<= latest | Long-term | |Kendryte | k230 | dwc2 |[k230_repo](https://github.com/CherryUSB/k230_sdk)|v1.2.0 | Long-term | +|Nationstech | n32h4x | dwc2 |[nation_repo](https://github.com/CherryUSB/cherryusb_nation)|>=1.5.0 | Long-term | |Raspberry pi | rp2040/rp2350 | rp2040 |[pico-examples](https://github.com/CherryUSB/pico-examples)|<= latest | Long-term | |AllwinnerTech | F1C100S/F1C200S | musb |[cherryusb_rtt_f1c100s](https://github.com/CherryUSB/cherryusb_rtt_f1c100s)|<= latest | the same with musb | |Bekencorp | bk7256/bk7258 | musb |[bk_idk](https://github.com/CherryUSB/bk_idk)| v0.7.0 | the same with musb | @@ -223,3 +224,4 @@ CherryUSB 微信群:与我联系后邀请加入 感谢以下企业支持(顺序不分先后): + diff --git a/SConscript b/SConscript index 602ba5fe..93730091 100644 --- a/SConscript +++ b/SConscript @@ -53,6 +53,9 @@ if GetDepend(['PKG_CHERRYUSB_DEVICE']): if GetDepend(['PKG_CHERRYUSB_DEVICE_DWC2_HC']): src += Glob('port/dwc2/usb_dc_dwc2.c') src += Glob('port/dwc2/usb_glue_hc.c') + if GetDepend(['PKG_CHERRYUSB_DEVICE_DWC2_NATION']): + src += Glob('port/dwc2/usb_dc_dwc2.c') + src += Glob('port/dwc2/usb_glue_nation.c') if GetDepend(['PKG_CHERRYUSB_DEVICE_DWC2_GD']): src += Glob('port/dwc2/usb_dc_dwc2.c') src += Glob('port/dwc2/usb_glue_gd.c') @@ -197,6 +200,9 @@ if GetDepend(['PKG_CHERRYUSB_HOST']): if GetDepend(['PKG_CHERRYUSB_HOST_DWC2_HC']): src += Glob('port/dwc2/usb_hc_dwc2.c') src += Glob('port/dwc2/usb_glue_hc.c') + if GetDepend(['PKG_CHERRYUSB_HOST_DWC2_NATION']): + src += Glob('port/dwc2/usb_hc_dwc2.c') + src += Glob('port/dwc2/usb_glue_nation.c') if GetDepend(['PKG_CHERRYUSB_HOST_DWC2_CUSTOM']): src += Glob('port/dwc2/usb_hc_dwc2.c') if GetDepend(['PKG_CHERRYUSB_HOST_MUSB_STANDARD']): diff --git a/docs/assets/nationstech.jpg b/docs/assets/nationstech.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2c48f6b97a2039e96a8b26586c1fb305a512c5e8 GIT binary patch literal 12618 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 |= (uint32_t)0x01 << 19; + RCC->USBHSCTRL1 |= (uint32_t)0x01 << 31; +} + +void usb_dc_low_level_deinit(uint8_t busid) +{ + NVIC_InitType NVIC_InitStructure; + + NVIC_InitStructure.NVIC_IRQChannel = USB_HS_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; + NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE; + NVIC_Init(&NVIC_InitStructure); + + RCC_EnableAHBPeriphReset(RCC_AHBPRST_USBHSPHYRST); + /* Enables the USBHS peripheral clock*/ + RCC_EnableAHBPeriphClk(RCC_AHB_PERIPHEN_USBHS, DISABLE); +} + +void usb_hc_low_level_init(struct usbh_bus *bus) +{ + g_usb_dwc2_irq = USBH_IRQHandler; + g_usb_dwc2_busid = 0; + + usbhs_common_init(); + + RCC->USBHSCTRL2 &= ~(uint32_t)0x01 << 19; + RCC->USBHSCTRL1 |= (uint32_t)0x01 << 31; +} + +void usb_hc_low_level_deinit(struct usbh_bus *bus) +{ + NVIC_InitType NVIC_InitStructure; + + NVIC_InitStructure.NVIC_IRQChannel = USB_HS_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; + NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE; + NVIC_Init(&NVIC_InitStructure); + + RCC_EnableAHBPeriphReset(RCC_AHBPRST_USBHSPHYRST); + /* Enables the USBHS peripheral clock*/ + RCC_EnableAHBPeriphClk(RCC_AHB_PERIPHEN_USBHS, DISABLE); +} + +uint32_t usbd_get_dwc2_gccfg_conf(uint32_t reg_base) +{ + return 0; +} + +uint32_t usbh_get_dwc2_gccfg_conf(uint32_t reg_base) +{ + return 0; +} + +void USB_HS_IRQHandler(void) +{ + g_usb_dwc2_irq(g_usb_dwc2_busid); +} + +void usbd_dwc2_delay_ms(uint8_t ms) +{ + +} +#endif