class DynamicFlexIoScratchPad

Defined at line 188 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

PORT_TX_DFLEXDPSP (PORT_TX_DFLEXDPSP1)

Dynamic FlexIO DP Scratch Pad for Type-C Connectors

The connector ID here is the logical number for each FIA. Type-C port to FIA

connector ID mapping is available at:

Tiger Lake: IHD-OS-TGL-Vol 12-1.22-Rev2.0 "TypeC Programming" > "Port

Mapping" table, Page 400.

Tiger Lake: IHD-OS-TGL-Vol 2c-1.22-Rev 2.0 Part 2, Pages 919-922.

Public Members

 field_type_c_live_state_connector_1_201
 field_firmware_supports_mfd_214
 field_display_port_tx_lane_assignment_bits_connector_1_226
 field_type_c_live_state_connector_0_232
 field_is_modular_flexi_io_adapter_245
 field_display_port_tx_lane_assignment_bits_connector_0_252

Public Methods

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

This indicates whether a display is connected to the Type-C connector and

the type (DP-Alt on Type-C, or Thunderbolt) of the display.

See enum class `TypeCLiveState` for valid values.

Drivers can use the helper method `type_c_live_state` to get Type-C state

for a given DDI.

The register has bits 0-7 representing the states for connector 0 to 7.

Since on Tiger Lake each FIA only connects to two connectors, we only

define the bits for connector 0 and 1 in this class.

Defined at line 201 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

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

This indicates whether a display is connected to the Type-C connector and

the type (DP-Alt on Type-C, or Thunderbolt) of the display.

See enum class `TypeCLiveState` for valid values.

Drivers can use the helper method `type_c_live_state` to get Type-C state

for a given DDI.

The register has bits 0-7 representing the states for connector 0 to 7.

Since on Tiger Lake each FIA only connects to two connectors, we only

define the bits for connector 0 and 1 in this class.

Defined at line 201 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

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

True if the IOM (Type C) firmware version supports MFD.

If this bit is false, the IOM (Type C subsystem microcontroller) firmware

is too old to support MFD. This configuration is not supported by our

driver, as we assume MFD is always supported when configuring the Type-C

clock.

The MFD acronym is not explained in Intel's documentation, but it probably

stands for Multi-functional display (simultaneous DisplayPort and USB

Enhanced SuperSpeed) over USB Type-C, as described in VESA DisplayPort Alt

Mode Standard Version 1.0b, Section 4.1 "Scenario 1 USB Type-C Cable".

Defined at line 214 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

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

True if the IOM (Type C) firmware version supports MFD.

If this bit is false, the IOM (Type C subsystem microcontroller) firmware

is too old to support MFD. This configuration is not supported by our

driver, as we assume MFD is always supported when configuring the Type-C

clock.

The MFD acronym is not explained in Intel's documentation, but it probably

stands for Multi-functional display (simultaneous DisplayPort and USB

Enhanced SuperSpeed) over USB Type-C, as described in VESA DisplayPort Alt

Mode Standard Version 1.0b, Section 4.1 "Scenario 1 USB Type-C Cable".

Defined at line 214 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

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

Firmware writes to the bits to indicate the PHY lane assignment for

display. Each bit correspond to a Type-C PHY lane (0-3).

Drivers can use the helper method `display_port_tx_lane_assignment` to get

Type-C transmitter lane assignment for a given DDI, or use

`display_port_assigned_tx_lane_count` to count lanes assigned for DDI.

The register has bits 0-7 representing the states for connector 0 to 7.

Since on Tiger Lake each FIA only connects to two connectors, we only

define the bits for connector 0 and 1 in this class.

Defined at line 226 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

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

Firmware writes to the bits to indicate the PHY lane assignment for

display. Each bit correspond to a Type-C PHY lane (0-3).

Drivers can use the helper method `display_port_tx_lane_assignment` to get

Type-C transmitter lane assignment for a given DDI, or use

`display_port_assigned_tx_lane_count` to count lanes assigned for DDI.

The register has bits 0-7 representing the states for connector 0 to 7.

Since on Tiger Lake each FIA only connects to two connectors, we only

define the bits for connector 0 and 1 in this class.

Defined at line 226 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

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

Same as `type_c_live_state_connector_1` but for Connector 0.

Drivers can use the helper method `type_c_live_state` to get Type-C state

for a given DDI.

Defined at line 232 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

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

Same as `type_c_live_state_connector_1` but for Connector 0.

Drivers can use the helper method `type_c_live_state` to get Type-C state

for a given DDI.

Defined at line 232 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

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

True if the FIA (Flexi IO Adapter) is modular.

If this bit is false for the FIA1 register instance, the display engine has

one monolithic FIA that houses all connections (for example, Ice Lake).

The driver must not access the register instances for other FIAs.

On Tiger Lake, this bit must be set true by the firmware, because Tiger

Lake display engines always have modular FIAs.

If this bit is true for the FIA1 register instance, the display engine has

multiple modular FIAs, and each FIA instance hosts two Type C connections.

Defined at line 245 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

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

True if the FIA (Flexi IO Adapter) is modular.

If this bit is false for the FIA1 register instance, the display engine has

one monolithic FIA that houses all connections (for example, Ice Lake).

The driver must not access the register instances for other FIAs.

On Tiger Lake, this bit must be set true by the firmware, because Tiger

Lake display engines always have modular FIAs.

If this bit is true for the FIA1 register instance, the display engine has

multiple modular FIAs, and each FIA instance hosts two Type C connections.

Defined at line 245 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

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

Same as `tx_lane_assignment_bits_connector_1` but for Connector 0.

Drivers can use the helper method `display_port_tx_lane_assignment` to get

Type-C transmitter lane assignment for a given DDI, or use

`display_port_assigned_tx_lane_count` to count lanes assigned for DDI.

Defined at line 252 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

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

Same as `tx_lane_assignment_bits_connector_1` but for Connector 0.

Drivers can use the helper method `display_port_tx_lane_assignment` to get

Type-C transmitter lane assignment for a given DDI, or use

`display_port_assigned_tx_lane_count` to count lanes assigned for DDI.

Defined at line 252 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

TypeCLiveState type_c_live_state (intel_display::DdiId ddi_id)

Get the Type-C connection live state of a given DDI.

This reads `type_c_live_state_connector_0` or

`type_c_live_state_connector_1` field based on `ddi_id`.

Callers must make sure they read from the correct FIA register.

Defined at line 267 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

uint32_t display_port_tx_lane_assignment (intel_display::DdiId ddi_id)

Get the PHY lane assignment for display of a given DDI.

This reads `display_port_tx_lane_assignment_bits_connector_0` or

`display_port_tx_lane_assignment_bits_connector_1` field based on `ddi_id`.

Callers must make sure they read from the correct FIA register.

Defined at line 286 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

size_t display_port_assigned_tx_lane_count (intel_display::DdiId ddi_id)

A helper method to count number of lanes for display of a given DDI.

This reads `display_port_tx_lane_assignment_bits_connector_0` or

`display_port_tx_lane_assignment_bits_connector_1` field based on `ddi_id`

and counts number of ones in the bitmap.

Callers must make sure they read from the correct FIA register.

Defined at line 299 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

hwreg::RegisterAddr<SelfType> GetForDdi (intel_display::DdiId ddi_id)

Defined at line 304 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

Enumerations

enum TypeCLiveState
Name Value
kNoHotplugDisplay 0b000
kTypeCHotplugDisplay 0b001
kThunderboltHotplugDisplay 0b010
kInvalid 0b011

Defined at line 254 of file ../../src/graphics/display/drivers/intel-display/registers-typec.h

Records