/** @file
PeiFrb.h -- Header for PeiFrb
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __PEIFRB_H__
#define __PEIFRB_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
ModuleEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
DebugPrint(
VOID
);
EFI_STATUS
EFIAPI
RTC I/O ports and register indices(
VOID
);
EFI_STATUS
EFIAPI
timeout status memory-mapped IO address(
VOID
);
EFI_STATUS
EFIAPI
variable byte offsets(
VOID
);
EFI_STATUS
EFIAPI
enable flag at offset 6 in ServerSetup data(
VOID
);
EFI_STATUS
EFIAPI
multiplier byte at offset 7(
VOID
);
EFI_STATUS
EFIAPI
function table offsets (IA32 flat model)(
VOID
);
EFI_STATUS
EFIAPI
default timeout: 3600 * 100ms = 360 seconds = 6 minutes(
VOID
);
EFI_STATUS
EFIAPI
unit = 100ms(
VOID
);
EFI_STATUS
EFIAPI
FRB configuration structure (6 bytes)(
VOID
);
EFI_STATUS
EFIAPI
struct {(
VOID
);
EFI_STATUS
EFIAPI
external declarations (defined in .data section of the PE32)(
VOID
);
EFI_STATUS
EFIAPI
EFI_GUID gEfiFirmwareVolumeBlock2ProtocolGuid;(
VOID
);
EFI_STATUS
EFIAPI
PPI descriptor (installed before exit)(
VOID
);
EFI_STATUS
EFIAPI
EFI_PEI_PPI_DESCRIPTOR gPeiFrbPpiDescriptor;(
VOID
);
EFI_STATUS
EFIAPI
prototypes(
VOID
);
EFI_STATUS
EFIAPI
EFIAPI(
VOID
);
EFI_STATUS
EFIAPI
the PEI Services revision(
VOID
);
EFI_STATUS
EFIAPI
((*PeiServices)->Hdr.Revision < PEI_SERVICES_REVISION) {(
VOID
);
EFI_STATUS
EFIAPI
FRB config structure: enabled=TRUE, all zeros(
VOID
);
EFI_STATUS
EFIAPI
= TRUE;(
VOID
);
EFI_STATUS
EFIAPI
the AMI PlatformSetup PPI(
VOID
);
EFI_STATUS
EFIAPI
= (*PeiServices)->LocatePpi ((
VOID
);
EFI_STATUS
EFIAPI
FRB setup configuration from ServerSetup NVRAM variable(
VOID
);
EFI_STATUS
EFIAPI
((INT32)SystemTable, &FrbCfg, &FrbEnabled);(
VOID
);
EFI_STATUS
EFIAPI
FRB: set reset type bits to cold reset(
VOID
);
EFI_STATUS
EFIAPI
timeout value from ServerSetup(
VOID
);
EFI_STATUS
EFIAPI
FRB, preserve timeout(
VOID
);
EFI_STATUS
EFIAPI
FRB config to NVRAM via platform setup PPI (SetVariable #36)(
VOID
);
EFI_STATUS
EFIAPI
= 0;(
VOID
);
EFI_STATUS
EFIAPI
the FRB reset-pending variable (SetVariable #34)(
VOID
);
EFI_STATUS
EFIAPI
FRB PPI to notify subsequent PEIMs(
VOID
);
EFI_STATUS
EFIAPI
(*PeiServices)->InstallPpi ((
VOID
);
EFI_STATUS
EFIAPI
not enabled in ServerSetup(
VOID
);
EFI_STATUS
EFIAPI
EFI_INVALID_PARAMETER;(
VOID
);
EFI_STATUS
EFIAPI
Firmware Volume Block 2 protocol to access NVRAM(
VOID
);
EFI_STATUS
EFIAPI
= (*PeiServices)->LocateProtocol ((
VOID
);
EFI_STATUS
EFIAPI
not available: assert and report error(
VOID
);
EFI_STATUS
EFIAPI
(0x80000000, "\nASSERT_EFI_ERROR (Status = %r)\n", Status);(
VOID
);
EFI_STATUS
EFIAPI
ServerSetup variable (expect max 1072 bytes)(
VOID
);
EFI_STATUS
EFIAPI
= 1072;(
VOID
);
EFI_STATUS
EFIAPI
FRB enable flag (byte offset 6 in ServerSetup data)(
VOID
);
EFI_STATUS
EFIAPI
timeout: 10 * byte at offset 7(
VOID
);
EFI_STATUS
EFIAPI
= FRB_TIMEOUT_SCALE * (INT32)*(UINT32 *)&VarData[FRB_VAR_TIMEOUT_BYTE];(
VOID
);
EFI_STATUS
EFIAPI
EFI_PEI_DEBUG2_PPI(
VOID
);
EFI_STATUS
EFIAPI
((*PeiServices)->LocatePpi ((
VOID
);
EFI_STATUS
EFIAPI
print assert if reset type allows it(
VOID
);
EFI_STATUS
EFIAPI
((INT32 (__cdecl *)(INT32, const CHAR8 *, CHAR8 *))Result)((
VOID
);
EFI_STATUS
EFIAPI
bit 7 of CMOS index, set index to Status Register A (0x4A)(
VOID
);
EFI_STATUS
EFIAPI
= IoRead8 (RTC_INDEX_PORT);(
VOID
);
EFI_STATUS
EFIAPI
the reset type value from CMOS data port(
VOID
);
EFI_STATUS
EFIAPI
= IoRead8 (RTC_DATA_PORT);(
VOID
);
EFI_STATUS
EFIAPI
the reset type:(
VOID
);
EFI_STATUS
EFIAPI
= Power-on (cold start)(
VOID
);
EFI_STATUS
EFIAPI
= Warm reset via FRB timeout logic(
VOID
);
EFI_STATUS
EFIAPI
((UINT8)ResetValue <= 3) {(
VOID
);
EFI_STATUS
EFIAPI
interpretation for values 0-3(
VOID
);
EFI_STATUS
EFIAPI
(ResetValue == 0) {(
VOID
);
EFI_STATUS
EFIAPI
= EFI_WARN_RESET_COLD? No, actually this is EFI_WARN_RESET_WARM(
VOID
);
EFI_STATUS
EFIAPI
value: if ResetValue != 1 -> cold reset(
VOID
);
EFI_STATUS
EFIAPI
0x80000004; // FRB reset: warm(
VOID
);
EFI_STATUS
EFIAPI
/ FRB reset: cold(
VOID
);
EFI_STATUS
EFIAPI
= &((CHAR8 *)Source)[Count - 1];(
VOID
);
EFI_STATUS
EFIAPI
= Count & 3;(
VOID
);
#endif /* __PEIFRB_H__ */