<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tinyusb.git/src/portable/chipidea/ci_hs/dcd_ci_hs.c, branch merge_os</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/tinyusb.git/atom/src/portable/chipidea/ci_hs/dcd_ci_hs.c?h=merge_os</id>
<link rel='self' href='http://cgit.235523.xyz/tinyusb.git/atom/src/portable/chipidea/ci_hs/dcd_ci_hs.c?h=merge_os'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/'/>
<updated>2026-08-18T15:07:49Z</updated>
<entry>
<title>dcd(ci_hs): rework bus reset handling and bound the register waits</title>
<updated>2026-08-18T15:07:49Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-16T18:01:54Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=2fda873fa5f6ef0c893f4f138b5c54e49c24e0a9'/>
<id>urn:sha1:2fda873fa5f6ef0c893f4f138b5c54e49c24e0a9</id>
<content type='text'>
A bus reset was detected only from the port change that ends it, which is late:
the manual asks the DCD to clear the endpoint semaphores, cancel every prime and
free the dTDs while the reset is still being driven. Enable the reset interrupt
and do all of that there, in the manual's order (IMXRT1060RM 42.5.6.2.1,
p.2394), including the two steps that were missing - confirming the port is
still being reset, and freeing the dTDs. A failed check means the cleanup
arrived late and the controller may be in an undefined state, so the manual's
remedy is carried out rather than noted: a controller reset, followed by the
full re-initialisation it then requires, since the reset detaches the device.

The port change that ends the reset is left with what the manual gives it, the
negotiated speed, which the new BUS_RESET_END event carries. A port change is
classified by the interrupt that preceded it: a suspend raises no port change of
its own, the resume that ends it does.

Every unbounded register spin is now bounded. They waited on bits the hardware
clears within a frame, but each could hang an interrupt handler outright on a
controller that had stopped responding. The endpoint flush follows all three
steps of IMXRT1060RM 42.5.6.6.5 (p.2413), repeating a flush the controller
refuses while a packet is in progress - previously reported as success.

EP0 setup handling is hardened alongside: the payload is copied out of the queue
head through the volatile qualifier before ENDPTSETUPSTAT is cleared, since that
clear releases the setup lockout and a back-to-back setup can overwrite the
buffer immediately after, and C orders volatile accesses only against each
other, so a plain memcpy may legally be sunk past the store.

There is deliberately no unplug detection. IMXRT1060RM 42.7.31 (p.2470) states a
zero Current Connect Status means the device "did not attach successfully or was
forcibly disconnected by the software writing a zero to the Run bit ... It does
not state the device being disconnected or suspended", so a cable pull raises no
port change at all; VBUS via OTGSC is the manual's disconnect indicator and is
board dependent.

Verified on mimxrt1064_evk: 30 forced bus resets each re-enumerating at high
speed with no descriptor errors, plus repeated full usbtest batteries at 30/30
across the series.
</content>
</entry>
<entry>
<title>portable/chipidea: name SBUSCFG in ci_hs_regs_t, unify AHB burst hook</title>
<updated>2026-08-17T05:12:08Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-13T07:35:01Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=8ccd0d549798c66d484e5a4b4c57edf49e8bb097'/>
<id>urn:sha1:8ccd0d549798c66d484e5a4b4c57edf49e8bb097</id>
<content type='text'>
Replace the duplicated per-MCU dispatch in dcd_init/hcd_init and the two
helper flavors (USB_Type access on iMX RT, raw offset 0x90 on LPC18/43)
with one SBUSCFG register field plus a per-header CI_HS_SET_AHB_BURST()
hook, compiled only where defined. The LPC USB0-only policy is now
visible at the macro definition.
</content>
</entry>
<entry>
<title>portable/chipidea: configure i.MX RT AHB bursts</title>
<updated>2026-07-27T12:58:13Z</updated>
<author>
<name>Zixun LI</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-07-27T12:58:13Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=f0a8a1483bd4e89ab3adf40d8c61777a5ddadc7f'/>
<id>urn:sha1:f0a8a1483bd4e89ab3adf40d8c61777a5ddadc7f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>portable/chipidea: configure LPC USB0 AHB bursts</title>
<updated>2026-07-27T12:39:02Z</updated>
<author>
<name>Zixun LI</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-07-27T12:39:02Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=a2f4786865e85f9cfe7f58c86fbb9355bbd2d701'/>
<id>urn:sha1:a2f4786865e85f9cfe7f58c86fbb9355bbd2d701</id>
<content type='text'>
</content>
</entry>
<entry>
<title>dcd(ci_hs): stale overlay fix; run usbtest on lpcxpresso43s67</title>
<updated>2026-07-14T08:23:07Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-07-14T08:23:07Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=ca402a0e781eb4d5580030f713377552b72eddda'/>
<id>urn:sha1:ca402a0e781eb4d5580030f713377552b72eddda</id>
<content type='text'>
- dcd_edpt_stall flushes the primed buffer (ENDPTFLUSH), but the aborted
  transfer's dQH overlay can be left ACTIVE with mid-transfer state; the
  next prime after clear-halt then resumes the stale overlay instead of
  loading the fresh qtd, so post-halt IN reads return mid-buffer data
  (usbtest case 13 'buf[32] = 56 (not 0)', with case 18 failing
  downstream of the same corruption in the full battery). qhd_start_xfer
  now clears overlay.active alongside overlay.halted before linking the
  new qtd.
