VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/UefiCpuPkg/CpuIoPei/CpuIoPei.h@ 77599

Last change on this file since 77599 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: 13.6 KB
Line 
1/** @file
2 Internal include file for the CPU I/O PPI.
3
4Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
5This program and the accompanying materials
6are licensed and made available under the terms and conditions of the BSD License
7which accompanies this distribution. The full text of the license may be found at
8http://opensource.org/licenses/bsd-license.php
9
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13**/
14
15#ifndef _CPU_IO2_PEI_H_
16#define _CPU_IO2_PEI_H_
17
18#include <PiDxe.h>
19
20#include <Ppi/CpuIo.h>
21
22#include <Library/BaseLib.h>
23#include <Library/DebugLib.h>
24#include <Library/IoLib.h>
25#include <Library/PeiServicesLib.h>
26
27#define MAX_IO_PORT_ADDRESS 0xFFFF
28
29/**
30 Reads memory-mapped registers.
31
32 @param[in] PeiServices An indirect pointer to the PEI Services Table
33 published by the PEI Foundation.
34 @param[in] This Pointer to local data for the interface.
35 @param[in] Width The width of the access. Enumerated in bytes.
36 @param[in] Address The physical address of the access.
37 @param[in] Count The number of accesses to perform.
38 @param[out] Buffer A pointer to the buffer of data.
39
40 @retval EFI_SUCCESS The function completed successfully.
41 @retval EFI_INVALID_PARAMETER Width is invalid for this EFI system.
42 @retval EFI_INVALID_PARAMETER Buffer is NULL.
43 @retval EFI_UNSUPPORTED The address range specified by Address, Width,
44 and Count is not valid for this EFI system.
45
46**/
47EFI_STATUS
48EFIAPI
49CpuMemoryServiceRead (
50 IN CONST EFI_PEI_SERVICES **PeiServices,
51 IN CONST EFI_PEI_CPU_IO_PPI *This,
52 IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
53 IN UINT64 Address,
54 IN UINTN Count,
55 OUT VOID *Buffer
56 );
57
58/**
59 Writes memory-mapped registers.
60
61 @param[in] PeiServices An indirect pointer to the PEI Services Table
62 published by the PEI Foundation.
63 @param[in] This Pointer to local data for the interface.
64 @param[in] Width The width of the access. Enumerated in bytes.
65 @param[in] Address The physical address of the access.
66 @param[in] Count The number of accesses to perform.
67 @param[in] Buffer A pointer to the buffer of data.
68
69 @retval EFI_SUCCESS The function completed successfully.
70 @retval EFI_INVALID_PARAMETER Width is invalid for this EFI system.
71 @retval EFI_INVALID_PARAMETER Buffer is NULL.
72 @retval EFI_UNSUPPORTED The address range specified by Address, Width,
73 and Count is not valid for this EFI system.
74
75**/
76EFI_STATUS
77EFIAPI
78CpuMemoryServiceWrite (
79 IN CONST EFI_PEI_SERVICES **PeiServices,
80 IN CONST EFI_PEI_CPU_IO_PPI *This,
81 IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
82 IN UINT64 Address,
83 IN UINTN Count,
84 IN VOID *Buffer
85 );
86
87/**
88 Reads I/O registers.
89
90 @param[in] PeiServices An indirect pointer to the PEI Services Table
91 published by the PEI Foundation.
92 @param[in] This Pointer to local data for the interface.
93 @param[in] Width The width of the access. Enumerated in bytes.
94 @param[in] Address The physical address of the access.
95 @param[in] Count The number of accesses to perform.
96 @param[out] Buffer A pointer to the buffer of data.
97
98 @retval EFI_SUCCESS The function completed successfully.
99 @retval EFI_INVALID_PARAMETER Width is invalid for this EFI system.
100 @retval EFI_INVALID_PARAMETER Buffer is NULL.
101 @retval EFI_UNSUPPORTED The address range specified by Address, Width,
102 and Count is not valid for this EFI system.
103
104**/
105EFI_STATUS
106EFIAPI
107CpuIoServiceRead (
108 IN CONST EFI_PEI_SERVICES **PeiServices,
109 IN CONST EFI_PEI_CPU_IO_PPI *This,
110 IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
111 IN UINT64 Address,
112 IN UINTN Count,
113 OUT VOID *Buffer
114 );
115
116/**
117 Write I/O registers.
118
119 @param[in] PeiServices An indirect pointer to the PEI Services Table
120 published by the PEI Foundation.
121 @param[in] This Pointer to local data for the interface.
122 @param[in] Width The width of the access. Enumerated in bytes.
123 @param[in] Address The physical address of the access.
124 @param[in] Count The number of accesses to perform.
125 @param[in] Buffer A pointer to the buffer of data.
126
127 @retval EFI_SUCCESS The function completed successfully.
128 @retval EFI_INVALID_PARAMETER Width is invalid for this EFI system.
129 @retval EFI_INVALID_PARAMETER Buffer is NULL.
130 @retval EFI_UNSUPPORTED The address range specified by Address, Width,
131 and Count is not valid for this EFI system.
132
133**/
134EFI_STATUS
135EFIAPI
136CpuIoServiceWrite (
137 IN CONST EFI_PEI_SERVICES **PeiServices,
138 IN CONST EFI_PEI_CPU_IO_PPI *This,
139 IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
140 IN UINT64 Address,
141 IN UINTN Count,
142 IN VOID *Buffer
143 );
144
145/**
146 8-bit I/O read operations.
147
148 @param[in] PeiServices An indirect pointer to the PEI Services Table published
149 by the PEI Foundation.
150 @param[in] This Pointer to local data for the interface.
151 @param[in] Address The physical address of the access.
152
153 @return An 8-bit value returned from the I/O space.
154**/
155UINT8
156EFIAPI
157CpuIoRead8 (
158 IN CONST EFI_PEI_SERVICES **PeiServices,
159 IN CONST EFI_PEI_CPU_IO_PPI *This,
160 IN UINT64 Address
161 );
162
163/**
164 16-bit I/O read operations.
165
166 @param[in] PeiServices An indirect pointer to the PEI Services Table published
167 by the PEI Foundation.
168 @param[in] This Pointer to local data for the interface.
169 @param[in] Address The physical address of the access.
170
171 @return A 16-bit value returned from the I/O space.
172
173**/
174UINT16
175EFIAPI
176CpuIoRead16 (
177 IN CONST EFI_PEI_SERVICES **PeiServices,
178 IN CONST EFI_PEI_CPU_IO_PPI *This,
179 IN UINT64 Address
180 );
181
182/**
183 32-bit I/O read operations.
184
185 @param[in] PeiServices An indirect pointer to the PEI Services Table published
186 by the PEI Foundation.
187 @param[in] This Pointer to local data for the interface.
188 @param[in] Address The physical address of the access.
189
190 @return A 32-bit value returned from the I/O space.
191
192**/
193UINT32
194EFIAPI
195CpuIoRead32 (
196 IN CONST EFI_PEI_SERVICES **PeiServices,
197 IN CONST EFI_PEI_CPU_IO_PPI *This,
198 IN UINT64 Address
199 );
200
201/**
202 64-bit I/O read operations.
203
204 @param[in] PeiServices An indirect pointer to the PEI Services Table published
205 by the PEI Foundation.
206 @param[in] This Pointer to local data for the interface.
207 @param[in] Address The physical address of the access.
208
209 @return A 64-bit value returned from the I/O space.
210
211**/
212UINT64
213EFIAPI
214CpuIoRead64 (
215 IN CONST EFI_PEI_SERVICES **PeiServices,
216 IN CONST EFI_PEI_CPU_IO_PPI *This,
217 IN UINT64 Address
218 );
219
220/**
221 8-bit I/O write operations.
222
223 @param[in] PeiServices An indirect pointer to the PEI Services Table published
224 by the PEI Foundation.
225 @param[in] This Pointer to local data for the interface.
226 @param[in] Address The physical address of the access.
227 @param[in] Data The data to write.
228
229**/
230VOID
231EFIAPI
232CpuIoWrite8 (
233 IN CONST EFI_PEI_SERVICES **PeiServices,
234 IN CONST EFI_PEI_CPU_IO_PPI *This,
235 IN UINT64 Address,
236 IN UINT8 Data
237 );
238
239/**
240 16-bit I/O write operations.
241
242 @param[in] PeiServices An indirect pointer to the PEI Services Table published
243 by the PEI Foundation.
244 @param[in] This Pointer to local data for the interface.
245 @param[in] Address The physical address of the access.
246 @param[in] Data The data to write.
247
248**/
249VOID
250EFIAPI
251CpuIoWrite16 (
252 IN CONST EFI_PEI_SERVICES **PeiServices,
253 IN CONST EFI_PEI_CPU_IO_PPI *This,
254 IN UINT64 Address,
255 IN UINT16 Data
256 );
257
258/**
259 32-bit I/O write operations.
260
261 @param[in] PeiServices An indirect pointer to the PEI Services Table published
262 by the PEI Foundation.
263 @param[in] This Pointer to local data for the interface.
264 @param[in] Address The physical address of the access.
265 @param[in] Data The data to write.
266
267**/
268VOID
269EFIAPI
270CpuIoWrite32 (
271 IN CONST EFI_PEI_SERVICES **PeiServices,
272 IN CONST EFI_PEI_CPU_IO_PPI *This,
273 IN UINT64 Address,
274 IN UINT32 Data
275 );
276
277/**
278 64-bit I/O write operations.
279
280 @param[in] PeiServices An indirect pointer to the PEI Services Table published
281 by the PEI Foundation.
282 @param[in] This Pointer to local data for the interface.
283 @param[in] Address The physical address of the access.
284 @param[in] Data The data to write.
285
286**/
287VOID
288EFIAPI
289CpuIoWrite64 (
290 IN CONST EFI_PEI_SERVICES **PeiServices,
291 IN CONST EFI_PEI_CPU_IO_PPI *This,
292 IN UINT64 Address,
293 IN UINT64 Data
294 );
295
296/**
297 8-bit memory read operations.
298
299 @param[in] PeiServices An indirect pointer to the PEI Services Table published
300 by the PEI Foundation.
301 @param[in] This Pointer to local data for the interface.
302 @param[in] Address The physical address of the access.
303
304 @return An 8-bit value returned from the memory space.
305
306**/
307UINT8
308EFIAPI
309CpuMemRead8 (
310 IN CONST EFI_PEI_SERVICES **PeiServices,
311 IN CONST EFI_PEI_CPU_IO_PPI *This,
312 IN UINT64 Address
313 );
314
315/**
316 16-bit memory read operations.
317
318 @param[in] PeiServices An indirect pointer to the PEI Services Table published
319 by the PEI Foundation.
320 @param[in] This Pointer to local data for the interface.
321 @param[in] Address The physical address of the access.
322
323 @return A 16-bit value returned from the memory space.
324
325**/
326UINT16
327EFIAPI
328CpuMemRead16 (
329 IN CONST EFI_PEI_SERVICES **PeiServices,
330 IN CONST EFI_PEI_CPU_IO_PPI *This,
331 IN UINT64 Address
332 );
333
334/**
335 32-bit memory read operations.
336
337 @param[in] PeiServices An indirect pointer to the PEI Services Table published
338 by the PEI Foundation.
339 @param[in] This Pointer to local data for the interface.
340 @param[in] Address The physical address of the access.
341
342 @return A 32-bit value returned from the memory space.
343
344**/
345UINT32
346EFIAPI
347CpuMemRead32 (
348 IN CONST EFI_PEI_SERVICES **PeiServices,
349 IN CONST EFI_PEI_CPU_IO_PPI *This,
350 IN UINT64 Address
351 );
352
353/**
354 64-bit memory read operations.
355
356 @param[in] PeiServices An indirect pointer to the PEI Services Table published
357 by the PEI Foundation.
358 @param[in] This Pointer to local data for the interface.
359 @param[in] Address The physical address of the access.
360
361 @return A 64-bit value returned from the memory space.
362
363**/
364UINT64
365EFIAPI
366CpuMemRead64 (
367 IN CONST EFI_PEI_SERVICES **PeiServices,
368 IN CONST EFI_PEI_CPU_IO_PPI *This,
369 IN UINT64 Address
370 );
371
372/**
373 8-bit memory write operations.
374
375 @param[in] PeiServices An indirect pointer to the PEI Services Table published
376 by the PEI Foundation.
377 @param[in] This Pointer to local data for the interface.
378 @param[in] Address The physical address of the access.
379 @param[in] Data The data to write.
380
381**/
382VOID
383EFIAPI
384CpuMemWrite8 (
385 IN CONST EFI_PEI_SERVICES **PeiServices,
386 IN CONST EFI_PEI_CPU_IO_PPI *This,
387 IN UINT64 Address,
388 IN UINT8 Data
389 );
390
391/**
392 16-bit memory write operations.
393
394 @param[in] PeiServices An indirect pointer to the PEI Services Table published
395 by the PEI Foundation.
396 @param[in] This Pointer to local data for the interface.
397 @param[in] Address The physical address of the access.
398 @param[in] Data The data to write.
399
400**/
401VOID
402EFIAPI
403CpuMemWrite16 (
404 IN CONST EFI_PEI_SERVICES **PeiServices,
405 IN CONST EFI_PEI_CPU_IO_PPI *This,
406 IN UINT64 Address,
407 IN UINT16 Data
408 );
409
410/**
411 32-bit memory write operations.
412
413 @param[in] PeiServices An indirect pointer to the PEI Services Table published
414 by the PEI Foundation.
415 @param[in] This Pointer to local data for the interface.
416 @param[in] Address The physical address of the access.
417 @param[in] Data The data to write.
418
419**/
420VOID
421EFIAPI
422CpuMemWrite32 (
423 IN CONST EFI_PEI_SERVICES **PeiServices,
424 IN CONST EFI_PEI_CPU_IO_PPI *This,
425 IN UINT64 Address,
426 IN UINT32 Data
427 );
428
429/**
430 64-bit memory write operations.
431
432 @param[in] PeiServices An indirect pointer to the PEI Services Table published
433 by the PEI Foundation.
434 @param[in] This Pointer to local data for the interface.
435 @param[in] Address The physical address of the access.
436 @param[in] Data The data to write.
437
438**/
439VOID
440EFIAPI
441CpuMemWrite64 (
442 IN CONST EFI_PEI_SERVICES **PeiServices,
443 IN CONST EFI_PEI_CPU_IO_PPI *This,
444 IN UINT64 Address,
445 IN UINT64 Data
446 );
447
448#endif
Note: See TracBrowser for help on using the repository browser.

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