class GMBusControllerStatus

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

GMBUS2

(Graphic Management Bus Configuration Register 2 -- Status)

This register contains controller (hardware) status bits indicating the

current controller state and readiness for GMBUS cycles.

Besides `software_lock_acquired`, all the other bits are read-only in this

register. `software_lock_acquired` is write-protected when

`software_clear_interrupt` in `GMBusCommand` (GMBUS1) register is enabled.

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

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

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

Public Members

 field_RsvdZ_285
 field_software_lock_acquired_296
 field_is_waiting_303
 field_target_stall_timeout_occurred_313
 field_RsvdZ_315
 field_is_ready_337
 field_nack_occurred_344
 field_is_active_351
 field_current_byte_count_361

Public Methods

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

This bit has NO effect on the hardware, and is only used as an indicator

for software to query and declare the usage of the GMBUS controller.

Drivers can poll and wait until `software_lock_acquired` becomes false

before using the GMBUS controller, and set this bit (grab the software

lock) so that other threads won't use it at the same time.

This bit is write-protected when `software_clear_interrupt` in

`GMBusCommand` (GMBUS1) register is enabled.

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

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

This bit has NO effect on the hardware, and is only used as an indicator

for software to query and declare the usage of the GMBUS controller.

Drivers can poll and wait until `software_lock_acquired` becomes false

before using the GMBUS controller, and set this bit (grab the software

lock) so that other threads won't use it at the same time.

This bit is write-protected when `software_clear_interrupt` in

`GMBusCommand` (GMBUS1) register is enabled.

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

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

True when the controller is in WAIT state after data read / write.

Once this bit is true, the driver can set `GMBusCommand` register to

generate a STOP cycle or continue reading / writing, which will de-assert

this bit.

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

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

True when the controller is in WAIT state after data read / write.

Once this bit is true, the driver can set `GMBusCommand` register to

generate a STOP cycle or continue reading / writing, which will de-assert

this bit.

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

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

True when the target device has stalled the target device acknowledgement

beyond the time limit.

This bit is only meaningful when `enable_timeout` bit is set to true in

`GMBusCommand` (GMBUS1) register.

The Programmer's Reference Manual doesn't mention how to reset the bit, but

it's possible that a controller local reset can reset it.

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

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

True when the target device has stalled the target device acknowledgement

beyond the time limit.

This bit is only meaningful when `enable_timeout` bit is set to true in

`GMBusCommand` (GMBUS1) register.

The Programmer's Reference Manual doesn't mention how to reset the bit, but

it's possible that a controller local reset can reset it.

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

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

If true, GMBUS hardware enters a "ready" state and will not perform any

operation until the software acts.

Certain actions should not be performed while this bit is false. For

example, the semantics of reading/writing the `GMBusData` register are more

complex when this bit is false.

This bit transitions from false to true when:

- GMBUS is waiting for the software to read/write the `GMBusData` register

in order to advance an I2C read/write transaction.

- A GMBUS cycle ended with a STOP.

- GMBUS completes the partial reset procedure initiated via the

`GMBusCommand` register.

This bit transitions from true to false when:

- A new I2C transaction over GMBUS is triggered.

- GMBUS partial reset is initiated via the `GMBusCommand` register.

This bit is also known as "hardware ready" (or HW_RDY) bit in Intel

Programmer's Reference Manual.

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

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

If true, GMBUS hardware enters a "ready" state and will not perform any

operation until the software acts.

Certain actions should not be performed while this bit is false. For

example, the semantics of reading/writing the `GMBusData` register are more

complex when this bit is false.

This bit transitions from false to true when:

- GMBUS is waiting for the software to read/write the `GMBusData` register

in order to advance an I2C read/write transaction.

- A GMBUS cycle ended with a STOP.

- GMBUS completes the partial reset procedure initiated via the

`GMBusCommand` register.

This bit transitions from true to false when:

- A new I2C transaction over GMBUS is triggered.

- GMBUS partial reset is initiated via the `GMBusCommand` register.

This bit is also known as "hardware ready" (or HW_RDY) bit in Intel

Programmer's Reference Manual.

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

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

True if the receiver device doesn't send an acknowledgement signal after a

data byte is transmitted, which means a "not acknowledge (NACK)" in I2C.

This bit can only be cleared by performing a reset via the `GMBusCommand`

(GMBUS1) register.

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

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

True if the receiver device doesn't send an acknowledgement signal after a

data byte is transmitted, which means a "not acknowledge (NACK)" in I2C.

This bit can only be cleared by performing a reset via the `GMBusCommand`

(GMBUS1) register.

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

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

True if the controller is in an active state, false if the controller is

in an idle state.

Active states are: START (including RESTART), ADDRESS, INDEX, DATA, WAIT

and STOP phase.

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

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

True if the controller is in an active state, false if the controller is

in an idle state.

Active states are: START (including RESTART), ADDRESS, INDEX, DATA, WAIT

and STOP phase.

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

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

Can be used to determine the number of bytes currently transmitted /

received by the GMBUS controller hardware. Controller sets it to zero at

the start of a GMBUS transaction data transfer and increments it after the

completion of each byte of the data phase.

Note that because reads have internal storage, the byte count on a read

operation may be ahead of the data that has been accepted from the data

register.

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

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

Can be used to determine the number of bytes currently transmitted /

received by the GMBUS controller hardware. Controller sets it to zero at

the start of a GMBUS transaction data transfer and increments it after the

completion of each byte of the data phase.

Note that because reads have internal storage, the byte count on a read

operation may be ahead of the data that has been accepted from the data

register.

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

hwreg::RegisterAddr<GMBusControllerStatus> Get ()

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

Records