/** @file
  SmmPciRbIo.h -- Header for SmmPciRbIo

  Source: DEBUG_VS2015\X64\AmiModulePkg\PCI\SmmPciRbIo\DEBUG
  Build: HR6N0XMLK DEBUG_VS2015 X64

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __SMMPCIRBIO_H__
#define __SMMPCIRBIO_H__

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

//
// Function Prototypes
//

///
/// ModuleEntryPoint -- UEFI entry point / initialization function
///
EFI_STATUS
EFIAPI
ModuleEntryPoint(
  EFI_HANDLE  ImageHandle,
  EFI_SYSTEM_TABLE *SystemTable
);

///
/// SMM/UEFI library bootstrap constructor.
///
EFI_STATUS
EFIAPI
SmmPciRbIoLibraryConstructor(
  EFI_HANDLE ImageHandle
);

///
/// Core PCI root bridge I/O initialization entry.
///
EFI_STATUS
EFIAPI
SmmPciRbIoInitialize(
  EFI_HANDLE ImageHandle,
  EFI_SYSTEM_TABLE *SystemTable
);

///
/// Library destructor for SMM PCI RbIo cleanup.
///
EFI_STATUS
EFIAPI
SmmPciRbIoLibraryDestructor(
  VOID *Context
);

///
/// Module unload callback used for teardown/unregister.
///
EFI_STATUS
EFIAPI
SmmPciRbIoUnload(
  VOID *Context,
  INTN   ExitStatus
);

///
/// AutoGen assertion fallback helper.
///
EFI_STATUS
EFIAPI
SmmPciRbIoAssertionFailure(
  CHAR8  *File,
  UINTN  Line,
  CHAR8  *Expression
);

///
/// Early PCI configuration-space enumeration gate.
///
EFI_STATUS
EFIAPI
SmmPciRbIoNeedsInitialization(
  VOID *Context
);

///
/// Failure-path handler.
///
EFI_STATUS
EFIAPI
SmmPciRbIoFailurePath(
  VOID
);

#endif /* __SMMPCIRBIO_H__ */
