class GMBusClockPortSelect

Defined at line 64 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h

GMBUS0

(Graphic Management Bus Configuration Register 0 -- Clock / Port Select)

This register controls the clock rate of the serial bus and selects the

device pin pair the controller is connected to. This register must be

configured before the first data valid bit is set.

Some of this register's reserved fields are not MBZ (must be zero). So, the

register can only be updated safely via read-modify-write operations.

Tiger Lake: IHD-OS-TGL-Vol 2c-1.22-Rev 2.0 Part 1, Page 1020

Kaby Lake: IHD-OS-KBL-Vol 2c-1.17 Part 1, Page 728

Skylake: IHD-OS-SKL-Vol 2c-05.16 Part 1, Page 723

Public Members

 field_RsvdZ_94
 field_bus_rate_select_106
 field_byte_count_overridden_117
 field_pin_pair_select_135

Public Methods

template <, >
BusRate bus_rate_select ()

This selects the clock rate of the serial bus, i.e. the I2C protocol clock

when drivers use GMBUS for data transfer. It defines the AC timing

parameters used for different bus rates / I2C bus mode.

This field must only be changed when the `is_active` field in

`GMBusControllerStatus` (GMBUS2) register is false, i.e. the GMBUS is idle.

Note that this only changes the clock rate when transferring data using

GMBUS protocol. If drivers implements software-based bit banging using the

raw GPIO pins, they don't need to follow the bus rate.

Defined at line 106 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h

template <, >
SelfType & set_bus_rate_select (BusRate val)

This selects the clock rate of the serial bus, i.e. the I2C protocol clock

when drivers use GMBUS for data transfer. It defines the AC timing

parameters used for different bus rates / I2C bus mode.

This field must only be changed when the `is_active` field in

`GMBusControllerStatus` (GMBUS2) register is false, i.e. the GMBUS is idle.

Note that this only changes the clock rate when transferring data using

GMBUS protocol. If drivers implements software-based bit banging using the

raw GPIO pins, they don't need to follow the bus rate.

Defined at line 106 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h

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

This field overrides the `total_byte_count` field on `GMBusCommand`

(GMBUS1) register. When this bit is enabled, the device will allow burst

reads greater than 511 bytes.

On Tiger Lake, this feature is supported.

On Skylake, this feature is not supported and the bit must be zero.

The underlying feature is not implemented on some PCH chipsets used with

Kaby Lake display engines. The models are listed in IHD-OS-KBL-Vol 12-1.17

section "Sequence for GMBUS Burst Reads Greater Than 511 Bytes", page 199.

Defined at line 117 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h

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

This field overrides the `total_byte_count` field on `GMBusCommand`

(GMBUS1) register. When this bit is enabled, the device will allow burst

reads greater than 511 bytes.

On Tiger Lake, this feature is supported.

On Skylake, this feature is not supported and the bit must be zero.

The underlying feature is not implemented on some PCH chipsets used with

Kaby Lake display engines. The models are listed in IHD-OS-KBL-Vol 12-1.17

section "Sequence for GMBUS Burst Reads Greater Than 511 Bytes", page 199.

Defined at line 117 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h

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

In Intel Display Engine, every DDI is allocated a pair of numbered GPIO

pins for I2C / GMBUS communication.

This field selects a GMBUS pin pair for use in the GMBUS communication.

The DDI

<

-> pin pair mapping varies by platform. The mapping is available

at: Tiger Lake: IHD-OS-TGL-Vol 2c-1.22-Rev 2.0 Part 1, Page 1020 Kaby Lake:

IHD-OS-KBL-Vol 2c-1.17 Part 1, Page 728 Skylake: IHD-OS-SKL-Vol 2c-05.16

Part 1, Page 723

Note that the GMBUS pin pair ID may not be equal to the GPIO pin pair ID.

Note: On Skylake and Kaby Lake, only bits 2:0 are defined for this field

but bits 4:3 are reserved as "must be zero"; for compatibility we use the

same field definition across platforms, but the highest two bits on Skylake

and Kaby Lake will always be zero.

Defined at line 135 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h

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

In Intel Display Engine, every DDI is allocated a pair of numbered GPIO

pins for I2C / GMBUS communication.

This field selects a GMBUS pin pair for use in the GMBUS communication.

The DDI

<

-> pin pair mapping varies by platform. The mapping is available

at: Tiger Lake: IHD-OS-TGL-Vol 2c-1.22-Rev 2.0 Part 1, Page 1020 Kaby Lake:

IHD-OS-KBL-Vol 2c-1.17 Part 1, Page 728 Skylake: IHD-OS-SKL-Vol 2c-05.16

Part 1, Page 723

Note that the GMBUS pin pair ID may not be equal to the GPIO pin pair ID.

Note: On Skylake and Kaby Lake, only bits 2:0 are defined for this field

but bits 4:3 are reserved as "must be zero"; for compatibility we use the

same field definition across platforms, but the highest two bits on Skylake

and Kaby Lake will always be zero.

Defined at line 135 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h

GMBusClockPortSelect & SetPinPair (const intel_display::GMBusPinPair & pin_pair)

Helper to select typed `pin_pair` for GMBUS communication.

Defined at line 138 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h

hwreg::RegisterAddr<GMBusClockPortSelect> Get ()

Defined at line 142 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h

Enumerations

enum BusRate
Name Value
k100Khz 0b000
k50Khz 0b001
k400KhzUnsupported 0b010
k1MhzUnsupported 0b011

Defined at line 66 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h

Records