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