efipciio.h revision 1.1.1.2 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