Newer
Older
AMI-Aptio-BIOS-Reversed / AmiIpmiPkg / Ipmi / DxeIpmiUsb / DxeIpmiUsb.h
@Ajax Dong Ajax Dong 2 days ago 9 KB Full restructure
/** @file
  DxeIpmiUsb.h -- Header for DxeIpmiUsb

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __DXEIPMIUSB_H__
#define __DXEIPMIUSB_H__

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

//
// Function Prototypes
//

EFI_STATUS
EFIAPI
ReadTimeStampCounter(
  VOID
);

EFI_STATUS
EFIAPI
ReadEflags(
  VOID
);

EFI_STATUS
EFIAPI
CpuPause(
  VOID
);

EFI_STATUS
EFIAPI
EnableInterrupts(
  VOID
);

EFI_STATUS
EFIAPI
DisableInterrupts(
  VOID
);

EFI_STATUS
EFIAPI
DebugPrint(
  VOID
);

EFI_STATUS
EFIAPI
AssertHandler(
  VOID
);

EFI_STATUS
EFIAPI
GetPcdBool(
  VOID
);

EFI_STATUS
EFIAPI
PciExpressMmioAddress(
  VOID
);

EFI_STATUS
EFIAPI
IoRead32(
  VOID
);

EFI_STATUS
EFIAPI
IoWrite16(
  VOID
);

EFI_STATUS
EFIAPI
MicrosecondDelay(
  VOID
);

EFI_STATUS
EFIAPI
ReadUnaligned64(
  VOID
);

EFI_STATUS
EFIAPI
MatchSioGuid(
  VOID
);

EFI_STATUS
EFIAPI
UsbClearEndpointHalt(
  VOID
);

EFI_STATUS
EFIAPI
SendIpmiUsbControlReport(
  VOID
);

EFI_STATUS
EFIAPI
IpmiUsbSendCommand(
  VOID
);

EFI_STATUS
EFIAPI
IpmiUsbReceiveResponse(
  VOID
);

EFI_STATUS
EFIAPI
IpmiUsbSelfTest(
  VOID
);

EFI_STATUS
EFIAPI
ReportSmmEvent(
  VOID
);

EFI_STATUS
EFIAPI
ConfigureIpmiUsbEndpoints(
  VOID
);

EFI_STATUS
EFIAPI
IpmiUsbSupported(
  VOID
);

EFI_STATUS
EFIAPI
IpmiUsbStart(
  VOID
);

EFI_STATUS
EFIAPI
IpmiUsbStop(
  VOID
);

EFI_STATUS
EFIAPI
DxeIpmiUsbEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
IpmiusbUsbIoProtocolNotify(
  VOID
);

EFI_STATUS
EFIAPI
variable definitions(
  VOID
);

EFI_STATUS
EFIAPI
gImageHandle              = NULL;(
  VOID
);

EFI_STATUS
EFIAPI
PCD_PROTOCOL                     *mPcdProtocol               = NULL; // qword_1FF8(
  VOID
);

EFI_STATUS
EFIAPI
STATIC VOID                             *mHobList                   = NULL; // qword_2008(
  VOID
);

EFI_STATUS
EFIAPI
//(
  VOID
);

EFI_STATUS
EFIAPI
IPMI USB device instance pointer(
  VOID
);

EFI_STATUS
EFIAPI
IPMI_USB_DEVICE                  *mIpmiDevice                = NULL; // qword_1FB8(
  VOID
);

EFI_STATUS
EFIAPI
device descriptor fields and transfer tracking(
  VOID
);

EFI_STATUS
EFIAPI
UINT16                           mUsbBcdDevice               = 0;    // word_1FC8(
  VOID
);

EFI_STATUS
EFIAPI
STATIC UINT8                            mTransferInProgress         = 0;    // byte_1FD0(
  VOID
);

EFI_STATUS
EFIAPI
Memory Operation Helpers (wrappers around BaseLib)(
  VOID
);

EFI_STATUS
EFIAPI
/ Platform Helpers(
  VOID
);

EFI_STATUS
EFIAPI
/ Debug Helpers(
  VOID
);

EFI_STATUS
EFIAPI
by the ASSERT() macro when the test expression is FALSE.(
  VOID
);

EFI_STATUS
EFIAPI
Protocol Helper(
  VOID
);

EFI_STATUS
EFIAPI
Express MMIO Access(
  VOID
);

EFI_STATUS
EFIAPI
I/O and Timer Helpers(
  VOID
);

EFI_STATUS
EFIAPI
into whole milliseconds (each ~0x400000 TSC ticks)(
  VOID
);

EFI_STATUS
EFIAPI
a remainder.(
  VOID
);

EFI_STATUS
EFIAPI
= Microseconds >> 22;(
  VOID
);

EFI_STATUS
EFIAPI
1-ms chunk on subsequent iterations(
  VOID
);

EFI_STATUS
EFIAPI
(Hand-Off Block) List Helpers(
  VOID
);

EFI_STATUS
EFIAPI
the SIO GUID for comparison.(
  VOID
);

EFI_STATUS
EFIAPI
= ReadUnaligned64 ((VOID *)(UINTN)&gEfiSioProtocolGuid);(
  VOID
);

EFI_STATUS
EFIAPI
Endpoint Reset(
  VOID
);

EFI_STATUS
EFIAPI
UsbIo->UsbControlTransfer with the ClearFeature(ENDPOINT_HALT)(
  VOID
);

EFI_STATUS
EFIAPI
request (bmRequestType = 0x02, bRequest = 0x01(
  VOID
);

EFI_STATUS
EFIAPI
= 0x00, wIndex = Endpoint).(
  VOID
);

EFI_STATUS
EFIAPI
is a standard USB device request sent via the default pipe.(
  VOID
);

/// call UsbIo->UsbControlTransfer
EFI_STATUS
EFIAPI
EFI_UNSUPPORTED; // Placeholder(
  VOID
);

EFI_STATUS
EFIAPI
Transfer / IPMI Command Send and Response Receive(
  VOID
);

EFI_STATUS
EFIAPI
1: Send the report via control transfer.(
  VOID
);

EFI_STATUS
EFIAPI
UsbIo->UsbControlTransfer ((
  VOID
);

EFI_STATUS
EFIAPI
-- built internally by UsbIo(
  VOID
);

EFI_STATUS
EFIAPI
the IPMI request data into the device's data buffer.(
  VOID
);

EFI_STATUS
EFIAPI
(Device->DataBuffer, Buffer, BufferSize);(
  VOID
);

EFI_STATUS
EFIAPI
the sequence number.(
  VOID
);

EFI_STATUS
EFIAPI
via USB interrupt OUT endpoint (or control endpoint depending on(
  VOID
);

EFI_STATUS
EFIAPI
specific report type).(
  VOID
);

EFI_STATUS
EFIAPI
(ReportId == USB_ENDPOINT_INTERRUPT) {(
  VOID
);

EFI_STATUS
EFIAPI
OUT transfer for streaming data.(
  VOID
);

EFI_STATUS
EFIAPI
TransferSize = BufferSize;(
  VOID
);

EFI_STATUS
EFIAPI
the control endpoint with SET_REPORT.(
  VOID
);

EFI_STATUS
EFIAPI
= SendIpmiUsbControlReport ((
  VOID
);

EFI_STATUS
EFIAPI
from the interrupt IN endpoint.(
  VOID
);

EFI_STATUS
EFIAPI
UsbIo->UsbInterruptTransfer ((
  VOID
);

EFI_STATUS
EFIAPI
USB Self-Test(
  VOID
);

EFI_STATUS
EFIAPI
up the IPMI Get Device ID command parameters.(
  VOID
);

EFI_STATUS
EFIAPI
device's NetFunction field is set to NetFn Application (0x06).(
  VOID
);

EFI_STATUS
EFIAPI
LUN is 0x00.(
  VOID
);

EFI_STATUS
EFIAPI
= 0;(
  VOID
);

EFI_STATUS
EFIAPI
the command.(
  VOID
);

EFI_STATUS
EFIAPI
SendCommand with the Get Device ID command.(
  VOID
);

EFI_STATUS
EFIAPI
= Device->SendIpmiCommand ((
  VOID
);

EFI_STATUS
EFIAPI
for the control endpoint(
  VOID
);

EFI_STATUS
EFIAPI
&BmcStatus(
  VOID
);

EFI_STATUS
EFIAPI
the response.(
  VOID
);

EFI_STATUS
EFIAPI
= Device->ReceiveIpmiResponse ((
  VOID
);

EFI_STATUS
EFIAPI
the self-test result from the first byte of the response.(
  VOID
);

EFI_STATUS
EFIAPI
= Self-test passed successfully(
  VOID
);

EFI_STATUS
EFIAPI
= Self-test completed with errors(
  VOID
);

EFI_STATUS
EFIAPI
= Self-test in progress(
  VOID
);

EFI_STATUS
EFIAPI
= Device not ready / self-test not implemented(
  VOID
);

EFI_STATUS
EFIAPI
= Device->DataBuffer[0];(
  VOID
);

EFI_STATUS
EFIAPI
code < 0x55: self-test passed.(
  VOID
);

EFI_STATUS
EFIAPI
Communication (Reporting Events to SMM)(
  VOID
);

EFI_STATUS
EFIAPI
via SMM with a platform-specific command.(
  VOID
);

EFI_STATUS
EFIAPI
Endpoint Configuration Discovery(
  VOID
);

EFI_STATUS
EFIAPI
the interface's endpoints and store the addresses.(
  VOID
);

EFI_STATUS
EFIAPI
EFI_SUCCESS;(
  VOID
);

EFI_STATUS
EFIAPI
Binding Protocol Implementation(
  VOID
);

EFI_STATUS
EFIAPI
USB IO protocol BY_DRIVER.(
  VOID
);

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

EFI_STATUS
EFIAPI
the interface descriptor.(
  VOID
);

EFI_STATUS
EFIAPI
= sizeof (IfcDesc);(
  VOID
);

EFI_STATUS
EFIAPI
bInterfaceClass, bInterfaceSubClass, bInterfaceProtocol.(
  VOID
);

EFI_STATUS
EFIAPI
IPMI USB: class=0xFF, subclass=0x01, protocol=0x86.(
  VOID
);

EFI_STATUS
EFIAPI
((IfcDesc[5] == IPMI_USB_INTERFACE_CLASS) &&(
  VOID
);

EFI_STATUS
EFIAPI
USB IO protocol.(
  VOID
);

EFI_STATUS
EFIAPI
the IPMI_USB_DEVICE (size 32834 = 0x8042 bytes).(
  VOID
);

EFI_STATUS
EFIAPI
= (IPMI_USB_DEVICE *)AllocateZeroPool (sizeof (IPMI_USB_DEVICE));(
  VOID
);

EFI_STATUS
EFIAPI
the device structure.(
  VOID
);

EFI_STATUS
EFIAPI
the interface descriptor to discover endpoints.(
  VOID
);

EFI_STATUS
EFIAPI
the endpoint addresses (stored at NetFunction and Lun fields)(
  VOID
);

EFI_STATUS
EFIAPI
the interface descriptor's endpoint addresses.(
  VOID
);

EFI_STATUS
EFIAPI
first endpoint is typically Interrupt IN (bit 7 set).(
  VOID
);

EFI_STATUS
EFIAPI
second endpoint is typically Interrupt OUT (bit 7 clear).(
  VOID
);

EFI_STATUS
EFIAPI
- would iterate endpoints(
  VOID
);

EFI_STATUS
EFIAPI
pointers for subsequent use.(
  VOID
);

EFI_STATUS
EFIAPI
= Device;(
  VOID
);

EFI_STATUS
EFIAPI
self-test.(
  VOID
);

EFI_STATUS
EFIAPI
= IpmiUsbSelfTest (Device);(
  VOID
);

EFI_STATUS
EFIAPI
the self-test set the state to failed, return error.(
  VOID
);

EFI_STATUS
EFIAPI
(Device->CompletionCode == IPMI_USB_STATE_FAILED) {(
  VOID
);

EFI_STATUS
EFIAPI
the protocol interface.(
  VOID
);

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

EFI_STATUS
EFIAPI
Binding Protocol instance(
  VOID
);

EFI_STATUS
EFIAPI
EFI_DRIVER_BINDING_PROTOCOL  mDriverBinding = {(
  VOID
);

EFI_STATUS
EFIAPI
Entry Point(
  VOID
);

EFI_STATUS
EFIAPI
initialization.(
  VOID
);

EFI_STATUS
EFIAPI
= ImageHandle;(
  VOID
);

EFI_STATUS
EFIAPI
the HOB list pointer.(
  VOID
);

EFI_STATUS
EFIAPI
(SystemTable);(
  VOID
);

EFI_STATUS
EFIAPI
PCI Express MMIO base address from PCD (token 5).(
  VOID
);

EFI_STATUS
EFIAPI
= GetPcdBool (5);(
  VOID
);

EFI_STATUS
EFIAPI
PCIe MMIO config in the chipset.(
  VOID
);

EFI_STATUS
EFIAPI
0x500 to the PCI Express config register at address 1024064(
  VOID
);

EFI_STATUS
EFIAPI
that enables MMIO-based PCI config access).(
  VOID
);

EFI_STATUS
EFIAPI
(GetPcdBool (1024068) >= 0) {(
  VOID
);

EFI_STATUS
EFIAPI
the enable bit in the PCD.(
  VOID
);

EFI_STATUS
EFIAPI
(1024068) |= 0x80;(
  VOID
);

EFI_STATUS
EFIAPI
if interrupts were enabled before we enter our delay loop.(
  VOID
);

EFI_STATUS
EFIAPI
(ReadEflags () & 0x200) {(
  VOID
);

EFI_STATUS
EFIAPI
were enabled. Calibrate a TSC-based delay.(
  VOID
);

EFI_STATUS
EFIAPI
= ReadTimeStampCounter () & 0xFFFFFF;(
  VOID
);

EFI_STATUS
EFIAPI
waiting for 357 TSC ticks (~1 us at 357 MHz TSC).(
  VOID
);

EFI_STATUS
EFIAPI
(((TscStart + 357 - (IoRead32 (0x508) & 0xFFFFFF)) & 0x800000) == 0) {(
  VOID
);

EFI_STATUS
EFIAPI
up the Driver Binding Protocol.(
  VOID
);

EFI_STATUS
EFIAPI
the Driver Binding Protocol.(
  VOID
);

EFI_STATUS
EFIAPI
protocol notification to bind existing USB IO handles.(
  VOID
);

EFI_STATUS
EFIAPI
((
  VOID
);

EFI_STATUS
EFIAPI
callback is invoked each time a USB IO protocol is registered.(
  VOID
);

EFI_STATUS
EFIAPI
actual binding happens through the UEFI Driver Binding Protocol(
  VOID
);

EFI_STATUS
EFIAPI
calls IpmiUsbSupported() and IpmiUsbStart() as USB IO handles(
  VOID
);

EFI_STATUS
EFIAPI
enumerated.(
  VOID
);

#endif /* __DXEIPMIUSB_H__ */