summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorHiFiPhile <[email protected]>2026-05-29 00:23:46 +0200
committerHiFiPhile <[email protected]>2026-05-29 00:23:46 +0200
commit6e63910d2a1ca6dc0ad384213d5af2ed6acf5013 (patch)
treeb969a8f560090ecfb3f110c9d8c6c252f213b30a /hw
parentdafdc5c54f34f88c963f7efc0062d0e992074b8f (diff)
parent6f59b79a6cad1ade33f482e4db5246d65642699b (diff)
Merge remote-tracking branch 'tinyusb/master' into fix/Dwc2Stm32U5
Diffstat (limited to 'hw')
-rw-r--r--hw/bsp/ch32v10x/linker/ch32v10x.ld23
-rw-r--r--hw/bsp/ch32v20x/family.cmake3
-rw-r--r--hw/bsp/ch32v20x/linker/ch32v20x.ld23
-rw-r--r--hw/bsp/ch32v30x/linker/ch32v30x.ld24
-rw-r--r--hw/bsp/rp2040/family.cmake2
-rw-r--r--hw/bsp/stm32h5/boards/stm32h573i_dk/board.h5
-rw-r--r--hw/bsp/stm32h7rs/boards/stm32h7s3nucleo/board.h5
-rw-r--r--hw/bsp/stm32n6/boards/stm32n6570dk/board.h5
-rw-r--r--hw/bsp/stm32n6/boards/stm32n657nucleo/board.h5
9 files changed, 60 insertions, 35 deletions
diff --git a/hw/bsp/ch32v10x/linker/ch32v10x.ld b/hw/bsp/ch32v10x/linker/ch32v10x.ld
index cd5c8dc17..a2de3c25f 100644
--- a/hw/bsp/ch32v10x/linker/ch32v10x.ld
+++ b/hw/bsp/ch32v10x/linker/ch32v10x.ld
@@ -13,6 +13,7 @@ ENTRY( _start )
__stack_size = 2048;
PROVIDE( _stack_size = __stack_size );
+_estack = ORIGIN(RAM) + LENGTH(RAM);
SECTIONS
{
@@ -150,16 +151,16 @@ SECTIONS
PROVIDE( _ebss = .);
} >RAM AT>FLASH
- PROVIDE( _end = _ebss);
- PROVIDE( end = . );
-
- .stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size :
- {
- PROVIDE( _heap_end = . );
- . = ALIGN(4);
- PROVIDE(_susrstack = . );
- . = . + __stack_size;
- PROVIDE( _eusrstack = .);
- } >RAM
+ ._user_heap_stack :
+ {
+ . = ALIGN(8);
+ PROVIDE( end = . );
+ PROVIDE( _end = . );
+ . = . + __stack_size;
+ . = ALIGN(8);
+ } >RAM
+ PROVIDE( _heap_end = ORIGIN(RAM) + LENGTH(RAM) - __stack_size );
+ PROVIDE( _susrstack = _heap_end );
+ PROVIDE( _eusrstack = ORIGIN(RAM) + LENGTH(RAM) );
}
diff --git a/hw/bsp/ch32v20x/family.cmake b/hw/bsp/ch32v20x/family.cmake
index 59a96f70d..785f5ee35 100644
--- a/hw/bsp/ch32v20x/family.cmake
+++ b/hw/bsp/ch32v20x/family.cmake
@@ -61,8 +61,9 @@ function(family_add_board BOARD_TARGET)
if (RHPORT_DEVICE EQUAL 0)
target_compile_definitions(${BOARD_TARGET} PUBLIC CFG_TUD_WCH_USBIP_FSDEV=1)
+ target_compile_definitions(${BOARD_TARGET} PUBLIC CFG_TUH_WCH_USBIP_FSDEV=1)
elseif (RHPORT_DEVICE EQUAL 1)
- target_compile_definitions(${BOARD_TARGET} PUBLIC CFG_TUH_WCH_USBIP_USBFS=1)
+ target_compile_definitions(${BOARD_TARGET} PUBLIC CFG_TUD_WCH_USBIP_USBFS=1)
else()
message(FATAL_ERROR "Invalid RHPORT_DEVICE ${RHPORT_DEVICE}")
endif()
diff --git a/hw/bsp/ch32v20x/linker/ch32v20x.ld b/hw/bsp/ch32v20x/linker/ch32v20x.ld
index f84808b0d..bfa9a8436 100644
--- a/hw/bsp/ch32v20x/linker/ch32v20x.ld
+++ b/hw/bsp/ch32v20x/linker/ch32v20x.ld
@@ -12,6 +12,7 @@ MEMORY
ENTRY( _start )
PROVIDE( _stack_size = __stack_size );
+_estack = ORIGIN(RAM) + LENGTH(RAM);
SECTIONS
{
@@ -149,16 +150,16 @@ SECTIONS
PROVIDE( _ebss = .);
} >RAM AT>FLASH
- PROVIDE( _end = _ebss);
- PROVIDE( end = . );
-
- .stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size :
- {
- PROVIDE( _heap_end = . );
- . = ALIGN(4);
- PROVIDE(_susrstack = . );
- . = . + __stack_size;
- PROVIDE( _eusrstack = .);
- } >RAM
+ ._user_heap_stack :
+ {
+ . = ALIGN(8);
+ PROVIDE( end = . );
+ PROVIDE( _end = . );
+ . = . + __stack_size;
+ . = ALIGN(8);
+ } >RAM
+ PROVIDE( _heap_end = ORIGIN(RAM) + LENGTH(RAM) - __stack_size );
+ PROVIDE( _susrstack = _heap_end );
+ PROVIDE( _eusrstack = ORIGIN(RAM) + LENGTH(RAM) );
}
diff --git a/hw/bsp/ch32v30x/linker/ch32v30x.ld b/hw/bsp/ch32v30x/linker/ch32v30x.ld
index 6dd5d344a..2941c41a0 100644
--- a/hw/bsp/ch32v30x/linker/ch32v30x.ld
+++ b/hw/bsp/ch32v30x/linker/ch32v30x.ld
@@ -12,6 +12,7 @@ MEMORY
ENTRY( _start )
PROVIDE( _stack_size = __stack_size );
+_estack = ORIGIN(RAM) + LENGTH(RAM);
SECTIONS
{
@@ -151,17 +152,16 @@ SECTIONS
PROVIDE( _ebss = .);
} >RAM AT>FLASH
- PROVIDE( _end = _ebss);
- PROVIDE( end = . );
-
- .stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size :
- {
- PROVIDE( _heap_end = . );
- . = ALIGN(4);
- PROVIDE(_susrstack = . );
- . = . + __stack_size;
- PROVIDE( _eusrstack = .);
- __freertos_irq_stack_top = .;
- } >RAM
+ ._user_heap_stack :
+ {
+ . = ALIGN(8);
+ PROVIDE( end = . );
+ PROVIDE( _end = . );
+ . = . + __stack_size;
+ . = ALIGN(8);
+ } >RAM
+ PROVIDE( _heap_end = ORIGIN(RAM) + LENGTH(RAM) - __stack_size );
+ PROVIDE( _susrstack = _heap_end );
+ PROVIDE( _eusrstack = ORIGIN(RAM) + LENGTH(RAM) );
}
diff --git a/hw/bsp/rp2040/family.cmake b/hw/bsp/rp2040/family.cmake
index 075582554..aab9a4fae 100644
--- a/hw/bsp/rp2040/family.cmake
+++ b/hw/bsp/rp2040/family.cmake
@@ -99,6 +99,7 @@ target_sources(tinyusb_device_base INTERFACE
${TOP}/src/class/dfu/dfu_rt_device.c
${TOP}/src/class/hid/hid_device.c
${TOP}/src/class/midi/midi_device.c
+ ${TOP}/src/class/midi/midi2_device.c
${TOP}/src/class/msc/msc_device.c
${TOP}/src/class/mtp/mtp_device.c
${TOP}/src/class/net/ecm_rndis_device.c
@@ -121,6 +122,7 @@ target_sources(tinyusb_host_base INTERFACE
${TOP}/src/class/cdc/cdc_host.c
${TOP}/src/class/hid/hid_host.c
${TOP}/src/class/midi/midi_host.c
+ ${TOP}/src/class/midi/midi2_host.c
${TOP}/src/class/msc/msc_host.c
${TOP}/src/class/vendor/vendor_host.c
)
diff --git a/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h b/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h
index 5788837ab..e9c406486 100644
--- a/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h
+++ b/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h
@@ -204,6 +204,10 @@ int32_t i2c_writereg(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Le
return 0;
}
+static int32_t i2c_get_tick(void) {
+ return (int32_t) HAL_GetTick();
+}
+
static inline void board_init2(void) {
TCPP0203_IO_t io_ctx;
@@ -212,6 +216,7 @@ static inline void board_init2(void) {
io_ctx.DeInit = board_tcpp0203_deinit;
io_ctx.ReadReg = i2c_readreg;
io_ctx.WriteReg = i2c_writereg;
+ io_ctx.GetTick = i2c_get_tick;
TU_ASSERT(TCPP0203_RegisterBusIO(&tcpp0203_obj, &io_ctx) == TCPP0203_OK, );
diff --git a/hw/bsp/stm32h7rs/boards/stm32h7s3nucleo/board.h b/hw/bsp/stm32h7rs/boards/stm32h7s3nucleo/board.h
index b1446414e..996eb1515 100644
--- a/hw/bsp/stm32h7rs/boards/stm32h7s3nucleo/board.h
+++ b/hw/bsp/stm32h7rs/boards/stm32h7s3nucleo/board.h
@@ -223,6 +223,10 @@ int32_t i2c_writereg(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Le
return 0;
}
+static int32_t i2c_get_tick(void) {
+ return (int32_t) HAL_GetTick();
+}
+
static inline void board_init2(void) {
TCPP0203_IO_t io_ctx;
@@ -231,6 +235,7 @@ static inline void board_init2(void) {
io_ctx.DeInit = board_tcpp0203_deinit;
io_ctx.ReadReg = i2c_readreg;
io_ctx.WriteReg = i2c_writereg;
+ io_ctx.GetTick = i2c_get_tick;
TU_ASSERT(TCPP0203_RegisterBusIO(&tcpp0203_obj, &io_ctx) == TCPP0203_OK, );
diff --git a/hw/bsp/stm32n6/boards/stm32n6570dk/board.h b/hw/bsp/stm32n6/boards/stm32n6570dk/board.h
index 4d162bbca..0cba5e1f9 100644
--- a/hw/bsp/stm32n6/boards/stm32n6570dk/board.h
+++ b/hw/bsp/stm32n6/boards/stm32n6570dk/board.h
@@ -244,6 +244,10 @@ static int32_t i2c_writereg(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint
return 0;
}
+static int32_t i2c_get_tick(void) {
+ return (int32_t) HAL_GetTick();
+}
+
static inline void board_init2(void) {
TCPP0203_IO_t io_ctx;
@@ -252,6 +256,7 @@ static inline void board_init2(void) {
io_ctx.DeInit = board_tcpp0203_deinit;
io_ctx.ReadReg = i2c_readreg;
io_ctx.WriteReg = i2c_writereg;
+ io_ctx.GetTick = i2c_get_tick;
TU_ASSERT(TCPP0203_RegisterBusIO(&tcpp0203_obj, &io_ctx) == TCPP0203_OK, );
diff --git a/hw/bsp/stm32n6/boards/stm32n657nucleo/board.h b/hw/bsp/stm32n6/boards/stm32n657nucleo/board.h
index c26367af6..be9ea7a31 100644
--- a/hw/bsp/stm32n6/boards/stm32n657nucleo/board.h
+++ b/hw/bsp/stm32n6/boards/stm32n657nucleo/board.h
@@ -239,6 +239,10 @@ int32_t i2c_writereg(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Le
return 0;
}
+static int32_t i2c_get_tick(void) {
+ return (int32_t) HAL_GetTick();
+}
+
static inline void board_init2(void) {
TCPP0203_IO_t io_ctx;
@@ -247,6 +251,7 @@ static inline void board_init2(void) {
io_ctx.DeInit = board_tcpp0203_deinit;
io_ctx.ReadReg = i2c_readreg;
io_ctx.WriteReg = i2c_writereg;
+ io_ctx.GetTick = i2c_get_tick;
TU_ASSERT(TCPP0203_RegisterBusIO(&tcpp0203_obj, &io_ctx) == TCPP0203_OK, );