#[non_exhaustive]pub struct TxFfeRestrictions {
pub pre_shoot_only: bool,
pub de_emphasis_only: bool,
pub no_ffe: bool,
}Expand description
Restrictions on the TxFFE components, as a compliance tester sets them.
TxFFE combines two components: pre-shoot (pre-cursor) and de-emphasis (post-cursor).
The sink’s Source_Test_Configuration register (SCDC 0x35, bits 1–3) can restrict them,
and the three bits are carried here exactly as written, for the whole link. Each bit’s
plain meaning:
pre_shoot_only(TxFFE_Pre_Shoot_Only): pre-shoot only, no de-emphasis.de_emphasis_only(TxFFE_De_Emphasis_Only): de-emphasis only, no pre-shoot.no_ffe(TxFFE_No_FFE): neither.
The default (no bit set) restricts nothing. The bits accompany a compliance test: the reference drivers that act on them do so while the sink requests the DDE compliance pattern (LTP 4).
How to combine them is the PHY’s to decide, because the reference implementations
disagree and the specification text is not available to this crate. The AMD display
driver (dpcs30_program_eq_setting) treats each “only” bit as removing the other
component, so both set gives no FFE, and no_ffe overrides both. The Rockchip HDPTX
PHY driver treats bits 1–2 as enabling their component, so both set gives full FFE,
and does not read no_ffe. A backend documents which it follows. The level in each
lane’s LaneEqParams still applies within what the restrictions allow.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.pre_shoot_only: boolTxFFE_Pre_Shoot_Only (bit 1): use pre-shoot only.
de_emphasis_only: boolTxFFE_De_Emphasis_Only (bit 2): use de-emphasis only.
no_ffe: boolTxFFE_No_FFE (bit 3): use no TxFFE.
Implementations§
Trait Implementations§
Source§impl Clone for TxFfeRestrictions
impl Clone for TxFfeRestrictions
Source§fn clone(&self) -> TxFfeRestrictions
fn clone(&self) -> TxFfeRestrictions
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more