summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJie Feng <[email protected]>2026-05-21 14:52:38 +0800
committerJie Feng <[email protected]>2026-05-26 21:00:31 +0800
commitd63a45509fd283f5ffccc29cd8569e6efd075c59 (patch)
tree248757b8f9c0cd9c80a0381bc9f2802e68045bed
parent7b9f6eabd8623c2bbe188c8d53072b16a087cdda (diff)
ch32_usbhs: fix endpoint stall length index and clear-stall response
Fix issue in the stall handling: - dcd_edpt_stall() for an IN endpoint cleared EP_TX_LEN(0) instead of EP_TX_LEN(ep_num), clobbering endpoint 0's transmit length register when stalling any other IN endpoint. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
-rw-r--r--src/portable/wch/dcd_ch32_usbhs.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/portable/wch/dcd_ch32_usbhs.c b/src/portable/wch/dcd_ch32_usbhs.c
index a6dd5bb79..ea3b052ad 100644
--- a/src/portable/wch/dcd_ch32_usbhs.c
+++ b/src/portable/wch/dcd_ch32_usbhs.c
@@ -354,7 +354,7 @@ void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr) {
if (dir == TUSB_DIR_OUT) {
EP_RX_CTRL(ep_num) = USBHS_EP_R_RES_STALL;
} else {
- EP_TX_LEN(0) = 0;
+ EP_TX_LEN(ep_num) = 0;
EP_TX_CTRL(ep_num) = USBHS_EP_T_RES_STALL;
}
}