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