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