/** @file Copyright (c) 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _EFI_PCI_CALLBACK_H #define _EFI_PCI_CALLBACK_H #include #include #include // // Global Id for PCI callback // #define EFI_PCI_CALLBACK_PROTOCOL_GUID \ { \ 0x1ca0e202, 0xfe9e, 0x4776, 0x9f, 0xaa, 0x57, 0xc, 0x19, 0x61, 0x7a, 0x06 \ } typedef struct _EFI_PCI_CALLBACK_PROTOCOL EFI_PCI_CALLBACK_PROTOCOL; typedef enum { EfiPciEnumerationDeviceScanning = 1, EfiPciEnumerationBusNumberAssigned = 2, EfiPciEnumerationResourceAssigned = 4, } EFI_PCI_ENUMERATION_PHASE; typedef struct { PCI_TYPE00 PciHeader; EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo; EFI_CPU_IO2_PROTOCOL *CpuIo; } EFI_PCI_CALLBACK_CONTEXT; typedef VOID (EFIAPI *EFI_PCI_CALLBACK_FUNC) ( IN EFI_HANDLE RootBridgeHandle, IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS PciAddress, IN EFI_PCI_ENUMERATION_PHASE Phase, IN EFI_PCI_CALLBACK_CONTEXT *Context ); typedef EFI_STATUS (EFIAPI *EFI_REGISTER_PCI_CALLBACK) ( IN EFI_PCI_CALLBACK_PROTOCOL *This, IN EFI_PCI_CALLBACK_FUNC Function, IN EFI_PCI_ENUMERATION_PHASE Phase ) /*++ Routine Description: Register a callback during PCI bus enumeration Arguments: This - Protocol instance pointer. Function - Callback function pointer. Phase - PCI enumeration phase. Returns: EFI_SUCCESS - Function has registed successfully EFI_UNSUPPORTED - The function has been regisered EFI_InVALID_PARAMETER - The parameter is incorrect --*/ ; // // Protocol definition // typedef struct _EFI_PCI_CALLBACK_PROTOCOL { EFI_REGISTER_PCI_CALLBACK RegisterPciCallback; } EFI_PCI_CALLBACK_PROTOCOL; extern EFI_GUID gEfiPciCallbackProtocolGuid; #endif