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