/** @file
ScsiBus.h -- Header for ScsiBus
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __SCSIBUS_H__
#define __SCSIBUS_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
InternalAssertBreakpoint(
VOID
);
EFI_STATUS
EFIAPI
ScsiBusEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
ScsiBusDriverBindingEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
InitializeHobList(
VOID
);
EFI_STATUS
EFIAPI
ScsiBusDriverBindingSupported(
VOID
);
EFI_STATUS
EFIAPI
ScsiBusDriverBindingStart(
VOID
);
EFI_STATUS
EFIAPI
ScsiBusDriverBindingStop(
VOID
);
EFI_STATUS
EFIAPI
ScsiScanCreateDevice(
VOID
);
EFI_STATUS
EFIAPI
ScsiInquiryDevice(
VOID
);
EFI_STATUS
EFIAPI
CopyDevicePathNode(
VOID
);
EFI_STATUS
EFIAPI
ScsiIoGetDeviceType(
VOID
);
EFI_STATUS
EFIAPI
ScsiIoGetDeviceLocation(
VOID
);
EFI_STATUS
EFIAPI
ScsiIoResetBus(
VOID
);
EFI_STATUS
EFIAPI
ScsiIoResetDevice(
VOID
);
EFI_STATUS
EFIAPI
ScsiIoExecuteScsiCommand(
VOID
);
EFI_STATUS
EFIAPI
ScsiBusComponentNameGetDriverName(
VOID
);
EFI_STATUS
EFIAPI
ScsiBusComponentNameGetControllerName(
VOID
);
EFI_STATUS
EFIAPI
ScsiBusDebugAssert(
VOID
);
EFI_STATUS
EFIAPI
ScsiBusZeroMem(
VOID
);
EFI_STATUS
EFIAPI
FreePool(
VOID
);
EFI_STATUS
EFIAPI
AsciiStrLen(
VOID
);
EFI_STATUS
EFIAPI
ReportStatusCodeWithDevicePath(
VOID
);
EFI_STATUS
EFIAPI
ReadUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
WriteUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
CompareUnaligned24(
VOID
);
EFI_STATUS
EFIAPI
AsciiStrLenSafe(
VOID
);
EFI_STATUS
EFIAPI
CopyGuid(
VOID
);
EFI_STATUS
EFIAPI
CompareGuid(
VOID
);
EFI_STATUS
EFIAPI
IsDevicePathEnd(
VOID
);
EFI_STATUS
EFIAPI
GetDevicePathSize(
VOID
);
EFI_STATUS
EFIAPI
from HR650X BIOS, IDA port 13338, ScsiBus.efi(
VOID
);
EFI_STATUS
EFIAPI
MD5: 7936aa1e7ccfbeea8cd5fb39b8e95fe3(
VOID
);
EFI_STATUS
EFIAPI
size: 0x37C0 bytes, 53 functions total(
VOID
);
EFI_STATUS
EFIAPI
range: 0x2C0 - 0x2856(
VOID
);
EFI_STATUS
EFIAPI
is a UEFI Driver Binding protocol implementation for SCSI bus(
VOID
);
EFI_STATUS
EFIAPI
on a controller handle, enumerates SCSI(
VOID
);
EFI_STATUS
EFIAPI
and LUNs via INQUIRY, and produces EFI_SCSI_IO_PROTOCOL on child(
VOID
);
EFI_STATUS
EFIAPI
for each discovered device.(
VOID
);
EFI_STATUS
EFIAPI
structures:(
VOID
);
EFI_STATUS
EFIAPI
(0x30 bytes, signature 'scsi') - per-controller state(
VOID
);
EFI_STATUS
EFIAPI
(0x88 bytes, signature 'scio') - per-child/LUN state(
VOID
);
EFI_STATUS
EFIAPI
DEFINITIONS(
VOID
);
EFI_STATUS
EFIAPI
VARIABLES(
VOID
);
EFI_STATUS
EFIAPI
INSTANCES(
VOID
);
EFI_STATUS
EFIAPI
DECLARATIONS FOR INTERNAL HELPERS(
VOID
);
EFI_STATUS
EFIAPI
ENTRY POINT (sub_384 @ 0x384)(
VOID
);
EFI_STATUS
EFIAPI
HOB list (call to sub_2228)(
VOID
);
EFI_STATUS
EFIAPI
the binary, sub_2228 initializes gHobList from the system table(
VOID
);
EFI_STATUS
EFIAPI
table entries by scanning for gEfiHobListGuid.(
VOID
);
EFI_STATUS
EFIAPI
protocols(
VOID
);
EFI_STATUS
EFIAPI
BINDING ENTRY POINT (sub_43C @ 0x43C)(
VOID
);
EFI_STATUS
EFIAPI
LIST INITIALIZATION (sub_2228 @ 0x2228)(
VOID
);
EFI_STATUS
EFIAPI
BINDING: Supported (sub_5A8 @ 0x5A8)(
VOID
);
EFI_STATUS
EFIAPI
Extended SCSI Pass Thru first(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->OpenProtocol ((
VOID
);
EFI_STATUS
EFIAPI
the RemainingDevicePath(
VOID
);
EFI_STATUS
EFIAPI
= ExtScsiPassThru->GetNextTargetLun ((
VOID
);
EFI_STATUS
EFIAPI
back to legacy SCSI Pass Thru(
VOID
);
EFI_STATUS
EFIAPI
BINDING: Start (sub_744 @ 0x744)(
VOID
);
EFI_STATUS
EFIAPI
parent device path(
VOID
);
EFI_STATUS
EFIAPI
Target Device (0x30 bytes)(
VOID
);
EFI_STATUS
EFIAPI
= (SCSI_TARGET_DEVICE *)AllocateZeroPool (sizeof (SCSI_TARGET_DEVICE));(
VOID
);
EFI_STATUS
EFIAPI
protocol to identify ourselves on the child handle(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->InstallProtocolInterface ((
VOID
);
EFI_STATUS
EFIAPI
RemainingDevicePath specifies a particular child, handle it now(
VOID
);
EFI_STATUS
EFIAPI
(RemainingDevicePath != NULL) {(
VOID
);
EFI_STATUS
EFIAPI
SCSI bus enumeration progress(
VOID
);
EFI_STATUS
EFIAPI
((
VOID
);
EFI_STATUS
EFIAPI
all targets/LUNs on this channel/bus(
VOID
);
EFI_STATUS
EFIAPI
= 0;(
VOID
);
EFI_STATUS
EFIAPI
next target/LUN from the pass-thru protocol(
VOID
);
EFI_STATUS
EFIAPI
(ExtSupported) {(
VOID
);
EFI_STATUS
EFIAPI
if this target/LUN is valid via INQUIRY(
VOID
);
EFI_STATUS
EFIAPI
= ScsiScanCreateDevice ((
VOID
);
EFI_STATUS
EFIAPI
SCSI bus enumeration complete(
VOID
);
EFI_STATUS
EFIAPI
BINDING: Stop (sub_AF4 @ 0xAF4)(
VOID
);
EFI_STATUS
EFIAPI
specific child devices(
VOID
);
EFI_STATUS
EFIAPI
(Index = 0; Index < NumberOfChildren; Index++) {(
VOID
);
EFI_STATUS
EFIAPI
the pass-thru protocol from the child(
VOID
);
EFI_STATUS
EFIAPI
(ScsiIo->DeviceType & 0x80) {(
VOID
);
EFI_STATUS
EFIAPI
mode flag(
VOID
);
EFI_STATUS
EFIAPI
the SCSI IO protocol and device path(
VOID
);
EFI_STATUS
EFIAPI
the private data (0x88 bytes)(
VOID
);
EFI_STATUS
EFIAPI
(ScsiIo);(
VOID
);
EFI_STATUS
EFIAPI
everything (no children specified)(
VOID
);
EFI_STATUS
EFIAPI
all protocols opened for the bus(
VOID
);
EFI_STATUS
EFIAPI
our protocol identifier(
VOID
);
EFI_STATUS
EFIAPI
the SCSI_TARGET_DEVICE (embedded at start of ScsiIo)(
VOID
);
EFI_STATUS
EFIAPI
SCAN CREATE DEVICE (sub_11D8 @ 0x11D8)(
VOID
);
EFI_STATUS
EFIAPI
a SCSI device path node from the TargetId/Lun(
VOID
);
EFI_STATUS
EFIAPI
(TargetDevice->IsExtPassThru) {(
VOID
);
EFI_STATUS
EFIAPI
if a child already exists for this device path(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->LocateDevicePath ((
VOID
);
EFI_STATUS
EFIAPI
already exists(
VOID
);
EFI_STATUS
EFIAPI
SCSI_IO_PRIVATE_DATA (0x88 bytes)(
VOID
);
EFI_STATUS
EFIAPI
= (SCSI_IO_PRIVATE_DATA *)AllocateZeroPool (sizeof (SCSI_IO_PRIVATE_DATA));(
VOID
);
EFI_STATUS
EFIAPI
device path node to the private data's buffer(
VOID
);
EFI_STATUS
EFIAPI
(DevicePathSize > 0 && DevicePathSize <= 16) {(
VOID
);
EFI_STATUS
EFIAPI
PassThru based on mode(
VOID
);
EFI_STATUS
EFIAPI
max target count for legacy mode(
VOID
);
EFI_STATUS
EFIAPI
= TargetDevice->ScsiPassThru->GetNextTarget ((
VOID
);
EFI_STATUS
EFIAPI
SCSI INQUIRY(
VOID
);
EFI_STATUS
EFIAPI
(ScsiInquiryDevice (Private)) {(
VOID
);
EFI_STATUS
EFIAPI
protocol interfaces on the child handle(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->InstallMultipleProtocolInterfaces ((
VOID
);
EFI_STATUS
EFIAPI
protocol from parent to child(
VOID
);
EFI_STATUS
EFIAPI
cleanup(
VOID
);
EFI_STATUS
EFIAPI
(DevicePathNode != NULL) {(
VOID
);
EFI_STATUS
EFIAPI
INQUIRY DEVICE (sub_1438 @ 0x1438)(
VOID
);
EFI_STATUS
EFIAPI
up INQUIRY CDB (6-byte command)(
VOID
);
EFI_STATUS
EFIAPI
seconds(
VOID
);
EFI_STATUS
EFIAPI
via the pass-thru protocol(
VOID
);
EFI_STATUS
EFIAPI
(Private->IsExtPassThru) {(
VOID
);
EFI_STATUS
EFIAPI
peripheral qualifier (bits 7:5 of byte 0)(
VOID
);
EFI_STATUS
EFIAPI
((InquiryData[0] & 0xE0) == 0) {(
VOID
);
EFI_STATUS
EFIAPI
device is not ready, retry(
VOID
);
EFI_STATUS
EFIAPI
(Status != EFI_TIMEOUT && Status != EFI_NOT_READY) {(
VOID
);
EFI_STATUS
EFIAPI
DEVICE PATH NODE (sub_15FC @ 0x15FC)(
VOID
);
EFI_STATUS
EFIAPI
the device path node fields:(
VOID
);
EFI_STATUS
EFIAPI
(Length >= 4) {(
VOID
);
EFI_STATUS
EFIAPI
the device path node to the target buffer(
VOID
);
EFI_STATUS
EFIAPI
(*Target, This + 1, 16);(
VOID
);
EFI_STATUS
EFIAPI
not directly available from ScsiIo protocol(
VOID
);
EFI_STATUS
EFIAPI
function dispatches to the pass-thru protocol's Reset/ResetChannel.(
VOID
);
EFI_STATUS
EFIAPI
the binary, it calls either ScsiPassThru->Reset() or(
VOID
);
EFI_STATUS
EFIAPI
the specific target/LUN, not the whole bus.(
VOID
);
EFI_STATUS
EFIAPI
the device path node data and calls pass-thru reset.(
VOID
);
EFI_STATUS
EFIAPI
through the appropriate pass-thru protocol.(
VOID
);
EFI_STATUS
EFIAPI
binary dispatches via the private data's IsExtPassThru flag.(
VOID
);
EFI_STATUS
EFIAPI
= EFI_UNSUPPORTED;(
VOID
);
EFI_STATUS
EFIAPI
driver does not support per-controller names(
VOID
);
EFI_STATUS
EFIAPI
EFI_UNSUPPORTED;(
VOID
);
EFI_STATUS
EFIAPI
CODE PROTOCOL LOOKUP (sub_181C @ 0x181C)(
VOID
);
EFI_STATUS
EFIAPI
to find via handles(
VOID
);
EFI_STATUS
EFIAPI
ASSERT (sub_1924 @ 0x1924)(
VOID
);
EFI_STATUS
EFIAPI
assertion: break into debugger(
VOID
);
EFI_STATUS
EFIAPI
();(
VOID
);
EFI_STATUS
EFIAPI
MEM (sub_1964 @ 0x1964)(
VOID
);
EFI_STATUS
EFIAPI
+= Length;(
VOID
);
EFI_STATUS
EFIAPI
MEM (sub_1A04 @ 0x1A04)(
VOID
);
EFI_STATUS
EFIAPI
MEM (sub_1A68 @ 0x1A68)(
VOID
);
EFI_STATUS
EFIAPI
ALLOCATION HELPERS(
VOID
);
EFI_STATUS
EFIAPI
UTILITIES(
VOID
);
EFI_STATUS
EFIAPI
STATUS CODE WITH DEVICE PATH (sub_239C @ 0x239C)(
VOID
);
EFI_STATUS
EFIAPI
ACCESS HELPERS (used internally)(
VOID
);
EFI_STATUS
EFIAPI
STRING LENGTH CHECK (from BaseLib)(
VOID
);
EFI_STATUS
EFIAPI
GUID (sub_27A0 @ 0x27A0)(
VOID
);
EFI_STATUS
EFIAPI
GUID (sub_27E8 @ 0x27E8)(
VOID
);
EFI_STATUS
EFIAPI
PATH UTILITIES(
VOID
);
#endif /* __SCSIBUS_H__ */