7 +#define EFI_PCI_IO_PROTOCOL \
8 + { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a} }
10 +INTERFACE_DECL(_EFI_PCI_IO);
14 + EfiPciIoWidthUint16,
15 + EfiPciIoWidthUint32,
16 + EfiPciIoWidthUint64,
17 + EfiPciIoWidthFifoUint8,
18 + EfiPciIoWidthFifoUint16,
19 + EfiPciIoWidthFifoUint32,
20 + EfiPciIoWidthFifoUint64,
21 + EfiPciIoWidthFillUint8,
22 + EfiPciIoWidthFillUint16,
23 + EfiPciIoWidthFillUint32,
24 + EfiPciIoWidthFillUint64,
25 + EfiPciIoWidthMaximum
26 +} EFI_PCI_IO_PROTOCOL_WIDTH;
28 +#define EFI_PCI_IO_PASS_THROUGH_BAR 0xff
32 +(EFIAPI *EFI_PCI_IO_PROTOCOL_POLL_IO_MEM) (
33 + IN struct _EFI_PCI_IO *This,
34 + IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
45 +(EFIAPI *EFI_PCI_IO_PROTOCOL_IO_MEM) (
46 + IN struct _EFI_PCI_IO *This,
47 + IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
55 + EFI_PCI_IO_PROTOCOL_IO_MEM Read;
56 + EFI_PCI_IO_PROTOCOL_IO_MEM Write;
57 +} EFI_PCI_IO_PROTOCOL_ACCESS;
61 +(EFIAPI *EFI_PCI_IO_PROTOCOL_CONFIG) (
62 + IN struct _EFI_PCI_IO *This,
63 + IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
70 + EFI_PCI_IO_PROTOCOL_CONFIG Read;
71 + EFI_PCI_IO_PROTOCOL_CONFIG Write;
72 +} EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS;
76 +(EFIAPI *EFI_PCI_IO_PROTOCOL_COPY_MEM) (
77 + IN struct _EFI_PCI_IO *This,
78 + IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
79 + IN UINT8 DestBarIndex,
80 + IN UINT64 DestOffset,
81 + IN UINT8 SrcBarIndex,
82 + IN UINT64 SrcOffset,
87 + EfiPciIoOperationBusMasterRead,
88 + EfiPciIoOperationBusMasterWrite,
89 + EfiPciIoOperationBusMasterCommonBuffer,
90 + EfiPciIoOperationMaximum
91 +} EFI_PCI_IO_PROTOCOL_OPERATION;
95 +(EFIAPI *EFI_PCI_IO_PROTOCOL_MAP) (
96 + IN struct _EFI_PCI_IO *This,
97 + IN EFI_PCI_IO_PROTOCOL_OPERATION Operation,
98 + IN VOID *HostAddress,
99 + IN OUT UINTN *NumberOfBytes,
100 + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
106 +(EFIAPI *EFI_PCI_IO_PROTOCOL_UNMAP) (
107 + IN struct _EFI_PCI_IO *This,
113 +(EFIAPI *EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER) (
114 + IN struct _EFI_PCI_IO *This,
115 + IN EFI_ALLOCATE_TYPE Type,
116 + IN EFI_MEMORY_TYPE MemoryType,
118 + OUT VOID **HostAddress,
119 + IN UINT64 Attributes
124 +(EFIAPI *EFI_PCI_IO_PROTOCOL_FREE_BUFFER) (
125 + IN struct _EFI_PCI_IO *This,
127 + IN VOID *HostAddress
132 +(EFIAPI *EFI_PCI_IO_PROTOCOL_FLUSH) (
133 + IN struct _EFI_PCI_IO *This
138 +(EFIAPI *EFI_PCI_IO_PROTOCOL_GET_LOCATION) (
139 + IN struct _EFI_PCI_IO *This,
140 + OUT UINTN *SegmentNumber,
141 + OUT UINTN *BusNumber,
142 + OUT UINTN *DeviceNumber,
143 + OUT UINTN *FunctionNumber
146 +#define EFI_PCI_IO_ATTRIBUTE_ISA_IO 0x0002
147 +#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO 0x0004
148 +#define EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY 0x0008
149 +#define EFI_PCI_IO_ATTRIBUTE_VGA_IO 0x0010
150 +#define EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO 0x0020
151 +#define EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO 0x0040
152 +#define EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080
153 +#define EFI_PCI_IO_ATTRIBUTE_IO 0x0100
154 +#define EFI_PCI_IO_ATTRIBUTE_MEMORY 0x0200
155 +#define EFI_PCI_IO_ATTRIBUTE_BUS_MASTER 0x0400
156 +#define EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED 0x0800
157 +#define EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000
158 +#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE 0x2000
159 +#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM 0x4000
160 +#define EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE 0x8000
161 +#define EFI_PCI_IO_ATTRIBUTE_ISA_IO_16 0x10000
162 +#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16 0x20000
163 +#define EFI_PCI_IO_ATTRIBUTE_VGA_IO_16 0x40000
166 + EfiPciIoAttributeOperationGet,
167 + EfiPciIoAttributeOperationSet,
168 + EfiPciIoAttributeOperationEnable,
169 + EfiPciIoAttributeOperationDisable,
170 + EfiPciIoAttributeOperationSupported,
171 + EfiPciIoAttributeOperationMaximum
172 +} EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION;
176 +(EFIAPI *EFI_PCI_IO_PROTOCOL_ATTRIBUTES) (
177 + IN struct _EFI_PCI_IO *This,
178 + IN EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION Operation,
179 + IN UINT64 Attributes,
180 + OUT UINT64 *Result OPTIONAL
185 +(EFIAPI *EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES) (
186 + IN struct _EFI_PCI_IO *This,
188 + OUT UINT64 *Supports OPTIONAL,
189 + OUT VOID **Resources OPTIONAL
194 +(EFIAPI *EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES) (
195 + IN struct _EFI_PCI_IO *This,
196 + IN UINT64 Attributes,
198 + IN OUT UINT64 *Offset,
199 + IN OUT UINT64 *Length
202 +typedef struct _EFI_PCI_IO {
203 + EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollMem;
204 + EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollIo;
205 + EFI_PCI_IO_PROTOCOL_ACCESS Mem;
206 + EFI_PCI_IO_PROTOCOL_ACCESS Io;
207 + EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS Pci;
208 + EFI_PCI_IO_PROTOCOL_COPY_MEM CopyMem;
209 + EFI_PCI_IO_PROTOCOL_MAP Map;
210 + EFI_PCI_IO_PROTOCOL_UNMAP Unmap;
211 + EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer;
212 + EFI_PCI_IO_PROTOCOL_FREE_BUFFER FreeBuffer;
213 + EFI_PCI_IO_PROTOCOL_FLUSH Flush;
214 + EFI_PCI_IO_PROTOCOL_GET_LOCATION GetLocation;
215 + EFI_PCI_IO_PROTOCOL_ATTRIBUTES Attributes;
216 + EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES GetBarAttributes;
217 + EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES SetBarAttributes;
222 +#endif /* _EFI_PCI_IO_H */