<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tinyusb.git/src, branch pr3864-alt</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/tinyusb.git/atom/src?h=pr3864-alt</id>
<link rel='self' href='http://cgit.235523.xyz/tinyusb.git/atom/src?h=pr3864-alt'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/'/>
<updated>2026-09-04T07:52:35Z</updated>
<entry>
<title>fix(dwc2): prevent restart during endpoint retirement</title>
<updated>2026-09-04T07:52:35Z</updated>
<author>
<name>HiFiPHile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-09-04T07:52:35Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=6f2824e97bbc7226e06eddd1429fc4fa64f6b2a5'/>
<id>urn:sha1:6f2824e97bbc7226e06eddd1429fc4fa64f6b2a5</id>
<content type='text'>
Mark active close and abort operations on both the endpoint and host channel before requesting a halt. Channel, RX FIFO, and Tx FIFO interrupt paths then discard work until Channel Halted retires the transfer, so split ACK/NYET handling cannot re-arm a channel that software is closing.

Serialize the state transition with GAHBCFG.GINT. This keeps a parked low-speed channel atomic with the one-transaction-per-frame SOF scheduler without freeing and reallocating the ESP32 interrupt handler. Slave mode temporarily restores controller interrupts while waiting for halt-request queue space; periodic DMA channels remain owned until their natural halt.
</content>
</entry>
<entry>
<title>dwc2: serialize low-speed traffic</title>
<updated>2026-09-04T06:50:07Z</updated>
<author>
<name>HiFiPHile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-09-03T14:56:34Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=d0999293426ccbc8904474eaf5d182dd21a66cce'/>
<id>urn:sha1:d0999293426ccbc8904474eaf5d182dd21a66cce</id>
<content type='text'>
Handle the ESP32-S2/S3 DWC2 low-speed preamble limitation by scheduling affected channels from SOF and limiting each activation to one packet.

Signed-off-by: HiFiPHile &lt;admin@hifiphile.com&gt;
</content>
</entry>
<entry>
<title>Fix HID configuration callback after teardown</title>
<updated>2026-09-04T06:49:21Z</updated>
<author>
<name>HiFiPHile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-09-04T05:00:15Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=47a432a3683a0dbc77de7e4ae3ddbbb9dffa98fd'/>
<id>urn:sha1:47a432a3683a0dbc77de7e4ae3ddbbb9dffa98fd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>usbh: fix mount and enumeration retry state</title>
<updated>2026-09-04T06:49:19Z</updated>
<author>
<name>HiFiPHile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-09-04T03:21:52Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=b09f21f328e12c7296c554dbaad9e8d607cc17f3'/>
<id>urn:sha1:b09f21f328e12c7296c554dbaad9e8d607cc17f3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>host: retry enumeration of the roothub port after a failed attach</title>
<updated>2026-09-04T06:49:15Z</updated>
<author>
<name>Jan Procházka</name>
<email>90197375+P-R-O-C-H-Y@users.noreply.github.com</email>
</author>
<published>2026-09-02T16:06:44Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=6d998115ac55f761a3b5f8900fedca0e0aeb4506'/>
<id>urn:sha1:6d998115ac55f761a3b5f8900fedca0e0aeb4506</id>
<content type='text'>
enum_full_complete() already closes the failed device (from #3815).
Nothing retries the root port itself: the host then sits idle until
reboot. Re-post the attach up to USBH_ENUM_ROOT_RETRY_MAX times while
the port still reports a connection.

The budget is per port and given back when the attachment ends, including
when an attach event tears down an in-flight enumeration. tuh_umount_cb()
is only called for a device that reached tuh_mounted().

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;
</content>
</entry>
<entry>
<title>host: close dev0 when the whole roothub port goes away</title>
<updated>2026-09-04T06:49:11Z</updated>
<author>
<name>Jan Procházka</name>
<email>90197375+P-R-O-C-H-Y@users.noreply.github.com</email>
</author>
<published>2026-09-02T16:06:10Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=9cfd1d21f141577f3172e5a38e0fab4b6adf1fc2'/>
<id>urn:sha1:9cfd1d21f141577f3172e5a38e0fab4b6adf1fc2</id>
<content type='text'>
A remove for hub_addr = 0, hub_port = 0 covers everything below the root
port, but process_remove_event() only closed dev0 when the event named
the exact bus address it was enumerating on. Mid-enumeration behind a
downstream hub then left enumerating_daddr at 0 and deferred every later
attach.

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;
</content>
</entry>
<entry>
<title>fix(dwc2): bound periodic intervals to HFNUM range</title>
<updated>2026-09-02T14:18:44Z</updated>
<author>
<name>HiFiPHile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-09-02T14:18:44Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=e461c6f9c139a0012ef01d53db1aab1c68789b56'/>
<id>urn:sha1:e461c6f9c139a0012ef01d53db1aab1c68789b56</id>
<content type='text'>
HFNUM retains only 16384 host-frame positions, while valid periodic endpoint intervals can be longer. Resubmission after the counter wraps can therefore alias the elapsed time and skip the next established service phase.

Cap the host-selected interval to one HFNUM cycle using the root-port frame unit. USB permits a shorter host-provided period, and the bounded interval keeps phase calculation unambiguous for native and split endpoints.
</content>
</entry>
<entry>
<title>fix(dwc2): defer periodic DMA abort cleanup until halt</title>
<updated>2026-09-02T14:14:26Z</updated>
<author>
<name>HiFiPHile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-09-02T01:54:17Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=14060950b487f931d959699c42b0875c96ca6a01'/>
<id>urn:sha1:14060950b487f931d959699c42b0875c96ca6a01</id>
<content type='text'>
Periodic DMA channels use their natural service-boundary halt instead of a software CHDIS request. Keep the endpoint busy after an abort so a replacement transfer cannot reuse its state or buffer while the channel remains active.

When HCINT.HALTED arrives, release the channel without reporting completion for the aborted transfer. If endpoint closure is also pending, release the endpoint from the same halt path.
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/master' into agent/fix-dwc2-host-fifo-allocation</title>
<updated>2026-09-02T13:21:41Z</updated>
<author>
<name>HiFiPHile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-09-01T15:44:58Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=51761d2dfdf2036395b0b6ada6fdde213f97416f'/>
<id>urn:sha1:51761d2dfdf2036395b0b6ada6fdde213f97416f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>USBH: fail enumeration cleanly after disconnect</title>
<updated>2026-09-02T13:21:41Z</updated>
<author>
<name>HiFiPHile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-09-01T15:24:13Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=a52b5a0c25d2cfea286d67eb3d9d8891a9b69e8f'/>
<id>urn:sha1:a52b5a0c25d2cfea286d67eb3d9d8891a9b69e8f</id>
<content type='text'>
A disconnect can close endpoint zero after an enumeration control stage completes but before USBH submits the next stage or request. HCD submission then legitimately returns false; treating that result as an invariant violation asserts during rapid replug and can leave enumeration unfinished.

Complete an in-progress control request as failed when its DATA or status stage cannot be submitted. Propagate submission failures from every asynchronous enumeration continuation and finish enumeration through the normal failure cleanup path. This keeps controller teardown races out of assertions without fabricating a successful transfer.

Validated by interrupting enumeration during rapid STM32U5A5 replug tests with DWC2 DMA and slave modes.
</content>
</entry>
</feed>
