diff options
| author | hathach <[email protected]> | 2026-06-19 22:55:54 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2026-06-19 22:55:54 +0700 |
| commit | 58b5447b606b49c76187c48e5b76690f4a111143 (patch) | |
| tree | db17a05437cec861c6f424686c1c610a971f26aa /docs | |
| parent | 0c4c0be4589b2807abde5ef9ab156b6aaaad6616 (diff) | |
dcd/ch58x: advance EP0 OUT data toggle for multi-packet control transfers
The manual-toggle ISR skipped EP0 entirely (if (ep != 0)), so EP0's RX data toggle
was set to DATA1 once at SETUP and never advanced. A control-OUT whose data stage
exceeds the EP0 packet size (a vendor/WebUSB OUT, a large HID SET_REPORT, or an
HS DFU download) desynced on the second packet and stalled.
EP0 has no hardware auto-toggle on CH58x (per the datasheet RB_UEP_AUTO_TOG applies
only to EP1/2/3/5/6/7), so flip its RX toggle on every OUT and always process the
packet -- restoring what the removed dcd_ch58x_usbfs.c did. The HIL examples keep
their control-OUT data stages within a single packet, so this was latent.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Diffstat (limited to 'docs')
0 files changed, 0 insertions, 0 deletions
