summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZixun LI <[email protected]>2025-11-26 11:10:34 +0100
committerZixun LI <[email protected]>2025-11-26 11:10:34 +0100
commit37df71cae4c37faaffa1f8a6fc236ec763e4ec03 (patch)
treea488ca65990df163e26e078b581fa428c964bbb9 /src
parenta965e1fa4bd92104d68ab20beb1bb56a5019e153 (diff)
parent38842491bb55260c0cc7d7709abe5b0e73a0de61 (diff)
Merge remote-tracking branch 'tinyusb/master' into hcd_fsdev
Diffstat (limited to 'src')
-rw-r--r--src/common/tusb_fifo.h4
-rw-r--r--src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c11
-rw-r--r--src/portable/st/stm32_fsdev/fsdev_stm32.h3
3 files changed, 14 insertions, 4 deletions
diff --git a/src/common/tusb_fifo.h b/src/common/tusb_fifo.h
index 9d8b864e9..2fb4f37d4 100644
--- a/src/common/tusb_fifo.h
+++ b/src/common/tusb_fifo.h
@@ -175,7 +175,9 @@ bool tu_fifo_full(const tu_fifo_t *f);
bool tu_fifo_overflowed(const tu_fifo_t *f);
TU_ATTR_ALWAYS_INLINE static inline bool tu_fifo_empty(const tu_fifo_t *f) {
- return f->wr_idx == f->rd_idx;
+ uint16_t wr_idx = f->wr_idx;
+ uint16_t rd_idx = f->rd_idx;
+ return wr_idx == rd_idx;
}
TU_ATTR_ALWAYS_INLINE static inline uint16_t tu_fifo_depth(const tu_fifo_t *f) {
diff --git a/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c b/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
index 3762b33f9..a6c8d2453 100644
--- a/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
+++ b/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
@@ -277,7 +277,11 @@ static void handle_ctr_tx(uint32_t ep_id) {
return;
}
xfer->iso_in_sending = false;
+#if FSDEV_USE_SBUF_ISO == 0
uint8_t buf_id = (ep_reg & USB_EP_DTOG_TX) ? 0 : 1;
+#else
+ uint8_t buf_id = BTABLE_BUF_TX;
+#endif
btable_set_count(ep_id, buf_id, 0);
}
@@ -758,7 +762,12 @@ static bool edpt_xfer(uint8_t rhport, uint8_t ep_num, tusb_dir_t dir) {
uint16_t cnt = tu_min16(xfer->total_len, xfer->max_packet_size);
- if (ep_is_iso(ep_reg)) {
+#if FSDEV_USE_SBUF_ISO == 0
+ bool const dbl_buf = ep_is_iso(ep_reg);
+#else
+ bool const dbl_buf = false;
+#endif
+ if (dbl_buf) {
btable_set_rx_bufsize(ep_idx, 0, cnt);
btable_set_rx_bufsize(ep_idx, 1, cnt);
} else {
diff --git a/src/portable/st/stm32_fsdev/fsdev_stm32.h b/src/portable/st/stm32_fsdev/fsdev_stm32.h
index 71370b189..4b7d3d301 100644
--- a/src/portable/st/stm32_fsdev/fsdev_stm32.h
+++ b/src/portable/st/stm32_fsdev/fsdev_stm32.h
@@ -202,8 +202,7 @@
#include "stm32u0xx.h"
#define FSDEV_PMA_SIZE (1024u)
#define FSDEV_BUS_32BIT
- // Disable SBUF_ISO on U0 for now due to bad performance (audio glitching)
- #define FSDEV_HAS_SBUF_ISO 0
+ #define FSDEV_HAS_SBUF_ISO 1
#define USB USB_DRD_FS
#define USB_EP_CTR_RX USB_EP_VTRX