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

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __ATAPASSTHRU_H__
#define __ATAPASSTHRU_H__

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

//
// Function Prototypes
//

EFI_STATUS
EFIAPI
ModuleEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruInit(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruDriverBindingStart(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruDriverBindingStop(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruFindDevice(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruEnumeratePorts(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruReadDeviceStatus(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruSendCommand(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruGetNextPort(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruGetNextDevice(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruBuildDevicePath(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruGetDeviceFromPath(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruResetPort(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruResetDevice(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruReportAssert(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruReadDebugCmos(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruCompareHobGuid(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThruReadUnaligned64(
  VOID
);

EFI_STATUS
EFIAPI
CpuidWrapper(
  VOID
);

EFI_STATUS
EFIAPI
generated decompilation for AtaPassThru.efi(
  VOID
);

EFI_STATUS
EFIAPI
AMI UEFI BIOS ATA Pass Thru Protocol driver(
  VOID
);

EFI_STATUS
EFIAPI
driver implements the UEFI EFI_ATA_PASS_THRU_PROTOCOL on ATA/SATA(
  VOID
);

EFI_STATUS
EFIAPI
detected by the SATA controller driver (SataController.efi).(
  VOID
);

EFI_STATUS
EFIAPI
provides register-level ATA command passthrough to upper-layer drivers(
  VOID
);

EFI_STATUS
EFIAPI
AtaBusDxe.(
  VOID
);

EFI_STATUS
EFIAPI
State(
  VOID
);

EFI_STATUS
EFIAPI
//=============================================================================(
  VOID
);

EFI_STATUS
EFIAPI
declarations of internal helpers(
  VOID
);

EFI_STATUS
EFIAPI
(0x370)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_41C, 0x41C)(
  VOID
);

EFI_STATUS
EFIAPI
16-byte private registration protocol structure(
  VOID
);

EFI_STATUS
EFIAPI
0 = Initialize callback (AtaPassThruDriverBindingStart)(
  VOID
);

EFI_STATUS
EFIAPI
1 = Unload callback (AtaPassThruDriverBindingStop)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_4FC, 0x4FC)(
  VOID
);

EFI_STATUS
EFIAPI
Ctl->Reserved    = 0;  // Attributes(
  VOID
);

EFI_STATUS
EFIAPI
port/device context tracking(
  VOID
);

EFI_STATUS
EFIAPI
+228 = current port, +230 = current device(
  VOID
);

EFI_STATUS
EFIAPI
(sub_730, 0x730)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_79C, 0x79C)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_7D4, 0x7D4)(
  VOID
);

EFI_STATUS
EFIAPI
child handle linked list at controller protocol + 88(
  VOID
);

EFI_STATUS
EFIAPI
child type == 4 (ATA channel) at offset -909(
  VOID
);

EFI_STATUS
EFIAPI
(sub_854, 0x854)(
  VOID
);

EFI_STATUS
EFIAPI
/ AltStatus(
  VOID
);

EFI_STATUS
EFIAPI
StatusBuffer[12] = *(UINT8 *)(DevInfoBase + 76);  // DeviceControl(
  VOID
);

EFI_STATUS
EFIAPI
StatusBuffer[8]  = *(UINT8 *)(DevInfoBase + 72);  // LbaHigh(
  VOID
);

EFI_STATUS
EFIAPI
StatusBuffer[9]  = *(UINT8 *)(DevInfoBase + 73);  // (unused)(
  VOID
);

EFI_STATUS
EFIAPI
StatusBuffer[10] = *(UINT8 *)(DevInfoBase + 74);  // (unused)(
  VOID
);

EFI_STATUS
EFIAPI
/ Error(
  VOID
);

EFI_STATUS
EFIAPI
(sub_960, 0x960)(
  VOID
);

EFI_STATUS
EFIAPI
buffer alignment(
  VOID
);

EFI_STATUS
EFIAPI
child device for non-blocking mode(
  VOID
);

EFI_STATUS
EFIAPI
4K sector (IDENTIFY word 247)(
  VOID
);

EFI_STATUS
EFIAPI
transfer lengths from bytes to blocks(
  VOID
);

EFI_STATUS
EFIAPI
transfer: 256 sectors, or 65536 for 48-bit LBA(
  VOID
);

EFI_STATUS
EFIAPI
ACB from Asb register block(
  VOID
);

EFI_STATUS
EFIAPI
layout used by this driver:(
  VOID
);

EFI_STATUS
EFIAPI
Acb[5]  = Asb[5];    // SectorCount(
  VOID
);

EFI_STATUS
EFIAPI
Acb[7]  = Asb[7];    // CylinderLow(
  VOID
);

EFI_STATUS
EFIAPI
Acb[12] = Asb[2];    // SectorCountExp from Asb[2](
  VOID
);

EFI_STATUS
EFIAPI
// Timeout conversion (100ns -> 1ms)(
  VOID
);

EFI_STATUS
EFIAPI
register block construction(
  VOID
);

EFI_STATUS
EFIAPI
48-bit LBA commands by checking Asb[2](
  VOID
);

EFI_STATUS
EFIAPI
register command (48-bit LBA)(
  VOID
);

EFI_STATUS
EFIAPI
bit(
  VOID
);

EFI_STATUS
EFIAPI
by protocol type (command register [48])(
  VOID
);

EFI_STATUS
EFIAPI
pointer table at DeviceInterface:(
  VOID
);

EFI_STATUS
EFIAPI
Non-Data(
  VOID
);

EFI_STATUS
EFIAPI
Software Reset(
  VOID
);

EFI_STATUS
EFIAPI
PIO Data-Out(
  VOID
);

EFI_STATUS
EFIAPI
PIO Data-In(
  VOID
);

EFI_STATUS
EFIAPI
PIO Data-Out (alternate)(
  VOID
);

EFI_STATUS
EFIAPI
IDENTIFY(
  VOID
);

EFI_STATUS
EFIAPI
Packet / FPDMA(
  VOID
);

EFI_STATUS
EFIAPI
Non-Data (alt path - Set Features)(
  VOID
);

EFI_STATUS
EFIAPI
Read Status(
  VOID
);

EFI_STATUS
EFIAPI
DMA (alt path)(
  VOID
);

EFI_STATUS
EFIAPI
Device Reset (read status to clear)(
  VOID
);

EFI_STATUS
EFIAPI
register status after command(
  VOID
);

EFI_STATUS
EFIAPI
(sub_D88, 0xD88)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_E5C, 0xE5C)(
  VOID
);

EFI_STATUS
EFIAPI
of device list(
  VOID
);

EFI_STATUS
EFIAPI
for device matching port with higher port multiplier(
  VOID
);

EFI_STATUS
EFIAPI
(sub_F88, 0xF88)(
  VOID
);

EFI_STATUS
EFIAPI
IDENTIFY data descriptor list (device + 856)(
  VOID
);

EFI_STATUS
EFIAPI
ATA target descriptor: copy type+length(
  VOID
);

EFI_STATUS
EFIAPI
with port/multiplier info(
  VOID
);

EFI_STATUS
EFIAPI
(sub_10A0, 0x10A0)(
  VOID
);

EFI_STATUS
EFIAPI
channels use ATAPI device path (type=3, submode=18, length=10)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_1128, 0x1128)(
  VOID
);

