| /** @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 <Protocol/PciIo.h> | |
| #include <Library/PciCapLib.h> | |
| /** | |
| 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__ |