<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tinyusb.git/src/device, branch fix-ci-hs</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/tinyusb.git/atom/src/device?h=fix-ci-hs</id>
<link rel='self' href='http://cgit.235523.xyz/tinyusb.git/atom/src/device?h=fix-ci-hs'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/'/>
<updated>2026-08-18T13:51:21Z</updated>
<entry>
<title>usbd: handle a refused transfer without halting, and report it</title>
<updated>2026-08-18T13:51:21Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-16T18:02:07Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=1576aba0e7e2f3c833b6ef157fa7aebc1faa5500'/>
<id>urn:sha1:1576aba0e7e2f3c833b6ef157fa7aebc1faa5500</id>
<content type='text'>
A refused transfer is a recoverable condition - a new setup superseding a
control response, for instance - rather than a bug, but every failure path
treated it as one. TU_ASSERT carries TU_BREAKPOINT, which is gated on a debugger
being attached rather than on CFG_TUSB_DEBUG, so on a rig where a probe is
always attached it halted the CPU even in release builds. Use TU_VERIFY on the
control transfer paths, including the multi-packet data stage continuation, and
drop the breakpoint from the endpoint transfer failure arm, which already marks
the endpoint ready again so the next transfer can proceed.

The result of usbd_control_xfer_cb() was separately dropped on the floor,
leaving EP0 neither armed nor stalled and nothing recorded. It is logged now,
and deliberately not stalled: a DCD refuses an EP0 prime when a newer setup is
already latched, and EP0 stalls are cleared by hardware when that setup arrives,
so a stall issued here would land after the auto-clear and stall the transfer
that superseded this one. The pending setup re-drives EP0 by itself.
</content>
</entry>
<entry>
<title>usbd: split bus reset into start/end edge events</title>
<updated>2026-08-18T13:51:21Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-16T18:01:37Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=073942589355676980ba401cb88c0eb9f065e468'/>
<id>urn:sha1:073942589355676980ba401cb88c0eb9f065e468</id>
<content type='text'>
A driver that can see reset signalling begin has no way to say so: the only
event carries the negotiated speed, which does not exist until the reset
ends. On ChipIdea that left the stack believing it was still configured for
the whole reset window - 3 ms at minimum, tens of milliseconds in practice -
while the controller had already torn its endpoints down, so a class driver
writing in that window primed a disabled endpoint over a zeroed queue head.

Add DCD_EVENT_BUS_RESET_START for the leading edge and rename the existing
event to DCD_EVENT_BUS_RESET_END, keeping DCD_EVENT_BUS_RESET as an alias.
START is optional and END stays self-sufficient, so every other driver and
the unit tests are untouched.
</content>
</entry>
<entry>
<title>usbd: clear endpoint busy/claimed when a completion event is dropped</title>
<updated>2026-08-13T04:45:36Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-12T16:05:59Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=91fbbd192ca9539221d3dc096f00ce77836a5d3d'/>
<id>urn:sha1:91fbbd192ca9539221d3dc096f00ce77836a5d3d</id>
<content type='text'>
An XFER_COMPLETE dropped by a full event queue leaves its endpoint's
BUSY|CLAIMED state set forever - the consumer that normally clears it
never sees the event, so usbd_edpt_claim()/usbd_edpt_xfer() fail from
then on and the class never re-arms the endpoint. Clear both flags when
the enqueue fails: the completion is lost either way, but the endpoint
stays usable.

Unit test: arm a bulk endpoint, drop its completion against a full
queue, verify the endpoint can be claimed and re-armed.
</content>
</entry>
<entry>
<title>usbd: clear the queued-setup counter on bus reset</title>
<updated>2026-08-12T15:41:17Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-12T15:37:06Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=a52562b2be7ea728a176ae94d8a18d9ae0a4423a'/>
<id>urn:sha1:a52562b2be7ea728a176ae94d8a18d9ae0a4423a</id>
<content type='text'>
A SETUP counted before a bus reset must not be carried across it: the
consumer would either skip a post-reset SETUP (count drained by the
stale entry) or, if the count leaked high for any other reason, skip
them all. usbd_reset() now zeroes the counter; the consumer already
guards on zero, and any pre-reset SETUP still in the queue is stale by
definition and correctly discarded.
</content>
</entry>
<entry>
<title>usbd: don't leak the queued-setup counter when the event queue is full</title>
<updated>2026-08-12T15:41:17Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-12T15:36:49Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=a0249ada9096365697340031a7b4a285beb18a2b'/>
<id>urn:sha1:a0249ada9096365697340031a7b4a285beb18a2b</id>
<content type='text'>
A SETUP arriving while the event queue is full is silently dropped by
queue_event(), but _usbd_queued_setup has already been incremented. The
leaked count makes the event handler skip every subsequent SETUP
("Skipped since there is other SETUP in queue") forever: EP0 stays deaf
until tud_init() while the device otherwise looks alive - enumerated,
endpoints armed. Undo the increment when the enqueue fails.

Unit test: fill the queue so a SETUP is dropped, then verify the next
SETUP still completes a GET_DESCRIPTOR control transfer.
</content>
</entry>
<entry>
<title>TU_MIN suggestion</title>
<updated>2026-07-26T19:16:23Z</updated>
<author>
<name>TenGui</name>
<email>cyrus.z.xu@gmail.com</email>
</author>
<published>2026-07-26T19:16:23Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=05f19ab438641823d047c811e7426177788d0490'/>
<id>urn:sha1:05f19ab438641823d047c811e7426177788d0490</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix narrowing, add cast</title>
<updated>2026-07-23T22:26:18Z</updated>
<author>
<name>TenGui</name>
<email>cyrus.z.xu@gmail.com</email>
</author>
<published>2026-07-23T22:26:18Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=7e59f1bf8a7590e13da7fe5e8c602b41c95d2341'/>
<id>urn:sha1:7e59f1bf8a7590e13da7fe5e8c602b41c95d2341</id>
<content type='text'>
</content>
</entry>
<entry>
<title>usbd: forward vendor EP0 requests; clear ep state on iso activate</title>
<updated>2026-07-09T16:38:11Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-07-09T16:38:11Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=fd63ad6c2b102d3ea981047e75b43c8db723534e'/>
<id>urn:sha1:fd63ad6c2b102d3ea981047e75b43c8db723534e</id>
<content type='text'>
Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
</content>
</entry>
<entry>
<title>Fix usbd empty builtin driver warning v2</title>
<updated>2026-07-05T13:25:34Z</updated>
<author>
<name>HiFiPhile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-07-05T13:25:34Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=19274b95a6755116114d20abcbce498695a1d0c5'/>
<id>urn:sha1:19274b95a6755116114d20abcbce498695a1d0c5</id>
<content type='text'>
Signed-off-by: HiFiPhile &lt;admin@hifiphile.com&gt;
</content>
</entry>
<entry>
<title>Fix usbd empty builtin driver warning</title>
<updated>2026-07-05T07:38:17Z</updated>
<author>
<name>aineoae86-sys</name>
<email>ai.neo.ae86@gmail.com</email>
</author>
<published>2026-07-05T07:38:17Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=6912f23618d629a4d0d9ec5626df5fc79b329c80'/>
<id>urn:sha1:6912f23618d629a4d0d9ec5626df5fc79b329c80</id>
<content type='text'>
Generated-by: OpenAI Codex
Signed-off-by: aineoae86-sys &lt;ai.neo.ae86@gmail.com&gt;
</content>
</entry>
</feed>
