class TranscoderChicken

Defined at line 1007 of file ../../src/graphics/display/drivers/intel-display/registers-transcoder.h

Per-transcoder chicken register.

This register is not officially documented in any register listing. It is

implicitly documented in display engine PRMs and workaround PRMs, via

instructions to flip specific bits at transcoder-dependent MMIO addresses.

On Kaby Lake, the transcoder chicken registers also store some DDI-specific

chicken bits. The GetForKabyLakeDdi() helper will retrieve the register that

contains the chicken bits for a specific DDI.

Public Members

 field_override_forward_error_correction_tiger_lake_1022
 field_override_ddi_hdmi_voltage_swing_kaby_lake_1036
 field_override_display_port_audio_island_kaby_lake_1047

Public Methods

template <, >
typename SelfType::ValueType override_forward_error_correction_tiger_lake ()

FEC (Forward Error Correction) workaround.

This field must be set for correct functioning in DisplayPort 1.4 MST

(Multi-Stream) mode with FEC (Forward Error Correction), before the

`enabled_target` field in the TranscoderConfig register is set to true.

This field must be set to false before the `enabled_target` field in the

TranscoderConfig register is set back to false.

This bit is only indirectly docuumented in IHD-OS-TGL-Vol 12-1.22-Rev2.0

sections "Sequences for DisplayPort" > "Enable Sequence" (page 144) and

"Disable Sequence" (page 147). The register is mentioned by its MMIO

address.

Defined at line 1022 of file ../../src/graphics/display/drivers/intel-display/registers-transcoder.h

template <, >
SelfType & set_override_forward_error_correction_tiger_lake (typename SelfType::ValueType val)

FEC (Forward Error Correction) workaround.

This field must be set for correct functioning in DisplayPort 1.4 MST

(Multi-Stream) mode with FEC (Forward Error Correction), before the

`enabled_target` field in the TranscoderConfig register is set to true.

This field must be set to false before the `enabled_target` field in the

TranscoderConfig register is set back to false.

This bit is only indirectly docuumented in IHD-OS-TGL-Vol 12-1.22-Rev2.0

sections "Sequences for DisplayPort" > "Enable Sequence" (page 144) and

"Disable Sequence" (page 147). The register is mentioned by its MMIO

address.

Defined at line 1022 of file ../../src/graphics/display/drivers/intel-display/registers-transcoder.h

template <, >
typename SelfType::ValueType override_ddi_hdmi_voltage_swing_kaby_lake ()

HDMI port voltage swing programming workaround.

By default, each HDMI port in Kaby Lake display engines uses the voltage

swing setting specified when the port is first enabled. A new voltage swing

setting can be programmed by setting this field to 3 (0b11) right before

setting the `enabled` field in the DdiBufferControl register, waiting for

1us, and then setting this field to zero (0b00).

This field is scoped to DDIs, not to transcoders. GetForKabyLakeDdi() will

return the correct register for applying this workaround to a DDI.

IHD-OS-KBL-Vol 16-1.17 workaround BSpec ID 1143, pages 29-30

Defined at line 1036 of file ../../src/graphics/display/drivers/intel-display/registers-transcoder.h

template <, >
SelfType & set_override_ddi_hdmi_voltage_swing_kaby_lake (typename SelfType::ValueType val)

HDMI port voltage swing programming workaround.

By default, each HDMI port in Kaby Lake display engines uses the voltage

swing setting specified when the port is first enabled. A new voltage swing

setting can be programmed by setting this field to 3 (0b11) right before

setting the `enabled` field in the DdiBufferControl register, waiting for

1us, and then setting this field to zero (0b00).

This field is scoped to DDIs, not to transcoders. GetForKabyLakeDdi() will

return the correct register for applying this workaround to a DDI.

IHD-OS-KBL-Vol 16-1.17 workaround BSpec ID 1143, pages 29-30

Defined at line 1036 of file ../../src/graphics/display/drivers/intel-display/registers-transcoder.h

template <, >
typename SelfType::ValueType override_display_port_audio_island_kaby_lake ()

DisplayPort audio corruption or video underflow workaround.

This field must be set to true for DisplayPort x4 (4 main link lanes) ports

that use the HBR2 rate, when the CDCLK (core display clock) frequency is

below 432 MHz. This workaround is only valid for audio clock frequencies

<

=

96 KHz, and fewer than 8 audio channels -- audio must not be used over

DisplayPort otherwise.

IHD-OS-KBL-Vol 16-1.17 workaround BSpec ID 1144, pages 30-31

Defined at line 1047 of file ../../src/graphics/display/drivers/intel-display/registers-transcoder.h

template <, >
SelfType & set_override_display_port_audio_island_kaby_lake (typename SelfType::ValueType val)

DisplayPort audio corruption or video underflow workaround.

This field must be set to true for DisplayPort x4 (4 main link lanes) ports

that use the HBR2 rate, when the CDCLK (core display clock) frequency is

below 432 MHz. This workaround is only valid for audio clock frequencies

<

=

96 KHz, and fewer than 8 audio channels -- audio must not be used over

DisplayPort otherwise.

IHD-OS-KBL-Vol 16-1.17 workaround BSpec ID 1144, pages 30-31

Defined at line 1047 of file ../../src/graphics/display/drivers/intel-display/registers-transcoder.h

hwreg::RegisterAddr<TranscoderChicken> GetForKabyLakeDdi (intel_display::DdiId ddi_id)

Returns the register that holds DDI-scoped chicken bits for `ddi`.

On Kaby Lake, the transcoder chicken registers are also used for DDI-scoped

chicken bits. The mapping of DDIs to registers is not straightforward. This

method returns the correct register for accessing a DDI's chicken bits.

Defined at line 1054 of file ../../src/graphics/display/drivers/intel-display/registers-transcoder.h

hwreg::RegisterAddr<TranscoderChicken> GetForKabyLakeTranscoder (intel_display::TranscoderId transcoder_id)

Defined at line 1065 of file ../../src/graphics/display/drivers/intel-display/registers-transcoder.h

hwreg::RegisterAddr<TranscoderChicken> GetForTigerLakeTranscoder (intel_display::TranscoderId transcoder_id)

Defined at line 1075 of file ../../src/graphics/display/drivers/intel-display/registers-transcoder.h

Records