/** @file
  SlotDataUpdateDxeNeonCityEPECB.h -- Header for SlotDataUpdateDxeNeonCityEPECB

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __SLOTDATAUPDATEDXENEONCITYEPECB_H__
#define __SLOTDATAUPDATEDXENEONCITYEPECB_H__

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

//
// Function Prototypes
//

EFI_STATUS
EFIAPI
ReadUnaligned64(
  VOID
);

EFI_STATUS
EFIAPI
CompareGuidValue(
  VOID
);

EFI_STATUS
EFIAPI
PlatformSlotDataInit(
  VOID
);

EFI_STATUS
EFIAPI
UbaDebugAssert(
  VOID
);

EFI_STATUS
EFIAPI
SlotDataAccessor1(
  VOID
);

EFI_STATUS
EFIAPI
SlotDataAccessor2(
  VOID
);

EFI_STATUS
EFIAPI
SlotDataUpdateEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
GUIDs(
  VOID
);

EFI_STATUS
EFIAPI
Debug Protocol GUID used by assertion handler.(
  VOID
);

EFI_STATUS
EFIAPI
gUbaDebugProtocolGuid =(
  VOID
);

EFI_STATUS
EFIAPI
Slot Data Update Protocol GUID.(
  VOID
);

EFI_STATUS
EFIAPI
gUbaSlotDataUpdateProtocolGuid =(
  VOID
);

EFI_STATUS
EFIAPI
Slot Config GUID 1 (maps to 40-byte PSLT).(
  VOID
);

EFI_STATUS
EFIAPI
gSlotConfigGuid40 =(
  VOID
);

EFI_STATUS
EFIAPI
Slot Config GUID 2 (maps to 32-byte PSLT).(
  VOID
);

EFI_STATUS
EFIAPI
gSlotConfigGuid32 =(
  VOID
);

EFI_STATUS
EFIAPI
List GUID (defined in MdePkg).(
  VOID
);

EFI_STATUS
EFIAPI
= {0x7739F24C, 0x93D7, 0x11D4, {0x9A, 0x3A, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D}}(
  VOID
);

EFI_STATUS
EFIAPI
gEfiHobListGuid =(
  VOID
);

EFI_STATUS
EFIAPI
Variables(
  VOID
);

EFI_STATUS
EFIAPI
*gSystemTable       = NULL;(
  VOID
);

EFI_STATUS
EFIAPI
UBA debug protocol pointer (for ASSERT output).(
  VOID
);

EFI_STATUS
EFIAPI
*gUbaDebugProtocol = NULL;(
  VOID
);

EFI_STATUS
EFIAPI
HOB list pointer.(
  VOID
);

EFI_STATUS
EFIAPI
*gHobList          = NULL;(
  VOID
);

EFI_STATUS
EFIAPI
data: Platform Slot Table (PSLT) entries(
  VOID
);

EFI_STATUS
EFIAPI
entry 1 (40 bytes): Dual-slot configuration.(
  VOID
);

EFI_STATUS
EFIAPI
= 0x4B0 -> SlotDataAccessor1(
  VOID
);

EFI_STATUS
EFIAPI
= 0x4B4 -> SlotDataAccessor2(
  VOID
);

EFI_STATUS
EFIAPI
UINT64  mSlotConfig40[] = {(
  VOID
);

EFI_STATUS
EFIAPI
entry 2 (32 bytes): Single-slot configuration.(
  VOID
);

EFI_STATUS
EFIAPI
UINT64  mSlotConfig32[] = {(
  VOID
);

EFI_STATUS
EFIAPI
Prototypes (forward declarations)(
  VOID
);

EFI_STATUS
EFIAPI
*LocateDebugProtocol     (VOID);(
  VOID
);

EFI_STATUS
EFIAPI
Data Accessor Functions (referenced by PSLT entries)(
  VOID
);

EFI_STATUS
EFIAPI
Functions(
  VOID
);

EFI_STATUS
EFIAPI
Debug Protocol Support(
  VOID
);

EFI_STATUS
EFIAPI
TPL to HIGH_LEVEL to serialize access during protocol lookup.(
  VOID
);

EFI_STATUS
EFIAPI
= gBootServices->RaiseTPL (TPL_HIGH_LEVEL);(
  VOID
);

EFI_STATUS
EFIAPI
the UBA debug protocol for assertion output.(
  VOID
);

EFI_STATUS
EFIAPI
= gBootServices->LocateProtocol ((
  VOID
);

EFI_STATUS
EFIAPI
the assertion function at protocol + 0x08 (index 1).(
  VOID
);

EFI_STATUS
EFIAPI
List Support(
  VOID
);

EFI_STATUS
EFIAPI
early if there are no configuration table entries.(
  VOID
);

EFI_STATUS
EFIAPI
(gSystemTable->NumberOfTableEntries == 0) {(
  VOID
);

EFI_STATUS
EFIAPI
through configuration table entries to find gEfiHobListGuid.(
  VOID
);

EFI_STATUS
EFIAPI
(Index = 0; Index < gSystemTable->NumberOfTableEntries; Index++) {(
  VOID
);

EFI_STATUS
EFIAPI
the HOB list - cache and return the pointer.(
  VOID
);

EFI_STATUS
EFIAPI
= Entry->VendorTable;(
  VOID
);

EFI_STATUS
EFIAPI
list not found - report error and assert.(
  VOID
);

EFI_STATUS
EFIAPI
((DEBUG_ERROR, "\nASSERT_EFI_ERROR (Status = %r)\n", EFI_NOT_FOUND));(
  VOID
);

EFI_STATUS
EFIAPI
Detection & Slot Data Initialization(
  VOID
);

EFI_STATUS
EFIAPI
current NMI state and select CMOS register 0x4B.(
  VOID
);

EFI_STATUS
EFIAPI
0x4B holds platform configuration data.(
  VOID
);

EFI_STATUS
EFIAPI
= IoRead8 (0x70);(
  VOID
);

EFI_STATUS
EFIAPI
special CMOS values:(
  VOID
);

EFI_STATUS
EFIAPI
(CmosValue > 3) {(
  VOID
);

EFI_STATUS
EFIAPI
hardware strap from fixed MMIO address.(
  VOID
);

EFI_STATUS
EFIAPI
1 selects platform type; OR with 1 for default.(
  VOID
);

EFI_STATUS
EFIAPI
= (MmioRead32 (0xFDAF0490) & 2) | 1;(
  VOID
);

EFI_STATUS
EFIAPI
CMOS value to platform type flags:(
  VOID
);

EFI_STATUS
EFIAPI
1 -> Flag | 0x00000004(
  VOID
);

EFI_STATUS
EFIAPI
-> Flag | 0x00000006(
  VOID
);

EFI_STATUS
EFIAPI
((CmosValue - 1) <= 0xFD) {(
  VOID
);

EFI_STATUS
EFIAPI
to UBA protocol slot data init handler (index 0 = first function pointer).(
  VOID
);

EFI_STATUS
EFIAPI
protocol's first function handles platform-specific init dispatch:(
  VOID
);

EFI_STATUS
EFIAPI
= ((UINTN (EFIAPI *)(UINTN, CHAR8 *, UINTN))((
  VOID
);

EFI_STATUS
EFIAPI
Point(
  VOID
);

EFI_STATUS
EFIAPI
global EFI handles.(
  VOID
);

EFI_STATUS
EFIAPI
= ImageHandle;(
  VOID
);

EFI_STATUS
EFIAPI
input parameters (uses UBA assert for output).(
  VOID
);

EFI_STATUS
EFIAPI
(ImageHandle != NULL);(
  VOID
);

EFI_STATUS
EFIAPI
the HOB list from the system table configuration table.(
  VOID
);

EFI_STATUS
EFIAPI
();(
  VOID
);

EFI_STATUS
EFIAPI
platform detection and slot data initialization(
  VOID
);

EFI_STATUS
EFIAPI
the UBA framework. This checks CMOS register 0x4B(
  VOID
);

EFI_STATUS
EFIAPI
dispatches to the appropriate platform type handler.(
  VOID
);

EFI_STATUS
EFIAPI
(0x80000000, "UBA:SlotDataUpdate-TypeNeonCityEPECB\n");(
  VOID
);

EFI_STATUS
EFIAPI
the UBA slot data update protocol.(
  VOID
);

EFI_STATUS
EFIAPI
= 0;(
  VOID
);

EFI_STATUS
EFIAPI
32-byte slot configuration (single slot, referenced by gSlotConfigGuid32).(
  VOID
);

EFI_STATUS
EFIAPI
= ((EFI_STATUS (EFIAPI *)(VOID *, EFI_GUID *, VOID *, UINTN))((
  VOID
);

EFI_STATUS
EFIAPI
40-byte slot configuration (dual slot, referenced by gSlotConfigGuid40).(
  VOID
);

#endif /* __SLOTDATAUPDATEDXENEONCITYEPECB_H__ */