/** @file
SataController.h -- Header for SataController
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __SATACONTROLLER_H__
#define __SATACONTROLLER_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
SataGetDeviceCount(
VOID
);
EFI_STATUS
EFIAPI
SataGetDevice(
VOID
);
EFI_STATUS
EFIAPI
SataIdentifyDevice(
VOID
);
EFI_STATUS
EFIAPI
SataModifyDevice(
VOID
);
EFI_STATUS
EFIAPI
SataSubmitAsyncCommand(
VOID
);
EFI_STATUS
EFIAPI
SataStopDevice(
VOID
);
EFI_STATUS
EFIAPI
SataCalculateBestPioMode(
VOID
);
EFI_STATUS
EFIAPI
PchGetPchSeries(
VOID
);
EFI_STATUS
EFIAPI
S3BootScriptLibInit(
VOID
);
EFI_STATUS
EFIAPI
S3BootScriptEventNotify(
VOID
);
EFI_STATUS
EFIAPI
S3BootScriptFinalize(
VOID
);
EFI_STATUS
EFIAPI
S3ReadyToLockNotify(
VOID
);
EFI_STATUS
EFIAPI
S3BootScriptCloseEvent(
VOID
);
EFI_STATUS
EFIAPI
S3BootScriptCloseNotify(
VOID
);
EFI_STATUS
EFIAPI
SaveBootScriptDataToLockBox(
VOID
);
EFI_STATUS
EFIAPI
SmmLockBoxSave(
VOID
);
EFI_STATUS
EFIAPI
SmmLockBoxSetAttributes(
VOID
);
EFI_STATUS
EFIAPI
SmmLockBoxRestore(
VOID
);
EFI_STATUS
EFIAPI
S3BootScriptLibDeinit(
VOID
);
EFI_STATUS
EFIAPI
SataComponentNameGetDriverName(
VOID
);
EFI_STATUS
EFIAPI
SataComponentNameGetControllerName(
VOID
);
EFI_STATUS
EFIAPI
LookupStringTable(
VOID
);
EFI_STATUS
EFIAPI
implementation(
VOID
);
EFI_STATUS
EFIAPI
result buffer for caller(
VOID
);
EFI_STATUS
EFIAPI
= AllocatePool (sizeof (EFI_IDE_CHANNEL_INFO));(
VOID
);
EFI_STATUS
EFIAPI
best PIO mode(
VOID
);
EFI_STATUS
EFIAPI
= 0;(
VOID
);
EFI_STATUS
EFIAPI
valid(
VOID
);
EFI_STATUS
EFIAPI
invalid(
VOID
);
EFI_STATUS
EFIAPI
DMA capability(
VOID
);
EFI_STATUS
EFIAPI
(SataPrivateData->DeviceIdentifyData[Channel][106] & 4) {(
VOID
);
EFI_STATUS
EFIAPI
supports DMA - calculate best DMA mode(
VOID
);
EFI_STATUS
EFIAPI
DmaMode = 0;(
VOID
);
EFI_STATUS
EFIAPI
DMA(
VOID
);
EFI_STATUS
EFIAPI
Mode Calculation(
VOID
);
EFI_STATUS
EFIAPI
103: IORDY support and mode info(
VOID
);
EFI_STATUS
EFIAPI
= IdentifyData->Field103;(
VOID
);
EFI_STATUS
EFIAPI
IORDY - use PIO mode 0-2 only(
VOID
);
EFI_STATUS
EFIAPI
= Field103;(
VOID
);
EFI_STATUS
EFIAPI
supported - determine PIO mode 0-4(
VOID
);
EFI_STATUS
EFIAPI
PIO mode from timing(
VOID
);
EFI_STATUS
EFIAPI
(PioModeBits <= 0x78) {(
VOID
);
EFI_STATUS
EFIAPI
Series Detection(
VOID
);
EFI_STATUS
EFIAPI
if device ID falls in SPT range (0x9D00-0x9D3F with mask 0xFF70)(
VOID
);
EFI_STATUS
EFIAPI
(((LpcDeviceId + 24128) & 0xFF70) != 0) {(
VOID
);
EFI_STATUS
EFIAPI
CNP range(
VOID
);
EFI_STATUS
EFIAPI
((UINT16)(LpcDeviceId + 25280) <= 8) {(
VOID
);
EFI_STATUS
EFIAPI
Point(
VOID
);
EFI_STATUS
EFIAPI
Boot Script Library(
VOID
);
EFI_STATUS
EFIAPI
EfiReservedMemory for boot script context(
VOID
);
EFI_STATUS
EFIAPI
= GetPcdDbProtocol ();(
VOID
);
EFI_STATUS
EFIAPI
SMM protocol(
VOID
);
EFI_STATUS
EFIAPI
= gBS->LocateProtocol (&gEfiSmmBase2ProtocolGuid, NULL, &gSmst);(
VOID
);
EFI_STATUS
EFIAPI
S3 boot script close notification(
VOID
);
EFI_STATUS
EFIAPI
= gBS->CreateEvent ((
VOID
);
EFI_STATUS
EFIAPI
= gBS->RegisterProtocolNotify ((
VOID
);
EFI_STATUS
EFIAPI
Boot Script Event Notify Callbacks(
VOID
);
EFI_STATUS
EFIAPI
SMM - check if already saved(
VOID
);
EFI_STATUS
EFIAPI
(gBootScriptContext != NULL && !gBootScriptContext->FlagSaved) {(
VOID
);
EFI_STATUS
EFIAPI
Boot Script Data save to LockBox(
VOID
);
EFI_STATUS
EFIAPI
1: Save boot script context to lockbox(
VOID
);
EFI_STATUS
EFIAPI
= SmmLockBoxSave (&gBootScriptFinalGuid(
VOID
);
EFI_STATUS
EFIAPI
2: Get memory map(
VOID
);
EFI_STATUS
EFIAPI
3: Allocate memory ranges structure(
VOID
);
EFI_STATUS
EFIAPI
= (EFI_PHYSICAL_ADDRESS)(UINTN)-1;(
VOID
);
EFI_STATUS
EFIAPI
ranges that are not MMIO(
VOID
);
EFI_STATUS
EFIAPI
(Index = 0; Index < MemoryMapSize / MapDescriptorSize; Index++) {(
VOID
);
EFI_STATUS
EFIAPI
memory ranges buffer(
VOID
);
EFI_STATUS
EFIAPI
= MemoryRanges->NumberOfMemoryRanges * sizeof (MEMORY_RANGE_ENTRY);(
VOID
);
EFI_STATUS
EFIAPI
4: Fill memory ranges(
VOID
);
EFI_STATUS
EFIAPI
5: Save memory ranges to lockbox(
VOID
);
EFI_STATUS
EFIAPI
= SmmLockBoxSave (&gBootScriptFinalGuid, MemoryRanges(
VOID
);
EFI_STATUS
EFIAPI
LockBox Wrappers(
VOID
);
EFI_STATUS
EFIAPI
*(UINT32 *)(CommBuffer + 24) = 1; // Function: Save(
VOID
);
EFI_STATUS
EFIAPI
CopyMem (CommBuffer + 40, Guid, 16);(
VOID
);
EFI_STATUS
EFIAPI
DxeSmmReadyToLock event(
VOID
);
EFI_STATUS
EFIAPI
(gDxeSmmReadyToLockEvent != NULL) {(
VOID
);
EFI_STATUS
EFIAPI
notifies(
VOID
);
EFI_STATUS
EFIAPI
(gSmst != NULL) {(
VOID
);
EFI_STATUS
EFIAPI
boot script buffer(
VOID
);
EFI_STATUS
EFIAPI
(gBootScriptAllocated && gBootScriptContext != NULL) {(
VOID
);
EFI_STATUS
EFIAPI
SMM allocated buffer(
VOID
);
EFI_STATUS
EFIAPI
(gSmstAllocated && gSmst != NULL) {(
VOID
);
EFI_STATUS
EFIAPI
Name Protocol(
VOID
);
EFI_STATUS
EFIAPI
the controller is managed by this driver(
VOID
);
EFI_STATUS
EFIAPI
Status;(
VOID
);
EFI_STATUS
EFIAPI
PCI IO - return unsupported(
VOID
);
EFI_STATUS
EFIAPI
(Status != EFI_UNSUPPORTED) {(
VOID
);
EFI_STATUS
EFIAPI
Table Lookup(
VOID
);
EFI_STATUS
EFIAPI
4646 language tags: compare 3-byte prefix(
VOID
);
EFI_STATUS
EFIAPI
(ReadUint24 ((UINT32 *)Lang) == ReadUint24 ((UINT32 *)SupportedLanguages)) {(
VOID
);
EFI_STATUS
EFIAPI
639-2: split by ';', compare each(
VOID
);
EFI_STATUS
EFIAPI
to next language token(
VOID
);
EFI_STATUS
EFIAPI
+= TokenLen;(
VOID
);
EFI_STATUS
EFIAPI
entry token with language(
VOID
);
EFI_STATUS
EFIAPI
*StrTok = *Entry;(
VOID
);
EFI_STATUS
EFIAPI
semicolons(
VOID
);
#endif /* __SATACONTROLLER_H__ */