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