class DdiBufferControl

Defined at line 332 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

DDI_BUF_CTL (DDI Buffer Control)

Tiger Lake: IHD-OS-TGL-Vol 2c-1.22-Rev2.0 Part 1 pages 352-355

DG1: IHD-OS-DG1-Vol 2c-2.21 pages 331-334

Kaby Lake: IHD-OS-KBL-Vol 2c-1.17 Part 1 pages 442-445

Skylake: IHD-OS-SKL-Vol 2c-05.16 Part 1 pages 438-441

Public Members

 field_enabled_335
 field_override_training_tiger_lake_343
 field_adjust_phy_parameters_tiger_lake_350
 field_display_port_phy_config_kaby_lake_360
 field_port_reversal_381
 field_type_c_display_port_lane_staggering_delay_tiger_lake_393
 field_is_idle_396
 field_ddi_e_disabled_kaby_lake_407
 field_display_port_lane_count_selection_414
 field_boot_time_port_detect_pin_status_450

Public Methods

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

If true, the DDI buffer is enabled.

Defined at line 335 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

If true, the DDI buffer is enabled.

Defined at line 335 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

If true, the DDI ignores PHY parameter changes during link training.

The impacted PHY parameters include voltage swing and pre-emphasis. This

field is generally set when using specific PHY parameters for the DDI.

This field does not exist (is reserved) on Kaby Lake and Skylake.

Defined at line 343 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

If true, the DDI ignores PHY parameter changes during link training.

The impacted PHY parameters include voltage swing and pre-emphasis. This

field is generally set when using specific PHY parameters for the DDI.

This field does not exist (is reserved) on Kaby Lake and Skylake.

Defined at line 343 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

If true, the DDI uses adjusted PHY parameter values.

The value is ignored if `override_training` is false.

This field does not exist (is reserved) on Kaby Lake and Skylake.

Defined at line 350 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

If true, the DDI uses adjusted PHY parameter values.

The value is ignored if `override_training` is false.

This field does not exist (is reserved) on Kaby Lake and Skylake.

Defined at line 350 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

Selects one of the DisplayPort PHY configurations set up in DDI_BUF_TRANS.

DDIs A and E support indexes 0 through 9. DDIs B-D only support indexes 0

through 8, because the 9th PHY configuration is used for HDMI.

This field is meaningless for HDMI and DVI.

This field does not exist (is reserved) on Tiger Lake and DG1.

Defined at line 360 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

Selects one of the DisplayPort PHY configurations set up in DDI_BUF_TRANS.

DDIs A and E support indexes 0 through 9. DDIs B-D only support indexes 0

through 8, because the 9th PHY configuration is used for HDMI.

This field is meaningless for HDMI and DVI.

This field does not exist (is reserved) on Tiger Lake and DG1.

Defined at line 360 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

If true, data is swapped on the lanes output by the port.

This field must not be changed while the DDI is enabled.

Tiger Lake and DG1:

FIA handles lane reversal for Thunderbolt and USB-C DisplayPort Alt Mode,

and this field should be set to false in those cases. Static and fixed

connections (DisplayPort, HDMI) through the FIA only use this field in

"No pin Assignment (Non Type-C DP)" static configurations. Other

connections use the field.

Kaby Lake and Skylake:

For DDIs B-D, enabling swaps lanes 0

<

-> 3 and lanes 1

<

-> 2. If DDI E is

enabled (in DDI A Lane Capability Control), then DDI A reversal swaps its

two remaining lanes (0

<

-> 1). If DDI E is disabled, DDI A reversal acts

the same as B-D reversal (lanes 0

<

-> 3 and 1

<

->2 are swapped). DDI E does

not support port reversal.

Defined at line 381 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

If true, data is swapped on the lanes output by the port.

This field must not be changed while the DDI is enabled.

Tiger Lake and DG1:

FIA handles lane reversal for Thunderbolt and USB-C DisplayPort Alt Mode,

and this field should be set to false in those cases. Static and fixed

connections (DisplayPort, HDMI) through the FIA only use this field in

"No pin Assignment (Non Type-C DP)" static configurations. Other

connections use the field.

Kaby Lake and Skylake:

