/** @file | |
PCI Rom supporting functions declaration for PCI Bus module. | |
Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef _EFI_PCI_OPTION_ROM_SUPPORT_H_ | |
#define _EFI_PCI_OPTION_ROM_SUPPORT_H_ | |
/** | |
Initialize a PCI LoadFile2 instance. | |
@param PciIoDevice PCI IO Device. | |
**/ | |
VOID | |
InitializePciLoadFile2 ( | |
IN PCI_IO_DEVICE *PciIoDevice | |
); | |
/** | |
Causes the driver to load a specified file. | |
@param This Indicates a pointer to the calling context. | |
@param FilePath The device specific path of the file to load. | |
@param BootPolicy Should always be FALSE. | |
@param BufferSize On input the size of Buffer in bytes. On output with a return | |
code of EFI_SUCCESS, the amount of data transferred to Buffer. | |
On output with a return code of EFI_BUFFER_TOO_SMALL, | |
the size of Buffer required to retrieve the requested file. | |
@param Buffer The memory buffer to transfer the file to. If Buffer is NULL, | |
then no the size of the requested file is returned in BufferSize. | |
@retval EFI_SUCCESS The file was loaded. | |
@retval EFI_UNSUPPORTED BootPolicy is TRUE. | |
@retval EFI_INVALID_PARAMETER FilePath is not a valid device path, or | |
BufferSize is NULL. | |
@retval EFI_NOT_FOUND Not found PCI Option Rom on PCI device. | |
@retval EFI_DEVICE_ERROR Failed to decompress PCI Option Rom image. | |
@retval EFI_BUFFER_TOO_SMALL The BufferSize is too small to read the current directory entry. | |
BufferSize has been updated with the size needed to complete the request. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
LoadFile2 ( | |
IN EFI_LOAD_FILE2_PROTOCOL *This, | |
IN EFI_DEVICE_PATH_PROTOCOL *FilePath, | |
IN BOOLEAN BootPolicy, | |
IN OUT UINTN *BufferSize, | |
IN VOID *Buffer OPTIONAL | |
); | |
/** | |
Check if the RomImage contains EFI Images. | |
@param RomImage The ROM address of Image for check. | |
@param RomSize Size of ROM for check. | |
@retval TRUE ROM contain EFI Image. | |
@retval FALSE ROM not contain EFI Image. | |
**/ | |
BOOLEAN | |
ContainEfiImage ( | |
IN VOID *RomImage, | |
IN UINT64 RomSize | |
); | |
/** | |
Get Pci device's oprom information. | |
@param PciIoDevice Input Pci device instance. | |
Output Pci device instance with updated OptionRom size. | |
@retval EFI_NOT_FOUND Pci device has not Option Rom. | |
@retval EFI_SUCCESS Pci device has Option Rom. | |
**/ | |
EFI_STATUS | |
GetOpRomInfo ( | |
IN OUT PCI_IO_DEVICE *PciIoDevice | |
); | |
/** | |
Load Option Rom image for specified PCI device. | |
@param PciDevice Pci device instance. | |
@param RomBase Base address of Option Rom. | |
@retval EFI_OUT_OF_RESOURCES No enough memory to hold image. | |
@retval EFI_SUCESS Successfully loaded Option Rom. | |
**/ | |
EFI_STATUS | |
LoadOpRomImage ( | |
IN PCI_IO_DEVICE *PciDevice, | |
IN UINT64 RomBase | |
); | |
/** | |
Enable/Disable Option Rom decode. | |
@param PciDevice Pci device instance. | |
@param RomBarIndex The BAR index of the standard PCI Configuration header to use as the | |
base address for resource range. The legal range for this field is 0..5. | |
@param RomBar Base address of Option Rom. | |
@param Enable Flag for enable/disable decode. | |
**/ | |
VOID | |
RomDecode ( | |
IN PCI_IO_DEVICE *PciDevice, | |
IN UINT8 RomBarIndex, | |
IN UINT32 RomBar, | |
IN BOOLEAN Enable | |
); | |
/** | |
Load and start the Option Rom image. | |
@param PciDevice Pci device instance. | |
@retval EFI_SUCCESS Successfully loaded and started PCI Option Rom image. | |
@retval EFI_NOT_FOUND Failed to process PCI Option Rom image. | |
**/ | |
EFI_STATUS | |
ProcessOpRomImage ( | |
IN PCI_IO_DEVICE *PciDevice | |
); | |
#endif |