- test/hil(hfp): drop lpcxpresso43s67's device/usbtest skip - the
  historical first-case wedge no longer reproduces on this branch, and
  with the overlay fix the board runs 30/30 on its Fresco xHCI host
  (previously 28/30 with deterministic case 13/18 failures).
  mimxrt1064_evk (imxrt dcache path) 30/30 regression-clean.
- docs(hil skill): document the external hifiphile rig - pool
  test/hil/hfp.json, SSH-reachable from htpc/ci with no outbound SSH,
  exercised by the CI hil-tinyusb (hfp.json) job; never run HIL against
  it during development unless the user explicitly asks.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_017TQZrFfU3K4Y198aLsUpBC
</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>Fix ep_ctrl_mask() corrupting opposite direction's ENDPTCTRL bits</title>
<updated>2026-03-07T20:53:01Z</updated>
<author>
<name>gab-k</name>
<email>gabriel@koppenstein.com</email>
</author>
<published>2026-03-07T20:53:01Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=11a3c3b712eb97e5c05ed3df20dcde9451fe158d'/>
<id>urn:sha1:11a3c3b712eb97e5c05ed3df20dcde9451fe158d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ci_hs: add deinit support</title>
<updated>2026-03-05T15:09:39Z</updated>
<author>
<name>Zixun LI</name>
<email>admin@hifiphile.com</email>
</author>
<published>2025-12-03T15:26:56Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=7088dc528bd5a89a77e06798d8b5384962748828'/>
<id>urn:sha1:7088dc528bd5a89a77e06798d8b5384962748828</id>
<content type='text'>
Signed-off-by: Zixun LI &lt;admin@hifiphile.com&gt;
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'tinyusb/master' into support-nxp-rw612</title>
<updated>2025-12-16T19:47:37Z</updated>
<author>
<name>HiFiPhile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2025-12-16T19:47:15Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=abf27bfa37f9e8bee49011eb91f7088287afa529'/>
<id>urn:sha1:abf27bfa37f9e8bee49011eb91f7088287afa529</id>
<content type='text'>
Signed-off-by: HiFiPhile &lt;admin@hifiphile.com&gt;
</content>
</entry>
<entry>
<title>support hpmicro chips</title>
<updated>2025-12-16T05:08:30Z</updated>
<author>
<name>Zhihong Chen</name>
<email>zhihong.chen@hpmicro.com</email>
</author>
<published>2025-12-08T05:59:21Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=ba3319d90d546143d169b398166b457082ad21d4'/>
<id>urn:sha1:ba3319d90d546143d169b398166b457082ad21d4</id>
<content type='text'>
Signed-off-by: Zhihong Chen &lt;zhihong.chen@hpmicro.com&gt;
</content>
</entry>
</feed>
