diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..57fd38bd --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,147 @@ +cmake_minimum_required(VERSION 3.15) + +if(DEFINED ENV{BL_SDK_BASE}) +set(CONFIG_CHERRYUSB_DEVICE 1) +set(CONFIG_CHERRYUSB_DEVICE_CDC 1) +set(CONFIG_CHERRYUSB_DEVICE_HID 1) +set(CONFIG_CHERRYUSB_DEVICE_MSC 1) +set(CONFIG_CHERRYUSB_DEVICE_VIDEO 1) +set(CONFIG_CHERRYUSB_DEVICE_DCD "bl") + +set(CONFIG_CHERRYUSB_HOST 1) +set(CONFIG_CHERRYUSB_HOST_CDC_ACM 1) +set(CONFIG_CHERRYUSB_HOST_CDC_ECM 1) +set(CONFIG_CHERRYUSB_HOST_CDC_NCM 1) +set(CONFIG_CHERRYUSB_HOST_HID 1) +set(CONFIG_CHERRYUSB_HOST_MSC 1) +set(CONFIG_CHERRYUSB_HOST_VIDEO 1) +set(CONFIG_CHERRYUSB_HOST_AUDIO 1) +set(CONFIG_CHERRYUSB_HOST_CDC_RNDIS 1) +set(CONFIG_CHERRYUSB_HOST_BLUETOOTH 1) +set(CONFIG_CHERRYUSB_HOST_ASIX 1) +set(CONFIG_CHERRYUSB_HOST_RTL8152 1) +set(CONFIG_CHERRYUSB_HOST_CH34X 1) +set(CONFIG_CHERRYUSB_HOST_CP210X 1) +set(CONFIG_CHERRYUSB_HOST_FTDI 1) +set(CONFIG_CHERRYUSB_HOST_PL2303 1) +set(CONFIG_CHERRYUSB_OSAL "freertos") +set(CONFIG_CHERRYUSB_HOST_HCD "ehci_bouffalo") + +include(cherryusb.cmake) + +sdk_generate_library(cherryusb) +sdk_add_include_directories(${cherryusb_incs}) +sdk_library_add_sources(${cherryusb_srcs}) + +sdk_library_add_sources(platform/none/usbh_lwip.c) + +elseif(DEFINED ENV{HPM_SDK_BASE}) +set(CONFIG_CHERRYUSB_HOST 1) +set(CONFIG_CHERRYUSB_HOST_CDC_ACM 1) +set(CONFIG_CHERRYUSB_HOST_CDC_ECM 1) +set(CONFIG_CHERRYUSB_HOST_CDC_NCM 1) +set(CONFIG_CHERRYUSB_HOST_HID 1) +set(CONFIG_CHERRYUSB_HOST_MSC 1) +set(CONFIG_CHERRYUSB_HOST_VIDEO 1) +set(CONFIG_CHERRYUSB_HOST_AUDIO 1) +set(CONFIG_CHERRYUSB_HOST_CDC_RNDIS 1) +# set(CONFIG_CHERRYUSB_HOST_BLUETOOTH 1) +set(CONFIG_CHERRYUSB_HOST_ASIX 1) +set(CONFIG_CHERRYUSB_HOST_RTL8152 1) +set(CONFIG_CHERRYUSB_HOST_CH34X 1) +set(CONFIG_CHERRYUSB_HOST_CP210X 1) +set(CONFIG_CHERRYUSB_HOST_FTDI 1) +set(CONFIG_CHERRYUSB_HOST_PL2303 1) +set(CONFIG_CHERRYUSB_HOST_BL616 1) +set(CONFIG_CHERRYUSB_OSAL "freertos") +set(CONFIG_CHERRYUSB_HOST_HCD "ehci_hpm") + +include(cherryusb.cmake) + +sdk_inc(${cherryusb_incs}) +sdk_src(${cherryusb_srcs}) + +sdk_src(platform/none/usbh_lwip.c) + +elseif(ESP_PLATFORM) + +set(CONFIG_CHERRYUSB_DEVICE_DCD "dwc2_esp") +set(CONFIG_CHERRYUSB_HOST_HCD "dwc2_esp") +set(CONFIG_CHERRYUSB_OSAL "idf") + +include(cherryusb.cmake) + +set(ldfragments "osal/idf/linker.lf") + +idf_component_register(SRCS ${cherryusb_srcs} + INCLUDE_DIRS ${cherryusb_incs} + PRIV_REQUIRES usb + LDFRAGMENTS ${ldfragments} +) + +if(CONFIG_CHERRYUSB_HOST) + target_linker_script(${COMPONENT_LIB} INTERFACE "osal/idf/usbh_class_info.ld") + + # 强制链接器不删除符号 + if(CONFIG_CHERRYUSB_HOST_CDC_ACM) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u cdc_acm_class_info") + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u cdc_data_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_HID) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u hid_custom_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_MSC) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u msc_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_CDC_ECM) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u cdc_ecm_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_CDC_RNDIS) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u rndis_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_CDC_NCM) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u cdc_ncm_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_VIDEO) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u video_ctrl_class_info") + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u video_streaming_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_AUDIO) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u audio_ctrl_intf_class_info") + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u audio_streaming_intf_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_BLUETOOTH) + if(CONFIG_USBHOST_BLUETOOTH_HCI_H4) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u bluetooth_h4_nrf_class_info") + else() + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u bluetooth_class_info") + endif() + endif() + if(CONFIG_CHERRYUSB_HOST_ASIX) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u asix_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_RTL8152) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u rtl8152_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_FTDI) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u ftdi_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_CH34X) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u ch34x_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_CP210X) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u cp210x_class_info") + endif() + if(CONFIG_CHERRYUSB_HOST_PL2303) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-u pl2303_class_info") + endif() +endif() + +if(CONFIG_CHERRYUSB) + set_source_files_properties("class/audio/usbd_audio.c" + PROPERTIES COMPILE_FLAGS + -Wno-maybe-uninitialized) + include(package_manager) + cu_pkg_define_version(${CMAKE_CURRENT_LIST_DIR}) +endif() +endif() \ No newline at end of file diff --git a/Kconfig.cherryusb b/Kconfig similarity index 98% rename from Kconfig.cherryusb rename to Kconfig index 0e36e73b..a630e73c 100644 --- a/Kconfig.cherryusb +++ b/Kconfig @@ -186,7 +186,9 @@ if CHERRYUSB bool "musb_custom" config CHERRYUSB_HOST_PUSB2 bool "pusb2" - config CHERRYUSB_HOST_XHCI + config CHERRYUSB_HOST_XHCI_PHYTIUM + bool "xhci_phytium" + config CHERRYUSB_HOST_XHCI_CUSTOM bool "xhci" endchoice diff --git a/cherryusb.cmake b/cherryusb.cmake index 644d8003..a95deece 100644 --- a/cherryusb.cmake +++ b/cherryusb.cmake @@ -122,6 +122,9 @@ if(CONFIG_CHERRYUSB_HOST) if(CONFIG_CHERRYUSB_HOST_CDC_ECM) list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/class/cdc/usbh_cdc_ecm.c) endif() + if(CONFIG_CHERRYUSB_HOST_CDC_RNDIS) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/class/wireless/usbh_rndis.c) + endif() if(CONFIG_CHERRYUSB_HOST_CDC_NCM) list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/class/cdc/usbh_cdc_ncm.c) endif() @@ -152,9 +155,6 @@ if(CONFIG_CHERRYUSB_HOST) if(CONFIG_CHERRYUSB_HOST_AUDIO) list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/class/audio/usbh_audio.c) endif() - if(CONFIG_CHERRYUSB_HOST_CDC_RNDIS) - list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/class/wireless/usbh_rndis.c) - endif() if(CONFIG_CHERRYUSB_HOST_BLUETOOTH) list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/class/wireless/usbh_bluetooth.c) @@ -264,5 +264,8 @@ if(DEFINED CONFIG_CHERRYUSB_OSAL) list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/osal/usb_osal_rtthread.c) elseif("${CONFIG_CHERRYUSB_OSAL}" STREQUAL "yoc") list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/osal/usb_osal_yoc.c) + elseif("${CONFIG_CHERRYUSB_OSAL}" STREQUAL "idf") + list(APPEND cherryusb_incs ${CMAKE_CURRENT_LIST_DIR}/osal/idf) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/osal/idf/usb_osal_idf.c) endif() endif() \ No newline at end of file