/** @file
SmmControl.h -- Header for SmmControl
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __SMMCONTROL_H__
#define __SMMCONTROL_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
SmiActivate(
VOID
);
EFI_STATUS
EFIAPI
PciExpressInit(
VOID
);
EFI_STATUS
EFIAPI
SmiClearGpeStatus(
VOID
);
EFI_STATUS
EFIAPI
GetDebugLibProtocol(
VOID
);
EFI_STATUS
EFIAPI
LocateProtocol(
VOID
);
EFI_STATUS
EFIAPI
CompareGuid(
VOID
);
EFI_STATUS
EFIAPI
ReadUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
GetConfigurationTable(
VOID
);
EFI_STATUS
EFIAPI
IoRead16(
VOID
);
EFI_STATUS
EFIAPI
IoWrite16(
VOID
);
EFI_STATUS
EFIAPI
IoRead32(
VOID
);
EFI_STATUS
EFIAPI
IoWrite32(
VOID
);
EFI_STATUS
EFIAPI
MmioRead16(
VOID
);
EFI_STATUS
EFIAPI
InitDebugLib(
VOID
);
EFI_STATUS
EFIAPI
DebugPrint(
VOID
);
EFI_STATUS
EFIAPI
DebugAssert(
VOID
);
EFI_STATUS
EFIAPI
OnRestoreTpl(
VOID
);
EFI_STATUS
EFIAPI
OnVirtualAddressChange(
VOID
);
EFI_STATUS
EFIAPI
OnRuntimeReady(
VOID
);
EFI_STATUS
EFIAPI
OnSmiHobCleanup(
VOID
);
EFI_STATUS
EFIAPI
SmmCommunicationCommunicate(
VOID
);
EFI_STATUS
EFIAPI
SmmControl2Handler(
VOID
);
EFI_STATUS
EFIAPI
SmmControl2Clear(
VOID
);
EFI_STATUS
EFIAPI
PchLpcMmioRead(
VOID
);
EFI_STATUS
EFIAPI
ReadUnaligned64At8(
VOID
);
EFI_STATUS
EFIAPI
InitHobList(
VOID
);
EFI_STATUS
EFIAPI
InitPcdDb(
VOID
);
EFI_STATUS
EFIAPI
InitMmPciBase(
VOID
);
EFI_STATUS
EFIAPI
GetPcdProtocol(
VOID
);
EFI_STATUS
EFIAPI
SmmControlDriverEntryInit(
VOID
);
EFI_STATUS
EFIAPI
SmmControlDriverUnload(
VOID
);
EFI_STATUS
EFIAPI
Variables(
VOID
);
EFI_STATUS
EFIAPI
gImageHandle = NULL;(
VOID
);
EFI_STATUS
EFIAPI
EFI_SMM_COMMUNICATION_PROTOCOL *gSmmCommunication = NULL; // psub_1970(
VOID
);
EFI_STATUS
EFIAPI
VOID *gHobList = NULL; // qword_43E8(
VOID
);
EFI_STATUS
EFIAPI
VOID *gDsEntry = NULL; // qword_43D8(
VOID
);
EFI_STATUS
EFIAPI
UINT8 gDebugLevel = 0; // n113(
VOID
);
EFI_STATUS
EFIAPI
UINT64 gSmiHobDataCount = 0; // qword_43F8(
VOID
);
EFI_STATUS
EFIAPI
UINTN gCmCpuCount = 0; // n2, initialized to 2(
VOID
);
EFI_STATUS
EFIAPI
handles(
VOID
);
EFI_STATUS
EFIAPI
gEventRestoreTpl = NULL; // qword_43C0(
VOID
);
EFI_STATUS
EFIAPI
EFI_EVENT gEventRuntimeReady = NULL; // qword_4450(
VOID
);
EFI_STATUS
EFIAPI
//(
VOID
);
EFI_STATUS
EFIAPI
declarations of static functions(
VOID
);
EFI_STATUS
EFIAPI
EFI_STATUS(
VOID
);
EFI_STATUS
EFIAPI
Library Protocol (dynamically located)(
VOID
);
EFI_STATUS
EFIAPI
if BootServices is available and we have enough memory(
VOID
);
EFI_STATUS
EFIAPI
(gBootServices_0 != 0) {(
VOID
);
EFI_STATUS
EFIAPI
memory condition: try to locate the debug protocol(
VOID
);
EFI_STATUS
EFIAPI
= LocateProtocol (&gEfiDebugProtocolGuid, NULL, &gDebugLib);(
VOID
);
EFI_STATUS
EFIAPI
CMOS diagnostic register to determine current debug level(
VOID
);
EFI_STATUS
EFIAPI
= IoRead8 (0x70);(
VOID
);
EFI_STATUS
EFIAPI
Notification Callbacks(
VOID
);
EFI_STATUS
EFIAPI
Implementation(
VOID
);
EFI_STATUS
EFIAPI
to the non-periodic activation path(
VOID
);
EFI_STATUS
EFIAPI
(CommBuffer != NULL && CommSize != NULL) {(
VOID
);
EFI_STATUS
EFIAPI
SMI status and trigger SMI via control port(
VOID
);
EFI_STATUS
EFIAPI
(gSmiIoPortBase + 48, IoRead32 (gSmiIoPortBase + 48) | 0x21);(
VOID
);
EFI_STATUS
EFIAPI
SMI command and data ports(
VOID
);
EFI_STATUS
EFIAPI
(0xB3, DataValue);(
VOID
);
EFI_STATUS
EFIAPI
Activation and Status Handling(
VOID
);
EFI_STATUS
EFIAPI
TCO status; if not set, reset PM1/GPE status(
VOID
);
EFI_STATUS
EFIAPI
((IoRead16 (gSmiIoPortBase + 4) & 1) == 0) {(
VOID
);
EFI_STATUS
EFIAPI
PM1 status registers(
VOID
);
EFI_STATUS
EFIAPI
(gSmiIoPortBase, 0xFFFF);(
VOID
);
EFI_STATUS
EFIAPI
GPE status(
VOID
);
EFI_STATUS
EFIAPI
(gSmiIoPortBase + 140, 0xFFFFFDFF);(
VOID
);
EFI_STATUS
EFIAPI
all GPIO GPEs(
VOID
);
EFI_STATUS
EFIAPI
= (PCM_PCI_SMI_CONTEXT *)GetGpioGpeInfo (&GpeCount);(
VOID
);
EFI_STATUS
EFIAPI
all GPIO SMIs(
VOID
);
EFI_STATUS
EFIAPI
= (PCM_PCI_SMI_CONTEXT *)GetGpioSmiInfo (&SmiCount);(
VOID
);
EFI_STATUS
EFIAPI
GPE and SMI events on the SMI I/O port(
VOID
);
EFI_STATUS
EFIAPI
= gSmiIoPortBase + 68;(
VOID
);
EFI_STATUS
EFIAPI
Support and Detection(
VOID
);
EFI_STATUS
EFIAPI
a temporary MMIO address to read from LPC(
VOID
);
EFI_STATUS
EFIAPI
= MmioRead32 ((UINT32 *)(UINTN)Address);(
VOID
);
EFI_STATUS
EFIAPI
and Protocol Location Helpers(
VOID
);
EFI_STATUS
EFIAPI
Table Lookup(
VOID
);
EFI_STATUS
EFIAPI
MM_PCI_USRA protocol if needed(
VOID
);
EFI_STATUS
EFIAPI
(gMmPciUsra == NULL) {(
VOID
);
EFI_STATUS
EFIAPI
Entry Point and Initialization(
VOID
);
EFI_STATUS
EFIAPI
required pointers(
VOID
);
EFI_STATUS
EFIAPI
(gImageHandle != NULL);(
VOID
);
EFI_STATUS
EFIAPI
the PCH SMI I/O base address from the HOB(
VOID
);
EFI_STATUS
EFIAPI
configure the SMI I/O ports(
VOID
);
EFI_STATUS
EFIAPI
= SmmControlDriverEntryInit ();(
VOID
);
EFI_STATUS
EFIAPI
LPC I/O decode registers via MMIO to get SMI port base(
VOID
);
EFI_STATUS
EFIAPI
= MmioRead16 ((UINT16 *)(PchLpcMmioRead (2)));(
VOID
);
/// should not happen
EFI_STATUS
EFIAPI
not initialized yet(
VOID
);
EFI_STATUS
EFIAPI
(FALSE);(
VOID
);
EFI_STATUS
EFIAPI
protocol structures(
VOID
);
EFI_STATUS
EFIAPI
= 0;(
VOID
);
EFI_STATUS
EFIAPI
SMI HOB notification protocol(
VOID
);
EFI_STATUS
EFIAPI
EFI virtual address change event(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->CreateEvent ((
VOID
);
EFI_STATUS
EFIAPI
GPIO/SMI status(
VOID
);
EFI_STATUS
EFIAPI
();(
VOID
);
EFI_STATUS
EFIAPI
SMI HOB data if allocated(
VOID
);
EFI_STATUS
EFIAPI
(gSmiHobData != NULL) {(
VOID
);
EFI_STATUS
EFIAPI
all registered events(
VOID
);
EFI_STATUS
EFIAPI
(gEventVirtualAddrChange != NULL) {(
VOID
);
EFI_STATUS
EFIAPI
PciExpress protocol registration(
VOID
);
EFI_STATUS
EFIAPI
(gPcdDb != NULL) {(
VOID
);
EFI_STATUS
EFIAPI
Express Library Initialization(
VOID
);
EFI_STATUS
EFIAPI
for protocol notify on the MM-PCI USRA protocol(
VOID
);
#endif /* __SMMCONTROL_H__ */