summaryrefslogtreecommitdiff
path: root/src/portable
diff options
context:
space:
mode:
authorhathach <[email protected]>2025-12-13 14:56:15 +0700
committerhathach <[email protected]>2025-12-13 14:56:15 +0700
commit80886fb32a9610d863246726950ffefeb2ffb21b (patch)
tree8914ea1e2702d6ebf8e8346ca4641a402e91b321 /src/portable
parent7a4af1e9b833d334cca8fa98bc200d4738cb6b82 (diff)
parent3a4d02ba9f150b74df08384d16fac124a7c27485 (diff)
Merge branch 'refs/heads/master' into hcd_fsdev
Diffstat (limited to 'src/portable')
-rw-r--r--src/portable/renesas/rusb2/dcd_rusb2.c27
-rwxr-xr-xsrc/portable/synopsys/dwc2/dwc2_info.py1
-rw-r--r--src/portable/synopsys/dwc2/hcd_dwc2.c2
3 files changed, 19 insertions, 11 deletions
diff --git a/src/portable/renesas/rusb2/dcd_rusb2.c b/src/portable/renesas/rusb2/dcd_rusb2.c
index 786b8d980..779c7bc3d 100644
--- a/src/portable/renesas/rusb2/dcd_rusb2.c
+++ b/src/portable/renesas/rusb2/dcd_rusb2.c
@@ -213,17 +213,26 @@ static void pipe_write_packet_ff(rusb2_reg_t * rusb, tu_fifo_t *f, volatile void
tu_fifo_buffer_info_t info;
tu_fifo_get_read_info(f, &info);
- uint16_t count = tu_min16(total_len, info.linear.len);
- pipe_write_packet(rusb, info.linear.ptr, fifo, count);
+ uint16_t cnt_lin = tu_min16(total_len, info.linear.len);
+ uint16_t cnt_wrap = tu_min16(total_len - cnt_lin, info.wrapped.len);
+ uint16_t const cnt_written = cnt_lin + cnt_wrap;
- uint16_t rem = total_len - count;
- if (rem) {
- rem = tu_min16(rem, info.wrapped.len);
- pipe_write_packet(rusb, info.wrapped.ptr, fifo, rem);
- count += rem;
- }
+ // Ensure only the last write is odd if total_len is odd
+ if (cnt_wrap == 0) {
+ pipe_write_packet(rusb, info.linear.ptr, fifo, cnt_lin);
+ } else {
+ pipe_write_packet(rusb, info.linear.ptr, fifo, cnt_lin & ~1);
- tu_fifo_advance_read_pointer(f, count);
+ if (cnt_lin & 1) {
+ uint8_t glue[2] = {info.linear.ptr[cnt_lin & ~1], info.wrapped.ptr[0]};
+ pipe_write_packet(rusb, glue, fifo, 2);
+ cnt_wrap--;
+ info.wrapped.ptr++;
+ }
+
+ pipe_write_packet(rusb, info.wrapped.ptr, fifo, cnt_wrap);
+ }
+ tu_fifo_advance_read_pointer(f, cnt_written);
}
// Read data sw fifo <-- hw fifo
diff --git a/src/portable/synopsys/dwc2/dwc2_info.py b/src/portable/synopsys/dwc2/dwc2_info.py
index f6bd2785a..8fbbc00a0 100755
--- a/src/portable/synopsys/dwc2/dwc2_info.py
+++ b/src/portable/synopsys/dwc2/dwc2_info.py
@@ -2,7 +2,6 @@
import ctypes
import argparse
-import click
import pandas as pd
# hex value for register: guid, gsnpsid, ghwcfg1, ghwcfg2, ghwcfg3, ghwcfg4
diff --git a/src/portable/synopsys/dwc2/hcd_dwc2.c b/src/portable/synopsys/dwc2/hcd_dwc2.c
index b92448685..fc748c85f 100644
--- a/src/portable/synopsys/dwc2/hcd_dwc2.c
+++ b/src/portable/synopsys/dwc2/hcd_dwc2.c
@@ -821,7 +821,7 @@ static void channel_xfer_in_retry(dwc2_regs_t* dwc2, uint8_t ch_id, uint32_t hci
}
}
-#if CFG_TUSB_DEBUG
+#if CFG_TUSB_DEBUG && 0
TU_ATTR_ALWAYS_INLINE static inline void print_hcint(uint32_t hcint) {
const char* str[] = {
"XFRC", "HALTED", "AHBERR", "STALL",