#[non_exhaustive]pub enum TrainingEvent {
Show 19 variants
#[non_exhaustive] SourceTestConfigRead {
config: SourceTestConfig,
},
#[non_exhaustive] FltReady {
after_polls: u32,
},
#[non_exhaustive] FltReadyTimeout {
polls: u32,
},
#[non_exhaustive] RateConfigured {
rate: HdmiForumFrl,
ffe_levels: FfeLevels,
},
#[non_exhaustive] LtpRequested {
requests: LtpRequests,
},
#[non_exhaustive] FfeRaised {
lane: u8,
level: u8,
},
#[non_exhaustive] UndefinedLtpRequest {
lane: u8,
value: u8,
in_use: bool,
},
#[non_exhaustive] TrainingPassed {
after_polls: u32,
},
#[non_exhaustive] RateLowered {
from: HdmiForumFrl,
to: HdmiForumFrl,
},
RatesExhausted,
#[non_exhaustive] TrainingTimeout {
polls: u32,
},
FrlStartWithRetrain,
RetrainRequested,
#[non_exhaustive] RetrainsExhausted {
retrains: u32,
},
#[non_exhaustive] FrlStart {
after_polls: u32,
},
#[non_exhaustive] FrlStartTimeout {
polls: u32,
},
#[non_exhaustive] NoTimeoutCapReached {
polls: u32,
},
ExitedToTmds,
#[non_exhaustive] ExitToTmdsFailed {
scdc: bool,
phy: bool,
},
}Expand description
A single event in a training attempt, in order from LTS:2 to the terminal state.
Poll counts include the poll that saw the event (after_polls), or count the polls
made when a limit ran out (polls), so they can be read against the limits in the
trace’s TrainingConfig. A polls is the limit, except in LTS:3 when FLT_no_timeout
changes after the new limit has already passed: the state then ends at once, and
polls says how many were made.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
#[non_exhaustive]SourceTestConfigRead
The sink’s Source_Test_Configuration was read (LTS:2 or LTS:3).
Fields
This variant is marked as non-exhaustive
config: SourceTestConfigThe register as read: all six bits, including those plumbob does not act on.
#[non_exhaustive]FltReady
LTS:2: FLT_ready asserted.
Fields
This variant is marked as non-exhaustive
#[non_exhaustive]FltReadyTimeout
LTS:2: FLT_ready did not assert.
Fields
This variant is marked as non-exhaustive
#[non_exhaustive]RateConfigured
LTS:2 or LTS:4: Config_1 written with this rate.
Fields
This variant is marked as non-exhaustive
rate: HdmiForumFrlThe FRL rate.
#[non_exhaustive]LtpRequested
LTS:3: the sink posted new requests (one event per FLT_update, not per poll).
The requests that pass training are recorded as TrainingPassed instead.
Fields
This variant is marked as non-exhaustive
requests: LtpRequestsThe requests for all four lanes.
#[non_exhaustive]FfeRaised
LTS:3: a lane’s TxFFE level was raised in response to 0xE.
Fields
This variant is marked as non-exhaustive
#[non_exhaustive]UndefinedLtpRequest
LTS:3: a lane requested a value the specification leaves undefined (0x9–0xD). A lane in use keeps its pattern and TxFFE level; lane 3 at a 3-lane rate is not in use, and its requests are not acted on whatever their value.
Fields
This variant is marked as non-exhaustive
#[non_exhaustive]TrainingPassed
LTS:3: all active lanes reported 0x0.
Fields
This variant is marked as non-exhaustive
#[non_exhaustive]RateLowered
LTS:4: the sink requested a lower rate; training continues at to.
Fields
This variant is marked as non-exhaustive
from: HdmiForumFrlThe rate the sink rejected.
to: HdmiForumFrlThe next rate in the list.
RatesExhausted
LTS:4: the sink requested a lower rate than the last one in the list.
#[non_exhaustive]TrainingTimeout
LTS:3: training did not pass within the poll limit.
Fields
This variant is marked as non-exhaustive
FrlStartWithRetrain
LTS:P: the sink set FRL_start and FLT_update together. The retrain wins:
FRL_start is cleared, and RetrainRequested (or RetrainsExhausted) follows.
RetrainRequested
LTS:P: the sink requested retraining (FLT_update); training returns to LTS:3.
#[non_exhaustive]RetrainsExhausted
LTS:P: the sink requested retraining once more after max_retrains retrains.
Fields
This variant is marked as non-exhaustive
#[non_exhaustive]FrlStart
LTS:P: FRL_start asserted. Training succeeded.
Fields
This variant is marked as non-exhaustive
#[non_exhaustive]FrlStartTimeout
LTS:P: FRL_start did not assert.
Fields
This variant is marked as non-exhaustive
#[non_exhaustive]NoTimeoutCapReached
LTS:2, LTS:3 or LTS:P: the sink sets FLT_no_timeout and the
no_timeout_poll_cap ran out. The
attempt ends with NoTimeoutHold, leaving the link as it is. The state is the one
the events before it lead into.
Fields
This variant is marked as non-exhaustive
ExitedToTmds
LTS:L: the sink and PHY were returned to TMDS.
#[non_exhaustive]ExitToTmdsFailed
LTS:L: a step failed. Every step was attempted; an end whose steps all succeeded is in TMDS.
Fields
This variant is marked as non-exhaustive
Trait Implementations§
Source§impl Clone for TrainingEvent
impl Clone for TrainingEvent
Source§fn clone(&self) -> TrainingEvent
fn clone(&self) -> TrainingEvent
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more