]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Ppi/CpuIo.h
correct a operation mistake
[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
0047820e 15 This PPI is introduced in PI Version 1.0.\r
5879b875 16 \r
17**/\r
18\r
19#ifndef __PEI_CPUIO_PPI_H__\r
20#define __PEI_CPUIO_PPI_H__\r
21\r
0c7f62f8 22#include <Pi/PiPeiCis.h>\r
23\r
5879b875 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
06889842 29///\r
30/// *******************************************************\r
31/// EFI_PEI_CPU_IO_PPI_WIDTH\r
32/// *******************************************************\r
33///\r
5879b875 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
dafa11b1 53 @param PeiServices An indirect pointer to the PEI Services Table\r
54 published by the PEI Foundation.\r
55 @param This Pointer to local data for the interface.\r
56 @param Width The width of the access. Enumerated in bytes.\r
57 @param Address The physical address of the access.\r
58 @param Count The number of accesses to perform.\r
59 @param Buffer A pointer to the buffer of data.\r
5879b875 60\r
61 @retval EFI_SUCCESS The function completed successfully.\r
62 @retval EFI_NOT_YET_AVAILABLE The service has not been installed.\r
63\r
64**/\r
65typedef\r
66EFI_STATUS\r
8b13229b 67(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_MEM)(\r
dafa11b1 68 IN CONST EFI_PEI_SERVICES **PeiServices,\r
69 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
5879b875 70 IN EFI_PEI_CPU_IO_PPI_WIDTH Width,\r
71 IN UINT64 Address,\r
72 IN UINTN Count,\r
73 IN OUT VOID *Buffer\r
74 );\r
75\r
06889842 76///\r
77/// *******************************************************\r
78/// EFI_PEI_CPU_IO_PPI_ACCESS\r
79/// *******************************************************\r
80///\r
5879b875 81typedef struct {\r
dafa11b1 82 ///\r
83 /// This service provides the various modalities of memory and I/O read.\r
84 ///\r
5879b875 85 EFI_PEI_CPU_IO_PPI_IO_MEM Read;\r
dafa11b1 86 ///\r
87 /// This service provides the various modalities of memory and I/O write.\r
88 ///\r
5879b875 89 EFI_PEI_CPU_IO_PPI_IO_MEM Write;\r
90} EFI_PEI_CPU_IO_PPI_ACCESS;\r
91\r
92/**\r
93 8-bit I/O read operations.\r
94\r
95 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
96 @param This Pointer to local data for the interface.\r
97 @param Address The physical address of the access.\r
98\r
dafa11b1 99 @return An 8-bit value returned from the I/O space.\r
5879b875 100\r
101**/\r
102typedef\r
103UINT8\r
8b13229b 104(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ8)(\r
dafa11b1 105 IN CONST EFI_PEI_SERVICES **PeiServices,\r
106 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
107 IN UINT64 Address\r
5879b875 108 );\r
109\r
110/**\r
111 16-bit I/O read operations.\r
112\r
113 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
114 @param This Pointer to local data for the interface.\r
115 @param Address The physical address of the access.\r
116\r
dafa11b1 117 @return A 16-bit value returned from the I/O space.\r
5879b875 118\r
119**/\r
120typedef\r
121UINT16\r
8b13229b 122(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ16)(\r
dafa11b1 123 IN CONST EFI_PEI_SERVICES **PeiServices,\r
124 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
125 IN UINT64 Address\r
5879b875 126 );\r
127\r
128/**\r
129 32-bit I/O read operations.\r
130\r
131 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
132 @param This Pointer to local data for the interface.\r
133 @param Address The physical address of the access.\r
134\r
dafa11b1 135 @return A 32-bit value returned from the I/O space.\r
5879b875 136\r
137**/\r
138typedef\r
139UINT32\r
8b13229b 140(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ32)(\r
dafa11b1 141 IN CONST EFI_PEI_SERVICES **PeiServices,\r
142 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
143 IN UINT64 Address\r
5879b875 144 );\r
145\r
146/**\r
147 64-bit I/O read operations.\r
148\r
149 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
150 @param This Pointer to local data for the interface.\r
151 @param Address The physical address of the access.\r
152\r
dafa11b1 153 @return A 64-bit value returned from the I/O space.\r
5879b875 154\r
155**/\r
156typedef\r
157UINT64\r
8b13229b 158(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ64)(\r
dafa11b1 159 IN CONST EFI_PEI_SERVICES **PeiServices,\r
160 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
161 IN UINT64 Address\r
5879b875 162 );\r
163\r
164/**\r
165 8-bit I/O write operations.\r
166\r
167 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
168 @param This Pointer to local data for the interface.\r
169 @param Address The physical address of the access.\r
170 @param Data The data to write.\r
171\r
5879b875 172**/\r
173typedef\r
174VOID\r
8b13229b 175(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE8)(\r
dafa11b1 176 IN CONST EFI_PEI_SERVICES **PeiServices,\r
177 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
178 IN UINT64 Address,\r
179 IN UINT8 Data\r
5879b875 180 );\r
181\r
182/**\r
183 16-bit I/O write operations.\r
184\r
185 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
186 @param This Pointer to local data for the interface.\r
187 @param Address The physical address of the access.\r
188 @param Data The data to write.\r
189\r
5879b875 190**/\r
191typedef\r
192VOID\r
8b13229b 193(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE16)(\r
dafa11b1 194 IN CONST EFI_PEI_SERVICES **PeiServices,\r
195 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
196 IN UINT64 Address,\r
197 IN UINT16 Data\r
5879b875 198 );\r
199\r
200/**\r
201 32-bit I/O write operations.\r
202\r
203 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
204 @param This Pointer to local data for the interface.\r
205 @param Address The physical address of the access.\r
206 @param Data The data to write.\r
207\r
5879b875 208**/\r
209typedef\r
210VOID\r
8b13229b 211(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE32)(\r
dafa11b1 212 IN CONST EFI_PEI_SERVICES **PeiServices,\r
213 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
214 IN UINT64 Address,\r
215 IN UINT32 Data\r
5879b875 216 );\r
217\r
218/**\r
219 64-bit I/O write operations.\r
220\r
221 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
222 @param This Pointer to local data for the interface.\r
223 @param Address The physical address of the access.\r
224 @param Data The data to write.\r
225\r
5879b875 226**/\r
227typedef\r
228VOID\r
8b13229b 229(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE64)(\r
dafa11b1 230 IN CONST EFI_PEI_SERVICES **PeiServices,\r
231 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
232 IN UINT64 Address,\r
233 IN UINT64 Data\r
5879b875 234 );\r
235\r
236/**\r
dafa11b1 237 8-bit memory read operations.\r
5879b875 238\r
239 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
240 @param This Pointer to local data for the interface.\r
241 @param Address The physical address of the access.\r
242\r
dafa11b1 243 @return An 8-bit value returned from the memory space.\r
5879b875 244\r
245**/\r
246typedef\r
247UINT8\r
8b13229b 248(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ8)(\r
dafa11b1 249 IN CONST EFI_PEI_SERVICES **PeiServices,\r
250 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
251 IN UINT64 Address\r
5879b875 252 );\r
253\r
254/**\r
dafa11b1 255 16-bit memory read operations.\r
5879b875 256\r
257 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
258 @param This Pointer to local data for the interface.\r
259 @param Address The physical address of the access.\r
260\r
dafa11b1 261 @return A 16-bit value returned from the memory space.\r
5879b875 262\r
263**/\r
264typedef\r
265UINT16\r
8b13229b 266(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ16)(\r
dafa11b1 267 IN CONST EFI_PEI_SERVICES **PeiServices,\r
268 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
269 IN UINT64 Address\r
5879b875 270 );\r
271\r
272/**\r
dafa11b1 273 32-bit memory read operations.\r
5879b875 274\r
275 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
276 @param This Pointer to local data for the interface.\r
277 @param Address The physical address of the access.\r
278\r
dafa11b1 279 @return A 32-bit value returned from the memory space.\r
5879b875 280\r
281**/\r
282typedef\r
283UINT32\r
8b13229b 284(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ32)(\r
dafa11b1 285 IN CONST EFI_PEI_SERVICES **PeiServices,\r
286 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
287 IN UINT64 Address\r
5879b875 288 );\r
289\r
290/**\r
dafa11b1 291 64-bit memory read operations.\r
5879b875 292\r
293 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
294 @param This Pointer to local data for the interface.\r
295 @param Address The physical address of the access.\r
296\r
dafa11b1 297 @return A 64-bit value returned from the memory space.\r
5879b875 298\r
299**/\r
300typedef\r
301UINT64\r
8b13229b 302(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ64)(\r
dafa11b1 303 IN CONST EFI_PEI_SERVICES **PeiServices,\r
304 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
305 IN UINT64 Address\r
5879b875 306 );\r
307\r
308/**\r
dafa11b1 309 8-bit memory write operations.\r
5879b875 310\r
311 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
312 @param This Pointer to local data for the interface.\r
313 @param Address The physical address of the access.\r
314 @param Data The data to write.\r
315\r
5879b875 316**/\r
317typedef\r
318VOID\r
8b13229b 319(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE8)(\r
dafa11b1 320 IN CONST EFI_PEI_SERVICES **PeiServices,\r
321 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
322 IN UINT64 Address,\r
323 IN UINT8 Data\r
5879b875 324 );\r
325\r
326/**\r
dafa11b1 327 16-bit memory write operations.\r
5879b875 328\r
329 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
330 @param This Pointer to local data for the interface.\r
331 @param Address The physical address of the access.\r
332 @param Data The data to write.\r
333\r
5879b875 334**/\r
335typedef\r
336VOID\r
8b13229b 337(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE16)(\r
dafa11b1 338 IN CONST EFI_PEI_SERVICES **PeiServices,\r
339 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
340 IN UINT64 Address,\r
341 IN UINT16 Data\r
5879b875 342 );\r
343\r
344/**\r
dafa11b1 345 32-bit memory write operations.\r
5879b875 346\r
347 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
348 @param This Pointer to local data for the interface.\r
349 @param Address The physical address of the access.\r
350 @param Data The data to write.\r
351\r
5879b875 352**/\r
353typedef\r
354VOID\r
8b13229b 355(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE32)(\r
dafa11b1 356 IN CONST EFI_PEI_SERVICES **PeiServices,\r
357 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
358 IN UINT64 Address,\r
359 IN UINT32 Data\r
5879b875 360 );\r
361\r
362/**\r
dafa11b1 363 64-bit memory write operations.\r
5879b875 364\r
365 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
366 @param This Pointer to local data for the interface.\r
367 @param Address The physical address of the access.\r
368 @param Data The data to write.\r
369\r
5879b875 370**/\r
371typedef\r
372VOID\r
8b13229b 373(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE64)(\r
dafa11b1 374 IN CONST EFI_PEI_SERVICES **PeiServices,\r
375 IN CONST EFI_PEI_CPU_IO_PPI *This,\r
376 IN UINT64 Address,\r
377 IN UINT64 Data\r
5879b875 378 );\r
379\r
dafa11b1 380///\r
381/// EFI_PEI_CPU_IO_PPI provides a set of memory and I/O-based services.\r
382/// The perspective of the services is that of the processor, not the bus or system.\r
383///\r
5879b875 384struct _EFI_PEI_CPU_IO_PPI {\r
44717a39 385 EFI_PEI_CPU_IO_PPI_ACCESS Mem; ///< Collection of memory-access services.\r
386 EFI_PEI_CPU_IO_PPI_ACCESS Io; ///< Collection of I/O-access services.\r
387\r
5879b875 388 EFI_PEI_CPU_IO_PPI_IO_READ8 IoRead8;\r
389 EFI_PEI_CPU_IO_PPI_IO_READ16 IoRead16;\r
390 EFI_PEI_CPU_IO_PPI_IO_READ32 IoRead32;\r
391 EFI_PEI_CPU_IO_PPI_IO_READ64 IoRead64;\r
44717a39 392\r
5879b875 393 EFI_PEI_CPU_IO_PPI_IO_WRITE8 IoWrite8;\r
394 EFI_PEI_CPU_IO_PPI_IO_WRITE16 IoWrite16;\r
395 EFI_PEI_CPU_IO_PPI_IO_WRITE32 IoWrite32;\r
396 EFI_PEI_CPU_IO_PPI_IO_WRITE64 IoWrite64;\r
44717a39 397\r
5879b875 398 EFI_PEI_CPU_IO_PPI_MEM_READ8 MemRead8;\r
399 EFI_PEI_CPU_IO_PPI_MEM_READ16 MemRead16;\r
400 EFI_PEI_CPU_IO_PPI_MEM_READ32 MemRead32;\r
401 EFI_PEI_CPU_IO_PPI_MEM_READ64 MemRead64;\r
44717a39 402\r
5879b875 403 EFI_PEI_CPU_IO_PPI_MEM_WRITE8 MemWrite8;\r
404 EFI_PEI_CPU_IO_PPI_MEM_WRITE16 MemWrite16;\r
405 EFI_PEI_CPU_IO_PPI_MEM_WRITE32 MemWrite32;\r
406 EFI_PEI_CPU_IO_PPI_MEM_WRITE64 MemWrite64;\r
407};\r
408\r
3d806b5a 409extern EFI_GUID gEfiPeiCpuIoPpiInstalledGuid;\r
5879b875 410\r
411#endif\r