/** @file
5038F34E-0774-47A0-A5EF-4B94AF1A43DA.h -- Header for 5038F34E-0774-47A0-A5EF-4B94AF1A43DA
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __5038F34E-0774-47A0-A5EF-4B94AF1A43DA_H__
#define __5038F34E-0774-47A0-A5EF-4B94AF1A43DA_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
_ModuleEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
DcpmmDriverInit(
VOID
);
EFI_STATUS
EFIAPI
DcpmmDriverMain(
VOID
);
EFI_STATUS
EFIAPI
DcpmmDriverStartThunk(
VOID
);
EFI_STATUS
EFIAPI
DcpmmDriverStart(
VOID
);
EFI_STATUS
EFIAPI
DcpmmDriverSupported(
VOID
);
EFI_STATUS
EFIAPI
DcpmmDriverStop(
VOID
);
EFI_STATUS
EFIAPI
NvdimmFwCommand(
VOID
);
EFI_STATUS
EFIAPI
DcpmmFirmwareCommandDispatch(
VOID
);
EFI_STATUS
EFIAPI
DcpmmGetDeviceInfo(
VOID
);
EFI_STATUS
EFIAPI
DcpmmGetHealth(
VOID
);
EFI_STATUS
EFIAPI
DcpmmSmbusAcquire(
VOID
);
EFI_STATUS
EFIAPI
DcpmmSmbusRelease(
VOID
);
EFI_STATUS
EFIAPI
DcpmmGetNvdimmConfig(
VOID
);
EFI_STATUS
EFIAPI
DcpmmSetNvdimmConfig(
VOID
);
EFI_STATUS
EFIAPI
DcpmmEnumerateNvdimmHandles(
VOID
);
EFI_STATUS
EFIAPI
DcpmmCheckNamespaceSupport(
VOID
);
EFI_STATUS
EFIAPI
DcpmmCheckSmbusSupport(
VOID
);
EFI_STATUS
EFIAPI
UtilFreePool(
VOID
);
EFI_STATUS
EFIAPI
UtilDebugPrint(
VOID
);
EFI_STATUS
EFIAPI
EFI_BOOT_SERVICES *gBootServices = NULL; // 0x33350(
VOID
);
EFI_STATUS
EFIAPI
DCPMM_DRIVER_GLOBAL *gDcpmmDriver = NULL; // qword_33308(
VOID
);
EFI_STATUS
EFIAPI
protocol(
VOID
);
EFI_STATUS
EFIAPI
config protocol(
VOID
);
EFI_STATUS
EFIAPI
health protocol(
VOID
);
EFI_STATUS
EFIAPI
HC protocol(
VOID
);
EFI_STATUS
EFIAPI
PassThru protocol(
VOID
);
EFI_STATUS
EFIAPI
arbitration protocol(
VOID
);
EFI_STATUS
EFIAPI
located protocol(
VOID
);
EFI_STATUS
EFIAPI
path utilities(
VOID
);
EFI_STATUS
EFIAPI
path protocol GUID(
VOID
);
EFI_STATUS
EFIAPI
Firmware Interface Table protocol(
VOID
);
EFI_STATUS
EFIAPI
protocol instance(
VOID
);
EFI_STATUS
EFIAPI
Binding protocol GUID(
VOID
);
EFI_STATUS
EFIAPI
device path instance(
VOID
);
EFI_STATUS
EFIAPI
dispatch tables (defined externally in .data section)(
VOID
);
EFI_STATUS
EFIAPI
function table(
VOID
);
EFI_STATUS
EFIAPI
protocol table(
VOID
);
EFI_STATUS
EFIAPI
interface table(
VOID
);
EFI_STATUS
EFIAPI
1: Early initialization (serial port, protocol locations)(
VOID
);
EFI_STATUS
EFIAPI
2: Install driver binding protocol(
VOID
);
/// will be called when controller is found
EFI_STATUS
EFIAPI
the Start handler(
VOID
);
EFI_STATUS
EFIAPI
3: Complete initialization(
VOID
);
EFI_STATUS
EFIAPI
port (COM1) initialization via I/O ports 0x3F8-0x3FD.(
VOID
);
EFI_STATUS
EFIAPI
driver uses the serial port for debug logging.(
VOID
);
EFI_STATUS
EFIAPI
registers:(
VOID
);
EFI_STATUS
EFIAPI
- Data register / Divisor Latch Low (DLAB=1)(
VOID
);
EFI_STATUS
EFIAPI
- Interrupt Enable / Divisor Latch High (DLAB=1)(
VOID
);
EFI_STATUS
EFIAPI
- FIFO Control / Interrupt ID(
VOID
);
EFI_STATUS
EFIAPI
- Line Control Register(
VOID
);
EFI_STATUS
EFIAPI
- Modem Control Register(
VOID
);
EFI_STATUS
EFIAPI
- Line Status Register(
VOID
);
EFI_STATUS
EFIAPI
UEFI table pointers(
VOID
);
EFI_STATUS
EFIAPI
dependent protocols needed by this driver(
VOID
);
EFI_STATUS
EFIAPI
SMBIOS Type 17 to find NVDIMM presence(
VOID
);
EFI_STATUS
EFIAPI
SMBIOS entries looking for NVDIMM (Type 17 with NVDIMM flag)(
VOID
);
EFI_STATUS
EFIAPI
SMBIOS entry looking for:(
VOID
);
EFI_STATUS
EFIAPI
Type 0x7F with NVDIMM characteristics(
VOID
);
EFI_STATUS
EFIAPI
image handle(
VOID
);
EFI_STATUS
EFIAPI
= (UINT64)ImageHandle;(
VOID
);
EFI_STATUS
EFIAPI
driver global context (592 bytes = 0x250)(
VOID
);
EFI_STATUS
EFIAPI
= UtilAllocateZeroPool(592);(
VOID
);
EFI_STATUS
EFIAPI
global state(
VOID
);
EFI_STATUS
EFIAPI
linked lists within the context(
VOID
);
EFI_STATUS
EFIAPI
all DCPMM protocols on the image handle(
VOID
);
EFI_STATUS
EFIAPI
interface protocol(
VOID
);
EFI_STATUS
EFIAPI
all NVDIMM handles present in the system(
VOID
);
EFI_STATUS
EFIAPI
all protocols again on the image handle(
VOID
);
EFI_STATUS
EFIAPI
set up the driver binding protocol Start handler(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->InstallProtocolInterface((
VOID
);
EFI_STATUS
EFIAPI
device path protocol on each cached NVDIMM handle(
VOID
);
EFI_STATUS
EFIAPI
(gNvdimmHandleCount > 0 && gNvdimmHandles) {(
VOID
);
EFI_STATUS
EFIAPI
cached handles and re-enumerate(
VOID
);
EFI_STATUS
EFIAPI
= 0;(
VOID
);
EFI_STATUS
EFIAPI
controller handles that support the NVDIMM FIT protocol(
VOID
);
EFI_STATUS
EFIAPI
DCPMM protocols on each controller handle(
VOID
);
EFI_STATUS
EFIAPI
namespace and SMBUS support(
VOID
);
EFI_STATUS
EFIAPI
all remaining protocols on the controller handle(
VOID
);
EFI_STATUS
EFIAPI
NVDIMM linked list to see if this controller is known(
VOID
);
EFI_STATUS
EFIAPI
check if controller supports NVDIMM FIT protocol(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->OpenProtocol((
VOID
);
EFI_STATUS
EFIAPI
all protocols opened by this driver on the controller(
VOID
);
EFI_STATUS
EFIAPI
SMBUS protocol(
VOID
);
EFI_STATUS
EFIAPI
all protocol interfaces(
VOID
);
EFI_STATUS
EFIAPI
NVDIMM firmware command packet(
VOID
);
EFI_STATUS
EFIAPI
per ACPI NVDIMM FW spec for passthrough:(
VOID
);
EFI_STATUS
EFIAPI
+ Input/Output buffer sizes + payload(
VOID
);
EFI_STATUS
EFIAPI
via SMBUS to the NVDIMM device address.(
VOID
);
EFI_STATUS
EFIAPI
EFI_SUCCESS;(
VOID
);
EFI_STATUS
EFIAPI
firmware command via the NFIT-defined function table(
VOID
);
EFI_STATUS
EFIAPI
= FwIf->ExecuteCommand((
VOID
);
EFI_STATUS
EFIAPI
the NVDIMM device list and collect info:(
VOID
);
EFI_STATUS
EFIAPI
NVDIMM via firmware command for health info(
VOID
);
EFI_STATUS
EFIAPI
SMBUS ownership for the NVDIMM memory controller:(
VOID
);
EFI_STATUS
EFIAPI
messages format:(
VOID
);
EFI_STATUS
EFIAPI
SMBUS ownership:(
VOID
);
EFI_STATUS
EFIAPI
NVDIMM namespace label data:(
VOID
);
EFI_STATUS
EFIAPI
NVDIMM namespace label data with full validation.(
VOID
);
EFI_STATUS
EFIAPI
page alignment, BTT/PFN translation, and error recovery.(
VOID
);
EFI_STATUS
EFIAPI
UtilDebugPrint for status logging.(
VOID
);
EFI_STATUS
EFIAPI
handles are already cached, return success(
VOID
);
EFI_STATUS
EFIAPI
(gNvdimmHandles && gNvdimmHandleCount > 0) {(
VOID
);
EFI_STATUS
EFIAPI
any previously allocated handle buffer(
VOID
);
EFI_STATUS
EFIAPI
(gNvdimmHandles) {(
VOID
);
EFI_STATUS
EFIAPI
all handles with the NVDIMM Firmware Interface protocol(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->LocateHandleBuffer((
VOID
);
EFI_STATUS
EFIAPI
handle cache(
VOID
);
EFI_STATUS
EFIAPI
= HandleCount;(
VOID
);
EFI_STATUS
EFIAPI
device path on each handle and cache the handle(
VOID
);
EFI_STATUS
EFIAPI
(Index = 0; Index < HandleCount; Index++) {(
VOID
);
EFI_STATUS
EFIAPI
debug output format:(
VOID
);
EFI_STATUS
EFIAPI
messages use this prefix format for log identification.(
VOID
);
EFI_STATUS
EFIAPI
observed:(
VOID
);
EFI_STATUS
EFIAPI
driver acquired SMBUS access(
VOID
);
EFI_STATUS
EFIAPI
driver waiting %d ms for smbus access(
VOID
);
EFI_STATUS
EFIAPI
driver failed to acquire SMBUS access(
VOID
);
EFI_STATUS
EFIAPI
driver releasing SMBUS access(
VOID
);
EFI_STATUS
EFIAPI
driver released SMBUS access. Rc %d(
VOID
);
EFI_STATUS
EFIAPI
driver inconsistent state found! ...(
VOID
);
EFI_STATUS
EFIAPI
driver failed to release SMBUS access! Exiting(
VOID
);
EFI_STATUS
EFIAPI
driver starting to acquire SMBUS access. Window: 0 ms(
VOID
);
EFI_STATUS
EFIAPI
driver starting to acquire SMBUS access. Window: %d - %d ms(
VOID
);
#endif /* __5038F34E-0774-47A0-A5EF-4B94AF1A43DA_H__ */