<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tinyusb.git/src/portable/ohci/ohci.h, branch codex/class-reference-docs</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/tinyusb.git/atom/src/portable/ohci/ohci.h?h=codex%2Fclass-reference-docs</id>
<link rel='self' href='http://cgit.235523.xyz/tinyusb.git/atom/src/portable/ohci/ohci.h?h=codex%2Fclass-reference-docs'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/'/>
<updated>2026-07-02T14:55:45Z</updated>
<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>Merge branch 'master' into fork/ArcaneNibble/ohci-upstream</title>
<updated>2025-10-31T07:21:17Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2025-10-31T07:21:17Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=6837e47584d2512c8251345e09775075f8159c4d'/>
<id>urn:sha1:6837e47584d2512c8251345e09775075f8159c4d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'master' into add-ohci-lpc55</title>
<updated>2025-10-30T07:35:11Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2025-10-30T06:59:25Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=88305b1b34160b4548609b78807be910944856ab'/>
<id>urn:sha1:88305b1b34160b4548609b78807be910944856ab</id>
<content type='text'>
# Conflicts:
- hw/bsp/lpc17/family.cmake
- hw/bsp/lpc40/family.cmake
- hw/bsp/lpc55/family.cmake
</content>
</entry>
<entry>
<title>fix Identifiers that start with '__' or '_[A-Z]' are reserved.</title>
<updated>2025-10-28T07:14:01Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2025-10-28T06:21:38Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=d92b810df7670aae0e195fd02abef5014470c2f7'/>
<id>urn:sha1:d92b810df7670aae0e195fd02abef5014470c2f7</id>
<content type='text'>
fix compiling with nuc family
</content>
</entry>
<entry>
<title>try to enable ohci for lpc55 but not working, probably clock issue</title>
<updated>2025-10-10T06:47:41Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2025-10-10T05:33:41Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=83baf13dcbde66942419c03348cc88ef22575e32'/>
<id>urn:sha1:83baf13dcbde66942419c03348cc88ef22575e32</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix todo size in list_reverse()</title>
<updated>2025-10-09T11:50:04Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2025-10-09T11:50:04Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=cc82e088b5333bae3dba8fb12965271d89cd5117'/>
<id>urn:sha1:cc82e088b5333bae3dba8fb12965271d89cd5117</id>
<content type='text'>
</content>
</entry>
<entry>
<title>centralize hcd_dcache_uncached() for ED</title>
<updated>2025-10-09T11:18:08Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2025-10-09T11:18:08Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=d4374bb0dbb0e0eddd4459219f981fd8f62365a1'/>
<id>urn:sha1:d4374bb0dbb0e0eddd4459219f981fd8f62365a1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ohci: Use uncached alias to access EDs</title>
<updated>2025-09-13T21:05:04Z</updated>
<author>
<name>R</name>
<email>rqou@berkeley.edu</email>
</author>
<published>2025-09-12T23:41:15Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=b9378eb8e79691907aae40b3fc26cb57d4ffaeb4'/>
<id>urn:sha1:b9378eb8e79691907aae40b3fc26cb57d4ffaeb4</id>
<content type='text'>
This code is written very carefully to always use an uncached view
of memory to read/write EDs. An uncached view must *always* be used,
or else cache behavior can corrupt the ED.

As part of this change, combine access into as few word-sized accesses
as possible. This makes the code perform better. Doing this involves
giving type names to the bitfields that make up the ED's data words.
</content>
</entry>
<entry>
<title>ohci: Re-implement TD allocation, matching the specification</title>
<updated>2025-09-12T23:11:02Z</updated>
<author>
<name>R</name>
<email>rqou@berkeley.edu</email>
</author>
<published>2025-09-12T22:33:47Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=330d9d7f426b3227149e76fc7dd167e2cd3745ad'/>
<id>urn:sha1:330d9d7f426b3227149e76fc7dd167e2cd3745ad</id>
<content type='text'>
The initial motivation for doing this is to remove the `used` flag
in the TD. If we use this flag, we end up being required to read from TDs
that the OHCI controller might be modifying (i.e. the OHCI controller
logically owns the TD). This happens when we try to allocate a
new, empty TD while the OHCI host controller is working on a transfer.

Move the `used` flag to `gtd_extra_data_t`. This data is only used
by the CPU, and the OHCI controller never accesses it.

The existing allocation method for TDs does *not* put an empty TD
onto each ED (i.e it does *not* do what is shown in Figure 5-6
of the OHCI specification). Instead, the NextTD field of the last
TD is set to 0. The TailP field of the ED is also set to 0.
This works in many cases. However, this implementation means that
the CPU may end up trying to write to the NextTD field of an
in-progress transfer while the OHCI host controller logically owns it.

Change the implementation to use an empty TD, as suggested by the
specification, for endpoints other than EP0. This avoids the
above issue. It is not necessary to make the change for EP0
because only at most one TD can ever be pending at a time.

The above change should also remove the need for the stall workaround.

In the future, we want to modify the code to access EDs through
an uncached mapping. Because uncached mappings are slow, we want to
access EDs as little as possible. Currently, when a TD completes,
we access an ED in order to figure out the device address and
endpoint number of the TD which was completed.

Because moving `used` to `gtd_extra_data_t` necessitates expanding it,
we have enough room to also store the device address and endpoint number
of the TD. This patch does so.

With the above two changes, we no longer need to access an ED when
a TD completes. Also remove the `index` field from TDs as it is
no longer necessary.
</content>
</entry>
<entry>
<title>ohci: Align TDs to cache lines</title>
<updated>2025-09-12T21:17:10Z</updated>
<author>
<name>R</name>
<email>rqou@berkeley.edu</email>
</author>
<published>2025-09-12T21:16:46Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=839149c5c0b667a8080de39c85cdbdd291be4dc5'/>
<id>urn:sha1:839149c5c0b667a8080de39c85cdbdd291be4dc5</id>
<content type='text'>
</content>
</entry>
</feed>
