Move to Tinyusb 0.10.0 (still with RP patches) (#462)
Most build related items have moved into <tinyusb>/hw/bsp/rp2040/family.cmake which is now the source of truth force merging as same code save submodule was already reviewed
This commit is contained in:
parent
496ff66d19
commit
561502c2da
@ -50,5 +50,9 @@ if (NOT TARGET _pico_sdk_inclusion_marker)
|
|||||||
|
|
||||||
# add docs at the end, as we gather documentation dirs as we go
|
# add docs at the end, as we gather documentation dirs as we go
|
||||||
add_subdirectory(docs)
|
add_subdirectory(docs)
|
||||||
|
|
||||||
|
if (NOT PICO_SDK_TOP_LEVEL_PROJECT)
|
||||||
|
pico_promote_common_scope_vars()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 11c23f88bf42f64ce14b8a7b0b2a4e207dc4dd12
|
Subproject commit fea5cbaf74a033d3f0c462b6bf2d334a67f6a732
|
@ -53,6 +53,7 @@ if (NOT TARGET _pico_sdk_pre_init_marker)
|
|||||||
message(WARNING "pico_sdk_init() should be called after the project is created (and languages added)")
|
message(WARNING "pico_sdk_init() should be called after the project is created (and languages added)")
|
||||||
endif()
|
endif()
|
||||||
add_subdirectory(${PICO_SDK_PATH} pico-sdk)
|
add_subdirectory(${PICO_SDK_PATH} pico-sdk)
|
||||||
|
pico_is_top_level_project(ISTOP)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(add_sub_list_dirs var)
|
macro(add_sub_list_dirs var)
|
||||||
@ -70,11 +71,24 @@ if (NOT TARGET _pico_sdk_pre_init_marker)
|
|||||||
endforeach()
|
endforeach()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
macro(pico_register_common_scope_var NAME)
|
||||||
|
if (NOT ${NAME} IN_LIST PICO_PROMOTE_COMMON_SCOPE_VARS)
|
||||||
|
list(APPEND PICO_PROMOTE_COMMON_SCOPE_VARS ${NAME})
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
set(PICO_PROMOTE_COMMON_SCOPE_VARS
|
||||||
|
PICO_INCLUDE_DIRS
|
||||||
|
PICO_SDK_POST_LIST_DIRS
|
||||||
|
PICO_SDK_POST_LIST_FILES
|
||||||
|
PICO_CONFIG_HEADER_FILES
|
||||||
|
PICO_RP2040_CONFIG_HEADER_FILES
|
||||||
|
)
|
||||||
|
|
||||||
macro(pico_promote_common_scope_vars)
|
macro(pico_promote_common_scope_vars)
|
||||||
set(PICO_INCLUDE_DIRS ${PICO_INCLUDE_DIRS} PARENT_SCOPE)
|
set(PICO_PROMOTE_COMMON_SCOPE_VARS ${PICO_PROMOTE_COMMON_SCOPE_VARS} PARENT_SCOPE)
|
||||||
set(PICO_SDK_POST_LIST_DIRS ${PICO_SDK_POST_LIST_DIRS} PARENT_SCOPE)
|
foreach(VAR IN LISTS PICO_PROMOTE_COMMON_SCOPE_VARS)
|
||||||
set(PICO_SDK_POST_LIST_FILES ${PICO_SDK_POST_LIST_FILES} PARENT_SCOPE)
|
SET(${VAR} ${${VAR}} PARENT_SCOPE)
|
||||||
set(PICO_CONFIG_HEADER_FILES ${PICO_CONFIG_HEADER_FILES} PARENT_SCOPE)
|
endforeach()
|
||||||
set(PICO_RP2040_CONFIG_HEADER_FILES ${PICO_RP2040_CONFIG_HEADER_FILES} PARENT_SCOPE)
|
|
||||||
endmacro()
|
endmacro()
|
||||||
endif()
|
endif()
|
||||||
|
@ -101,6 +101,12 @@ static inline uint uart_get_index(uart_inst_t *uart) {
|
|||||||
return uart == uart1 ? 1 : 0;
|
return uart == uart1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline uart_inst_t *uart_get_instance(uint instance) {
|
||||||
|
static_assert(NUM_UARTS == 2, "");
|
||||||
|
invalid_params_if(UART, instance >= NUM_UARTS);
|
||||||
|
return instance ? uart1 : uart0;
|
||||||
|
}
|
||||||
|
|
||||||
static inline uart_hw_t *uart_get_hw(uart_inst_t *uart) {
|
static inline uart_hw_t *uart_get_hw(uart_inst_t *uart) {
|
||||||
uart_get_index(uart); // check it is a hw uart
|
uart_get_index(uart); // check it is a hw uart
|
||||||
return (uart_hw_t *)uart;
|
return (uart_hw_t *)uart;
|
||||||
|
@ -38,7 +38,10 @@ static uint16_t resetd_open(uint8_t __unused rhport, tusb_desc_interface_t const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Support for parameterized reset via vendor interface control request
|
// Support for parameterized reset via vendor interface control request
|
||||||
static bool resetd_control_request_cb(uint8_t __unused rhport, tusb_control_request_t const *request) {
|
static bool resetd_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t const * request) {
|
||||||
|
// nothing to do with DATA & ACK stage
|
||||||
|
if (stage != CONTROL_STAGE_SETUP) return true;
|
||||||
|
|
||||||
if (request->wIndex == itf_num) {
|
if (request->wIndex == itf_num) {
|
||||||
|
|
||||||
#if PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_BOOTSEL
|
#if PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_BOOTSEL
|
||||||
@ -69,10 +72,6 @@ static bool resetd_control_request_cb(uint8_t __unused rhport, tusb_control_requ
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool resetd_control_complete_cb(uint8_t __unused rhport, tusb_control_request_t __unused const *request) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool resetd_xfer_cb(uint8_t __unused rhport, uint8_t __unused ep_addr, xfer_result_t __unused result, uint32_t __unused xferred_bytes) {
|
static bool resetd_xfer_cb(uint8_t __unused rhport, uint8_t __unused ep_addr, xfer_result_t __unused result, uint32_t __unused xferred_bytes) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -85,8 +84,7 @@ static usbd_class_driver_t const _resetd_driver =
|
|||||||
.init = resetd_init,
|
.init = resetd_init,
|
||||||
.reset = resetd_reset,
|
.reset = resetd_reset,
|
||||||
.open = resetd_open,
|
.open = resetd_open,
|
||||||
.control_request = resetd_control_request_cb,
|
.control_xfer_cb = resetd_control_xfer_cb,
|
||||||
.control_complete = resetd_control_complete_cb,
|
|
||||||
.xfer_cb = resetd_xfer_cb,
|
.xfer_cb = resetd_xfer_cb,
|
||||||
.sof = NULL
|
.sof = NULL
|
||||||
};
|
};
|
||||||
|
@ -17,93 +17,32 @@ endif()
|
|||||||
if (EXISTS ${PICO_TINYUSB_PATH}/${TINYUSB_TEST_PATH})
|
if (EXISTS ${PICO_TINYUSB_PATH}/${TINYUSB_TEST_PATH})
|
||||||
message("TinyUSB available at ${PICO_TINYUSB_PATH}/${TINYUSB_TEST_PATH}; adding USB support.")
|
message("TinyUSB available at ${PICO_TINYUSB_PATH}/${TINYUSB_TEST_PATH}; adding USB support.")
|
||||||
|
|
||||||
|
pico_register_common_scope_var(PICO_TINYUSB_PATH)
|
||||||
|
|
||||||
|
set(BOARD pico_sdk)
|
||||||
|
include(${PICO_TINYUSB_PATH}/hw/bsp/rp2040/family.cmake)
|
||||||
|
|
||||||
add_library(tinyusb_common INTERFACE)
|
add_library(tinyusb_common INTERFACE)
|
||||||
target_link_libraries(tinyusb_common INTERFACE
|
target_link_libraries(tinyusb_common INTERFACE tinyusb_common_base)
|
||||||
hardware_structs
|
|
||||||
hardware_irq
|
|
||||||
hardware_resets
|
|
||||||
pico_sync
|
|
||||||
)
|
|
||||||
|
|
||||||
target_sources(tinyusb_common INTERFACE
|
|
||||||
${PICO_TINYUSB_PATH}/src/tusb.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/common/tusb_fifo.c
|
|
||||||
)
|
|
||||||
|
|
||||||
set(TINYUSB_DEBUG_LEVEL 0)
|
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
||||||
message("Compiling TinyUSB with CFG_TUSB_DEBUG=1")
|
|
||||||
set(TINYUSB_DEBUG_LEVEL 1)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
target_compile_definitions(tinyusb_common INTERFACE
|
|
||||||
CFG_TUSB_MCU=OPT_MCU_RP2040
|
|
||||||
CFG_TUSB_OS=OPT_OS_PICO #seems examples are hard coded to OPT_OS_NONE
|
|
||||||
CFG_TUSB_DEBUG=${TINYUSB_DEBUG_LEVEL}
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(tinyusb_common INTERFACE
|
|
||||||
${PICO_TINYUSB_PATH}/src
|
|
||||||
${PICO_TINYUSB_PATH}/src/common
|
|
||||||
${PICO_TINYUSB_PATH}/hw
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library(tinyusb_device_unmarked INTERFACE)
|
add_library(tinyusb_device_unmarked INTERFACE)
|
||||||
target_sources(tinyusb_device_unmarked INTERFACE
|
target_link_libraries(tinyusb_device_unmarked INTERFACE tinyusb_device_base)
|
||||||
${PICO_TINYUSB_PATH}/src/portable/raspberrypi/rp2040/dcd_rp2040.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/portable/raspberrypi/rp2040/rp2040_usb.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/device/usbd.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/device/usbd_control.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/audio/audio_device.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/cdc/cdc_device.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/dfu/dfu_rt_device.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/hid/hid_device.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/midi/midi_device.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/msc/msc_device.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/net/net_device.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/usbtmc/usbtmc_device.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/vendor/vendor_device.c
|
|
||||||
)
|
|
||||||
|
|
||||||
target_compile_definitions(tinyusb_device_unmarked INTERFACE
|
target_compile_definitions(tinyusb_device_unmarked INTERFACE
|
||||||
# off by default note TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX defaults from PICO_RP2040_USB_DEVICE_ENUMERATION_FIX
|
# off by default note TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX defaults from PICO_RP2040_USB_DEVICE_ENUMERATION_FIX
|
||||||
# TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX=1
|
# TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX=1
|
||||||
)
|
)
|
||||||
|
|
||||||
# unmarked version used by stdio USB
|
# unmarked version used by stdio USB
|
||||||
target_link_libraries(tinyusb_device_unmarked INTERFACE tinyusb_common pico_fix_rp2040_usb_device_enumeration)
|
target_link_libraries(tinyusb_device_unmarked INTERFACE tinyusb_common pico_fix_rp2040_usb_device_enumeration tinyusb_device_base)
|
||||||
|
|
||||||
pico_add_impl_library(tinyusb_device)
|
pico_add_impl_library(tinyusb_device)
|
||||||
target_link_libraries(tinyusb_device INTERFACE tinyusb_device_unmarked)
|
target_link_libraries(tinyusb_device INTERFACE tinyusb_device_unmarked)
|
||||||
target_compile_definitions(tinyusb_device INTERFACE
|
|
||||||
RP2040_USB_DEVICE_MODE=1 #define is used by tinyusb still
|
|
||||||
)
|
|
||||||
|
|
||||||
pico_add_impl_library(tinyusb_host)
|
pico_add_impl_library(tinyusb_host)
|
||||||
target_sources(tinyusb_host INTERFACE
|
target_link_libraries(tinyusb_host INTERFACE tinyusb_host_base tinyusb_common)
|
||||||
${PICO_TINYUSB_PATH}/src/portable/raspberrypi/rp2040/hcd_rp2040.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/portable/raspberrypi/rp2040/rp2040_usb.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/host/usbh.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/host/usbh_control.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/host/hub.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/cdc/cdc_host.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/hid/hid_host.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/msc/msc_host.c
|
|
||||||
${PICO_TINYUSB_PATH}/src/class/vendor/vendor_host.c
|
|
||||||
)
|
|
||||||
|
|
||||||
# Sometimes have to do host specific actions in mostly
|
|
||||||
# common functions
|
|
||||||
target_compile_definitions(tinyusb_host INTERFACE
|
|
||||||
RP2040_USB_HOST_MODE=1 #define is used by tinyusb still
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(tinyusb_host INTERFACE tinyusb_common)
|
|
||||||
|
|
||||||
pico_add_impl_library(tinyusb_board)
|
pico_add_impl_library(tinyusb_board)
|
||||||
target_sources(tinyusb_board INTERFACE
|
target_link_libraries(tinyusb_board INTERFACE tinyusb_bsp)
|
||||||
${PICO_TINYUSB_PATH}/hw/bsp/raspberry_pi_pico/board_raspberry_pi_pico.c
|
|
||||||
)
|
|
||||||
|
|
||||||
|
pico_promote_common_scope_vars()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user