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) <noreply@anthropic.com>
This commit is contained in:
Jie Feng
2026-05-21 14:52:38 +08:00
parent 7b9f6eabd8
commit d63a45509f

View File

@ -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;
}
}