/** @file Library class layered on top of PciCapLib that allows clients to plug an EFI_PCI_IO_PROTOCOL backend into PciCapLib, for config space access. Copyright (C) 2018, Red Hat, Inc. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __PCI_CAP_PCI_IO_LIB_H__ #define __PCI_CAP_PCI_IO_LIB_H__ #include #include /** Create a PCI_CAP_DEV object from an EFI_PCI_IO_PROTOCOL instance. The config space accessors are based upon EFI_PCI_IO_PROTOCOL.Pci.Read() and EFI_PCI_IO_PROTOCOL.Pci.Write(). @param[in] PciIo EFI_PCI_IO_PROTOCOL representation of the PCI device. @param[out] PciDevice The PCI_CAP_DEV object constructed as described above. PciDevice can be passed to the PciCapLib APIs. @retval EFI_SUCCESS PciDevice has been constructed and output. @retval EFI_OUT_OF_RESOURCES Memory allocation failed. **/ EFI_STATUS EFIAPI PciCapPciIoDeviceInit ( IN EFI_PCI_IO_PROTOCOL *PciIo, OUT PCI_CAP_DEV **PciDevice ); /** Free the resources used by PciDevice. @param[in] PciDevice The PCI_CAP_DEV object to free, originally produced by PciCapPciIoDeviceInit(). **/ VOID EFIAPI PciCapPciIoDeviceUninit ( IN PCI_CAP_DEV *PciDevice ); #endif // __PCI_CAP_PCI_IO_LIB_H__