<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tinyusb.git/src, branch docs/worktree-reuse-workflow</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/tinyusb.git/atom/src?h=docs%2Fworktree-reuse-workflow</id>
<link rel='self' href='http://cgit.235523.xyz/tinyusb.git/atom/src?h=docs%2Fworktree-reuse-workflow'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/'/>
<updated>2026-09-01T08:42:39Z</updated>
<entry>
<title>Merge pull request #3828 from dxbjavid/ep2drv-endpoint-bound</title>
<updated>2026-09-01T08:42:39Z</updated>
<author>
<name>Zixun LI</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-09-01T08:42:39Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=f4697a0626ffa81617c457c93b64e3c3816c1af0'/>
<id>urn:sha1:f4697a0626ffa81617c457c93b64e3c3816c1af0</id>
<content type='text'>
bound endpoint number in tu_bind_driver_to_ep_itf</content>
</entry>
<entry>
<title>propagate the endpoint-bound failure on the host path</title>
<updated>2026-09-01T08:41:53Z</updated>
<author>
<name>HiFiPHile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-09-01T08:36:58Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=bc359e55b8d3fb5fc5b9e026d5c21b52d554fdd2'/>
<id>urn:sha1:bc359e55b8d3fb5fc5b9e026d5c21b52d554fdd2</id>
<content type='text'>
tu_bind_driver_to_ep_itf() now returns false when ep_num &gt;= CFG_TUH_ENDPOINT_MAX, but the host caller ignores that result and continues enumeration. Configurations such as host/bare_api set the limit to 8, while valid USB devices may use endpoints 8–15. A recognized class can therefore continue and later index ep_status[epnum] or ep2drv[epnum] out of bounds. Wrap this call in TU_ASSERT(...), as the device path already does, so parsing fails immediately.

Signed-off-by: HiFiPHile &lt;admin@hifiphile.com&gt;
</content>
</entry>
<entry>
<title>remove unnecessary comment</title>
<updated>2026-08-30T17:15:49Z</updated>
<author>
<name>Mike Ajax</name>
<email>14773392+michaelajax@users.noreply.github.com</email>
</author>
<published>2026-08-30T17:15:49Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=e056a04a011225479f0be61fc9b37d828e506a26'/>
<id>urn:sha1:e056a04a011225479f0be61fc9b37d828e506a26</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Suppress USB-C attached callback unless cable state changed from disconnected-&gt;connected or connected-&gt;disconnected</title>
<updated>2026-08-30T16:59:00Z</updated>
<author>
<name>Mike Ajax</name>
<email>14773392+michaelajax@users.noreply.github.com</email>
</author>
<published>2026-08-30T16:59:00Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=aa535e8268ec962aa69a5d613b37075973ac1d5c'/>
<id>urn:sha1:aa535e8268ec962aa69a5d613b37075973ac1d5c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add "attached" state callback for UCPD</title>
<updated>2026-08-30T16:44:23Z</updated>
<author>
<name>Mike Ajax</name>
<email>14773392+michaelajax@users.noreply.github.com</email>
</author>
<published>2026-08-30T16:44:23Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=1e3c2faed4db782f093aa4c88fc98fa81cccc77a'/>
<id>urn:sha1:1e3c2faed4db782f093aa4c88fc98fa81cccc77a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>vendor: remove the obsolete host vendor driver</title>
<updated>2026-08-21T04:06:14Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-21T04:06:14Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=a57f857f811e054e7a240fc55520648192349c2b'/>
<id>urn:sha1:a57f857f811e054e7a240fc55520648192349c2b</id>
<content type='text'>
vendor_host.c/.h implemented a CFG_TUH_VENDOR class driver that no example, board
or test ever enabled: usbh's driver table entry was compiled out everywhere, and
the six tusb_config.h files that mentioned the macro all set it to 0. Maintainer
call - dead code, not a shrinking of supported classes.

