]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - MdePkg/Include/Ppi/CpuIo.h
Update MdePkg/Include/Ppi according to code review comments.
[mirror_edk2.git] / MdePkg / Include / Ppi / CpuIo.h
... / ...
CommitLineData
1/** @file\r
2 This PPI provides a set of memory- and I/O-based services. \r
3 The perspective of the services is that of the processor, not the bus or system.\r
4\r
5 Copyright (c) 2006 - 2008, Intel Corporation \r
6 All rights reserved. This program and the accompanying materials \r
7 are licensed and made available under the terms and conditions of the BSD License \r
8 which accompanies this distribution. The full text of the license may be found at \r
9 http://opensource.org/licenses/bsd-license.php \r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
13\r
14 @par Revision Reference:\r
15 This PPI is defined in PI.\r
16 Version 1.0.\r
17 \r
18**/\r
19\r
20#ifndef __PEI_CPUIO_PPI_H__\r
21#define __PEI_CPUIO_PPI_H__\r
22\r
23#include <Pi/PiPeiCis.h>\r
24\r
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\r
55 published by the PEI Foundation.\r
56 @param This Pointer to local data for the interface.\r
57 @param Width The width of the access. Enumerated in bytes.\r
58 @param Address The physical address of the access.\r
59 @param Count The number of accesses to perform.\r
60 @param Buffer A pointer to the buffer of data.\r
61\r
62 @retval EFI_SUCCESS The function completed successfully.\r
63 @retval EFI_NOT_YET_AVAILABLE The service has not been installed.\r
64\r
65**/\r
66typedef\r
67EFI_STATUS\r
68(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_MEM)(\r
69 IN CONST EFI_PEI_SERVICES **PeiServices,\r
70 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
71 IN EFI_PEI_CPU_IO_PPI_WIDTH Width,\r
72 IN UINT64 Address,\r
73 IN UINTN Count,\r
74 IN OUT VOID *Buffer\r
75 );\r
76\r
77///\r
78/// *******************************************************\r
79/// EFI_PEI_CPU_IO_PPI_ACCESS\r
80/// *******************************************************\r
81///\r
82typedef struct {\r
83 ///\r
84 /// This service provides the various modalities of memory and I/O read.\r
85 ///\r
86 EFI_PEI_CPU_IO_PPI_IO_MEM Read;\r
87 ///\r
88 /// This service provides the various modalities of memory and I/O write.\r
89 ///\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 @param This Pointer to local data for the interface.\r
98 @param Address The physical address of the access.\r
99\r
100 @return An 8-bit value returned from the I/O space.\r
101\r
102**/\r
103typedef\r
104UINT8\r
105(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ8)(\r
106 IN CONST EFI_PEI_SERVICES **PeiServices,\r
107 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
108 IN UINT64 Address\r
109 );\r
110\r
111/**\r
112 16-bit I/O read operations.\r
113\r
114 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
115 @param This Pointer to local data for the interface.\r
116 @param Address The physical address of the access.\r
117\r
118 @return A 16-bit value returned from the I/O space.\r
119\r
120**/\r
121typedef\r
122UINT16\r
123(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ16)(\r
124 IN CONST EFI_PEI_SERVICES **PeiServices,\r
125 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
126 IN UINT64 Address\r
127 );\r
128\r
129/**\r
130 32-bit I/O read operations.\r
131\r
132 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
133 @param This Pointer to local data for the interface.\r
134 @param Address The physical address of the access.\r
135\r
136 @return A 32-bit value returned from the I/O space.\r
137\r
138**/\r
139typedef\r
140UINT32\r
141(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ32)(\r
142 IN CONST EFI_PEI_SERVICES **PeiServices,\r
143 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
144 IN UINT64 Address\r
145 );\r
146\r
147/**\r
148 64-bit I/O read operations.\r
149\r
150 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
151 @param This Pointer to local data for the interface.\r
152 @param Address The physical address of the access.\r
153\r
154 @return A 64-bit value returned from the I/O space.\r
155\r
156**/\r
157typedef\r
158UINT64\r
159(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ64)(\r
160 IN CONST EFI_PEI_SERVICES **PeiServices,\r
161 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
162 IN UINT64 Address\r
163 );\r
164\r
165/**\r
166 8-bit I/O write operations.\r
167\r
168 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
169 @param This Pointer to local data for the interface.\r
170 @param Address The physical address of the access.\r
171 @param Data The data to write.\r
172\r
173**/\r
174typedef\r
175VOID\r
176(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE8)(\r
177 IN CONST EFI_PEI_SERVICES **PeiServices,\r
178 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
179 IN UINT64 Address,\r
180 IN UINT8 Data\r
181 );\r
182\r
183/**\r
184 16-bit I/O write operations.\r
185\r
186 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
187 @param This Pointer to local data for the interface.\r
188 @param Address The physical address of the access.\r
189 @param Data The data to write.\r
190\r
191**/\r
192typedef\r
193VOID\r
194(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE16)(\r
195 IN CONST EFI_PEI_SERVICES **PeiServices,\r
196 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
197 IN UINT64 Address,\r
198 IN UINT16 Data\r
199 );\r
200\r
201/**\r
202 32-bit I/O write operations.\r
203\r
204 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
205 @param This Pointer to local data for the interface.\r
206 @param Address The physical address of the access.\r
207 @param Data The data to write.\r
208\r
209**/\r
210typedef\r
211VOID\r
212(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE32)(\r
213 IN CONST EFI_PEI_SERVICES **PeiServices,\r
214 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
215 IN UINT64 Address,\r
216 IN UINT32 Data\r
217 );\r
218\r
219/**\r
220 64-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 @param This Pointer to local data for the interface.\r
224 @param Address The physical address of the access.\r
225 @param Data The data to write.\r
226\r
227**/\r
228typedef\r
229VOID\r
230(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE64)(\r
231 IN CONST EFI_PEI_SERVICES **PeiServices,\r
232 IN CONST 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 An 8-bit value returned from the memory space.\r
245\r
246**/\r
247typedef\r
248UINT8\r
249(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ8)(\r
250 IN CONST EFI_PEI_SERVICES **PeiServices,\r
251 IN CONST 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 A 16-bit value returned from the memory space.\r
263\r
264**/\r
265typedef\r
266UINT16\r
267(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ16)(\r
268 IN CONST EFI_PEI_SERVICES **PeiServices,\r
269 IN CONST 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 A 32-bit value returned from the memory space.\r
281\r
282**/\r
283typedef\r
284UINT32\r
285(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ32)(\r
286 IN CONST EFI_PEI_SERVICES **PeiServices,\r
287 IN CONST 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 A 64-bit value returned from the memory space.\r
299\r
300**/\r
301typedef\r
302UINT64\r
303(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ64)(\r
304 IN CONST EFI_PEI_SERVICES **PeiServices,\r
305 IN CONST 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**/\r
318typedef\r
319VOID\r
320(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE8)(\r
321 IN CONST EFI_PEI_SERVICES **PeiServices,\r
322 IN CONST 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**/\r
336typedef\r
337VOID\r
338(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE16)(\r
339 IN CONST EFI_PEI_SERVICES **PeiServices,\r
340 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
341 IN UINT64 Address,\r
342 IN UINT16 Data\r
343 );\r
344\r
345/**\r
346 32-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 @param This Pointer to local data for the interface.\r
350 @param Address The physical address of the access.\r
351 @param Data The data to write.\r
352\r
353**/\r
354typedef\r
355VOID\r
356(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE32)(\r
357 IN CONST EFI_PEI_SERVICES **PeiServices,\r
358 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
359 IN UINT64 Address,\r
360 IN UINT32 Data\r
361 );\r
362\r
363/**\r
364 64-bit memory write operations.\r
365\r
366 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
367 @param This Pointer to local data for the interface.\r
368 @param Address The physical address of the access.\r
369 @param Data The data to write.\r
370\r
371**/\r
372typedef\r
373VOID\r
374(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE64)(\r
375 IN CONST EFI_PEI_SERVICES **PeiServices,\r
376 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
377 IN UINT64 Address,\r
378 IN UINT64 Data\r
379 );\r
380\r
381///\r
382/// EFI_PEI_CPU_IO_PPI provides a set of memory and I/O-based services.\r
383/// The perspective of the services is that of the processor, not the bus or system.\r
384///\r
385struct _EFI_PEI_CPU_IO_PPI {\r
386 ///\r
387 /// Collection of memory-access services.\r
388 ///\r
389 EFI_PEI_CPU_IO_PPI_ACCESS Mem;\r
390 ///\r
391 /// Collection of I/O-access services.\r
392 ///\r
393 EFI_PEI_CPU_IO_PPI_ACCESS Io;\r
394 ///\r
395 /// 8-bit I/O read service.\r
396 ///\r
397 EFI_PEI_CPU_IO_PPI_IO_READ8 IoRead8;\r
398 ///\r
399 /// 16-bit I/O read service.\r
400 ///\r
401 EFI_PEI_CPU_IO_PPI_IO_READ16 IoRead16;\r
402 ///\r
403 /// 32-bit I/O read service.\r
404 ///\r
405 EFI_PEI_CPU_IO_PPI_IO_READ32 IoRead32;\r
406 ///\r
407 /// 64-bit I/O read service.\r
408 ///\r
409 EFI_PEI_CPU_IO_PPI_IO_READ64 IoRead64;\r
410 ///\r
411 /// 8-bit I/O write service.\r
412 ///\r
413 EFI_PEI_CPU_IO_PPI_IO_WRITE8 IoWrite8;\r
414 ///\r
415 /// 16-bit I/O write service.\r
416 ///\r
417 EFI_PEI_CPU_IO_PPI_IO_WRITE16 IoWrite16;\r
418 ///\r
419 /// 32-bit I/O write service.\r
420 ///\r
421 EFI_PEI_CPU_IO_PPI_IO_WRITE32 IoWrite32;\r
422 ///\r
423 /// 64-bit I/O write service.\r
424 ///\r
425 EFI_PEI_CPU_IO_PPI_IO_WRITE64 IoWrite64;\r
426 ///\r
427 /// 8-bit memory read service.\r
428 ///\r
429 EFI_PEI_CPU_IO_PPI_MEM_READ8 MemRead8;\r
430 ///\r
431 /// 16-bit memory read service.\r
432 ///\r
433 EFI_PEI_CPU_IO_PPI_MEM_READ16 MemRead16;\r
434 ///\r
435 /// 32-bit memory read service.\r
436 ///\r
437 EFI_PEI_CPU_IO_PPI_MEM_READ32 MemRead32;\r
438 ///\r
439 /// 64-bit memory read service.\r
440 ///\r
441 EFI_PEI_CPU_IO_PPI_MEM_READ64 MemRead64;\r
442 ///\r
443 /// 8-bit memory write service.\r
444 ///\r
445 EFI_PEI_CPU_IO_PPI_MEM_WRITE8 MemWrite8;\r
446 ///\r
447 /// 16-bit memory write service.\r
448 ///\r
449 EFI_PEI_CPU_IO_PPI_MEM_WRITE16 MemWrite16;\r
450 ///\r
451 /// 32-bit memory write service.\r
452 ///\r
453 EFI_PEI_CPU_IO_PPI_MEM_WRITE32 MemWrite32;\r
454 ///\r
455 /// 64-bit memory write service.\r
456 ///\r
457 EFI_PEI_CPU_IO_PPI_MEM_WRITE64 MemWrite64;\r
458};\r
459\r
460extern EFI_GUID gEfiPeiCpuIoPpiInstalledGuid;\r
461\r
462#endif\r