Skip to content

Commit db59494

Browse files
authored
Merge pull request hathach#2179 from hathach/enhance-ehci
Enhance EHCI
2 parents d9cc302 + 5a29db2 commit db59494

File tree

5 files changed

+137
-247
lines changed

5 files changed

+137
-247
lines changed

hw/bsp/imxrt/family.cmake

Lines changed: 61 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -22,69 +22,71 @@ set(FAMILY_MCUS MIMXRT1XXX CACHE INTERNAL "")
2222
#------------------------------------
2323
# only need to be built ONCE for all examples
2424
function(add_board_target BOARD_TARGET)
25-
if (NOT TARGET ${BOARD_TARGET})
26-
add_library(${BOARD_TARGET} STATIC
27-
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}/board/clock_config.c
28-
#${SDK_DIR}/drivers/adc_12b1msps_sar/fsl_adc.c
29-
${SDK_DIR}/drivers/common/fsl_common.c
30-
${SDK_DIR}/drivers/igpio/fsl_gpio.c
31-
${SDK_DIR}/drivers/lpspi/fsl_lpspi.c
32-
${SDK_DIR}/drivers/lpuart/fsl_lpuart.c
33-
${SDK_DIR}/devices/${MCU_VARIANT}/system_${MCU_VARIANT}.c
34-
${SDK_DIR}/devices/${MCU_VARIANT}/xip/fsl_flexspi_nor_boot.c
35-
${SDK_DIR}/devices/${MCU_VARIANT}/drivers/fsl_clock.c
36-
)
37-
target_compile_definitions(${BOARD_TARGET} PUBLIC
38-
__ARMVFP__=0
39-
__ARMFPV5__=0
40-
XIP_EXTERNAL_FLASH=1
41-
XIP_BOOT_HEADER_ENABLE=1
42-
)
43-
target_include_directories(${BOARD_TARGET} PUBLIC
44-
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}
45-
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}/board
46-
${CMSIS_DIR}/CMSIS/Core/Include
47-
${SDK_DIR}/devices/${MCU_VARIANT}
48-
${SDK_DIR}/devices/${MCU_VARIANT}/drivers
49-
#${SDK_DIR}/drivers/adc_12b1msps_sar
50-
${SDK_DIR}/drivers/common
51-
${SDK_DIR}/drivers/igpio
52-
${SDK_DIR}/drivers/lpspi
53-
${SDK_DIR}/drivers/lpuart
54-
)
25+
if (TARGET ${BOARD_TARGET})
26+
return()
27+
endif ()
5528

56-
update_board(${BOARD_TARGET})
29+
add_library(${BOARD_TARGET} STATIC
30+
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}/board/clock_config.c
31+
#${SDK_DIR}/drivers/adc_12b1msps_sar/fsl_adc.c
32+
${SDK_DIR}/drivers/common/fsl_common.c
33+
${SDK_DIR}/drivers/igpio/fsl_gpio.c
34+
${SDK_DIR}/drivers/lpspi/fsl_lpspi.c
35+
${SDK_DIR}/drivers/lpuart/fsl_lpuart.c
36+
${SDK_DIR}/devices/${MCU_VARIANT}/system_${MCU_VARIANT}.c
37+
${SDK_DIR}/devices/${MCU_VARIANT}/xip/fsl_flexspi_nor_boot.c
38+
${SDK_DIR}/devices/${MCU_VARIANT}/drivers/fsl_clock.c
39+
)
40+
target_compile_definitions(${BOARD_TARGET} PUBLIC
41+
__ARMVFP__=0
42+
__ARMFPV5__=0
43+
XIP_EXTERNAL_FLASH=1
44+
XIP_BOOT_HEADER_ENABLE=1
45+
)
46+
target_include_directories(${BOARD_TARGET} PUBLIC
47+
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}
48+
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}/board
49+
${CMSIS_DIR}/CMSIS/Core/Include
50+
${SDK_DIR}/devices/${MCU_VARIANT}
51+
${SDK_DIR}/devices/${MCU_VARIANT}/drivers
52+
#${SDK_DIR}/drivers/adc_12b1msps_sar
53+
${SDK_DIR}/drivers/common
54+
${SDK_DIR}/drivers/igpio
55+
${SDK_DIR}/drivers/lpspi
56+
${SDK_DIR}/drivers/lpuart
57+
)
5758

