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