]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Ppi/CpuIo.h
Formalize comments for Protocols and PPIs.
[mirror_edk2.git] / MdePkg / Include / Ppi / CpuIo.h
CommitLineData
5879b875 1/** @file\r
d7132512
LG
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
5879b875 4\r
d7132512 5 Copyright (c) 2006 - 2008, Intel Corporation \r
5879b875 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
5879b875 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
0c7f62f8 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
06889842 30///\r
31/// *******************************************************\r
32/// EFI_PEI_CPU_IO_PPI_WIDTH\r
33/// *******************************************************\r
34///\r
5879b875 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
dafa11b1 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
5879b875 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
8b13229b 68(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_MEM)(\r
dafa11b1 69 IN CONST EFI_PEI_SERVICES **PeiServices,\r
70 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
5879b875 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
06889842 77///\r
78/// *******************************************************\r
79/// EFI_PEI_CPU_IO_PPI_ACCESS\r
80/// *******************************************************\r
81///\r
5879b875 82typedef struct {\r
dafa11b1 83 ///\r
84 /// This service provides the various modalities of memory and I/O read.\r
85 ///\r
5879b875 86 EFI_PEI_CPU_IO_PPI_IO_MEM Read;\r
dafa11b1 87 ///\r
88 /// This service provides the various modalities of memory and I/O write.\r
89 ///\r
5879b875 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
dafa11b1 100 @return An 8-bit value returned from the I/O space.\r
5879b875 101\r
102**/\r
103typedef\r
104UINT8\r
8b13229b 105(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ8)(\r
dafa11b1 106 IN CONST EFI_PEI_SERVICES **PeiServices,\r
107 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
108 IN UINT64 Address\r
5879b875 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
dafa11b1 118 @return A 16-bit value returned from the I/O space.\r
5879b875 119\r
120**/\r
121typedef\r
122UINT16\r
8b13229b 123(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ16)(\r
dafa11b1 124 IN CONST EFI_PEI_SERVICES **PeiServices,\r
125 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
126 IN UINT64 Address\r
5879b875 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
dafa11b1 136 @return A 32-bit value returned from the I/O space.\r
5879b875 137\r
138**/\r
139typedef\r
140UINT32\r
8b13229b 141(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ32)(\r
dafa11b1 142 IN CONST EFI_PEI_SERVICES **PeiServices,\r
143 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
144 IN UINT64 Address\r
5879b875 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
dafa11b1 154 @return A 64-bit value returned from the I/O space.\r
5879b875 155\r
156**/\r
157typedef\r
158UINT64\r
8b13229b 159(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ64)(\r
dafa11b1 160 IN CONST EFI_PEI_SERVICES **PeiServices,\r
161 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
162 IN UINT64 Address\r
5879b875 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
5879b875 173**/\r
174typedef\r
175VOID\r
8b13229b 176(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE8)(\r
dafa11b1 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
5879b875 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
5879b875 191**/\r
192typedef\r
193VOID\r
8b13229b 194(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE16)(\r
dafa11b1 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
5879b875 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
5879b875 209**/\r
210typedef\r
211VOID\r
8b13229b 212(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE32)(\r
dafa11b1 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
5879b875 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
5879b875 227**/\r
228typedef\r
229VOID\r
8b13229b 230(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE64)(\r
dafa11b1 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
5879b875 235 );\r
236\r
237/**\r
dafa11b1 238 8-bit memory read operations.\r
5879b875 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
dafa11b1 244 @return An 8-bit value returned from the memory space.\r
5879b875 245\r
246**/\r
247typedef\r
248UINT8\r
8b13229b 249(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ8)(\r
dafa11b1 250 IN CONST EFI_PEI_SERVICES **PeiServices,\r
251 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
252 IN UINT64 Address\r
5879b875 253 );\r
254\r
255/**\r
dafa11b1 256 16-bit memory read operations.\r
5879b875 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
dafa11b1 262 @return A 16-bit value returned from the memory space.\r
5879b875 263\r
264**/\r
265typedef\r
266UINT16\r
8b13229b 267(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ16)(\r
dafa11b1 268 IN CONST EFI_PEI_SERVICES **PeiServices,\r
269 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
270 IN UINT64 Address\r
5879b875 271 );\r
272\r
273/**\r
dafa11b1 274 32-bit memory read operations.\r
5879b875 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
dafa11b1 280 @return A 32-bit value returned from the memory space.\r
5879b875 281\r
282**/\r
283typedef\r
284UINT32\r
8b13229b 285(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ32)(\r
dafa11b1 286 IN CONST EFI_PEI_SERVICES **PeiServices,\r
287 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
288 IN UINT64 Address\r
5879b875 289 );\r
290\r
291/**\r
dafa11b1 292 64-bit memory read operations.\r
5879b875 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
dafa11b1 298 @return A 64-bit value returned from the memory space.\r
5879b875 299\r
300**/\r
301typedef\r
302UINT64\r
8b13229b 303(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ64)(\r
dafa11b1 304 IN CONST EFI_PEI_SERVICES **PeiServices,\r
305 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
306 IN UINT64 Address\r
5879b875 307 );\r
308\r
309/**\r
dafa11b1 310 8-bit memory write operations.\r
5879b875 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
5879b875 317**/\r
318typedef\r
319VOID\r
8b13229b 320(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE8)(\r
dafa11b1 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
5879b875 325 );\r
326\r
327/**\r
dafa11b1 328 16-bit memory write operations.\r
5879b875 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
5879b875 335**/\r
336typedef\r
337VOID\r
8b13229b 338(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE16)(\r
dafa11b1 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
5879b875 343 );\r
344\r
345/**\r
dafa11b1 346 32-bit memory write operations.\r
5879b875 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
5879b875 353**/\r
354typedef\r
355VOID\r
8b13229b 356(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE32)(\r
dafa11b1 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
5879b875 361 );\r
362\r
363/**\r
dafa11b1 364 64-bit memory write operations.\r
5879b875 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
5879b875 371**/\r
372typedef\r
373VOID\r
8b13229b 374(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE64)(\r
dafa11b1 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
5879b875 379 );\r
380\r
dafa11b1 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
5879b875 385struct _EFI_PEI_CPU_IO_PPI {\r
44717a39 386 EFI_PEI_CPU_IO_PPI_ACCESS Mem; ///< Collection of memory-access services.\r
387 EFI_PEI_CPU_IO_PPI_ACCESS Io; ///< Collection of I/O-access services.\r
388\r
5879b875 389 EFI_PEI_CPU_IO_PPI_IO_READ8 IoRead8;\r
390 EFI_PEI_CPU_IO_PPI_IO_READ16 IoRead16;\r
391 EFI_PEI_CPU_IO_PPI_IO_READ32 IoRead32;\r
392 EFI_PEI_CPU_IO_PPI_IO_READ64 IoRead64;\r
44717a39 393\r
5879b875 394 EFI_PEI_CPU_IO_PPI_IO_WRITE8 IoWrite8;\r
395 EFI_PEI_CPU_IO_PPI_IO_WRITE16 IoWrite16;\r
396 EFI_PEI_CPU_IO_PPI_IO_WRITE32 IoWrite32;\r
397 EFI_PEI_CPU_IO_PPI_IO_WRITE64 IoWrite64;\r
44717a39 398\r
5879b875 399 EFI_PEI_CPU_IO_PPI_MEM_READ8 MemRead8;\r
400 EFI_PEI_CPU_IO_PPI_MEM_READ16 MemRead16;\r
401 EFI_PEI_CPU_IO_PPI_MEM_READ32 MemRead32;\r
402 EFI_PEI_CPU_IO_PPI_MEM_READ64 MemRead64;\r
44717a39 403\r
5879b875 404 EFI_PEI_CPU_IO_PPI_MEM_WRITE8 MemWrite8;\r
405 EFI_PEI_CPU_IO_PPI_MEM_WRITE16 MemWrite16;\r
406 EFI_PEI_CPU_IO_PPI_MEM_WRITE32 MemWrite32;\r
407 EFI_PEI_CPU_IO_PPI_MEM_WRITE64 MemWrite64;\r
408};\r
409\r
3d806b5a 410extern EFI_GUID gEfiPeiCpuIoPpiInstalledGuid;\r
5879b875 411\r
412#endif\r