<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tinyusb.git/src/portable/nordic, branch claude/mtp-data-phase-fixes</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/tinyusb.git/atom/src/portable/nordic?h=claude%2Fmtp-data-phase-fixes</id>
<link rel='self' href='http://cgit.235523.xyz/tinyusb.git/atom/src/portable/nordic?h=claude%2Fmtp-data-phase-fixes'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/'/>
<updated>2026-08-17T05:17:00Z</updated>
<entry>
<title>portable/nrf5x: complete zero-length bulk OUT transfers</title>
<updated>2026-08-17T05:17:00Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-14T04:29:37Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=f75b247304397a1bd8bd60867c947c5be0f72743'/>
<id>urn:sha1:f75b247304397a1bd8bd60867c947c5be0f72743</id>
<content type='text'>
A zero-length OUT read (e.g. the MTP driver's read for the host's
terminating data ZLP) could never complete when the ZLP's EPDATA
arrived after the read was armed: actual_len &lt; total_len is always
false for total_len == 0, so the handler only set data_received and the
armed transfer hung forever, wedging both bulk endpoints (host sees
pure NAK; EP0 stays alive). Run the 0-byte DMA in that case to drain
the endpoint and complete the transfer, matching what the arm path
already does when the ZLP arrives first.

Found via usbmon on the HIL rig: device/mtp on feather_nrf52840_express
wedged after SendObject's terminating ZLP whenever the class armed the
read before the host's (NAK-delayed) ZLP retry landed - deterministic
under CI load, which is why PR CI only passed this test on a re-flash
retry (21.4 s vs the normal 2.2 s).
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/master' into usbtest</title>
<updated>2026-07-14T06:40:45Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-07-14T06:40:45Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=a686c70631812fe2b29d48e9c05e73e01581d944'/>
<id>urn:sha1:a686c70631812fe2b29d48e9c05e73e01581d944</id>
<content type='text'>
# Conflicts:
#	.claude/skills/hil/SKILL.md
#	test/hil/hil_test.py
</content>
</entry>
<entry>
<title>nrf5x: fix hfclk_running() for nrfx v2.0.0</title>
<updated>2026-07-10T13:17:38Z</updated>
<author>
<name>Mikey Sklar</name>
<email>mikeysklar@gmail.com</email>
</author>
<published>2026-07-09T23:27:50Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=72e14c7e027a66e1b640ed696e06b67e7ad47e2e'/>
<id>urn:sha1:72e14c7e027a66e1b640ed696e06b67e7ad47e2e</id>
<content type='text'>
nrf_clock_is_running() was added in nrfx 2.1.0 (MDK 8.30.2), but the
version autodetect puts 2.0.0 (MDK 8.29.0) in the v2 bucket, so
hfclk_running() fails to compile on that nrfx.

Route v2 through nrf_clock_hf_is_running(), which all of 2.x provides.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>dcd(nrf5x): errata 199 DMA workaround + iso alloc/activate</title>
<updated>2026-07-09T16:38:28Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-07-09T16:38:28Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=4bbb23545a91926b9372554f5a31294d0a279829'/>
<id>urn:sha1:4bbb23545a91926b9372554f5a31294d0a279829</id>
<content type='text'>
USBD drops tasks during EasyDMA without the 0x40027C1C latch (anomaly 199);
matches the nrfx reference driver.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
</content>
</entry>
<entry>
<title>license: use SPDX identifiers for src/ headers (#3749)</title>
<updated>2026-07-02T14:55:45Z</updated>
<author>
<name>Ha Thach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-07-02T14:55:45Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=7a4111b96ef6279e75579f9a18443834f6a0871d'/>
<id>urn:sha1:7a4111b96ef6279e75579f9a18443834f6a0871d</id>
<content type='text'>
* license: use SPDX identifiers for src/ headers

Replace the full ~20-line MIT license boilerplate on every src/ file with a
two-line SPDX tag (SPDX-FileCopyrightText + SPDX-License-Identifier), following
the REUSE convention used by CircuitPython and the Linux kernel. Removes ~3500
lines of duplicated boilerplate.</content>
</entry>
<entry>
<title>nrf5x: request HFCLK in USB_EVT_READY to fix post-SoftDevice deadlock</title>
<updated>2026-05-08T14:27:53Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-05-08T14:27:53Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=6af4ee2c50da68a9bca276b69fccbacf96e2b3ce'/>
<id>urn:sha1:6af4ee2c50da68a9bca276b69fccbacf96e2b3ce</id>
<content type='text'>
USB_EVT_DETECTED runs hfclk_enable() which, when SoftDevice is not yet
enabled, starts HFXO via direct CLOCK register access. After
sd_softdevice_enable() takes over CLOCK, HFXO is physically off again
and SD's HFCLK reference count is 0.

If USB_EVT_READY is fired post-SD (e.g. on nRF52 via Bluefruit's
usb_softdevice_post_enable() when the pre-SD nrfx_power READY callback
didn't get to run before nrfx_power was uninited), the wait loop
'while (!hfclk_running()) {}' calls sd_clock_hfclk_is_running() which
returns false forever -&gt; deadlock that blocks both USB enumeration and
any further app code on the calling thread.

Call hfclk_enable() right before the wait so HFCLK is requested in
whichever context (SD or direct) is current. hfclk_enable() is
idempotent.

Reproduces reliably with bleuart on Feather nRF52840 Express flashed
via JLink: chip wedges in sd_clock_hfclk_is_running SVC, no USB
enumeration, no BLE advertising. With the fix, USB enumerates and BLE
advertises as expected.
</content>
</entry>
<entry>
<title>fix some Wconversion warnings</title>
<updated>2026-04-17T03:16:31Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-04-16T17:10:44Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=a6dcc3f089bd4468949ea9e138fea9f80025577e'/>
<id>urn:sha1:a6dcc3f089bd4468949ea9e138fea9f80025577e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix build with zephyr with latest nrfx v4</title>
<updated>2025-11-28T06:34:00Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2025-11-28T05:55:56Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=7d012b014eb27de9a5f34da543c707109c653045'/>
<id>urn:sha1:7d012b014eb27de9a5f34da543c707109c653045</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'tinyusb/master' into copilot/fix-dcd-edpt-xfer-issue</title>
<updated>2025-11-19T21:05:07Z</updated>
<author>
<name>HiFiPhile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2025-11-19T21:05:07Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=85adf694e659bde41b34e2f585cb2db552279064'/>
<id>urn:sha1:85adf694e659bde41b34e2f585cb2db552279064</id>
<content type='text'>
Signed-off-by: HiFiPhile &lt;admin@hifiphile.com&gt;
</content>
</entry>
<entry>
<title>make TUP_DCD_EDPT_ISO_ALLOC i.e dcd_edpt_iso_alloc()/dcd_edpt_iso_activate() as default driver implementation. dcd_edpt_close() is deprecated and will be removed from all driver in the future.</title>
<updated>2025-11-17T05:09:30Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2025-11-15T12:46:14Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=6b28a4478c9f8fa3993d593360eb5574bbdeda22'/>
<id>urn:sha1:6b28a4478c9f8fa3993d593360eb5574bbdeda22</id>
<content type='text'>
</content>
</entry>
</feed>
