class PciConfigOpRegion

Defined at line 26 of file ../../src/graphics/display/drivers/intel-display/firmware-bridge.h

The GMCH (Graphics Memory Controller Hub) PCI configuration space OpRegion.

First release: Section 2.3 "OpRegion Initialization", pages 27-30

728117: Section 2.2 "GMCH PCI Config OpRegion", pages 8-9

621530: Section 2.3 "GMCH PCI Config OpRegion", page 10

Public Methods

void PciConfigOpRegion (const PciConfigOpRegion & )

Defined at line 30 of file ../../src/graphics/display/drivers/intel-display/firmware-bridge.h

PciConfigOpRegion & operator= (const PciConfigOpRegion & )

Defined at line 31 of file ../../src/graphics/display/drivers/intel-display/firmware-bridge.h

void PciConfigOpRegion (ddk::Pci & pci)

Defined at line 37 of file ../../src/graphics/display/drivers/intel-display/firmware-bridge.cc

void ~PciConfigOpRegion ()

Defined at line 39 of file ../../src/graphics/display/drivers/intel-display/firmware-bridge.cc

zx::result<zx_paddr_t> ReadMemoryOpRegionAddress ()

Reads the Memory OpRegion address from the PCI configuration space.

Defined at line 119 of file ../../src/graphics/display/drivers/intel-display/firmware-bridge.cc

zx::result<> TriggerSystemControlInterrupt ()

Invokes the system firmware using the OpRegion SWSCI mechanism.

SWSCI (Software System Control Interrupt) is a mechanism for the display

driver to invoke the system firmware (BIOS). This mechanism was introduced

in the OpRegion spec, with the goal of removing the need to grant drivers

the capability of invoking SMM interrupts and video BIOS interrupts.

SWSCI is relegated to fringe functionality that is not covered by the ACPI

specification and by the VBT (Video BIOS Table). Document 621530 suggests

that SWSCI has been removed from recent OpRegion versions, as all

references to it (Mailbox 2, private ACPI calls) were removed.

Returns ZX_ERR_BAD_STATE if the SWSCI mechanism is in use at the time of

the call, or ZX_ERR_NOT_SUPPORTED if the firmware doesn't appear to support

the OpRegion protocol. If any PCI operation fails, returns the underlying

zx_status_t error.

The caller must set up Mailbox 2 correctly in the Memory OpRegion before

invoking the system firmware.

The caller should ensure that SWSCI mechanism is not in use before the

call. This can be accomplished by calling IsSystemControlInterruptInUse()

and/or additional synchronization in the layer above PciConfigOpRegion.

After the call, the caller should track when the system firmware completes

the request, by polling IsSystemControlInterruptInUse() together with the

"SCI issued" field in the SCIC (Software SCI Entry/Exit parameter) member

of Mailbox 2 in the Memory OpRegion.

Defined at line 152 of file ../../src/graphics/display/drivers/intel-display/firmware-bridge.cc

zx::result<bool> IsSystemControlInterruptInUse ()

Checks if the OpRegion SWSCI mechanism is currently in use.

See TriggerSystemControlInterrupt() for a description of SWSCI.

This check involves reading the SWSCI register from the PCI configuration

space. If the PCI operation fails, returns the underlying zx_status_t

error. Returns ZX_ERR_NOT_SUPPORTED if the SWSCI register state indicates

that the firmware does not support the OpRegion protocol.

If the system firmware supports the OpRegion protocol, this method should

succeed and return false (indicating that SWSCI is not currently in use)

when the display driver starts up.

Defined at line 136 of file ../../src/graphics/display/drivers/intel-display/firmware-bridge.cc