/** @file
DxeFrb.h -- Header for DxeFrb
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __DXEFRB_H__
#define __DXEFRB_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
DebugPrint(
VOID
);
EFI_STATUS
EFIAPI
DebugAssert(
VOID
);
EFI_STATUS
EFIAPI
ReadUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
CompareGuid(
VOID
);
EFI_STATUS
EFIAPI
GetHobList(
VOID
);
EFI_STATUS
EFIAPI
WchgGetState(
VOID
);
EFI_STATUS
EFIAPI
WchgSetTimerValue(
VOID
);
EFI_STATUS
EFIAPI
WchgSetEnableFlags(
VOID
);
EFI_STATUS
EFIAPI
WchgSetActionFlags(
VOID
);
EFI_STATUS
EFIAPI
WchgProgramAndArm(
VOID
);
EFI_STATUS
EFIAPI
WchgReadBackVerify(
VOID
);
EFI_STATUS
EFIAPI
Frb2OpromNotify(
VOID
);
EFI_STATUS
EFIAPI
Frb2PasswordNotify(
VOID
);
EFI_STATUS
EFIAPI
Frb2PasswordDoneNotify(
VOID
);
EFI_STATUS
EFIAPI
Frb2PromptTimeoutNotify(
VOID
);
EFI_STATUS
EFIAPI
Frb2PromptTimeoutDoneNotify(
VOID
);
EFI_STATUS
EFIAPI
ShellEntryNotify(
VOID
);
EFI_STATUS
EFIAPI
ReadyToBootCallback(
VOID
);
EFI_STATUS
EFIAPI
BootPhaseNotify(
VOID
);
EFI_STATUS
EFIAPI
RegisterBootEvent(
VOID
);
EFI_STATUS
EFIAPI
RegisterReadyToBootEvent(
VOID
);
EFI_STATUS
EFIAPI
InitializeHobList(
VOID
);
EFI_STATUS
EFIAPI
FreePool(
VOID
);
EFI_STATUS
EFIAPI
DxeFrbEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
// ============================================================================(
VOID
);
EFI_STATUS
EFIAPI
-- EFI_WATCHDOG_TIMER_ARCH_PROTOCOL(
VOID
);
EFI_STATUS
EFIAPI
-- HOB list pointer(
VOID
);
EFI_STATUS
EFIAPI
-- Allocated driver instance(
VOID
);
EFI_STATUS
EFIAPI
-- WCHG debug protocol(
VOID
);
EFI_STATUS
EFIAPI
BOOLEAN gOsWdtEnabled = FALSE; // byte_1CEB(
VOID
);
EFI_STATUS
EFIAPI
UINT16 gOsWdtTimeout = 600; // n600 (600 * 100ms = 60s)(
VOID
);
EFI_STATUS
EFIAPI
//(
VOID
);
/// 3 timers * 6 bytes each (at 0x2120)
EFI_STATUS
EFIAPI
timer state storage(
VOID
);
EFI_STATUS
EFIAPI
gWchgTimerState[0x30];(
VOID
);
EFI_STATUS
EFIAPI
used by this module(
VOID
);
EFI_STATUS
EFIAPI
gEfiWatchdogTimerArchProtocolGuid = EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID;(
VOID
);
EFI_STATUS
EFIAPI
Helpers(
VOID
);
EFI_STATUS
EFIAPI
CMOS index 0x4B to get current debug level(
VOID
);
EFI_STATUS
EFIAPI
= IoRead8 (0x70);(
VOID
);
EFI_STATUS
EFIAPI
debug level(
VOID
);
EFI_STATUS
EFIAPI
(DebugLevel > 3) {(
VOID
);
EFI_STATUS
EFIAPI
or 3 => ERROR | WARN(
VOID
);
EFI_STATUS
EFIAPI
Hardware Access Layer(
VOID
);
EFI_STATUS
EFIAPI
index (timer state)(
VOID
);
EFI_STATUS
EFIAPI
type: read(
VOID
);
EFI_STATUS
EFIAPI
returned data(
VOID
);
EFI_STATUS
EFIAPI
FRB2 (timer 1), check if this is a cold boot via HOB(
VOID
);
EFI_STATUS
EFIAPI
(TimerIndex == 1) {(
VOID
);
/// skip
EFI_STATUS
EFIAPI
resume(
VOID
);
EFI_STATUS
EFIAPI
WCHG register data(
VOID
);
EFI_STATUS
EFIAPI
= *(UINT16 *)&gWchgTimerState[6 * TimerIndex];(
VOID
);
EFI_STATUS
EFIAPI
of 0 means timer is disabled(
VOID
);
EFI_STATUS
EFIAPI
action mask based on whether this is a full system reset(
VOID
);
EFI_STATUS
EFIAPI
(!ResetSystem) {(
VOID
);
EFI_STATUS
EFIAPI
action(
VOID
);
EFI_STATUS
EFIAPI
WDT action(
VOID
);
EFI_STATUS
EFIAPI
system reset action(
VOID
);
EFI_STATUS
EFIAPI
register data(
VOID
);
EFI_STATUS
EFIAPI
= 6;(
VOID
);
EFI_STATUS
EFIAPI
type: write(
VOID
);
EFI_STATUS
EFIAPI
write to commit/arm(
VOID
);
EFI_STATUS
EFIAPI
= 0;(
VOID
);
EFI_STATUS
EFIAPI
type: commit/arm(
VOID
);
EFI_STATUS
EFIAPI
hardware state(
VOID
);
EFI_STATUS
EFIAPI
= 8;(
VOID
);
/// verify index, sync state
EFI_STATUS
EFIAPI
is running(
VOID
);
EFI_STATUS
EFIAPI
((WchgData[0] & 7) != TimerIndex) {(
VOID
);
/// already disabled
EFI_STATUS
EFIAPI
not running(
VOID
);
EFI_STATUS
EFIAPI
((DEBUG_ERROR, "%a: EfiFrb2 already disabled\n", __FUNCTION__));(
VOID
);
EFI_STATUS
EFIAPI
Phase Notification Handlers(
VOID
);
EFI_STATUS
EFIAPI
Registration Helpers(
VOID
);
EFI_STATUS
EFIAPI
Entry Point(
VOID
);
EFI_STATUS
EFIAPI
= gBS->LocateProtocol ((
VOID
);
EFI_STATUS
EFIAPI
= AllocateZeroPool (sizeof (FRB2_DRIVER));(
VOID
);
EFI_STATUS
EFIAPI
= gBS->InstallProtocolInterface ((
VOID
);
EFI_STATUS
EFIAPI
= sizeof (ServerSetup);(
VOID
);
EFI_STATUS
EFIAPI
when variable not found(
VOID
);
EFI_STATUS
EFIAPI
= TRUE;(
VOID
);
EFI_STATUS
EFIAPI
seconds (600 * 100ms)(
VOID
);
EFI_STATUS
EFIAPI
(gFrb2Enabled) {(
VOID
);
#endif /* __DXEFRB_H__ */