58-
# LD_FILE and STARTUP_FILE can be defined in board.cmake
59-
if (NOT DEFINED LD_FILE_${CMAKE_C_COMPILER_ID})
60-
set(LD_FILE_GNU ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/${MCU_VARIANT}xxxxx_flexspi_nor.ld)
61-
#set(LD_FILE_IAR ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/${MCU_VARIANT}xxxxx_flexspi_nor.ld)
62-
endif ()
59+
update_board(${BOARD_TARGET})
6360

64-
if (NOT DEFINED STARTUP_FILE_${CMAKE_C_COMPILER_ID})
65-
set(STARTUP_FILE_GNU ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/startup_${MCU_VARIANT}.S)
66-
#set(STARTUP_FILE_IAR ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/startup_${MCU_VARIANT}.S)
67-
endif ()
61+
# LD_FILE and STARTUP_FILE can be defined in board.cmake
62+
if (NOT DEFINED LD_FILE_${CMAKE_C_COMPILER_ID})
63+
set(LD_FILE_GNU ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/${MCU_VARIANT}xxxxx_flexspi_nor.ld)
64+
#set(LD_FILE_IAR ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/${MCU_VARIANT}xxxxx_flexspi_nor.ld)
65+
endif ()
6866

69-
target_sources(${BOARD_TARGET} PUBLIC
70-
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
71-
)
67+
if (NOT DEFINED STARTUP_FILE_${CMAKE_C_COMPILER_ID})
68+
set(STARTUP_FILE_GNU ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/startup_${MCU_VARIANT}.S)
69+
#set(STARTUP_FILE_IAR ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/startup_${MCU_VARIANT}.S)
70+
endif ()
7271

73-
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
74-
target_link_options(${BOARD_TARGET} PUBLIC
75-
"LINKER:--script=${LD_FILE_GNU}"
76-
# nanolib
77-
--specs=nosys.specs
78-
--specs=nano.specs
79-
# force linker to look for these symbols
80-
-Wl,-uimage_vector_table
81-
-Wl,-ug_boot_data
82-
)
83-
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
84-
target_link_options(${BOARD_TARGET} PUBLIC
85-
"LINKER:--config=${LD_FILE_IAR}"
86-
)
87-
endif ()
72+
target_sources(${BOARD_TARGET} PUBLIC
73+
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
74+
)
75+
76+
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
77+
target_link_options(${BOARD_TARGET} PUBLIC
78+
"LINKER:--script=${LD_FILE_GNU}"
79+
# nanolib
80+
--specs=nosys.specs
81+
--specs=nano.specs
82+
# force linker to look for these symbols
83+
-Wl,-uimage_vector_table
84+
-Wl,-ug_boot_data
85+
)
86+
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
87+
target_link_options(${BOARD_TARGET} PUBLIC
88+
"LINKER:--config=${LD_FILE_IAR}"
89+
)
8890
endif ()
8991
endfunction()
9092

@@ -114,7 +116,7 @@ function(family_configure_example TARGET RTOS)
114116

115117
# Add TinyUSB target and port source
116118
family_add_tinyusb(${TARGET} OPT_MCU_MIMXRT1XXX ${RTOS})
117-
target_sources(${TARGET}-tinyusb PUBLIC
119+
target_sources(${TARGET}-tinyusb PRIVATE
118120
${TOP}/src/portable/chipidea/ci_hs/dcd_ci_hs.c
119121
${TOP}/src/portable/chipidea/ci_hs/hcd_ci_hs.c
120122
${TOP}/src/portable/ehci/ehci.c

src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ function(add_tinyusb TARGET)
6464
-Wnull-dereference
6565
-Wuninitialized
6666
-Wunused
67+
-Wunused-function
6768
-Wreturn-type
6869
-Wredundant-decls
6970
)

src/host/hub.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ typedef struct
4545
uint8_t itf_num;
4646
uint8_t ep_in;
4747
uint8_t port_count;
48-
uint8_t status_change; // data from status change interrupt endpoint
4948

49+
CFG_TUH_MEM_ALIGN uint8_t status_change;
5050
CFG_TUH_MEM_ALIGN hub_port_status_response_t port_status;
5151
CFG_TUH_MEM_ALIGN hub_status_response_t hub_status;
5252
} hub_interface_t;

0 commit comments

Comments
 (0)