Home | History | Annotate | Line # | Download | only in inc
      1 /*	$NetBSD: efipciio.h,v 1.1.1.2 2018/08/16 18:17:47 jmcneill Exp $	*/
      2 
      3 #ifndef _EFI_PCI_IO_H
      4 #define _EFI_PCI_IO_H
      5 
      6 #define EFI_PCI_IO_PROTOCOL_GUID \
      7     { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a} }
      8 
      9 #define EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID \
     10     { 0x2f707ebb, 0x4a1a, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
     11 
     12 INTERFACE_DECL(_EFI_PCI_IO_PROTOCOL);
     13 INTERFACE_DECL(_EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL);
     14 
     15 typedef enum {
     16     EfiPciIoWidthUint8,
     17     EfiPciIoWidthUint16,
     18     EfiPciIoWidthUint32,
     19     EfiPciIoWidthUint64,
     20     EfiPciIoWidthFifoUint8,
     21     EfiPciIoWidthFifoUint16,
     22     EfiPciIoWidthFifoUint32,
     23     EfiPciIoWidthFifoUint64,
     24     EfiPciIoWidthFillUint8,
     25     EfiPciIoWidthFillUint16,
     26     EfiPciIoWidthFillUint32,
     27     EfiPciIoWidthFillUint64,
     28     EfiPciIoWidthMaximum
     29 } EFI_PCI_IO_PROTOCOL_WIDTH, EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH;
     30 
     31 #define EFI_PCI_IO_PASS_THROUGH_BAR 0xff
     32 
     33 typedef
     34 EFI_STATUS
     35 (EFIAPI *EFI_PCI_IO_PROTOCOL_POLL_IO_MEM) (
     36   IN struct _EFI_PCI_IO_PROTOCOL  *This,
     37   IN EFI_PCI_IO_PROTOCOL_WIDTH    Width,
     38   IN UINT8                        BarIndex,
     39   IN UINT64                       Offset,
     40   IN UINT64                       Mask,
     41   IN UINT64                       Value,
     42   IN UINT64                       Delay,
     43   OUT UINT64                      *Result
     44 );
     45 
     46 typedef
     47 EFI_STATUS
     48 (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM) (
     49   IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *This,
     50   IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH    Width,
     51   IN UINT64                                   Address,
     52   IN UINT64                                   Mask,
     53   IN UINT64                                   Value,
     54   IN UINT64                                   Delay,
     55   OUT UINT64                                  *Result
     56 );
     57 
     58 typedef
     59 EFI_STATUS
     60 (EFIAPI *EFI_PCI_IO_PROTOCOL_IO_MEM) (
     61   IN struct _EFI_PCI_IO_PROTOCOL  *This,
     62   IN EFI_PCI_IO_PROTOCOL_WIDTH    Width,
     63   IN UINT8                        BarIndex,
     64   IN UINT64                       Offset,
     65   IN UINTN                        Count,
     66   IN OUT VOID                     *Buffer
     67 );
     68 
     69 typedef
     70 EFI_STATUS
     71 (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM) (
     72   IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *This,
     73   IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH    Width,
     74   IN UINT64                                   Address,
     75   IN UINTN                                    Count,
     76   IN OUT VOID                                 *Buffer
     77 );
     78 
     79 typedef struct {
     80   EFI_PCI_IO_PROTOCOL_IO_MEM    Read;
     81   EFI_PCI_IO_PROTOCOL_IO_MEM    Write;
     82 } EFI_PCI_IO_PROTOCOL_ACCESS;
     83 
     84 typedef struct {
     85   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM  Read;
     86   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM  Write;
     87 } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS;
     88 
     89 typedef
     90 EFI_STATUS
     91 (EFIAPI *EFI_PCI_IO_PROTOCOL_CONFIG) (
     92   IN struct _EFI_PCI_IO_PROTOCOL  *This,
     93   IN EFI_PCI_IO_PROTOCOL_WIDTH    Width,
     94   IN UINT32                       Offset,
     95   IN UINTN                        Count,
     96   IN OUT VOID                     *Buffer
     97 );
     98 
     99 typedef
    100 EFI_STATUS
    101 (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION) (
    102   IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL    *This,
    103   OUT VOID                                      **Resources
    104 );
    105 
    106 typedef struct {
    107   EFI_PCI_IO_PROTOCOL_CONFIG Read;
    108   EFI_PCI_IO_PROTOCOL_CONFIG Write;
    109 } EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS;
    110 
    111 typedef
    112 EFI_STATUS
    113 (EFIAPI *EFI_PCI_IO_PROTOCOL_COPY_MEM) (
    114   IN struct _EFI_PCI_IO_PROTOCOL  *This,
    115   IN EFI_PCI_IO_PROTOCOL_WIDTH    Width,
    116   IN UINT8                        DestBarIndex,
    117   IN UINT64                       DestOffset,
    118   IN UINT8                        SrcBarIndex,
    119   IN UINT64                       SrcOffset,
    120   IN UINTN                        Count
    121 );
    122 
    123 typedef
    124 EFI_STATUS
    125 (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_COPY_MEM) (
    126   IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *This,
    127   IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH    Width,
    128   IN UINT64                                   DestAddress,
    129   IN UINT64                                   SrcAddress,
    130   IN UINTN                                    Count
    131 );
    132 
    133 typedef enum {
    134     EfiPciIoOperationBusMasterRead,
    135     EfiPciIoOperationBusMasterWrite,
    136     EfiPciIoOperationBusMasterCommonBuffer,
    137     EfiPciIoOperationMaximum
    138 } EFI_PCI_IO_PROTOCOL_OPERATION;
    139 
    140 typedef enum {
    141   EfiPciOperationBusMasterRead,
    142   EfiPciOperationBusMasterWrite,
    143   EfiPciOperationBusMasterCommonBuffer,
    144   EfiPciOperationBusMasterRead64,
    145   EfiPciOperationBusMasterWrite64,
    146   EfiPciOperationBusMasterCommonBuffer64,
    147   EfiPciOperationMaximum
    148 } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION;
    149 
    150 typedef
    151 EFI_STATUS
    152 (EFIAPI *EFI_PCI_IO_PROTOCOL_MAP) (
    153   IN struct _EFI_PCI_IO_PROTOCOL   *This,
    154   IN EFI_PCI_IO_PROTOCOL_OPERATION Operation,
    155   IN VOID                          *HostAddress,
    156   IN OUT UINTN                     *NumberOfBytes,
    157   OUT EFI_PHYSICAL_ADDRESS         *DeviceAddress,
    158   OUT VOID                         **Mapping
    159 );
    160 
    161 typedef
    162 EFI_STATUS
    163 (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_MAP) (
    164   IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL    *This,
    165   IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION  Operation,
    166   IN VOID                                       *HostAddress,
    167   IN OUT UINTN                                  *NumberOfBytes,
    168   OUT EFI_PHYSICAL_ADDRESS                      *DeviceAddress,
    169   OUT VOID                                      **Mapping
    170 );
    171 
    172 typedef
    173 EFI_STATUS
    174 (EFIAPI *EFI_PCI_IO_PROTOCOL_UNMAP) (
    175   IN struct _EFI_PCI_IO_PROTOCOL  *This,
    176   IN VOID                         *Mapping
    177 );
    178 
    179 typedef
    180 EFI_STATUS
    181 (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_UNMAP) (
    182   IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL    *This,
    183   IN VOID                                       *Mapping
    184 );
    185 
    186 typedef
    187 EFI_STATUS
    188 (EFIAPI *EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER) (
    189   IN struct _EFI_PCI_IO_PROTOCOL  *This,
    190   IN EFI_ALLOCATE_TYPE            Type,
    191   IN EFI_MEMORY_TYPE              MemoryType,
    192   IN UINTN                        Pages,
    193   OUT VOID                        **HostAddress,
    194   IN UINT64                       Attributes
    195 );
    196 
    197 typedef
    198 EFI_STATUS
    199 (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ALLOCATE_BUFFER) (
    200   IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL    *This,
    201   IN EFI_ALLOCATE_TYPE                          Type,
    202   IN EFI_MEMORY_TYPE                            MemoryType,
    203   IN UINTN                                      Pages,
    204   IN OUT VOID                                   **HostAddress,
    205   IN UINT64                                     Attributes
    206 );
    207 
    208 typedef
    209 EFI_STATUS
    210 (EFIAPI *EFI_PCI_IO_PROTOCOL_FREE_BUFFER) (
    211   IN struct _EFI_PCI_IO_PROTOCOL  *This,
    212   IN UINTN                        Pages,
    213   IN VOID                         *HostAddress
    214   );
    215 
    216 typedef
    217 EFI_STATUS
    218 (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FREE_BUFFER) (
    219   IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL    *This,
    220   IN UINTN                                      Pages,
    221   IN VOID                                       *HostAddress
    222 );
    223 
    224 typedef
    225 EFI_STATUS
    226 (EFIAPI *EFI_PCI_IO_PROTOCOL_FLUSH) (
    227   IN struct _EFI_PCI_IO_PROTOCOL  *This
    228 );
    229 
    230 typedef
    231 EFI_STATUS
    232 (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FLUSH) (
    233   IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL    *This
    234 );
    235 
    236 typedef
    237 EFI_STATUS
    238 (EFIAPI *EFI_PCI_IO_PROTOCOL_GET_LOCATION) (
    239   IN struct _EFI_PCI_IO_PROTOCOL  *This,
    240   OUT UINTN                       *SegmentNumber,
    241   OUT UINTN                       *BusNumber,
    242   OUT UINTN                       *DeviceNumber,
    243   OUT UINTN                       *FunctionNumber
    244 );
    245 
    246 #define EFI_PCI_ATTRIBUTE_ISA_MOTHERBOARD_IO      0x0001
    247 #define EFI_PCI_ATTRIBUTE_ISA_IO                  0x0002
    248 #define EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO          0x0004
    249 #define EFI_PCI_ATTRIBUTE_VGA_MEMORY              0x0008
    250 #define EFI_PCI_ATTRIBUTE_VGA_IO                  0x0010
    251 #define EFI_PCI_ATTRIBUTE_IDE_PRIMARY_IO          0x0020
    252 #define EFI_PCI_ATTRIBUTE_IDE_SECONDARY_IO        0x0040
    253 #define EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE    0x0080
    254 #define EFI_PCI_ATTRIBUTE_IO                      0x0100
    255 #define EFI_PCI_ATTRIBUTE_MEMORY                  0x0200
    256 #define EFI_PCI_ATTRIBUTE_BUS_MASTER              0x0400
    257 #define EFI_PCI_ATTRIBUTE_MEMORY_CACHED           0x0800
    258 #define EFI_PCI_ATTRIBUTE_MEMORY_DISABLE          0x1000
    259 #define EFI_PCI_ATTRIBUTE_EMBEDDED_DEVICE         0x2000
    260 #define EFI_PCI_ATTRIBUTE_EMBEDDED_ROM            0x4000
    261 #define EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE      0x8000
    262 #define EFI_PCI_ATTRIBUTE_ISA_IO_16               0x10000
    263 #define EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO_16       0x20000
    264 #define EFI_PCI_ATTRIBUTE_VGA_IO_16               0x40000
    265 
    266 #define EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO   EFI_PCI_ATTRIBUTE_ISA_MOTHERBOARD_IO
    267 #define EFI_PCI_IO_ATTRIBUTE_ISA_IO               EFI_PCI_ATTRIBUTE_ISA_IO
    268 #define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO       EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO
    269 #define EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY           EFI_PCI_ATTRIBUTE_VGA_MEMORY
    270 #define EFI_PCI_IO_ATTRIBUTE_VGA_IO               EFI_PCI_ATTRIBUTE_VGA_IO
    271 #define EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO       EFI_PCI_ATTRIBUTE_IDE_PRIMARY_IO
    272 #define EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO     EFI_PCI_ATTRIBUTE_IDE_SECONDARY_IO
    273 #define EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE
    274 #define EFI_PCI_IO_ATTRIBUTE_IO                   EFI_PCI_ATTRIBUTE_IO
    275 #define EFI_PCI_IO_ATTRIBUTE_MEMORY               EFI_PCI_ATTRIBUTE_MEMORY
    276 #define EFI_PCI_IO_ATTRIBUTE_BUS_MASTER           EFI_PCI_ATTRIBUTE_BUS_MASTER
    277 #define EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED        EFI_PCI_ATTRIBUTE_MEMORY_CACHED
    278 #define EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE       EFI_PCI_ATTRIBUTE_MEMORY_DISABLE
    279 #define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE      EFI_PCI_ATTRIBUTE_EMBEDDED_DEVICE
    280 #define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM         EFI_PCI_ATTRIBUTE_EMBEDDED_ROM
    281 #define EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE   EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE
    282 #define EFI_PCI_IO_ATTRIBUTE_ISA_IO_16            EFI_PCI_ATTRIBUTE_ISA_IO_16
    283 #define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16    EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO_16
    284 #define EFI_PCI_IO_ATTRIBUTE_VGA_IO_16            EFI_PCI_ATTRIBUTE_VGA_IO_16
    285 
    286 #define EFI_PCI_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER \
    287     (EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE | EFI_PCI_ATTRIBUTE_MEMORY_CACHED | EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE)
    288 
    289 #define EFI_PCI_ATTRIBUTE_INVALID_FOR_ALLOCATE_BUFFER \
    290     (~EFI_PCI_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER)
    291 
    292 typedef struct {
    293     UINT8 Register;
    294     UINT8 Function;
    295     UINT8 Device;
    296     UINT8 Bus;
    297     UINT32 ExtendedRegister;
    298 } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS;
    299 
    300 typedef enum {
    301     EfiPciIoAttributeOperationGet,
    302     EfiPciIoAttributeOperationSet,
    303     EfiPciIoAttributeOperationEnable,
    304     EfiPciIoAttributeOperationDisable,
    305     EfiPciIoAttributeOperationSupported,
    306     EfiPciIoAttributeOperationMaximum
    307 } EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION;
    308 
    309 typedef
    310 EFI_STATUS
    311 (EFIAPI *EFI_PCI_IO_PROTOCOL_ATTRIBUTES) (
    312   IN struct _EFI_PCI_IO_PROTOCOL             *This,
    313   IN EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION Operation,
    314   IN UINT64                                  Attributes,
    315   OUT UINT64                                 *Result OPTIONAL
    316 );
    317 
    318 typedef
    319 EFI_STATUS
    320 (EFIAPI *EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES) (
    321   IN struct _EFI_PCI_IO_PROTOCOL  *This,
    322   IN UINT8                        BarIndex,
    323   OUT UINT64                      *Supports   OPTIONAL,
    324   OUT VOID                        **Resources OPTIONAL
    325 );
    326 
    327 typedef
    328 EFI_STATUS
    329 (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GET_ATTRIBUTES) (
    330   IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL    *This,
    331   OUT UINT64                                    *Supports,
    332   OUT UINT64                                    *Attributes
    333 );
    334 
    335 typedef
    336 EFI_STATUS
    337 (EFIAPI *EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES) (
    338   IN struct _EFI_PCI_IO_PROTOCOL  *This,
    339   IN UINT64                       Attributes,
    340   IN UINT8                        BarIndex,
    341   IN OUT UINT64                   *Offset,
    342   IN OUT UINT64                   *Length
    343 );
    344 
    345 typedef
    346 EFI_STATUS
    347 (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_SET_ATTRIBUTES) (
    348   IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL    *This,
    349   IN UINT64                                     Attributes,
    350   IN OUT UINT64                                 *ResourceBase,
    351   IN OUT UINT64                                 *ResourceLength
    352 );
    353 
    354 typedef struct _EFI_PCI_IO_PROTOCOL {
    355   EFI_PCI_IO_PROTOCOL_POLL_IO_MEM        PollMem;
    356   EFI_PCI_IO_PROTOCOL_POLL_IO_MEM        PollIo;
    357   EFI_PCI_IO_PROTOCOL_ACCESS             Mem;
    358   EFI_PCI_IO_PROTOCOL_ACCESS             Io;
    359   EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS      Pci;
    360   EFI_PCI_IO_PROTOCOL_COPY_MEM           CopyMem;
    361   EFI_PCI_IO_PROTOCOL_MAP                Map;
    362   EFI_PCI_IO_PROTOCOL_UNMAP              Unmap;
    363   EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER    AllocateBuffer;
    364   EFI_PCI_IO_PROTOCOL_FREE_BUFFER        FreeBuffer;
    365   EFI_PCI_IO_PROTOCOL_FLUSH              Flush;
    366   EFI_PCI_IO_PROTOCOL_GET_LOCATION       GetLocation;
    367   EFI_PCI_IO_PROTOCOL_ATTRIBUTES         Attributes;
    368   EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES GetBarAttributes;
    369   EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES SetBarAttributes;
    370   UINT64                                 RomSize;
    371   VOID                                   *RomImage;
    372 } EFI_PCI_IO_PROTOCOL;
    373 
    374 // Note: Because it conflicted with the EDK2 struct name, the
    375 // 'EFI_PCI_IO_PROTOCOL' GUID definition, from older versions
    376 // of gnu-efi, is now obsoleted.
    377 // Use 'EFI_PCI_IO_PROTOCOL_GUID' instead.
    378 
    379 typedef struct _EFI_PCI_IO_PROTOCOL _EFI_PCI_IO;
    380 typedef EFI_PCI_IO_PROTOCOL EFI_PCI_IO;
    381 
    382 typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL {
    383   EFI_HANDLE                                      ParentHandle;
    384   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM     PollMem;
    385   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM     PollIo;
    386   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS          Mem;
    387   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS          Io;
    388   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS          Pci;
    389   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_COPY_MEM        CopyMem;
    390   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_MAP             Map;
    391   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_UNMAP           Unmap;
    392   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer;
    393   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FREE_BUFFER     FreeBuffer;
    394   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FLUSH           Flush;
    395   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GET_ATTRIBUTES  GetAttributes;
    396   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_SET_ATTRIBUTES  SetAttributes;
    397   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION   Configuration;
    398   UINT32                                          SegmentNumber;
    399 } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL;
    400 
    401 #endif /* _EFI_PCI_IO_H */
    402