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