<feed xmlns='http://www.w3.org/2005/Atom'>
<title>embassy/embassy-usb-synopsys-otg/src/lib.rs, branch fix-input-sync-bypass</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.d464.sh/rust/embassy/'/>
<entry>
<title>Rustfmt for edition 2024.</title>
<updated>2025-10-06T21:19:53+00:00</updated>
<author>
<name>Dario Nieuwenhuis</name>
<email>dirbaio@dirbaio.net</email>
</author>
<published>2025-10-06T20:56:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.d464.sh/rust/embassy/commit/?id=8730a013c395cf0bf4c2fa8eeb7f138288103039'/>
<id>8730a013c395cf0bf4c2fa8eeb7f138288103039</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Edition 2024.</title>
<updated>2025-10-06T21:19:53+00:00</updated>
<author>
<name>Dario Nieuwenhuis</name>
<email>dirbaio@dirbaio.net</email>
</author>
<published>2025-10-06T20:55:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.d464.sh/rust/embassy/commit/?id=abc8e450f936567ad42cb34b5d2a7941b206aa5d'/>
<id>abc8e450f936567ad42cb34b5d2a7941b206aa5d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>otg: Use chunks_exact for more efficient rx copy</title>
<updated>2025-09-05T14:35:54+00:00</updated>
<author>
<name>Matt Johnston</name>
<email>matt@ucc.asn.au</email>
</author>
<published>2025-08-11T07:19:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.d464.sh/rust/embassy/commit/?id=cac396425228464602ab9ee0816f4f9f07d53d77'/>
<id>cac396425228464602ab9ee0816f4f9f07d53d77</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>otg: Simplify chunks_exact for tx</title>
<updated>2025-09-05T14:35:54+00:00</updated>
<author>
<name>Matt Johnston</name>
<email>matt@ucc.asn.au</email>
</author>
<published>2025-08-11T07:18:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.d464.sh/rust/embassy/commit/?id=bc448985d50827bd5c6211739563817795f925ab'/>
<id>bc448985d50827bd5c6211739563817795f925ab</id>
<content type='text'>
The last chunk doesn't need to be created first, instead borrow the
iterator so it can be used later for the remainder.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The last chunk doesn't need to be created first, instead borrow the
iterator so it can be used later for the remainder.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #4397 from korbin/allocate-numbered-endpoints</title>
<updated>2025-07-15T22:08:08+00:00</updated>
<author>
<name>Dario Nieuwenhuis</name>
<email>dirbaio@dirbaio.net</email>
</author>
<published>2025-07-15T22:08:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.d464.sh/rust/embassy/commit/?id=f525386fca8299791fa81539130576059654d778'/>
<id>f525386fca8299791fa81539130576059654d778</id>
<content type='text'>
Make USB endpoint allocator methods accept an optional `EndpointAddress`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make USB endpoint allocator methods accept an optional `EndpointAddress`
</pre>
</div>
</content>
</entry>
<entry>
<title>otg: Improve IN write performance</title>
<updated>2025-07-15T08:40:37+00:00</updated>
<author>
<name>Matt Johnston</name>
<email>matt@codeconstruct.com.au</email>
</author>
<published>2025-07-11T09:38:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.d464.sh/rust/embassy/commit/?id=e2ceb2b1f7cd0fd7778b53aaf8ba1caa71b2f7f5'/>
<id>e2ceb2b1f7cd0fd7778b53aaf8ba1caa71b2f7f5</id>
<content type='text'>
chunks_exact() can be handled by the compiler more efficiently.
Previous code was making a memcpy call for each 4 byte chunk slice.
Hoisting the fifo out of the loop avoids recalculating the pointer each
time.

In my benchmark I see a jump from ~13 megabyte/sec to ~25MB/sec after
this change (opt-level=3). opt-level = "z" goes 9MB/s to 18MB/s.

The benchmark was on a stm32h7s3l8, 600mhz clock, 512 byte bulk writes,
data in DTCM. The benchmark isn't just USB writes, also has some
unrelated memcpys for packet construction.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
chunks_exact() can be handled by the compiler more efficiently.
Previous code was making a memcpy call for each 4 byte chunk slice.
Hoisting the fifo out of the loop avoids recalculating the pointer each
time.

In my benchmark I see a jump from ~13 megabyte/sec to ~25MB/sec after
this change (opt-level=3). opt-level = "z" goes 9MB/s to 18MB/s.

The benchmark was on a stm32h7s3l8, 600mhz clock, 512 byte bulk writes,
data in DTCM. The benchmark isn't just USB writes, also has some
unrelated memcpys for packet construction.
</pre>
</div>
</content>
</entry>
<entry>
<title>make usb endpoint allocator methods accept an optional EndpointAddress</title>
<updated>2025-07-14T02:40:54+00:00</updated>
<author>
<name>korbin</name>
<email>k1@k1.io</email>
</author>
<published>2025-07-14T02:30:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.d464.sh/rust/embassy/commit/?id=b666a88ab175043d711c97b67b5b4d3bf409f102'/>
<id>b666a88ab175043d711c97b67b5b4d3bf409f102</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>otg: Allow exact out buffer size</title>
<updated>2025-02-17T05:38:31+00:00</updated>
<author>
<name>Matt Johnston</name>
<email>matt@ucc.asn.au</email>
</author>
<published>2025-02-17T05:38:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.d464.sh/rust/embassy/commit/?id=5d6877cbc6c8f5570cce7b311cc06e2667897afb'/>
<id>5d6877cbc6c8f5570cce7b311cc06e2667897afb</id>
<content type='text'>
The existing check required N+1 buffer size.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The existing check required N+1 buffer size.
</pre>
</div>
</content>
</entry>
<entry>
<title>otg: use const blocks for init.</title>
<updated>2024-11-23T23:32:26+00:00</updated>
<author>
<name>Dario Nieuwenhuis</name>
<email>dirbaio@dirbaio.net</email>
</author>
<published>2024-11-22T23:29:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.d464.sh/rust/embassy/commit/?id=bc7372d7011c36157e4d55e05d0a3c5a82ba6f1c'/>
<id>bc7372d7011c36157e4d55e05d0a3c5a82ba6f1c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>otg: fix corruption in CONTROL OUT transfers in stm32f4.</title>
<updated>2024-11-23T23:32:26+00:00</updated>
<author>
<name>Dario Nieuwenhuis</name>
<email>dirbaio@dirbaio.net</email>
</author>
<published>2024-11-22T23:23:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.d464.sh/rust/embassy/commit/?id=032af9d512140d8464680a444debc76f36222a31'/>
<id>032af9d512140d8464680a444debc76f36222a31</id>
<content type='text'>
The RM says we have to process STUP (and therefore clear CNAK to start the data stage)
in the DOEPINT STUP interrupt. Seems doing it in RXFLVL when we receive the data is
too early. This makes it work consistently on all chips, so the quirk is no longer needed.

Fixes #3493
Fixes #3459
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The RM says we have to process STUP (and therefore clear CNAK to start the data stage)
in the DOEPINT STUP interrupt. Seems doing it in RXFLVL when we receive the data is
too early. This makes it work consistently on all chips, so the quirk is no longer needed.

Fixes #3493
Fixes #3459
</pre>
</div>
</content>
</entry>
</feed>
