Repository navigation
Add USB SuperSpeed (USB 3.2) device support with WCH CH569 and CH32H417 ports #3779
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
hathach
wants to merge
141
commits into
master
Choose a base branch
from
claude/wch-ch569-ch32h417-usb3
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+10,695
−288
Open
Changes from all commits
Commits
Show all changes
141 commits
Select commit
Hold shift + click to select a range
671fb8a
core: add TUD_OPT_SUPER_SPEED and register WCH CH569/CH32H417 MCUs
hathach 99d7e67
device: add USB SuperSpeed (3.2) support to the device stack
hathach 9638f3d
class: size endpoints and buffers for SuperSpeed (cdc, hid, msc, mtp)
hathach a5a592a
class: size endpoints and buffers for SuperSpeed (net, printer, usbtm…
hathach 565f02b
wch: add CH569 (CH56x) USB3 device driver
hathach 8be902a
wch: add CH569 (CH56x) USB high-speed device driver
hathach ec62a1a
wch: add CH32H417 USB3 device driver
hathach 4ceaa5a
wch: add CH32H417 USB high-speed device driver
hathach bf38aa5
bsp: add CH569 hydrausb3_v1 board
hathach 3918d50
bsp: add CH32H417 nanoch32h417 board
hathach 2bc6b76
bsp: register WCH boards in build metadata and docs
hathach 82f5db8
usbtest: add SuperSpeed descriptors, capability tiers, and erratum qu…
hathach 818a52b
examples/net_lwip: place lwIP memory in RAMX for WCH CH56x
hathach 7528d30
examples: add SuperSpeed device and configuration descriptors
hathach f980138
examples: skip WCH USB3 MCUs where unsupported
hathach a8adb7f
hil: add WCH board flashing and UART firmware loader
hathach 109097f
hil: usbtest host quirks and capability tiers
hathach 43cfdec
hil: skip device/usbtest on lpcxpresso43s67 pending an ip3511 baseline
hathach 5b1c69a
test/unit-test: cover SuperSpeed in usbd tests
hathach a9c0a29
skills: add adding-superspeed-port and update usb debug/recover/usbtest
hathach 55bfd4d
bsp: append -w to vendor SDK targets instead of replacing COMPILE_OPT…
hathach 9ace700
hil: add pooled SETUP drop-rate measurement
hathach cf06107
docs: CH32H417 high-speed SETUP-drop investigation
hathach 949abd3
docs: design for remediating the 16 review findings
hathach 1868d49
docs: implementation plan for the review-findings remediation
hathach 95f09ac
hil: do not leak the capture process when a drop-rate run fails
hathach 82d4d82
docs: drop a plan line reference invalidated by the try/finally fix
hathach b7110e4
docs: scope the plan's pytest runs to test_*.py
hathach 5da24e8
hil: keep quirk-skipped usbtest cases in the reported total
hathach 893a1ca
hil: attribute SETUP ACKs by source, not by a hardcoded address
hathach 1fdf68b
hil: fail fast instead of prompting on the drop-rate sudo
hathach 245a6f8
bsp: bound the CH32H417 UART loader with an inactivity reset
hathach 04eaef8
usbtest: advertise the quirk for the live link, not the compiled dcd
hathach ebd5093
wch: give the CH569 fallback ladder a single state owner
hathach 140056d
wch: do not re-arm a retired transfer on clear-stall
hathach a4fc765
mtp: derive the ZLP threshold from the live bulk max packet size
hathach 80b8476
wch: clear the CH32H417 OUT completion flag after re-arming
hathach d7e8c63
examples/midi2: add the descriptor callbacks its HS config requires
hathach f8bbdc5
device: make per-function remote wake readable and resettable
hathach e95718f
docs: defer the two non-regression fixes with their plan
hathach 163e86c
Revert "wch: do not re-arm a retired transfer on clear-stall"
hathach da84862
docs: record F3 as refuted-by-hardware and still open
hathach 1731fa3
Revert "wch: clear the CH32H417 OUT completion flag after re-arming"
hathach c0fa831
wch: do not re-arm the fallback ladder on link-partner loss
hathach f9dcba4
device: gate the FUNCTION REMOTE WAKEUP reset on the live link and th…
hathach cfe5259
docs: record F1 and F4 as attempted, reverted and still open
hathach 38fd88d
docs: correct the F4 row now that the change is reverted
hathach 56e695e
docs: record F9 as dropped by decision
hathach d40f293
wch: mask and acknowledge the CH32H417 USB2 controller on deinit
hathach c46ea17
wch: mark the CH32H417 cross-context driver state volatile
hathach 2118aad
wch: discard stale link flags on the inline CH569 re-inits
hathach b7b4992
bsp: document .DMADATA as uninitialised-only and drop its bogus load …
hathach c36123a
audio: treat SuperSpeed as microframed in the feedback computation
hathach b95d144
docs: record the two fallback findings left alone, and what got fixed
hathach c118fd1
wch: recover the CH569 link when the deferred re-init is dropped
hathach 6d1fe2d
device: scope the SetInterface wake reset, and ignore DEVICE_REMOTE_W…
hathach c850200
test/unit-test: make the SuperSpeed control tests self-contained
hathach decf777
hil, bsp: check the hammer sudo, and bound the CH569 SPI-ROM waits
hathach 324eb4d
docs: record the 2026-08-17 review findings left open
hathach 7f53cbb
device: ignore DEVICE_REMOTE_WAKEUP at SuperSpeed instead of stalling it
hathach e3e3631
Revert the SetInterface wake scoping and its DEVICE_REMOTE_WAKEUP gate
hathach e858056
Revert "Revert the SetInterface wake scoping and its DEVICE_REMOTE_WA…
hathach 096dbbb
docs: record the nano's harness-only usbtest failures
hathach 2924bc1
docs: the nano's harness-only failures were stale firmware, now resolved
hathach 5bdd22e
wch: reset the whole EP0 and link state in the CH569 dcd_init
hathach 0b64ef0
wch, hil: bound the stall paths and never leak the capture process
hathach f0d5923
wch: the CH32H417 USB3 driver is hardware-verified, not pending
hathach a0a9f68
wch: do not demote a trained CH569 link to USB2 on disconnect
hathach a58d340
docs: record the CH569 demotion fix and what remains open
hathach 160da4d
docs: F1 now has a hardware reproducer, and recovery is intact
hathach 1ad116c
wch: close four CH569 link-teardown and EP0 hazards
hathach ea65c56
wch: keep the CH32H417 disconnect mask and park EP0 IN
hathach b790f0e
usbd: key FUNCTION REMOTE WAKEUP by function, not by interface
hathach 06d9b40
usbtmc: bound the endpoint descriptor walk
hathach aa61d9f
hil: read the DUT serial through the bounded sysfs reader
hathach bae3d61
docs: record what the 2026-08-21 review left open
hathach 666b07b
bsp: trap after NVIC_SystemReset in the UART loader
hathach 84b9491
wch: NAK an unqueued CH32H417 OUT instead of ACKing isochronous
hathach 6a7bc64
wch: shadow the CH569 EP0 OUT toggle like the IN side
hathach 093cc0f
docs: record the validate-run outcome and the EP0 early-OUT race
hathach 20c0c09
bsp: add the CH569 and CH32H417 boards to family.json
hathach aa18fa1
hil: drop the unused tinyusb-sudoer template
hathach 7c290c0
class/mtp: check the buffer against the SuperSpeed bulk packet size
hathach 4b52d16
hil: drop raw sudo from hs_drop_rate and the SuperSpeed port skill
hathach 9ac987a
test/mtp: add a SuperSpeed MTP device suite
hathach ad123ef
docs: record the reverted F1 re-arm and the inline warm reset in the …
hathach 395b492
usbd: keep the SuperSpeed companion walk inside desc_end
hathach 6c1a7de
bsp: refresh the da14695_dk_usb and msp_exp430f5529lp family.json rows
hathach 3b60927
wch: apply cycle-6 review fixes for the SuperSpeed port
hathach fad6bd9
hil: note the WCH UART loader stays put after an erase
hathach a67e0a8
cdc: keep cdcd_open's descriptor type reads inside desc_end
hathach b9e7260
wch: apply cycle-9 review fixes for the SuperSpeed port
hathach f582119
test/usbd: share the two-function configuration and remote-wake helpers
hathach 4d7b410
test/usbd: cover function suspend clear and aggregate remote wake
hathach 526c95d
wch: indent with spaces in dcd_init and the new linker scripts
hathach 77447b7
wch: release USB3 bounce slots after a bus reset
hathach 2464998
hil: bound the WCH UART park write by the reset timeout
hathach 0a9f4e7
wch: defer xfer completion to task context on CH569 and CH32H417
hathach 56a47f9
wch: release CH569 USB3 bounce slots at SET_ADDRESS
hathach 1f80a45
bsp: add CH32H417QEU6-R0 EVT board ch32h417_r0
hathach 0424dfa
docs: remove superpowers docs
hathach 522dee0
usbtest: drop CH32H417 high-speed quirk 0x40
hathach f5aff72
wch: program TIM12 with full-width counter/reload and an update event
hathach be66305
wch: drive the CH32H417 USB2 controller with the generic HS2 driver
hathach d5d2143
wch: cancel the transfer and send ERDY when a CH32H417 USB3 endpoint …
hathach d8a81fd
wch: cancel the transfer when a CH569 USB3 endpoint halts
hathach 055f83f
wch: move the USB3 drivers to wch_ss1/ and wch_ss2/
hathach 57429d9
wch: publish SS2 IN progress before arming the chain
hathach 89e628e
wch: cancel the transfer when a CH56x USB2 endpoint halts
hathach 24ced37
usbd: build SuperSpeed endpoint descriptors from shared blocks
hathach 4d4aa68
examples: take SuperSpeed burst and EP0 sizes from stack options
hathach f53756e
wch: simplify the SS2 driver and trim CH32H417 BSP comments
hathach dae8967
wch: simplify the SS1 and CH56x USB2 drivers
hathach ba73318
test: drop the obsolete hs_drop_rate tool
hathach 10bd58c
Merge remote-tracking branch 'origin/master' into claude/wch-ch569-ch…
hathach 85ba019
hil: resend the WCH UART loader magic until the banner shows
hathach ce1f5f0
ci: key the example filter by family variant legs too
hathach 642e2e5
usbtest: define L in the value-sweep example
hathach dedb7c2
cdc: require full descriptor lengths before reading endpoint and data…
hathach 47c15ce
usbd: reject a short endpoint descriptor in usbd_open_edpt_pair
hathach 2d5d535
examples: advertise full speed in the BOS for the CH32H417 USB2 fallback
hathach 5960ef8
bsp: drop CFG_TUD_ENDPOINT0_SIZE from the da1469x and msp430 family.j…
hathach 84d99af
ch569: reject a CFG_TUD_WCH_USB30_MAX_BURST outside 1..4
hathach b088755
wch: make the SS1 and SS2 register headers self-contained
hathach d949d7e
wch_ss2: drop EP0 stages of a superseded SETUP and check the HS2 fall…
hathach a7db1e9
wch: drop superseded EP0 stages on CH569 and fix CH56x USB2 iso OUT, …
hathach a56ccb0
wch_ss2: rewind only the unsent DPs when clearing halt on a busy IN e…
hathach 69512e7
examples: share the SuperSpeed BOS wSpeedsSupported value through usbd.h
hathach bcefe83
examples: report bcdUSB 2.10 in the USB2 descriptors of SuperSpeed bu…
hathach 23b0913
tusb: rename TUP_RHPORT_SUPERSPEED to an overridable CFG_TUSB_SUPER_S…
hathach 18361c5
wch_ss1: park EP0 RX with NRDY while an early control-OUT packet is held
hathach ae2a851
wch_ss1: share the EP0 early-OUT drain's re-arm and select the park v…
hathach 7d55807
docs: retire the adding-superspeed-port skill into the porting guide …
hathach 5a716e3
wch: fix SuperSpeed review findings in slot release, headers and conf…
hathach 7ad5f40
docs: fix SuperSpeed review findings in porting and usb concepts pages
hathach c818aec
wch_ss1: clear the retired-pool flag only in pool_release
hathach 479036f
docs: list the legal Full Speed EP0 packet sizes
hathach f3c3199
wch_ss1: clear the retired-pool flag only for a request served after …
hathach 12dbc19
Merge remote-tracking branch 'origin/master' into claude/wch-ch569-ch…
hathach d9d4228
hil: look up wch_uart_loader's probe as the WCH-LinkE VCP
hathach dc61e89
wch_ss1: state when SET_ADDRESS releases the slots in the open-path c…
hathach File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -5,3 +5,5 @@ family:espressif | |
| mcu:CH583 | ||
| mcu:CH32X035 | ||
| mcu:APM32F103 | ||
| mcu:CH569 | ||
| mcu:CH32H417 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3,3 +3,5 @@ mcu:SAMG | |
| family:espressif | ||
| mcu:CH583 | ||
| mcu:CH32X035 | ||
| mcu:CH569 | ||
| mcu:CH32H417 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3,4 +3,6 @@ mcu:SAMG | |
| family:espressif | ||
| mcu:CH583 | ||
| mcu:CH32X035 | ||
| mcu:CH569 | ||
| mcu:CH32H417 | ||
| board:spresense | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.