EFI_STATUS
EFIAPI
device vtable + 200 (25*8) with NonData reset signature(
  VOID
);

EFI_STATUS
EFIAPI
(sub_1188, 0x1188)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_12A8, 0x12A8)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_11E0, 0x11E0)(
  VOID
);

EFI_STATUS
EFIAPI
TPL: GetTimerValue(31), if > 0x10 return NULL(
  VOID
);

EFI_STATUS
EFIAPI
pattern is AMI-specific for lazy debug protocol init(
  VOID
);

EFI_STATUS
EFIAPI
(sub_12E8, 0x12E8)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_13C0, 0x13C0)(
  VOID
);

EFI_STATUS
EFIAPI
NMI, select reg 0x4B(
  VOID
);

EFI_STATUS
EFIAPI
platform config from fixed address(
  VOID
);

EFI_STATUS
EFIAPI
debug level (1 or 2+)(
  VOID
);

EFI_STATUS
EFIAPI
debug level mask(
  VOID
);

EFI_STATUS
EFIAPI
1 -> 0x80000004 (EFI_D_ERROR in AMI convention)(
  VOID
);

EFI_STATUS
EFIAPI
2+ -> 0x80000006 (EFI_D_INFO | EFI_D_ERROR in AMI convention)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_1410, 0x1410)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_1480, 0x1480)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_14B0, 0x14B0)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_14F0, 0x14F0)(
  VOID
);

EFI_STATUS
EFIAPI
32-bit repeating pattern from low 16 bits(
  VOID
);

EFI_STATUS
EFIAPI
unaligned head(
  VOID
);

EFI_STATUS
EFIAPI
aligned portion with 32-bit pattern(
  VOID
);

EFI_STATUS
EFIAPI
bytes(
  VOID
);

EFI_STATUS
EFIAPI
(sub_1550, 0x1550) - overlapping-safe memmove(
  VOID
);

EFI_STATUS
EFIAPI
backward overlap: src < dst and src+count > dst(
  VOID
);

EFI_STATUS
EFIAPI
path for aligned >= 8 byte copy(
  VOID
);

EFI_STATUS
EFIAPI
source/dest alignment for head(
  VOID
);

EFI_STATUS
EFIAPI
copy alignment fixup(
  VOID
);

EFI_STATUS
EFIAPI
8-byte chunks(
  VOID
);

EFI_STATUS
EFIAPI
AtaPassThru.c(
  VOID
);

#endif /* __ATAPASSTHRU_H__ */