1 /** @file 2 PCI Rom supporting funtions declaration for PCI Bus module. 3 4 Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 **/ 14 15 #ifndef _EFI_PCI_OPTION_ROM_SUPPORT_H_ 16 #define _EFI_PCI_OPTION_ROM_SUPPORT_H_ 17 18 19 /** 20 Initialize a PCI LoadFile2 instance. 21 22 @param PciIoDevice PCI IO Device. 23 24 **/ 25 VOID 26 InitializePciLoadFile2 ( 27 IN PCI_IO_DEVICE *PciIoDevice 28 ); 29 30 /** 31 Causes the driver to load a specified file. 32 33 @param This Indicates a pointer to the calling context. 34 @param FilePath The device specific path of the file to load. 35 @param BootPolicy Should always be FALSE. 36 @param BufferSize On input the size of Buffer in bytes. On output with a return 37 code of EFI_SUCCESS, the amount of data transferred to Buffer. 38 On output with a return code of EFI_BUFFER_TOO_SMALL, 39 the size of Buffer required to retrieve the requested file. 40 @param Buffer The memory buffer to transfer the file to. If Buffer is NULL, 41 then no the size of the requested file is returned in BufferSize. 42 43 @retval EFI_SUCCESS The file was loaded. 44 @retval EFI_UNSUPPORTED BootPolicy is TRUE. 45 @retval EFI_INVALID_PARAMETER FilePath is not a valid device path, or 46 BufferSize is NULL. 47 @retval EFI_NOT_FOUND Not found PCI Option Rom on PCI device. 48 @retval EFI_DEVICE_ERROR Failed to decompress PCI Option Rom image. 49 @retval EFI_BUFFER_TOO_SMALL The BufferSize is too small to read the current directory entry. 50 BufferSize has been updated with the size needed to complete the request. 51 52 **/ 53 EFI_STATUS 54 EFIAPI 55 LoadFile2 ( 56 IN EFI_LOAD_FILE2_PROTOCOL *This, 57 IN EFI_DEVICE_PATH_PROTOCOL *FilePath, 58 IN BOOLEAN BootPolicy, 59 IN OUT UINTN *BufferSize, 60 IN VOID *Buffer OPTIONAL 61 ); 62 63 /** 64 Check if the RomImage contains EFI Images. 65 66 @param RomImage The ROM address of Image for check. 67 @param RomSize Size of ROM for check. 68 69 @retval TRUE ROM contain EFI Image. 70 @retval FALSE ROM not contain EFI Image. 71 72 **/ 73 BOOLEAN 74 ContainEfiImage ( 75 IN VOID *RomImage, 76 IN UINT64 RomSize 77 ); 78 79 /** 80 Get Pci device's oprom information. 81 82 @param PciIoDevice Input Pci device instance. 83 Output Pci device instance with updated OptionRom size. 84 85 @retval EFI_NOT_FOUND Pci device has not Option Rom. 86 @retval EFI_SUCCESS Pci device has Option Rom. 87 88 **/ 89 EFI_STATUS 90 GetOpRomInfo ( 91 IN OUT PCI_IO_DEVICE *PciIoDevice 92 ); 93 94 /** 95 Load Option Rom image for specified PCI device. 96 97 @param PciDevice Pci device instance. 98 @param RomBase Base address of Option Rom. 99 100 @retval EFI_OUT_OF_RESOURCES No enough memory to hold image. 101 @retval EFI_SUCESS Successfully loaded Option Rom. 102 103 **/ 104 EFI_STATUS 105 LoadOpRomImage ( 106 IN PCI_IO_DEVICE *PciDevice, 107 IN UINT64 RomBase 108 ); 109 110 /** 111 Enable/Disable Option Rom decode. 112 113 @param PciDevice Pci device instance. 114 @param RomBarIndex The BAR index of the standard PCI Configuration header to use as the 115 base address for resource range. The legal range for this field is 0..5. 116 @param RomBar Base address of Option Rom. 117 @param Enable Flag for enable/disable decode. 118 119 **/ 120 VOID 121 RomDecode ( 122 IN PCI_IO_DEVICE *PciDevice, 123 IN UINT8 RomBarIndex, 124 IN UINT32 RomBar, 125 IN BOOLEAN Enable 126 ); 127 128 /** 129 Load and start the Option Rom image. 130 131 @param PciDevice Pci device instance. 132 133 @retval EFI_SUCCESS Successfully loaded and started PCI Option Rom image. 134 @retval EFI_NOT_FOUND Failed to process PCI Option Rom image. 135 136 **/ 137 EFI_STATUS 138 ProcessOpRomImage ( 139 IN PCI_IO_DEVICE *PciDevice 140 ); 141 142 #endif 143