Removes the sources, the usbh driver-table entry, the CFG_TUH_VENDOR default in
tusb_option.h, the tusb.h include, both build-system source lists, the rp2040
family.cmake entry and the IAR project template rows.
</content>
</entry>
<entry>
<title>Merge pull request #3833 from hathach/claude/ci-hs-set-address-order</title>
<updated>2026-08-19T11:33:12Z</updated>
<author>
<name>Ha Thach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-19T11:33:12Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=7800876bf151a239046521232dc4603b156061be'/>
<id>urn:sha1:7800876bf151a239046521232dc4603b156061be</id>
<content type='text'>
dcd(ci_hs): stage the device address before priming the status stage</content>
</entry>
<entry>
<title>dcd(ci_hs): stage the device address before priming the status stage</title>
<updated>2026-08-19T10:40:48Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-19T05:29:45Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=75a01f561438c16677b48f3a59fda80a2b096ad8'/>
<id>urn:sha1:75a01f561438c16677b48f3a59fda80a2b096ad8</id>
<content type='text'>
IMXRT1060RM 42.7.23 and UM10503 Table 478 both ask for the DEVICEADDR write
with USBADRA=1 to happen after the SET_ADDRESS data phase and before the
prime of the status stage, so the controller loads USBADR from its holding
register when the status stage is ACKed. The driver did it the other way
round, leaving a window between the ENDPTPRIME store and the DEVICEADDR
store: an IN answered inside that window ACKs with USBADRA still 0, so the
holding register is never consulted and the device keeps answering on
address 0 while the host has moved to the new one. Instruction timing alone
cannot open that window, but dcd_set_address() runs in task context, so any
interrupt landing between the two stores stretches it past a microframe.

Hardware discards a staged address on a SETUP or OUT to endpoint 0 and
zeroes USBADR on a bus reset, which covers a superseded SET_ADDRESS. What
it cannot cover is a SETUP latched before this write and still unconsumed
after the full CI_HS_BUSY_SPIN spin, which refuses the prime: condition 2
already fired for that earlier SETUP, so the stage would survive and load
USBADR on the next EP0 IN ACK of an unrelated transfer. USB 2.0 9.4.6 is
explicit that "the USB device does not change its device address until
after the Status stage of this request is completed successfully", so the
refused-prime path restores the previous USBADR rather than leaving a stage
armed. Restoring the previous value rather than writing zero keeps 9.4.6's
Address-state row correct, where a device already at a non-zero address
must stay there; on Linux that write is always a no-op, since hub_set_address
only issues SET_ADDRESS from USB_STATE_DEFAULT.

Cast dev_addr before the shift: it is uint8_t, promoted to int, so an
address of 64 or more reached the sign bit of a 32-bit int.

No errata applies: IMXRT1060CE_A Rev 1.3 lists only ERR050101 and ERR010661
for USB, IMXRT1060CE_B Rev 1.1 only ERR010661.

Validated on mimxrt1064_evk: 18/19 device+host tests, 6x usbtest 30/30, and
a 100-iteration forced re-enumeration A/B that is clean on both this change
and its parent (0/100 each). All 19 ci_hs boards build; unit tests 63/63;
PVS drops one diagnostic (the sign-bit shift) and adds none.
</content>
</entry>
<entry>
<title>Merge pull request #3816 from Ryzee119/ohci_gtd_fix</title>
<updated>2026-08-19T09:30:29Z</updated>
<author>
<name>Zixun LI</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-08-19T09:30:29Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=82a577bde640c95ed25185af91c53b9f9f4ae29a'/>
<id>urn:sha1:82a577bde640c95ed25185af91c53b9f9f4ae29a</id>
<content type='text'>
ohci: fix double allocation of dummy TDs in gtd_find_free</content>
</entry>
<entry>
<title>ohci: defer descriptor reclaim until next frame</title>
<updated>2026-08-19T03:06:04Z</updated>
<author>
<name>HiFiPHile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-08-19T03:06:04Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=f065f280284a6f1b5b4c4d2849db4bff4a3ce70c'/>
<id>urn:sha1:f065f280284a6f1b5b4c4d2849db4bff4a3ce70c</id>
<content type='text'>
</content>
</entry>
</feed>
