Newer
Older
AMI-Aptio-BIOS-Reversed / PurleySktPkg / SouthClusterLbg / SiInit / Pei / SiInitPreMem / SiInitPreMem.h
@Ajax Dong Ajax Dong 2 days ago 12 KB Restructure the repo
/** @file
  SiInitPreMem.h -- Header for SiInitPreMem

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __SIINITPREMEM_H__
#define __SIINITPREMEM_H__

#include "../uefi_headers/Uefi.h"

//
// Function Prototypes
//

EFI_STATUS
EFIAPI
PchResetInitCallback(
  VOID
);

EFI_STATUS
EFIAPI
PchResetCallback2(
  VOID
);

EFI_STATUS
EFIAPI
SetupTraceHubFwBar(
  VOID
);

EFI_STATUS
EFIAPI
IsPchSkuSupported(
  VOID
);

EFI_STATUS
EFIAPI
IsDwrDetected(
  VOID
);

EFI_STATUS
EFIAPI
GetPerformanceLogBuffer(
  VOID
);

EFI_STATUS
EFIAPI
RecordPerformanceEntry(
  VOID
);

EFI_STATUS
EFIAPI
DebugPrint(
  VOID
);

EFI_STATUS
EFIAPI
PpiInstall(
  VOID
);

EFI_STATUS
EFIAPI
StartPerformanceMeasurement(
  VOID
);

EFI_STATUS
EFIAPI
EndPerformanceMeasurement(
  VOID
);

EFI_STATUS
EFIAPI
SiInitPreMemEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
SiInitPrePolicy(
  VOID
);

EFI_STATUS
EFIAPI
PrintPchInfo(
  VOID
);

EFI_STATUS
EFIAPI
PchWdtInit(
  VOID
);

EFI_STATUS
EFIAPI
PchWdtIsUnexpectedReset(
  VOID
);

EFI_STATUS
EFIAPI
InstallPchResetPpi(
  VOID
);

EFI_STATUS
EFIAPI
InstallPchSpiPpi(
  VOID
);

EFI_STATUS
EFIAPI
PchInitPreMem(
  VOID
);

EFI_STATUS
EFIAPI
PchAcpiBaseSet(
  VOID
);

EFI_STATUS
EFIAPI
PchPwrmBaseGet(
  VOID
);

EFI_STATUS
EFIAPI
PchPwrmBaseSet(
  VOID
);

EFI_STATUS
EFIAPI
PchTcoBaseSet(
  VOID
);

EFI_STATUS
EFIAPI
PchFabricErrorCheck(
  VOID
);

EFI_STATUS
EFIAPI
PchEarlyDisabledDeviceHandling(
  VOID
);

EFI_STATUS
EFIAPI
GpioInitEarly(
  VOID
);

EFI_STATUS
EFIAPI
MmioRead16(
  VOID
);

EFI_STATUS
EFIAPI
MmioWrite16(
  VOID
);

EFI_STATUS
EFIAPI
PchGetMmPciAddress(
  VOID
);

EFI_STATUS
EFIAPI
PchPciRead16(
  VOID
);

EFI_STATUS
EFIAPI
PchPciWrite32(
  VOID
);

EFI_STATUS
EFIAPI
PchPcrRead32(
  VOID
);

EFI_STATUS
EFIAPI
PchPcrWrite32(
  VOID
);

EFI_STATUS
EFIAPI
SpiProtocolInit(
  VOID
);

EFI_STATUS
EFIAPI
PchInfoGetPchSeriesStr(
  VOID
);

EFI_STATUS
EFIAPI
PchInfoGetPchSteppingStr(
  VOID
);

EFI_STATUS
EFIAPI
PchInfoGetPchSkuStr(
  VOID
);

EFI_STATUS
EFIAPI
7 (0x80) indicates SiInitPrePolicy has already been called.(
  VOID
);

EFI_STATUS
EFIAPI
UINT8  *mSiInitPolicyDoneFlag = (UINT8 *)0xFA044;(
  VOID
);

EFI_STATUS
EFIAPI
log entry type: the entry point records 0x50E0 as the event(
  VOID
);

EFI_STATUS
EFIAPI
(20704 decimal) for the SiInitPrePolicy performance measurement.(
  VOID
);

EFI_STATUS
EFIAPI
global PEI services pointer (maintained across calls)(
  VOID
);

EFI_STATUS
EFIAPI
EFI_PEI_SERVICES **mPeiServices = NULL;(
  VOID
);

EFI_STATUS
EFIAPI
declarations of internal sub-functions(
  VOID
);

EFI_STATUS
EFIAPI
Services helper: sub_FFD8AD54 / GetPeiServicesPtr(
  VOID
);

EFI_STATUS
EFIAPI
the PEI Services PPI pointer. The implementation reads from(
  VOID
);

EFI_STATUS
EFIAPI
IDT-based PEI Services Table Pointer.(
  VOID
);

EFI_STATUS
EFIAPI
**(
  VOID
);

EFI_STATUS
EFIAPI
Output: sub_FFD7F97E / GetDebugInterface(
  VOID
);

EFI_STATUS
EFIAPI
the ReportStatusCode PPI (GUID: 36232936-0E76-31C8-...)(
  VOID
);

EFI_STATUS
EFIAPI
caches it for use by DebugPrint.(
  VOID
);

EFI_STATUS
EFIAPI
REPORT_STATUS_CODE_PPI *(
  VOID
);

EFI_STATUS
EFIAPI
Print: sub_FFD7F9AF(
  VOID
);

EFI_STATUS
EFIAPI
debug print via ReportStatusCode PPI.(
  VOID
);

EFI_STATUS
EFIAPI
emits if the requested error level matches the current debug mask.(
  VOID
);

EFI_STATUS
EFIAPI
with:(
  VOID
);

EFI_STATUS
EFIAPI
(0x40 = 64)   for normal trace messages(
  VOID
);

EFI_STATUS
EFIAPI
(0x80000000)  for error/assert messages(
  VOID
);

EFI_STATUS
EFIAPI
EFIAPI(
  VOID
);

EFI_STATUS
EFIAPI
if the current debug level has this ErrorLevel enabled.(
  VOID
);

EFI_STATUS
EFIAPI
debug mask is read from a global variable.(
  VOID
);

EFI_STATUS
EFIAPI
= GetDebugMask ();(
  VOID
);

EFI_STATUS
EFIAPI
Install: sub_FFD7F948(
  VOID
);

EFI_STATUS
EFIAPI
wrapper: PeiServices->InstallPpi(PpiList)(
  VOID
);

EFI_STATUS
EFIAPI
Log: sub_FFD7FBC7 / sub_FFD7FC48(
  VOID
);

EFI_STATUS
EFIAPI
a TSC-based performance entry. Uses a buffer tracked via(
  VOID
);

EFI_STATUS
EFIAPI
that returns a log array.(
  VOID
);

EFI_STATUS
EFIAPI
VOID(
  VOID
);

EFI_STATUS
EFIAPI
the HOB-based performance log buffer. If no HOB exists(
  VOID
);

EFI_STATUS
EFIAPI
Entry Point: _ModuleEntryPoint (0xffd7f7a1)(
  VOID
);

EFI_STATUS
EFIAPI
0: One-time initialization guard(
  VOID
);

EFI_STATUS
EFIAPI
bit 7 of the flag byte at mSiInitPolicyDoneFlag (0xFA044).(
  VOID
);

EFI_STATUS
EFIAPI
not set, mark as done. This is an anti-double-call protection.(
  VOID
);

EFI_STATUS
EFIAPI
((*mSiInitPolicyDoneFlag & BIT7) == 0) {(
  VOID
);

EFI_STATUS
EFIAPI
1: SiInitPrePolicy - Early silicon policy init (TraceHub)(
  VOID
);

EFI_STATUS
EFIAPI
(EFI_D_INFO, "SiInitPrePolicy() Start\n");(
  VOID
);

EFI_STATUS
EFIAPI
performance measurement(
  VOID
);

EFI_STATUS
EFIAPI
type = 20704 (0x50E0)(
  VOID
);

EFI_STATUS
EFIAPI
= AsmReadTsc ();(
  VOID
);

EFI_STATUS
EFIAPI
2a: PchInitPrePolicy - PCH identification(
  VOID
);

EFI_STATUS
EFIAPI
();(
  VOID
);

EFI_STATUS
EFIAPI
2b: PchInitPrePolicy - WDT, Reset, SPI, GPIO(
  VOID
);

EFI_STATUS
EFIAPI
3: Notify that SiInitPrePolicy is complete(
  VOID
);

EFI_STATUS
EFIAPI
= GetPeiServicesPtr ();(
  VOID
);

EFI_STATUS
EFIAPI
Intel TraceHub (chipset trace/debug hub) MMIO BARs.(
  VOID
);

EFI_STATUS
EFIAPI
TraceHub device is at PCI B:D:F 0:20:7 (D20:F7) on the PCH.(
  VOID
);

EFI_STATUS
EFIAPI
PCH power management base address(
  VOID
);

EFI_STATUS
EFIAPI
(&PchPwrmBase);(
  VOID
);

EFI_STATUS
EFIAPI
TraceHub device via PCH MMIO config (D20:F7 = B:D:F 0:20:7)(
  VOID
);

EFI_STATUS
EFIAPI
= (TRACEHUB_DEVICE *)(UINTN)PchGetMmPciAddress (0, 20, 7);(
  VOID
);

EFI_STATUS
EFIAPI
TraceHub presence (VID/DID = 0xFFFF means not present)(
  VOID
);

EFI_STATUS
EFIAPI
(MmioRead16 (&TraceHub->VendorId) == 0xFFFF) {(
  VOID
);

EFI_STATUS
EFIAPI
if TraceHub was already initialized (MSE bit)(
  VOID
);

EFI_STATUS
EFIAPI
((TraceHub->Command & BIT1) != 0) {(
  VOID
);

EFI_STATUS
EFIAPI
(EFI_D_INFO, "TraceHubInitialize() - Setting MTB_BAR\n");(
  VOID
);

EFI_STATUS
EFIAPI
(bit 1) is the minimum - enables MMIO for MTB only(
  VOID
);

EFI_STATUS
EFIAPI
MSE only initially(
  VOID
);

EFI_STATUS
EFIAPI
SCRPD0.24 to decide if SW/FW BARs should be programmed(
  VOID
);

EFI_STATUS
EFIAPI
= *((volatile UINT32 *)TRACE_HUB_SCRPD0_REG);(
  VOID
);

EFI_STATUS
EFIAPI
SW trace buffer frequency and BAR(
  VOID
);

EFI_STATUS
EFIAPI
disable to program BARs(
  VOID
);

EFI_STATUS
EFIAPI
FW_BAR (firmware trace buffer - at offset 0x20)(
  VOID
);

EFI_STATUS
EFIAPI
(EFI_D_INFO, "TraceHubInitialize() - Setting FW_BAR\n");(
  VOID
);

EFI_STATUS
EFIAPI
both MSE and BME for full TraceHub operation(
  VOID
);

EFI_STATUS
EFIAPI
(EFI_D_INFO, "TraceHubInitialize() - Enabling MSE and BME\n");(
  VOID
);

EFI_STATUS
EFIAPI
+ BME(
  VOID
);

EFI_STATUS
EFIAPI
(Self-Test Trace) disconnected - disable TraceHub(
  VOID
);

EFI_STATUS
EFIAPI
the TraceHub FW_BAR at PCI config space offset 0x20.(
  VOID
);

EFI_STATUS
EFIAPI
is mapped to 0xFE0C0000 with an 8KB window.(
  VOID
);

EFI_STATUS
EFIAPI
DMIC.SRL (DMIC is locked), read from PCR(
  VOID
);

EFI_STATUS
EFIAPI
= PchPcrRead32 (PID_PSF1, 4);(
  VOID
);

EFI_STATUS
EFIAPI
LPC device is present(
  VOID
);

EFI_STATUS
EFIAPI
= (UINT32 *)(UINTN)PchGetMmPciAddress (0, 31, 0);(
  VOID
);

EFI_STATUS
EFIAPI
FW_BAR at PCI config offset 0x20 (expansion ROM BAR)(
  VOID
);

EFI_STATUS
EFIAPI
value 0xFE0C0000 (8KB).(
  VOID
);

EFI_STATUS
EFIAPI
PCH device information and logs it via DebugPrint.(
  VOID
);

EFI_STATUS
EFIAPI
PCH series (returns: 1 = LBG, 2 = SPX)(
  VOID
);

EFI_STATUS
EFIAPI
= PchGetSteppingInfo ();(
  VOID
);

EFI_STATUS
EFIAPI
series string(
  VOID
);

EFI_STATUS
EFIAPI
= sizeof (SeriesStr);(
  VOID
);

EFI_STATUS
EFIAPI
stepping string(
  VOID
);

EFI_STATUS
EFIAPI
= sizeof (SteppingStr);(
  VOID
);

EFI_STATUS
EFIAPI
SKU string(
  VOID
);

EFI_STATUS
EFIAPI
= sizeof (SkuStr);(
  VOID
);

EFI_STATUS
EFIAPI
= PchLbg (Lewisburg / PCH-H): IDs A1C0-A1CF, A243, A240-A24F(
  VOID
);

EFI_STATUS
EFIAPI
= PchSpx (Sphinx  / PCH-LP): IDs 9D40-9D43, 9D46, 9D48(
  VOID
);

EFI_STATUS
EFIAPI
LPC Device ID from D31:F0 offset +2(
  VOID
);

EFI_STATUS
EFIAPI
= MmioRead16 ((
  VOID
);

EFI_STATUS
EFIAPI
Lewisburg (LBG) range(
  VOID
);

EFI_STATUS
EFIAPI
((LpcDeviceId >= V_LBG_DEVICE_ID_MIN && LpcDeviceId <= V_LBG_DEVICE_ID_MAX) ||(
  VOID
);

EFI_STATUS
EFIAPI
Sphinx (SPX) range(
  VOID
);

EFI_STATUS
EFIAPI
if (LpcDeviceId == 0x9D40 || LpcDeviceId == 0x9D41 ||(
  VOID
);

EFI_STATUS
EFIAPI
WDT status from PCH and configures WDT control bits.(
  VOID
);

EFI_STATUS
EFIAPI
WDT status (BIT14)(
  VOID
);

EFI_STATUS
EFIAPI
((WdtReadback & BIT14) != 0) {(
  VOID
);

EFI_STATUS
EFIAPI
HOB list from PEI services(
  VOID
);

EFI_STATUS
EFIAPI
new WDT value based on expiration and unexpected reset(
  VOID
);

EFI_STATUS
EFIAPI
((WdtReadback & BIT24) != 0) {(
  VOID
);

EFI_STATUS
EFIAPI
updated WDT value(
  VOID
);

EFI_STATUS
EFIAPI
(WdtBase, WdtNewValue);(
  VOID
);

EFI_STATUS
EFIAPI
WDT PPIs(
  VOID
);

EFI_STATUS
EFIAPI
= (*PeiServices)->InstallPpi (PeiServices, &gPchWdtPpiGuid);(
  VOID
);

EFI_STATUS
EFIAPI
whether the WDT unexpected reset flag is set.(
  VOID
);

EFI_STATUS
EFIAPI
two reset-related PPIs:(
  VOID
);

EFI_STATUS
EFIAPI
and install PCH Reset PPI(
  VOID
);

EFI_STATUS
EFIAPI
= (PCH_RESET_PPI *)AllocatePages (EFI_SIZE_TO_PAGES (sizeof (PCH_RESET_PPI)));(
  VOID
);

EFI_STATUS
EFIAPI
second Reset PPI(
  VOID
);

EFI_STATUS
EFIAPI
= (PCH_RESET_INIT_PPI *)AllocatePages (EFI_SIZE_TO_PAGES (sizeof (PCH_RESET_INIT_PPI)));(
  VOID
);

EFI_STATUS
EFIAPI
SPI BAR0 at D31:F5, offset 0x10 (BAR0)(
  VOID
);

EFI_STATUS
EFIAPI
= (UINT32 *)(UINTN)PchGetMmPciAddress (0, 31, 5);(
  VOID
);

EFI_STATUS
EFIAPI
MSE(
  VOID
);

EFI_STATUS
EFIAPI
and initialize SPI instance(
  VOID
);

EFI_STATUS
EFIAPI
= (PCH_SPI_INSTANCE *)AllocatePages ((
  VOID
);

EFI_STATUS
EFIAPI
PPI descriptor(
  VOID
);

EFI_STATUS
EFIAPI
1: Validate PCH SKU (must have LPC device)(
  VOID
);

EFI_STATUS
EFIAPI
(!IsPchSkuSupported ()) {(
  VOID
);

EFI_STATUS
EFIAPI
2: Ensure SBREG is programmed (D31:F0, register 0x10/0x14)(
  VOID
);

EFI_STATUS
EFIAPI
3: Program PCH cycle decoding bases(
  VOID
);

EFI_STATUS
EFIAPI
(R_PCH_ACPI_PM_BASE);(
  VOID
);

EFI_STATUS
EFIAPI
4: Validate PCH PWRM base is non-zero(
  VOID
);

EFI_STATUS
EFIAPI
(EFI_D_INFO, "PCH PWRM Base needs to be programmed before here\n");(
  VOID
);

EFI_STATUS
EFIAPI
5: Check DWR condition(
  VOID
);

EFI_STATUS
EFIAPI
= IsDwrDetected ();(
  VOID
);

EFI_STATUS
EFIAPI
6: Fabric error check and early device handling(
  VOID
);

EFI_STATUS
EFIAPI
7: Install PCH Init PreMem PPI(
  VOID
);

EFI_STATUS
EFIAPI
= PpiInstall ((EFI_PEI_PPI_DESCRIPTOR *)(UINTN)0xFFD980CC);(
  VOID
);

EFI_STATUS
EFIAPI
address(
  VOID
);

EFI_STATUS
EFIAPI
(AcpiBase == 0 || AcpiBase < 0x100) {(
  VOID
);

EFI_STATUS
EFIAPI
DMIC.SRL (DMIC locked via PCR read)(
  VOID
);

EFI_STATUS
EFIAPI
ACPI base at D31:F2 offset 0x44(
  VOID
);

EFI_STATUS
EFIAPI
0x44(
  VOID
);

EFI_STATUS
EFIAPI
enable bit(
  VOID
);

EFI_STATUS
EFIAPI
LPC device is present (D31:F0)(
  VOID
);

EFI_STATUS
EFIAPI
PWRM base from D31:F2 offset 0x48(
  VOID
);

EFI_STATUS
EFIAPI
= (UINT32 *)(UINTN)PchGetMmPciAddress (0, 31, 2);(
  VOID
);

EFI_STATUS
EFIAPI
DMIC.SRL lock(
  VOID
);

EFI_STATUS
EFIAPI
D31:F2 for PWRM base config(
  VOID
);

EFI_STATUS
EFIAPI
PWRM base at offset 0x48(
  VOID
);

EFI_STATUS
EFIAPI
base address(
  VOID
);

EFI_STATUS
EFIAPI
DMIC.SRL(
  VOID
);

EFI_STATUS
EFIAPI
D31:F4 for TCO registers(
  VOID
);

EFI_STATUS
EFIAPI
= (UINT32 *)(UINTN)PchGetMmPciAddress (0, 31, 4);(
  VOID
);

EFI_STATUS
EFIAPI
if TCO is already locked(
  VOID
);

EFI_STATUS
EFIAPI
(((UINT8 *)PmDevice)[0x54] & 1) {(
  VOID
);

EFI_STATUS
EFIAPI
TCO base at offset 0x54/0x55(
  VOID
);

EFI_STATUS
EFIAPI
through a table at unk_FFD980CC defining PSF(
  VOID
);

EFI_STATUS
EFIAPI
errors found, creates a HOB with error status.(
  VOID
);

EFI_STATUS
EFIAPI
(EFI_D_INFO, "PchEarlyDisabledDeviceHandling() - End\n");(
  VOID
);

EFI_STATUS
EFIAPI
13 groups of 2 GPIO pads each (groups 0x100 through 0x10C)(
  VOID
);

EFI_STATUS
EFIAPI
(GpioPad = 256; GpioPad < 269; GpioPad++) {(
  VOID
);

EFI_STATUS
EFIAPI
functions(
  VOID
);

EFI_STATUS
EFIAPI
DWR (Debug Warranty Reset) condition.(
  VOID
);

EFI_STATUS
EFIAPI
TRUE if a DWR condition is detected.(
  VOID
);

EFI_STATUS
EFIAPI
FALSE;(
  VOID
);

EFI_STATUS
EFIAPI
helpers(
  VOID
);

EFI_STATUS
EFIAPI
for completion(
  VOID
);

EFI_STATUS
EFIAPI
((*(volatile UINT32 *)(UINTN)(SbRegBase + 0) & BIT31) != 0) {(
  VOID
);

#endif /* __SIINITPREMEM_H__ */