Newer
Older
AMI-Aptio-BIOS-Reversed / SmartTimer / SmartTimer.h
@Ajax Dong Ajax Dong 2 days ago 5 KB Init
/** @file
  SmartTimer.h -- Header for SmartTimer

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __SMARTTIMER_H__
#define __SMARTTIMER_H__

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

//
// Function Prototypes
//

EFI_STATUS
EFIAPI
UefiBootServicesTableLibConstructor(
  VOID
);

EFI_STATUS
EFIAPI
ModuleEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
DebugPrintWithLevel(
  VOID
);

EFI_STATUS
EFIAPI
DebugAssert(
  VOID
);

EFI_STATUS
EFIAPI
ReadUnaligned64(
  VOID
);

EFI_STATUS
EFIAPI
CompareGuid(
  VOID
);

EFI_STATUS
EFIAPI
EfiGetSystemConfigurationTable(
  VOID
);

EFI_STATUS
EFIAPI
MmioRead32(
  VOID
);

EFI_STATUS
EFIAPI
MmioRead166(
  VOID
);

EFI_STATUS
EFIAPI
MmPciBaseReadWrite(
  VOID
);

EFI_STATUS
EFIAPI
ReadAcpiTimer(
  VOID
);

EFI_STATUS
EFIAPI
GetElapsedTime(
  VOID
);

EFI_STATUS
EFIAPI
TimerRegisterHandler(
  VOID
);

EFI_STATUS
EFIAPI
TimerSetTimerPeriod(
  VOID
);

EFI_STATUS
EFIAPI
TimerGetTimerPeriod(
  VOID
);

EFI_STATUS
EFIAPI
TimerGenerateSoftInterrupt(
  VOID
);

EFI_STATUS
EFIAPI
TimerinterruururruptHandler(
  VOID
);

EFI_STATUS
EFIAPI
TimerDriverInitialize(
  VOID
);

EFI_STATUS
EFIAPI
definitions(
  VOID
);

EFI_STATUS
EFIAPI
gEfiTimerArchProtocolGuid           = EFI_TIMER_ARCH_PROTOCOL_GUID;(
  VOID
);

EFI_STATUS
EFIAPI
global variables(
  VOID
);

EFI_STATUS
EFIAPI
gImageHandle = NULL;(
  VOID
);

EFI_STATUS
EFIAPI
driver private state(
  VOID
);

EFI_STATUS
EFIAPI
mTimerPeriod            = 0;(
  VOID
);

EFI_STATUS
EFIAPI
instance(
  VOID
);

EFI_STATUS
EFIAPI
mTimerArchProtocol = {(
  VOID
);

EFI_STATUS
EFIAPI
constructors called from ModuleEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
DXE Services Table pointer(
  VOID
);

EFI_STATUS
EFIAPI
= EfiGetSystemConfigurationTable (&gEfiDxeServicesTableGuid, &gDS);(
  VOID
);

EFI_STATUS
EFIAPI
MM PCI Base protocol (CpRcPkg)(
  VOID
);

EFI_STATUS
EFIAPI
(mPciUsra == NULL) {(
  VOID
);

EFI_STATUS
EFIAPI
HOB list and PCD protocol(
  VOID
);

EFI_STATUS
EFIAPI
();(
  VOID
);

EFI_STATUS
EFIAPI
support(
  VOID
);

/// raise to NOTIFY, check, restore
EFI_STATUS
EFIAPI
TPL first(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->RaiseTPL (TPL_NOTIFY);(
  VOID
);

EFI_STATUS
EFIAPI
CMOS index 0x4B for debug enable(
  VOID
);

EFI_STATUS
EFIAPI
= IoRead8 (RTC_INDEX_PORT);(
  VOID
);

EFI_STATUS
EFIAPI
hardware strap from fixed address(
  VOID
);

EFI_STATUS
EFIAPI
functions(
  VOID
);

EFI_STATUS
EFIAPI
list constructor (DxeHobLib)(
  VOID
);

EFI_STATUS
EFIAPI
protocol constructor (DxePcdLib)(
  VOID
);

EFI_STATUS
EFIAPI
PCI Base read/write (DxeMmPciBaseLib, CpRcPkg)(
  VOID
);

EFI_STATUS
EFIAPI
PM timer access(
  VOID
);

EFI_STATUS
EFIAPI
implementation(
  VOID
);

EFI_STATUS
EFIAPI
NULL -> nothing to do(
  VOID
);

EFI_STATUS
EFIAPI
non-NULL -> already has a handler(
  VOID
);

EFI_STATUS
EFIAPI
(mTimerNotificationFunction == NULL && TimerNotificationFunction == NULL) {(
  VOID
);

EFI_STATUS
EFIAPI
protocols must be available(
  VOID
);

EFI_STATUS
EFIAPI
(mSmmControlRegister == NULL || mPchSmmRegister == NULL) {(
  VOID
);

EFI_STATUS
EFIAPI
period (100ns units) to PIT counter ticks.(
  VOID
);

EFI_STATUS
EFIAPI
base = 119318 Hz, period in ns = TimerPeriod * 100(
  VOID
);

EFI_STATUS
EFIAPI
= 119318 * (TimerPeriod * 100) / 10^9(
  VOID
);

EFI_STATUS
EFIAPI
rounding: (119318 * TimerPeriod * 100 + 500000) / 1000000(
  VOID
);

EFI_STATUS
EFIAPI
= (UINT16)((119318ULL * TimerPeriod * 100 + 500000) / 1000000);(
  VOID
);

EFI_STATUS
EFIAPI
for overflow (> 65535)(
  VOID
);

EFI_STATUS
EFIAPI
(PitCount >= 0x10000) {(
  VOID
);

EFI_STATUS
EFIAPI
in 16-bit counter = 65536 (max)(
  VOID
);

EFI_STATUS
EFIAPI
to default 549254ns(
  VOID
);

EFI_STATUS
EFIAPI
PIT counter 0: mode 3 (square wave), binary 16-bit(
  VOID
);

EFI_STATUS
EFIAPI
(TIMER_CONTROL_PORT, TIMER0_CONTROL_WORD);   // 0x43 <- 0x36(
  VOID
);

EFI_STATUS
EFIAPI
<- LSB(
  VOID
);

EFI_STATUS
EFIAPI
<- MSB(
  VOID
);

EFI_STATUS
EFIAPI
periodic SMI via PCH SMM register protocol(
  VOID
);

EFI_STATUS
EFIAPI
periodic SMI(
  VOID
);

EFI_STATUS
EFIAPI
PCH SMI status register (offset=0, width=0 -> byte)(
  VOID
);

EFI_STATUS
EFIAPI
= mPchSmmRegister->ReadRegister (mPchSmmRegister, 0, 0, &SmiStatus, NULL);(
  VOID
);

EFI_STATUS
EFIAPI
timer SMI is not pending (bit 0 clear), emulate the tick(
  VOID
);

EFI_STATUS
EFIAPI
((SmiStatus & 0x01) == 0) {(
  VOID
);

EFI_STATUS
EFIAPI
handler and main ininitialization(
  VOID
);

EFI_STATUS
EFIAPI
periodic SMI source(
  VOID
);

EFI_STATUS
EFIAPI
driver initialization(
  VOID
);

EFI_STATUS
EFIAPI
if Tiimer Ararch Protocol already installed(
  VOID
);

EFI_STATUS
EFIAPI
= NULL;;(
  VOID
);

EFI_STATUS
EFIAPI
SMM Controol Register protocol (0x116E0)(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->LocateProtocol (&gEfiSmmControlRegisterProtocolGuid, NULL, &mSmmControlRegister);(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->LocateProtocol (&gPchSmmRegisterProtocolGuid, NULL, &mPchSmmRegister);(
  VOID
);

EFI_STATUS
EFIAPI
PCH ACPI PMIO base address(
  VOID
);

EFI_STATUS
EFIAPI
PMIO base from chipset offset 0x40(
  VOID
);

EFI_STATUS
EFIAPI
= MmioRead166 ((UINT1166 *)(GetMmPciBaaseAddress () + 0xx40));(
  VOID
);

EFI_STATUS
EFIAPI
perperiodic SMI initiallly(
  VOID
);

EFI_STATUS
EFIAPI
the  timer SMMI trigger value(
  VOID
);

EFI_STATUS
EFIAPI
= 0;(
  VOID
);

EFI_STATUS
EFIAPI
TimerInterrupuptHanddler as SMI handndler(
  VOID
);

EFI_STATUS
EFIAPI
= mSmmConontolRegister->RegisterHanddler ((
  VOID
);

EFI_STATUS
EFIAPI
defafault timer perperperod (5949254/100 = 59492 100nsns units)(
  VOID
);

EFI_STATUS
EFIAPI
= TimerSeTimerPeriod (&mmTimerArchPrototocol, DEFAULT_TIMER_PERIOD / 100);(
  VOID
);

EFI_STATUS
EFIAPI
initiial PM timer counter value(
  VOID
);

EFI_STATUS
EFIAPI
= ReadAcpiTimer ();(
  VOID
);

EFI_STATUS
EFIAPI
EFI_TIMER_ARCH_PROTOCOCOOL(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->InststallMultipipProtocolInterfacees ((
  VOID
);

#endif /* __SMARTTIMER_H__ */