Skip to main content

Crate culvert

Crate culvert 

Source
Expand description

Typed access to the HDMI 2.1 SCDC (Status and Control Data Channel) register map.

Culvert sits on top of hdmi_hal::scdc::ScdcTransport and provides named structs, bitfield types, and typed operations for scrambling control, FRL training primitives, and CED (Character Error Detection) reporting.

The central type is Scdc, a thin stateless client that wraps a transport and exposes one typed method per register group. Sequencing of register operations — rate selection, timeout handling, retry logic — belongs in the link training crate above.

The register map itself — addresses and per-register encoding and decoding — is the I/O-free codec module, which Scdc and culvert-async’s client share.

Modules§

codec
Register addresses and per-register encoding and decoding for the SCDC register map (HDMI 2.1), without I/O.

Structs§

CedCount
A 15-bit character error count decoded from an ERR_DET register pair.
CedCounters
Per-lane character error counts decoded from ERR_DET registers (0x50–0x55 for lanes 0–2, 0x57–0x58 for lane 3).
CedReading
The per-lane character error counts from one read of the CED registers, with what the read found wrong.
ClearableUpdateFlags
The Update_0 flags a source may clear: every flag but RR_Test (bit 2).
Config0
Content written to Config_0 (0x30).
FfeLevels
FFE (Feed-Forward Equalization) levels written into Config_1 bits[7:4]: the highest TxFFE level index the source supports for the requested rate.
FrlConfig
Configuration written to Config_1 (0x31). Build one with new.
LtpRequests
Per-lane link training pattern requests from Status_Flags_1 (0x41) and Status_Flags_2 (0x42).
RsCorrectionCount
A 15-bit Reed-Solomon correction count decoded from RS_Correction_L/H (0x59/0x5A).
Scdc
Typed client for the HDMI 2.1 SCDC (Status and Control Data Channel) register map.
ScramblerStatus
Decoded content of Scrambler_Status (0x21).
SourceTestConfig
Decoded content of Source_Test_Configuration (0x35).
StatusFlags
Decoded content of Status_Flags_0 (0x40).
TmdsConfig
Configuration written to TMDS_Config (0x20).
UpdateFlags
Decoded content of Update_0 (0x10).

Enums§

CedWarning
A non-fatal anomaly in a CED read, returned with the decoded counters in CedReading.
FrlRate
Maximum Fixed Rate Link (FRL) bandwidth supported by a HDMI 2.1 sink.
HdmiLanes
The link’s data lanes, re-exported from display-types: three for TMDS and 3-lane FRL, four for 4-lane FRL (FrlRate::lanes). Scdc::read_ced takes it to know what the CED checksum covers: 0x50–0x56 with Three, 0x50–0x58 with Four. The number of data lanes an HDMI link carries: three for TMDS (its three data channels) and 3-lane FRL, four for 4-lane FRL, where the TMDS clock channel becomes lane 3. See HdmiForumFrl::lanes.
LtpReq
Link Training Pattern requested by the sink for one lane: a 4-bit field in Status_Flags_1 (0x41, lanes 0–1) or Status_Flags_2 (0x42, lanes 2–3).
ProtocolError
What culvert refuses because it would violate the SCDC protocol.
ScdcError
Errors returned by Scdc register operations.

Traits§

ScdcTransport
The transport Scdc<T> is generic over, re-exported from hdmi-hal. Raw register access to the SCDC register map over DDC/I²C.