source: bootcd/isolinux/syslinux-6.03/efi32/include/efi/efipciio.h @ e16e8f2

Last change on this file since e16e8f2 was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

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