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