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