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