diff options
| author | hathach <[email protected]> | 2026-06-17 16:26:38 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2026-06-18 15:56:23 +0700 |
| commit | de341b14abe3bc3e25962cbb26aa61bc0126adcf (patch) | |
| tree | 4999729614bdf87ff36a3bcd3af6103698913588 /examples/device/hid_multiple_interface | |
| parent | 47f534680215a68391a46cd45decde9b6f0a6573 (diff) | |
dcd/stm32_fsdev: restore CH32 EP0 CONTROL type atomically with arming
edpt_xfer() restored EP0 to CONTROL at the top of the function, before
the OUT stage was armed (rx bufsize + STAT_RX=VALID written further
down, with interrupts enabled in between). That re-enabled the CH32
blind OUT ACK while STAT_RX was still NAK and the buffer size stale, so
a host-retried DATA OUT / status ZLP could be ACKed into the wrong
buffer in the gap.
Fold the CONTROL restore into the single exclusive write that programs
STAT_RX=VALID for the OUT direction, after the buffer size is set, so
type and arming go live together. The IN direction keeps the (now
atomic) early restore, where no pending OUT exists to be blind-ACKed.
Co-Authored-By: Claude Fable 5 <[email protected]>
Diffstat (limited to 'examples/device/hid_multiple_interface')
0 files changed, 0 insertions, 0 deletions