For DDIs B-D, enabling swaps lanes 0

<

-> 3 and lanes 1

<

-> 2. If DDI E is

enabled (in DDI A Lane Capability Control), then DDI A reversal swaps its

two remaining lanes (0

<

-> 1). If DDI E is disabled, DDI A reversal acts

the same as B-D reversal (lanes 0

<

-> 3 and 1

<

->2 are swapped). DDI E does

not support port reversal.

Defined at line 381 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

Delay used to stagger the assertion/deassertion of the port lane enables.

The value is expressed in multiples of the symbol clock period, so it

depends on the link frequency.

The delay should be at least 100ns when the port is used in USB Type C

mode. In all other cases, the delay should be zero.

This field does not exist (is reserved) on Kaby Lake and Skylake, which

don't have Type C DDIs.

Defined at line 393 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

Delay used to stagger the assertion/deassertion of the port lane enables.

The value is expressed in multiples of the symbol clock period, so it

depends on the link frequency.

The delay should be at least 100ns when the port is used in USB Type C

mode. In all other cases, the delay should be zero.

This field does not exist (is reserved) on Kaby Lake and Skylake, which

don't have Type C DDIs.

Defined at line 393 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

If true, the DDI is idle.

Defined at line 396 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

If true, the DDI is idle.

Defined at line 396 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

If false, two lanes from DDI A are repurposed to form DDI E.

If true, DDI A has four lanes, and behaves similarly to DDIs B-D. If false,

This field is only meaningful on DDI A, whose lanes get redistributed to

DDI E. The field must be programmed at boot time (based on the board

configuration) and must not be changed afterwards.

This field does not exist (is reserved) on Tiger Lake or DG1.

Defined at line 407 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

If false, two lanes from DDI A are repurposed to form DDI E.

If true, DDI A has four lanes, and behaves similarly to DDIs B-D. If false,

This field is only meaningful on DDI A, whose lanes get redistributed to

DDI E. The field must be programmed at boot time (based on the board

configuration) and must not be changed afterwards.

This field does not exist (is reserved) on Tiger Lake or DG1.

Defined at line 407 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

Selects the number of DisplayPort lanes enabled.

The field's value is the number of lanes minus 1. 0 = x1 lane, 1 = x2

lanes, 3 = x4 lanes. display_port_lane_count() and

set_display_port_lane_count() take care of this encoding detail.

Defined at line 414 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

Selects the number of DisplayPort lanes enabled.

The field's value is the number of lanes minus 1. 0 = x1 lane, 1 = x2

lanes, 3 = x4 lanes. display_port_lane_count() and

set_display_port_lane_count() take care of this encoding detail.

Defined at line 414 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

uint8_t display_port_lane_count ()

The number of DisplayPort lanes enabled.

This field is not meaningful for HDMI, which always uses all the lanes.

When the DDI is in DisplayPort mode, the field must match the corresponding

setting in TRANS_DDI_FUNC_CTL for the transcoder attached to this DDI.

On Kaby Lake and Skylake, DDI E only supports 1 and 2 lanes

(if it's enabled), since it takes two lanes from DDI A. On the same

hardware, DDI A always supports x1 and x2, and supports x4 if DDI E is

disabled (and therefore not taking away 2 lanes from DDI A).

Defined at line 427 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

DdiBufferControl & set_display_port_lane_count (uint8_t lane_count)

See display_port_lane_count() for details.

Defined at line 434 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

The level of the port detect pin at boot time.

This field is only meaningful on DDI A. On Skylake and Kaby Lake, the other

DDIs' port detect pin status is communicated in SFUSE_STRAP.

Defined at line 450 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

The level of the port detect pin at boot time.

This field is only meaningful on DDI A. On Skylake and Kaby Lake, the other

DDIs' port detect pin status is communicated in SFUSE_STRAP.

Defined at line 450 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

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

For Kaby Lake and Skylake DDI A - DDI E.

Defined at line 453 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

hwreg::RegisterAddr<DdiBufferControl> GetForTigerLakeDdi (intel_display::DdiId ddi_id)

For Tiger Lake and DG1.

Defined at line 462 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h

Records