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