• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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