hdmi-hal-async
Async hardware abstraction traits for the HDMI stack.
hdmi-hal-async is the async companion to hdmi-hal,
following the same split as embedded-hal / embedded-hal-async. It mirrors each trait
in hdmi-hal with async fn methods and otherwise identical signatures — ScdcTransport
for raw SCDC register access and HdmiPhy for PHY lane configuration. Data types such as
EqParams are defined in hdmi-hal and re-exported here rather than duplicated.
Sync consumers continue to use hdmi-hal directly. Async platform backends (Embassy
drivers, async kernel drivers) implement the traits here. The two crates impose no
executor dependency on each other or their consumers.
Usage
[]
= "0.1"
Implement a trait against your async hardware backend:
use ScdcTransport;
Accept a trait bound in consumer code:
use ScdcTransport;
async
Stack position
hdmi-hal-async mirrors hdmi-hal's position in the stack, serving async platform
backends and async protocol logic. It depends on hdmi-hal for shared data types.
flowchart LR
dt["display-types"]
hal["hdmi-hal"]
async["hdmi-hal-async"]
ca["culvert-async"]
pa["plumbob-async"]
be["async platform backends"]
dt --> hal
hal --> async
async --> ca
async --> pa
async --> be
Out of scope
- Protocol logic — typed SCDC register wrappers and async link training belong in
the crates that consume
ScdcTransport. - Implementations — async platform backends live in the crates that use these traits.
- Sync/async adapters — wrappers that bridge sync implementations to async trait bounds belong in a compatibility shim crate, not here.
- Executor dependency — the traits impose no constraint on which async runtime is used.
Documentation
doc/architecture.md— trait surfaces, design principles, and async/sync splitdoc/roadmap.md— planned features and future work
License
Licensed under the Mozilla Public License 2.0.