FPGA initialization DXE driver for the Purley platform (HR650X). Reads FPGA configuration from a HOB (Hand-Off Block) or creates one from UEFI variables ("FpgaSocketConfig"). Locates PCI(e) root bridge I/O and USRA (Universal Segment Resource Access) protocols for MMIO/PCI config space access. Initializes S3 boot script services to save/restore FPGA register state across S3 resumes. On ReadyToBoot, enumerates FPGA devices per active socket, programs PCI bus/subordinate numbers, FME BARs, temperature thresholds, HSSI configuration, and miscellaneous FPGA control registers. Triggers a software SMI to finalize FPGA initialization in SMM.
| Function | Description |
|---|---|
_ModuleEntryPoint |
UEFI driver entry point; initializes services, locates protocols, sets up FPGA |
InitializeLibServices |
Stores UEFI service table pointers (boot, runtime, system) |
GetDxeServicesTable |
Locates and caches the DXE Services Table |
GetPcdProtocol |
Locates the PCD protocol |
GetMmPciBaseProtocol |
Locates the MM PCI USRA protocol |
GetUsraProtocol |
Locates the USRA protocol |
GetSmmCommunication |
Sets up SMM communication for FPGA SMI trigger |
S3BootScriptEventNotify |
Saves FPGA register state for S3 resume |
S3BootScriptBackupNotify |
Backs up S3 boot script data |
FpgaInitReadyToBoot |
ReadyToBoot callback; enumerates and configures FPGA devices per socket |
FpgaProgramPciBusNumbers |
Programs PCI bus/subordinate numbers for FPGA devices |
FpgaProgramFmeBar |
Configures FME (FPGA Management Engine) BARs |
FpgaSetTempThresholds |
Programs FPGA temperature threshold registers |
FpgaConfigureHssi |
Configures HSSI (High-Speed Serial Interface) settings |
FpgaTriggerSmi |
Triggers a software SMI for SMM-based FPGA finalization |
Intel Purley platform (HR650X) - FPGA initialization for PCIe accelerators