VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/MdePkg/Include/Ppi/CpuIo.h@ 58466

Last change on this file since 58466 was 58466, checked in by vboxsync, 9 years ago

EFI/Firmware: Merged in the svn:eol-style, svn:mime-type and trailing whitespace cleanup that was done after the initial UDK2014.SP1 import: svn merge /vendor/edk2/UDK2014.SP1 /vendor/edk2/current .

  • Property svn:eol-style set to native
File size: 12.6 KB
Line 
1/** @file
2 This PPI provides a set of memory and I/O-based services.
3 The perspective of the services is that of the processor, not the bus or system.
4
5Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
6This program and the accompanying materials are licensed and made available under
7the terms and conditions of the BSD License that accompanies this distribution.
8The full text of the license may be found at
9http://opensource.org/licenses/bsd-license.php.
10
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 @par Revision Reference:
15 This PPI is introduced in PI Version 1.0.
16
17**/
18
19#ifndef __PEI_CPUIO_PPI_H__
20#define __PEI_CPUIO_PPI_H__
21
22#define EFI_PEI_CPU_IO_PPI_INSTALLED_GUID \
23 { 0xe6af1f7b, 0xfc3f, 0x46da, {0xa8, 0x28, 0xa3, 0xb4, 0x57, 0xa4, 0x42, 0x82 } }
24
25typedef struct _EFI_PEI_CPU_IO_PPI EFI_PEI_CPU_IO_PPI;
26
27///
28/// EFI_PEI_CPU_IO_PPI_WIDTH.
29///
30typedef enum {
31 EfiPeiCpuIoWidthUint8,
32 EfiPeiCpuIoWidthUint16,
33 EfiPeiCpuIoWidthUint32,
34 EfiPeiCpuIoWidthUint64,
35 EfiPeiCpuIoWidthFifoUint8,
36 EfiPeiCpuIoWidthFifoUint16,
37 EfiPeiCpuIoWidthFifoUint32,
38 EfiPeiCpuIoWidthFifoUint64,
39 EfiPeiCpuIoWidthFillUint8,
40 EfiPeiCpuIoWidthFillUint16,
41 EfiPeiCpuIoWidthFillUint32,
42 EfiPeiCpuIoWidthFillUint64,
43 EfiPeiCpuIoWidthMaximum
44} EFI_PEI_CPU_IO_PPI_WIDTH;
45
46/**
47 Memory-based access services and I/O-based access services.
48
49 @param[in] PeiServices An indirect pointer to the PEI Services Table
50 published by the PEI Foundation.
51 @param[in] This The pointer to local data for the interface.
52 @param[in] Width The width of the access. Enumerated in bytes.
53 @param[in] Address The physical address of the access.
54 @param[in] Count The number of accesses to perform.
55 @param[in, out] Buffer A pointer to the buffer of data.
56
57 @retval EFI_SUCCESS The function completed successfully.
58 @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
59
60**/
61typedef
62EFI_STATUS
63(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_MEM)(
64 IN CONST EFI_PEI_SERVICES **PeiServices,
65 IN CONST EFI_PEI_CPU_IO_PPI *This,
66 IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
67 IN UINT64 Address,
68 IN UINTN Count,
69 IN OUT VOID *Buffer
70 );
71
72///
73/// EFI_PEI_CPU_IO_PPI_ACCESS
74///
75typedef struct {
76 ///
77 /// This service provides the various modalities of memory and I/O read.
78 ///
79 EFI_PEI_CPU_IO_PPI_IO_MEM Read;
80 ///
81 /// This service provides the various modalities of memory and I/O write.
82 ///
83 EFI_PEI_CPU_IO_PPI_IO_MEM Write;
84} EFI_PEI_CPU_IO_PPI_ACCESS;
85
86/**
87 8-bit I/O read operations.
88
89 @param[in] PeiServices An indirect pointer to the PEI Services Table published
90 by the PEI Foundation.
91 @param[in] This The pointer to local data for the interface.
92 @param[in] Address The physical address of the access.
93
94 @return An 8-bit value returned from the I/O space.
95
96**/
97typedef
98UINT8
99(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ8)(
100 IN CONST EFI_PEI_SERVICES **PeiServices,
101 IN CONST EFI_PEI_CPU_IO_PPI *This,
102 IN UINT64 Address
103 );
104
105/**
106 16-bit I/O read operations.
107
108 @param[in] PeiServices An indirect pointer to the PEI Services Table published
109 by the PEI Foundation.
110 @param[in] This The pointer to local data for the interface.
111 @param[in] Address The physical address of the access.
112
113 @return A 16-bit value returned from the I/O space.
114
115**/
116typedef
117UINT16
118(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ16)(
119 IN CONST EFI_PEI_SERVICES **PeiServices,
120 IN CONST EFI_PEI_CPU_IO_PPI *This,
121 IN UINT64 Address
122 );
123
124/**
125 32-bit I/O read operations.
126
127 @param[in] PeiServices An indirect pointer to the PEI Services Table published
128 by the PEI Foundation.
129 @param[in] This The pointer to local data for the interface.
130 @param[in] Address The physical address of the access.
131
132 @return A 32-bit value returned from the I/O space.
133
134**/
135typedef
136UINT32
137(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ32)(
138 IN CONST EFI_PEI_SERVICES **PeiServices,
139 IN CONST EFI_PEI_CPU_IO_PPI *This,
140 IN UINT64 Address
141 );
142
143/**
144 64-bit I/O read operations.
145
146 @param[in] PeiServices An indirect pointer to the PEI Services Table published
147 by the PEI Foundation.
148 @param[in] This The pointer to local data for the interface.
149 @param[in] Address The physical address of the access.
150
151 @return A 64-bit value returned from the I/O space.
152
153**/
154typedef
155UINT64
156(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ64)(
157 IN CONST EFI_PEI_SERVICES **PeiServices,
158 IN CONST EFI_PEI_CPU_IO_PPI *This,
159 IN UINT64 Address
160 );
161
162/**
163 8-bit I/O write operations.
164
165 @param[in] PeiServices An indirect pointer to the PEI Services Table published
166 by the PEI Foundation.
167 @param[in] This The pointer to local data for the interface.
168 @param[in] Address The physical address of the access.
169 @param[in] Data The data to write.
170
171**/
172typedef
173VOID
174(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE8)(
175 IN CONST EFI_PEI_SERVICES **PeiServices,
176 IN CONST EFI_PEI_CPU_IO_PPI *This,
177 IN UINT64 Address,
178 IN UINT8 Data
179 );
180
181/**
182 16-bit I/O write operations.
183
184 @param[in] PeiServices An indirect pointer to the PEI Services Table published
185 by the PEI Foundation.
186 @param[in] This The pointer to local data for the interface.
187 @param[in] Address The physical address of the access.
188 @param[in] Data The data to write.
189
190**/
191typedef
192VOID
193(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE16)(
194 IN CONST EFI_PEI_SERVICES **PeiServices,
195 IN CONST EFI_PEI_CPU_IO_PPI *This,
196 IN UINT64 Address,
197 IN UINT16 Data
198 );
199
200/**
201 32-bit I/O write operations.
202
203 @param[in] PeiServices An indirect pointer to the PEI Services Table published
204 by the PEI Foundation.
205 @param[in] This The pointer to local data for the interface.
206 @param[in] Address The physical address of the access.
207 @param[in] Data The data to write.
208
209**/
210typedef
211VOID
212(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE32)(
213 IN CONST EFI_PEI_SERVICES **PeiServices,
214 IN CONST EFI_PEI_CPU_IO_PPI *This,
215 IN UINT64 Address,
216 IN UINT32 Data
217 );
218
219/**
220 64-bit I/O write operations.
221
222 @param[in] PeiServices An indirect pointer to the PEI Services Table published
223 by the PEI Foundation.
224 @param[in] This The pointer to local data for the interface.
225 @param[in] Address The physical address of the access.
226 @param[in] Data The data to write.
227
228**/
229typedef
230VOID
231(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE64)(
232 IN CONST EFI_PEI_SERVICES **PeiServices,
233 IN CONST EFI_PEI_CPU_IO_PPI *This,
234 IN UINT64 Address,
235 IN UINT64 Data
236 );
237
238/**
239 8-bit memory read operations.
240
241 @param[in] PeiServices An indirect pointer to the PEI Services Table published
242 by the PEI Foundation.
243 @param[in] This The pointer to local data for the interface.
244 @param[in] Address The physical address of the access.
245
246 @return An 8-bit value returned from the memory space.
247
248**/
249typedef
250UINT8
251(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ8)(
252 IN CONST EFI_PEI_SERVICES **PeiServices,
253 IN CONST EFI_PEI_CPU_IO_PPI *This,
254 IN UINT64 Address
255 );
256
257/**
258 16-bit memory read operations.
259
260 @param[in] PeiServices An indirect pointer to the PEI Services Table published
261 by the PEI Foundation.
262 @param[in] This The pointer to local data for the interface.
263 @param[in] Address The physical address of the access.
264
265 @return A 16-bit value returned from the memory space.
266
267**/
268typedef
269UINT16
270(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ16)(
271 IN CONST EFI_PEI_SERVICES **PeiServices,
272 IN CONST EFI_PEI_CPU_IO_PPI *This,
273 IN UINT64 Address
274 );
275
276/**
277 32-bit memory read operations.
278
279 @param[in] PeiServices An indirect pointer to the PEI Services Table published
280 by the PEI Foundation.
281 @param[in] This The pointer to local data for the interface.
282 @param[in] Address The physical address of the access.
283
284 @return A 32-bit value returned from the memory space.
285
286**/
287typedef
288UINT32
289(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ32)(
290 IN CONST EFI_PEI_SERVICES **PeiServices,
291 IN CONST EFI_PEI_CPU_IO_PPI *This,
292 IN UINT64 Address
293 );
294
295/**
296 64-bit memory read operations.
297
298 @param[in] PeiServices An indirect pointer to the PEI Services Table published
299 by the PEI Foundation.
300 @param[in] This The pointer to local data for the interface.
301 @param[in] Address The physical address of the access.
302
303 @return A 64-bit value returned from the memory space.
304
305**/
306typedef
307UINT64
308(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ64)(
309 IN CONST EFI_PEI_SERVICES **PeiServices,
310 IN CONST EFI_PEI_CPU_IO_PPI *This,
311 IN UINT64 Address
312 );
313
314/**
315 8-bit memory write operations.
316
317 @param[in] PeiServices An indirect pointer to the PEI Services Table published
318 by the PEI Foundation.
319 @param[in] This The pointer to local data for the interface.
320 @param[in] Address The physical address of the access.
321 @param[in] Data The data to write.
322
323**/
324typedef
325VOID
326(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE8)(
327 IN CONST EFI_PEI_SERVICES **PeiServices,
328 IN CONST EFI_PEI_CPU_IO_PPI *This,
329 IN UINT64 Address,
330 IN UINT8 Data
331 );
332
333/**
334 16-bit memory write operations.
335
336 @param[in] PeiServices An indirect pointer to the PEI Services Table published
337 by the PEI Foundation.
338 @param[in] This The pointer to local data for the interface.
339 @param[in] Address The physical address of the access.
340 @param[in] Data The data to write.
341
342**/
343typedef
344VOID
345(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE16)(
346 IN CONST EFI_PEI_SERVICES **PeiServices,
347 IN CONST EFI_PEI_CPU_IO_PPI *This,
348 IN UINT64 Address,
349 IN UINT16 Data
350 );
351
352/**
353 32-bit memory write operations.
354
355 @param[in] PeiServices An indirect pointer to the PEI Services Table published
356 by the PEI Foundation.
357 @param[in] This The pointer to local data for the interface.
358 @param[in] Address The physical address of the access.
359 @param[in] Data The data to write.
360
361**/
362typedef
363VOID
364(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE32)(
365 IN CONST EFI_PEI_SERVICES **PeiServices,
366 IN CONST EFI_PEI_CPU_IO_PPI *This,
367 IN UINT64 Address,
368 IN UINT32 Data
369 );
370
371/**
372 64-bit memory write operations.
373
374 @param[in] PeiServices An indirect pointer to the PEI Services Table published
375 by the PEI Foundation.
376 @param[in] This The pointer to local data for the interface.
377 @param[in] Address The physical address of the access.
378 @param[in] Data The data to write.
379
380**/
381typedef
382VOID
383(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE64)(
384 IN CONST EFI_PEI_SERVICES **PeiServices,
385 IN CONST EFI_PEI_CPU_IO_PPI *This,
386 IN UINT64 Address,
387 IN UINT64 Data
388 );
389
390///
391/// EFI_PEI_CPU_IO_PPI provides a set of memory and I/O-based services.
392/// The perspective of the services is that of the processor, not that of the
393/// bus or system.
394///
395struct _EFI_PEI_CPU_IO_PPI {
396 ///
397 /// Collection of memory-access services.
398 ///
399 EFI_PEI_CPU_IO_PPI_ACCESS Mem;
400 ///
401 /// Collection of I/O-access services.
402 ///
403 EFI_PEI_CPU_IO_PPI_ACCESS Io;
404
405 EFI_PEI_CPU_IO_PPI_IO_READ8 IoRead8;
406 EFI_PEI_CPU_IO_PPI_IO_READ16 IoRead16;
407 EFI_PEI_CPU_IO_PPI_IO_READ32 IoRead32;
408 EFI_PEI_CPU_IO_PPI_IO_READ64 IoRead64;
409
410 EFI_PEI_CPU_IO_PPI_IO_WRITE8 IoWrite8;
411 EFI_PEI_CPU_IO_PPI_IO_WRITE16 IoWrite16;
412 EFI_PEI_CPU_IO_PPI_IO_WRITE32 IoWrite32;
413 EFI_PEI_CPU_IO_PPI_IO_WRITE64 IoWrite64;
414
415 EFI_PEI_CPU_IO_PPI_MEM_READ8 MemRead8;
416 EFI_PEI_CPU_IO_PPI_MEM_READ16 MemRead16;
417 EFI_PEI_CPU_IO_PPI_MEM_READ32 MemRead32;
418 EFI_PEI_CPU_IO_PPI_MEM_READ64 MemRead64;
419
420 EFI_PEI_CPU_IO_PPI_MEM_WRITE8 MemWrite8;
421 EFI_PEI_CPU_IO_PPI_MEM_WRITE16 MemWrite16;
422 EFI_PEI_CPU_IO_PPI_MEM_WRITE32 MemWrite32;
423 EFI_PEI_CPU_IO_PPI_MEM_WRITE64 MemWrite64;
424};
425
426extern EFI_GUID gEfiPeiCpuIoPpiInstalledGuid;
427
428#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette