4 #define EFI_PCI_IO_PROTOCOL \
5 { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a} }
7 INTERFACE_DECL(_EFI_PCI_IO);
14 EfiPciIoWidthFifoUint8,
15 EfiPciIoWidthFifoUint16,
16 EfiPciIoWidthFifoUint32,
17 EfiPciIoWidthFifoUint64,
18 EfiPciIoWidthFillUint8,
19 EfiPciIoWidthFillUint16,
20 EfiPciIoWidthFillUint32,
21 EfiPciIoWidthFillUint64,
23 } EFI_PCI_IO_PROTOCOL_WIDTH;
25 #define EFI_PCI_IO_PASS_THROUGH_BAR 0xff
29 (EFIAPI *EFI_PCI_IO_PROTOCOL_POLL_IO_MEM) (
30 IN struct _EFI_PCI_IO *This,
31 IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
42 (EFIAPI *EFI_PCI_IO_PROTOCOL_IO_MEM) (
43 IN struct _EFI_PCI_IO *This,
44 IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
52 EFI_PCI_IO_PROTOCOL_IO_MEM Read;
53 EFI_PCI_IO_PROTOCOL_IO_MEM Write;
54 } EFI_PCI_IO_PROTOCOL_ACCESS;
58 (EFIAPI *EFI_PCI_IO_PROTOCOL_CONFIG) (
59 IN struct _EFI_PCI_IO *This,
60 IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
67 EFI_PCI_IO_PROTOCOL_CONFIG Read;
68 EFI_PCI_IO_PROTOCOL_CONFIG Write;
69 } EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS;
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,
84 EfiPciIoOperationBusMasterRead,
85 EfiPciIoOperationBusMasterWrite,
86 EfiPciIoOperationBusMasterCommonBuffer,
87 EfiPciIoOperationMaximum
88 } EFI_PCI_IO_PROTOCOL_OPERATION;
92 (EFIAPI *EFI_PCI_IO_PROTOCOL_MAP) (
93 IN struct _EFI_PCI_IO *This,
94 IN EFI_PCI_IO_PROTOCOL_OPERATION Operation,
96 IN OUT UINTN *NumberOfBytes,
97 OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
103 (EFIAPI *EFI_PCI_IO_PROTOCOL_UNMAP) (
104 IN struct _EFI_PCI_IO *This,
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,
115 OUT VOID **HostAddress,
121 (EFIAPI *EFI_PCI_IO_PROTOCOL_FREE_BUFFER) (
122 IN struct _EFI_PCI_IO *This,
129 (EFIAPI *EFI_PCI_IO_PROTOCOL_FLUSH) (
130 IN struct _EFI_PCI_IO *This
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
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
163 EfiPciIoAttributeOperationGet,
164 EfiPciIoAttributeOperationSet,
165 EfiPciIoAttributeOperationEnable,
166 EfiPciIoAttributeOperationDisable,
167 EfiPciIoAttributeOperationSupported,
168 EfiPciIoAttributeOperationMaximum
169 } EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION;
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
182 (EFIAPI *EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES) (
183 IN struct _EFI_PCI_IO *This,
185 OUT UINT64 *Supports OPTIONAL,
186 OUT VOID **Resources OPTIONAL
191 (EFIAPI *EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES) (
192 IN struct _EFI_PCI_IO *This,
193 IN UINT64 Attributes,
195 IN OUT UINT64 *Offset,
196 IN OUT UINT64 *Length
199 typedef 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;
219 #endif /* _EFI_PCI_IO_H */