Newer
Older
AMI-Aptio-BIOS-Reversed / MdeModulePkg / Bus / Scsi / ScsiDiskDxe / ScsiDisk.h
@Ajax Dong Ajax Dong 2 days ago 10 KB Full restructure
/** @file
  ScsiDisk.h -- Header for ScsiDisk

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __SCSIDISK_H__
#define __SCSIDISK_H__

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

//
// Function Prototypes
//

EFI_STATUS
EFIAPI
ScsiDiskReadSectors(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskWriteSectors(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskReadCapacity(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskParseCapacityData(
  VOID
);

EFI_STATUS
EFIAPI
ModuleEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskDriverEntry(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskDriverBindingSupported(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskDriverBindingStart(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskDriverBindingStop(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskReset(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskReadBlocks(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskWriteBlocks(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskFlushBlocks(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskDiskIoReset(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskDiskIoRead(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskDiskIoWrite(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskDiskIoFlush(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskDetectMedia(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskInquiryDevice(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskTestUnitReady(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskParseSenseData(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskRequestSense(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskIsHostAdapterError(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskIsTargetError(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskRetryCommand(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskUnmap(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskEraseBlocks(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskAsyncUnmapNotification(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskAsyncUnmapTimer(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskCreateDeviceNode(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskFreeDeviceMemory(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskRegisterExitBootServices(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskExitBootServicesCallback(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskIsDeviceRemovable(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskIsNeedEraseBlock(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskIsEraseBlockProtocolInstalled(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskComponentNameGetDriverName(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskComponentNameGetControllerName(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskExecuteScsiCommand(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskExecuteTestUnitReady(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskExecuteRequestSense(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskExecuteInquiry(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskExecuteInquiry16(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskExecuteReadCapacity10(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskExecuteReadCapacity16(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskIsListEmpty(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskInitializeListHead(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskInsertTailList(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskRemoveEntryList(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskSwapBytes16(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskSwapBytes32(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskSwapBytes64(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskReadUnaligned64(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskGetAlignmentFromMask(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskIsAlignedPointer(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskFreePool(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskSafeFreePoolWithCheck(
  VOID
);

EFI_STATUS
EFIAPI
data (from .data section, 0x88A0-0x8AA0)(
  VOID
);

EFI_STATUS
EFIAPI
gImageHandle     = NULL;    // 0x8A70(
  VOID
);

EFI_STATUS
EFIAPI
EFI_BOOT_SERVICES      *gBS              = NULL;    // 0x8A68(
  VOID
);

EFI_STATUS
EFIAPI
//(
  VOID
);

EFI_STATUS
EFIAPI
Name tables (in .data at 0x8A10-0x8A58)(
  VOID
);

EFI_STATUS
EFIAPI
EFI_UNICODE_STRING_TABLE  mScsiDiskDriverNameTable[] = {(
  VOID
);

EFI_STATUS
EFIAPI
instance (at 0x88C0 in .data)(
  VOID
);

EFI_STATUS
EFIAPI
EFI_DRIVER_BINDING_PROTOCOL  gScsiDiskDriverBinding = {(
  VOID
);

EFI_STATUS
EFIAPI
instance (at 0x88E0 in .data)(
  VOID
);

EFI_STATUS
EFIAPI
EFI_COMPONENT_NAME2_PROTOCOL  gScsiDiskComponentName2 = {(
  VOID
);

EFI_STATUS
EFIAPI
instance (at 0x8900 in .data)(
  VOID
);

EFI_STATUS
EFIAPI
EFI_DRIVER_CONFIGURATION_PROTOCOL  gScsiDiskDriverConfiguration = {(
  VOID
);

EFI_STATUS
EFIAPI
definitions(
  VOID
);

EFI_STATUS
EFIAPI
gEfiScsiIoProtocolGuid              = SCSI_DISK_SCSI_IO_GUID;(
  VOID
);

EFI_STATUS
EFIAPI
declarations of local helper functions(
  VOID
);

EFI_STATUS
EFIAPI
EFI_STATUS(
  VOID
);

EFI_STATUS
EFIAPI
Entry Point(
  VOID
);

EFI_STATUS
EFIAPI
EFIAPI(
  VOID
);

EFI_STATUS
EFIAPI
by _ModuleEntryPoint thunk(
  VOID
);

EFI_STATUS
EFIAPI
Binding Protocol(
  VOID
);

EFI_STATUS
EFIAPI
zero-initialized device structure (0x390 bytes)(
  VOID
);

EFI_STATUS
EFIAPI
= (SCSI_DISK_DEVICE *)gBS->AllocateZeroPool (SCSI_DISK_DEVICE_SIZE);(
  VOID
);

EFI_STATUS
EFIAPI
SCSI I/O protocol on the controller handle(
  VOID
);

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

EFI_STATUS
EFIAPI
loop for media detection(
  VOID
);

EFI_STATUS
EFIAPI
(Retry = 0; Retry < 3; Retry++) {(
  VOID
);

/// still create device node, just with no media
EFI_STATUS
EFIAPI
media present(
  VOID
);

EFI_STATUS
EFIAPI
up Block I/O protocol function pointers (inlined in structure)(
  VOID
);

EFI_STATUS
EFIAPI
up Disk I/O protocol function pointers (inlined in structure)(
  VOID
);

EFI_STATUS
EFIAPI
in media descriptor(
  VOID
);

EFI_STATUS
EFIAPI
Block I/O and Disk I/O protocols on the controller handle(
  VOID
);

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

EFI_STATUS
EFIAPI
I/O Protocol(
  VOID
);

EFI_STATUS
EFIAPI
intermediate buffer for block-aligned read(
  VOID
);

EFI_STATUS
EFIAPI
= ((OffsetInBlock + BufferSize + BlockSize - 1) / BlockSize) * BlockSize;(
  VOID
);

EFI_STATUS
EFIAPI
SCSI Command Functions(
  VOID
);

EFI_STATUS
EFIAPI
(0x88): 16-byte CDB(
  VOID
);

EFI_STATUS
EFIAPI
(0x28): 10-byte CDB(
  VOID
);

EFI_STATUS
EFIAPI
(0x8A): 16-byte CDB(
  VOID
);

EFI_STATUS
EFIAPI
(0x2A): 10-byte CDB(
  VOID
);

EFI_STATUS
EFIAPI
Detection and Sense Processing(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskDetectMedia ((
  VOID
);

EFI_STATUS
EFIAPI
1: TEST UNIT READY(
  VOID
);

EFI_STATUS
EFIAPI
= ScsiDiskTestUnitReady (Device, &RetrySupported, &SenseData, &SenseDataLength);(
  VOID
);

/// parse sense to determine cause
EFI_STATUS
EFIAPI
failed(
  VOID
);

EFI_STATUS
EFIAPI
(ScsiDiskParseSenseData (Device, SenseData, SenseDataLength, &Result)) {(
  VOID
);

EFI_STATUS
EFIAPI
2: If media appears present, read capacity(
  VOID
);

EFI_STATUS
EFIAPI
(Device->MediaPresentFlag) {(
  VOID
);

EFI_STATUS
EFIAPI
INQUIRY (36 bytes)(
  VOID
);

EFI_STATUS
EFIAPI
= 36;(
  VOID
);

EFI_STATUS
EFIAPI
if VPD pages are supported (byte 3, bit 4)(
  VOID
);

EFI_STATUS
EFIAPI
(InquiryData[3] & 0x10) {(
  VOID
);

EFI_STATUS
EFIAPI
VPD page list (page 0x00)(
  VOID
);

EFI_STATUS
EFIAPI
= VPD_MAX_PAGE_LENGTH;(
  VOID
);

EFI_STATUS
EFIAPI
for page 0xB0 (Block Limits / thin provisioning)(
  VOID
);

EFI_STATUS
EFIAPI
(Index = 4; Index < VpdLength; Index++) {(
  VOID
);

EFI_STATUS
EFIAPI
VPD page 0xB0(
  VOID
);

EFI_STATUS
EFIAPI
= VPD_BLOCK_LIMITS_LEN;(
  VOID
);

/// request sense
EFI_STATUS
EFIAPI
CONDITION(
  VOID
);

EFI_STATUS
EFIAPI
= ScsiDiskRequestSense (Device, RetrySupported, SenseData, SenseDataLength);(
  VOID
);

EFI_STATUS
EFIAPI
format sense data:(
  VOID
);

EFI_STATUS
EFIAPI
0:  Valid (bit 7) | Response code(
  VOID
);

EFI_STATUS
EFIAPI
2:  Sense key (bits 0-3)(
  VOID
);

EFI_STATUS
EFIAPI
12: ASC(
  VOID
);

EFI_STATUS
EFIAPI
13: ASCQ(
  VOID
);

EFI_STATUS
EFIAPI
= Sense[2] & 0x0F;(
  VOID
);

EFI_STATUS
EFIAPI
READY + MEDIUM NOT PRESENT = no media(
  VOID
);

EFI_STATUS
EFIAPI
(SenseKey == SCSI_SENSE_NOT_READY && Asc == SCSI_ASC_MEDIUM_NOT_PRESENT) {(
  VOID
);

EFI_STATUS
EFIAPI
ATTENTION + MEDIUM CHANGED = media change(
  VOID
);

EFI_STATUS
EFIAPI
(SenseKey == SCSI_SENSE_UNIT_ATTENTION && Asc == SCSI_ASC_MEDIUM_CHANGED) {(
  VOID
);

EFI_STATUS
EFIAPI
ATTENTION + RESET = bus reset detected(
  VOID
);

EFI_STATUS
EFIAPI
(SenseKey == SCSI_SENSE_UNIT_ATTENTION && Asc == SCSI_ASC_UNIT_ATTENTION_RESET) {(
  VOID
);

EFI_STATUS
EFIAPI
error(
  VOID
);

EFI_STATUS
EFIAPI
READ CAPACITY (10) first(
  VOID
);

EFI_STATUS
EFIAPI
= 8;(
  VOID
);

EFI_STATUS
EFIAPI
back to READ CAPACITY (16)(
  VOID
);

EFI_STATUS
EFIAPI
= 32;(
  VOID
);

EFI_STATUS
EFIAPI
CAPACITY (16): bytes 0-7 = returned LBA, bytes 8-11 = block size(
  VOID
);

EFI_STATUS
EFIAPI
= ((UINT64)Data[0] << 56) |(
  VOID
);

EFI_STATUS
EFIAPI
CAPACITY (10): bytes 0-3 = returned LBA, bytes 4-7 = block size(
  VOID
);

EFI_STATUS
EFIAPI
= ((UINT32)Data[0] << 24) |(
  VOID
);

EFI_STATUS
EFIAPI
Handling(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskIsHostAdapterError ((
  VOID
);

EFI_STATUS
EFIAPI
case 0x02:  // EFI_EXT_SCSI_STATUS_HOST_ADAPTER_SELECTION_FAIL(
  VOID
);

EFI_STATUS
EFIAPI
case 0x02:  // EFI_EXT_SCSI_STATUS_TARGET_CHECK_CONDITION(
  VOID
);

EFI_STATUS
EFIAPI
/ Erase Block(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskUnmap ((
  VOID
);

EFI_STATUS
EFIAPI
UNMAP parameter list(
  VOID
);

EFI_STATUS
EFIAPI
= 24;(
  VOID
);

EFI_STATUS
EFIAPI
(8 bytes)(
  VOID
);

EFI_STATUS
EFIAPI
length(
  VOID
);

EFI_STATUS
EFIAPI
descriptor data length(
  VOID
);

EFI_STATUS
EFIAPI
descriptor (16 bytes): LBA + block count(
  VOID
);

EFI_STATUS
EFIAPI
UNMAP CDB (10 bytes)(
  VOID
);

EFI_STATUS
EFIAPI
UNMAP Notification(
  VOID
);

EFI_STATUS
EFIAPI
completion by signaling the event(
  VOID
);

EFI_STATUS
EFIAPI
pending notifications(
  VOID
);

EFI_STATUS
EFIAPI
(!ScsiDiskIsListEmpty (&Device->AsyncUnmapQueue)) {(
  VOID
);

EFI_STATUS
EFIAPI
Node Lifecycle(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskCreateDeviceNode ((
  VOID
);

EFI_STATUS
EFIAPI
pending async UNMAP notifications(
  VOID
);

EFI_STATUS
EFIAPI
= Device->AsyncUnmapQueue.ForwardLink;(
  VOID
);

EFI_STATUS
EFIAPI
pending async queue before OS takes over(
  VOID
);

EFI_STATUS
EFIAPI
Capability Checks(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskIsDeviceRemovable ((
  VOID
);

EFI_STATUS
EFIAPI
removable bit in INQUIRY data byte 1, bit 7(
  VOID
);

EFI_STATUS
EFIAPI
(Device->InquiryDataType & 0x80) ? TRUE : FALSE;(
  VOID
);

EFI_STATUS
EFIAPI
Name Protocol(
  VOID
);

EFI_STATUS
EFIAPI
Command Execution Helpers(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskExecuteScsiCommand ((
  VOID
);

EFI_STATUS
EFIAPI
= 1(
  VOID
);

EFI_STATUS
EFIAPI
Import Wrappers (statically linked replacements)(
  VOID
);

EFI_STATUS
EFIAPI
ScsiDiskIsListEmpty ((
  VOID
);

EFI_STATUS
EFIAPI
for safe-free logic(
  VOID
);

#endif /* __SCSIDISK_H__ */