Home | History | Annotate | Line # | Download | only in inc
efipciio.h revision 1.1.1.1.10.2
      1  1.1.1.1.10.2  tls /*	$NetBSD: efipciio.h,v 1.1.1.1.10.2 2014/08/20 00:04:23 tls Exp $	*/
      2  1.1.1.1.10.2  tls 
      3  1.1.1.1.10.2  tls #ifndef _EFI_PCI_IO_H
      4  1.1.1.1.10.2  tls #define _EFI_PCI_IO_H
      5  1.1.1.1.10.2  tls 
      6  1.1.1.1.10.2  tls #define EFI_PCI_IO_PROTOCOL \
      7  1.1.1.1.10.2  tls     { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a} }
      8  1.1.1.1.10.2  tls 
      9  1.1.1.1.10.2  tls INTERFACE_DECL(_EFI_PCI_IO);
     10  1.1.1.1.10.2  tls 
     11  1.1.1.1.10.2  tls typedef enum {
     12  1.1.1.1.10.2  tls     EfiPciIoWidthUint8,
     13  1.1.1.1.10.2  tls     EfiPciIoWidthUint16,
     14  1.1.1.1.10.2  tls     EfiPciIoWidthUint32,
     15  1.1.1.1.10.2  tls     EfiPciIoWidthUint64,
     16  1.1.1.1.10.2  tls     EfiPciIoWidthFifoUint8,
     17  1.1.1.1.10.2  tls     EfiPciIoWidthFifoUint16,
     18  1.1.1.1.10.2  tls     EfiPciIoWidthFifoUint32,
     19  1.1.1.1.10.2  tls     EfiPciIoWidthFifoUint64,
     20  1.1.1.1.10.2  tls     EfiPciIoWidthFillUint8,
     21  1.1.1.1.10.2  tls     EfiPciIoWidthFillUint16,
     22  1.1.1.1.10.2  tls     EfiPciIoWidthFillUint32,
     23  1.1.1.1.10.2  tls     EfiPciIoWidthFillUint64,
     24  1.1.1.1.10.2  tls     EfiPciIoWidthMaximum
     25  1.1.1.1.10.2  tls } EFI_PCI_IO_PROTOCOL_WIDTH;
     26  1.1.1.1.10.2  tls 
     27  1.1.1.1.10.2  tls #define EFI_PCI_IO_PASS_THROUGH_BAR 0xff
     28  1.1.1.1.10.2  tls 
     29  1.1.1.1.10.2  tls typedef
     30  1.1.1.1.10.2  tls EFI_STATUS
     31  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_POLL_IO_MEM) (
     32  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO *This,
     33  1.1.1.1.10.2  tls   IN EFI_PCI_IO_PROTOCOL_WIDTH  Width,
     34  1.1.1.1.10.2  tls   IN UINT8                      BarIndex,
     35  1.1.1.1.10.2  tls   IN UINT64                     Offset,
     36  1.1.1.1.10.2  tls   IN UINT64                     Mask,
     37  1.1.1.1.10.2  tls   IN UINT64                     Value,
     38  1.1.1.1.10.2  tls   IN UINT64                     Delay,
     39  1.1.1.1.10.2  tls   OUT UINT64                    *Result
     40  1.1.1.1.10.2  tls   );
     41  1.1.1.1.10.2  tls 
     42  1.1.1.1.10.2  tls typedef
     43  1.1.1.1.10.2  tls EFI_STATUS
     44  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_IO_MEM) (
     45  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO *This,
     46  1.1.1.1.10.2  tls   IN EFI_PCI_IO_PROTOCOL_WIDTH  Width,
     47  1.1.1.1.10.2  tls   IN UINT8                      BarIndex,
     48  1.1.1.1.10.2  tls   IN UINT64                     Offset,
     49  1.1.1.1.10.2  tls   IN UINTN                      Count,
     50  1.1.1.1.10.2  tls   IN OUT VOID                   *Buffer
     51  1.1.1.1.10.2  tls );
     52  1.1.1.1.10.2  tls 
     53  1.1.1.1.10.2  tls typedef struct {
     54  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_IO_MEM    Read;
     55  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_IO_MEM    Write;
     56  1.1.1.1.10.2  tls } EFI_PCI_IO_PROTOCOL_ACCESS;
     57  1.1.1.1.10.2  tls 
     58  1.1.1.1.10.2  tls typedef
     59  1.1.1.1.10.2  tls EFI_STATUS
     60  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_CONFIG) (
     61  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO *This,
     62  1.1.1.1.10.2  tls   IN EFI_PCI_IO_PROTOCOL_WIDTH  Width,
     63  1.1.1.1.10.2  tls   IN UINT32                     Offset,
     64  1.1.1.1.10.2  tls   IN UINTN                      Count,
     65  1.1.1.1.10.2  tls   IN OUT VOID                   *Buffer
     66  1.1.1.1.10.2  tls );
     67  1.1.1.1.10.2  tls 
     68  1.1.1.1.10.2  tls typedef struct {
     69  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_CONFIG Read;
     70  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_CONFIG Write;
     71  1.1.1.1.10.2  tls } EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS;
     72  1.1.1.1.10.2  tls 
     73  1.1.1.1.10.2  tls typedef
     74  1.1.1.1.10.2  tls EFI_STATUS
     75  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_COPY_MEM) (
     76  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO *This,
     77  1.1.1.1.10.2  tls   IN EFI_PCI_IO_PROTOCOL_WIDTH  Width,
     78  1.1.1.1.10.2  tls   IN UINT8                      DestBarIndex,
     79  1.1.1.1.10.2  tls   IN UINT64                     DestOffset,
     80  1.1.1.1.10.2  tls   IN UINT8                      SrcBarIndex,
     81  1.1.1.1.10.2  tls   IN UINT64                     SrcOffset,
     82  1.1.1.1.10.2  tls   IN UINTN                      Count
     83  1.1.1.1.10.2  tls   );
     84  1.1.1.1.10.2  tls 
     85  1.1.1.1.10.2  tls typedef enum {
     86  1.1.1.1.10.2  tls     EfiPciIoOperationBusMasterRead,
     87  1.1.1.1.10.2  tls     EfiPciIoOperationBusMasterWrite,
     88  1.1.1.1.10.2  tls     EfiPciIoOperationBusMasterCommonBuffer,
     89  1.1.1.1.10.2  tls     EfiPciIoOperationMaximum
     90  1.1.1.1.10.2  tls } EFI_PCI_IO_PROTOCOL_OPERATION;
     91  1.1.1.1.10.2  tls 
     92  1.1.1.1.10.2  tls typedef
     93  1.1.1.1.10.2  tls EFI_STATUS
     94  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_MAP) (
     95  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO    *This,
     96  1.1.1.1.10.2  tls   IN EFI_PCI_IO_PROTOCOL_OPERATION Operation,
     97  1.1.1.1.10.2  tls   IN VOID                          *HostAddress,
     98  1.1.1.1.10.2  tls   IN OUT UINTN                     *NumberOfBytes,
     99  1.1.1.1.10.2  tls   OUT EFI_PHYSICAL_ADDRESS         *DeviceAddress,
    100  1.1.1.1.10.2  tls   OUT VOID                         **Mapping
    101  1.1.1.1.10.2  tls   );
    102  1.1.1.1.10.2  tls 
    103  1.1.1.1.10.2  tls typedef
    104  1.1.1.1.10.2  tls EFI_STATUS
    105  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_UNMAP) (
    106  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO *This,
    107  1.1.1.1.10.2  tls   IN VOID                       *Mapping
    108  1.1.1.1.10.2  tls );
    109  1.1.1.1.10.2  tls 
    110  1.1.1.1.10.2  tls typedef
    111  1.1.1.1.10.2  tls EFI_STATUS
    112  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER) (
    113  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO *This,
    114  1.1.1.1.10.2  tls   IN EFI_ALLOCATE_TYPE          Type,
    115  1.1.1.1.10.2  tls   IN EFI_MEMORY_TYPE            MemoryType,
    116  1.1.1.1.10.2  tls   IN UINTN                      Pages,
    117  1.1.1.1.10.2  tls   OUT VOID                      **HostAddress,
    118  1.1.1.1.10.2  tls   IN UINT64                     Attributes
    119  1.1.1.1.10.2  tls   );
    120  1.1.1.1.10.2  tls 
    121  1.1.1.1.10.2  tls typedef
    122  1.1.1.1.10.2  tls EFI_STATUS
    123  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_FREE_BUFFER) (
    124  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO *This,
    125  1.1.1.1.10.2  tls   IN UINTN                      Pages,
    126  1.1.1.1.10.2  tls   IN VOID                       *HostAddress
    127  1.1.1.1.10.2  tls   );
    128  1.1.1.1.10.2  tls 
    129  1.1.1.1.10.2  tls typedef
    130  1.1.1.1.10.2  tls EFI_STATUS
    131  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_FLUSH) (
    132  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO *This
    133  1.1.1.1.10.2  tls   );
    134  1.1.1.1.10.2  tls 
    135  1.1.1.1.10.2  tls typedef
    136  1.1.1.1.10.2  tls EFI_STATUS
    137  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_GET_LOCATION) (
    138  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO *This,
    139  1.1.1.1.10.2  tls   OUT UINTN                     *SegmentNumber,
    140  1.1.1.1.10.2  tls   OUT UINTN                     *BusNumber,
    141  1.1.1.1.10.2  tls   OUT UINTN                     *DeviceNumber,
    142  1.1.1.1.10.2  tls   OUT UINTN                     *FunctionNumber
    143  1.1.1.1.10.2  tls   );
    144  1.1.1.1.10.2  tls 
    145  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_ISA_IO               0x0002
    146  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO       0x0004
    147  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY           0x0008
    148  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_VGA_IO               0x0010
    149  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO       0x0020
    150  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO     0x0040
    151  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080
    152  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_IO                   0x0100
    153  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_MEMORY               0x0200
    154  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_BUS_MASTER           0x0400
    155  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED        0x0800
    156  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE       0x1000
    157  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE      0x2000
    158  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM         0x4000
    159  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE   0x8000
    160  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_ISA_IO_16            0x10000
    161  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16    0x20000
    162  1.1.1.1.10.2  tls #define EFI_PCI_IO_ATTRIBUTE_VGA_IO_16            0x40000
    163  1.1.1.1.10.2  tls 
    164  1.1.1.1.10.2  tls typedef enum {
    165  1.1.1.1.10.2  tls     EfiPciIoAttributeOperationGet,
    166  1.1.1.1.10.2  tls     EfiPciIoAttributeOperationSet,
    167  1.1.1.1.10.2  tls     EfiPciIoAttributeOperationEnable,
    168  1.1.1.1.10.2  tls     EfiPciIoAttributeOperationDisable,
    169  1.1.1.1.10.2  tls     EfiPciIoAttributeOperationSupported,
    170  1.1.1.1.10.2  tls     EfiPciIoAttributeOperationMaximum
    171  1.1.1.1.10.2  tls } EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION;
    172  1.1.1.1.10.2  tls 
    173  1.1.1.1.10.2  tls typedef
    174  1.1.1.1.10.2  tls EFI_STATUS
    175  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_ATTRIBUTES) (
    176  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO             *This,
    177  1.1.1.1.10.2  tls   IN EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION Operation,
    178  1.1.1.1.10.2  tls   IN UINT64                                  Attributes,
    179  1.1.1.1.10.2  tls   OUT UINT64                                 *Result OPTIONAL
    180  1.1.1.1.10.2  tls   );
    181  1.1.1.1.10.2  tls 
    182  1.1.1.1.10.2  tls typedef
    183  1.1.1.1.10.2  tls EFI_STATUS
    184  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES) (
    185  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO *This,
    186  1.1.1.1.10.2  tls   IN UINT8                      BarIndex,
    187  1.1.1.1.10.2  tls   OUT UINT64                    *Supports OPTIONAL,
    188  1.1.1.1.10.2  tls   OUT VOID                      **Resources OPTIONAL
    189  1.1.1.1.10.2  tls   );
    190  1.1.1.1.10.2  tls 
    191  1.1.1.1.10.2  tls typedef
    192  1.1.1.1.10.2  tls EFI_STATUS
    193  1.1.1.1.10.2  tls (EFIAPI *EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES) (
    194  1.1.1.1.10.2  tls   IN struct _EFI_PCI_IO *This,
    195  1.1.1.1.10.2  tls   IN UINT64                     Attributes,
    196  1.1.1.1.10.2  tls   IN UINT8                      BarIndex,
    197  1.1.1.1.10.2  tls   IN OUT UINT64                 *Offset,
    198  1.1.1.1.10.2  tls   IN OUT UINT64                 *Length
    199  1.1.1.1.10.2  tls   );
    200  1.1.1.1.10.2  tls 
    201  1.1.1.1.10.2  tls typedef struct _EFI_PCI_IO {
    202  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_POLL_IO_MEM        PollMem;
    203  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_POLL_IO_MEM        PollIo;
    204  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_ACCESS             Mem;
    205  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_ACCESS             Io;
    206  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS      Pci;
    207  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_COPY_MEM           CopyMem;
    208  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_MAP                Map;
    209  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_UNMAP              Unmap;
    210  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER    AllocateBuffer;
    211  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_FREE_BUFFER        FreeBuffer;
    212  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_FLUSH              Flush;
    213  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_GET_LOCATION       GetLocation;
    214  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_ATTRIBUTES         Attributes;
    215  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES GetBarAttributes;
    216  1.1.1.1.10.2  tls   EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES SetBarAttributes;
    217  1.1.1.1.10.2  tls   UINT64                                 RomSize;
    218  1.1.1.1.10.2  tls   VOID                                   *RomImage;
    219  1.1.1.1.10.2  tls } EFI_PCI_IO;
    220  1.1.1.1.10.2  tls 
    221  1.1.1.1.10.2  tls #endif /* _EFI_PCI_IO_H */
    222