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