Home | History | Annotate | Download | only in PciBusDxe
      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