1 /** @file 2 The default version of EFI_PEI_CPU_IO_PPI support published by PeiServices in 3 PeiCore initialization phase. 4 5 EFI_PEI_CPU_IO_PPI is installed by some platform or chipset-specific PEIM that 6 abstracts the processor-visible I/O operations. When PeiCore is started, the 7 default version of EFI_PEI_CPU_IO_PPI will be assigned to PeiServices table. 8 9 Copyright (c) 2009, Intel Corporation. All rights reserved.<BR> 10 This program and the accompanying materials 11 are licensed and made available under the terms and conditions of the BSD License 12 which accompanies this distribution. The full text of the license may be found at 13 http://opensource.org/licenses/bsd-license.php 14 15 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 16 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 17 18 **/ 19 20 #include "PeiMain.h" 21 22 /// 23 /// This default instance of EFI_PEI_CPU_IO_PPI install assigned to EFI_PEI_SERVICE.CpuIo 24 /// when PeiCore's initialization. 25 /// 26 EFI_PEI_CPU_IO_PPI gPeiDefaultCpuIoPpi = { 27 { 28 PeiDefaultMemRead, 29 PeiDefaultMemWrite 30 }, 31 { 32 PeiDefaultIoRead, 33 PeiDefaultIoWrite 34 }, 35 PeiDefaultIoRead8, 36 PeiDefaultIoRead16, 37 PeiDefaultIoRead32, 38 PeiDefaultIoRead64, 39 PeiDefaultIoWrite8, 40 PeiDefaultIoWrite16, 41 PeiDefaultIoWrite32, 42 PeiDefaultIoWrite64, 43 PeiDefaultMemRead8, 44 PeiDefaultMemRead16, 45 PeiDefaultMemRead32, 46 PeiDefaultMemRead64, 47 PeiDefaultMemWrite8, 48 PeiDefaultMemWrite16, 49 PeiDefaultMemWrite32, 50 PeiDefaultMemWrite64 51 }; 52 53 /** 54 Memory-based read services. 55 56 This function is to perform the Memory Access Read service based on installed 57 instance of the EFI_PEI_CPU_IO_PPI. 58 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 59 return EFI_NOT_YET_AVAILABLE. 60 61 @param PeiServices An indirect pointer to the PEI Services Table 62 published by the PEI Foundation. 63 @param This Pointer to local data for the interface. 64 @param Width The width of the access. Enumerated in bytes. 65 @param Address The physical address of the access. 66 @param Count The number of accesses to perform. 67 @param Buffer A pointer to the buffer of data. 68 69 @retval EFI_SUCCESS The function completed successfully. 70 @retval EFI_NOT_YET_AVAILABLE The service has not been installed. 71 **/ 72 EFI_STATUS 73 EFIAPI 74 PeiDefaultMemRead ( 75 IN CONST EFI_PEI_SERVICES **PeiServices, 76 IN CONST EFI_PEI_CPU_IO_PPI *This, 77 IN EFI_PEI_CPU_IO_PPI_WIDTH Width, 78 IN UINT64 Address, 79 IN UINTN Count, 80 IN OUT VOID *Buffer 81 ) 82 { 83 return EFI_NOT_AVAILABLE_YET; 84 } 85 86 /** 87 Memory-based write services. 88 89 This function is to perform the Memory Access Write service based on installed 90 instance of the EFI_PEI_CPU_IO_PPI. 91 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 92 return EFI_NOT_YET_AVAILABLE. 93 94 @param PeiServices An indirect pointer to the PEI Services Table 95 published by the PEI Foundation. 96 @param This Pointer to local data for the interface. 97 @param Width The width of the access. Enumerated in bytes. 98 @param Address The physical address of the access. 99 @param Count The number of accesses to perform. 100 @param Buffer A pointer to the buffer of data. 101 102 @retval EFI_SUCCESS The function completed successfully. 103 @retval EFI_NOT_YET_AVAILABLE The service has not been installed. 104 **/ 105 EFI_STATUS 106 EFIAPI 107 PeiDefaultMemWrite ( 108 IN CONST EFI_PEI_SERVICES **PeiServices, 109 IN CONST EFI_PEI_CPU_IO_PPI *This, 110 IN EFI_PEI_CPU_IO_PPI_WIDTH Width, 111 IN UINT64 Address, 112 IN UINTN Count, 113 IN OUT VOID *Buffer 114 ) 115 { 116 return EFI_NOT_AVAILABLE_YET; 117 } 118 119 /** 120 IO-based read services. 121 122 This function is to perform the IO-base read service for the EFI_PEI_CPU_IO_PPI. 123 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 124 return EFI_NOT_YET_AVAILABLE. 125 126 @param PeiServices An indirect pointer to the PEI Services Table 127 published by the PEI Foundation. 128 @param This Pointer to local data for the interface. 129 @param Width The width of the access. Enumerated in bytes. 130 @param Address The physical address of the access. 131 @param Count The number of accesses to perform. 132 @param Buffer A pointer to the buffer of data. 133 134 @retval EFI_SUCCESS The function completed successfully. 135 @retval EFI_NOT_YET_AVAILABLE The service has not been installed. 136 **/ 137 EFI_STATUS 138 EFIAPI 139 PeiDefaultIoRead ( 140 IN CONST EFI_PEI_SERVICES **PeiServices, 141 IN CONST EFI_PEI_CPU_IO_PPI *This, 142 IN EFI_PEI_CPU_IO_PPI_WIDTH Width, 143 IN UINT64 Address, 144 IN UINTN Count, 145 IN OUT VOID *Buffer 146 ) 147 { 148 return EFI_NOT_AVAILABLE_YET; 149 } 150 151 /** 152 IO-based write services. 153 154 This function is to perform the IO-base write service for the EFI_PEI_CPU_IO_PPI. 155 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 156 return EFI_NOT_YET_AVAILABLE. 157 158 @param PeiServices An indirect pointer to the PEI Services Table 159 published by the PEI Foundation. 160 @param This Pointer to local data for the interface. 161 @param Width The width of the access. Enumerated in bytes. 162 @param Address The physical address of the access. 163 @param Count The number of accesses to perform. 164 @param Buffer A pointer to the buffer of data. 165 166 @retval EFI_SUCCESS The function completed successfully. 167 @retval EFI_NOT_YET_AVAILABLE The service has not been installed. 168 **/ 169 EFI_STATUS 170 EFIAPI 171 PeiDefaultIoWrite ( 172 IN CONST EFI_PEI_SERVICES **PeiServices, 173 IN CONST EFI_PEI_CPU_IO_PPI *This, 174 IN EFI_PEI_CPU_IO_PPI_WIDTH Width, 175 IN UINT64 Address, 176 IN UINTN Count, 177 IN OUT VOID *Buffer 178 ) 179 { 180 return EFI_NOT_AVAILABLE_YET; 181 } 182 183 /** 184 8-bit I/O read operations. 185 186 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 187 return 0. 188 189 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 190 @param This Pointer to local data for the interface. 191 @param Address The physical address of the access. 192 193 @return An 8-bit value returned from the I/O space. 194 **/ 195 UINT8 196 EFIAPI 197 PeiDefaultIoRead8 ( 198 IN CONST EFI_PEI_SERVICES **PeiServices, 199 IN CONST EFI_PEI_CPU_IO_PPI *This, 200 IN UINT64 Address 201 ) 202 { 203 return 0; 204 } 205 206 /** 207 Reads an 16-bit I/O port. 208 209 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 210 return 0. 211 212 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 213 @param This Pointer to local data for the interface. 214 @param Address The physical address of the access. 215 216 @return A 16-bit value returned from the I/O space. 217 **/ 218 UINT16 219 EFIAPI 220 PeiDefaultIoRead16 ( 221 IN CONST EFI_PEI_SERVICES **PeiServices, 222 IN CONST EFI_PEI_CPU_IO_PPI *This, 223 IN UINT64 Address 224 ) 225 { 226 return 0; 227 } 228 229 /** 230 Reads an 32-bit I/O port. 231 232 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 233 return 0. 234 235 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 236 @param This Pointer to local data for the interface. 237 @param Address The physical address of the access. 238 239 @return A 32-bit value returned from the I/O space. 240 **/ 241 UINT32 242 EFIAPI 243 PeiDefaultIoRead32 ( 244 IN CONST EFI_PEI_SERVICES **PeiServices, 245 IN CONST EFI_PEI_CPU_IO_PPI *This, 246 IN UINT64 Address 247 ) 248 { 249 return 0; 250 } 251 252 /** 253 Reads an 64-bit I/O port. 254 255 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 256 return 0. 257 258 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 259 @param This Pointer to local data for the interface. 260 @param Address The physical address of the access. 261 262 @return A 64-bit value returned from the I/O space. 263 **/ 264 UINT64 265 EFIAPI 266 PeiDefaultIoRead64 ( 267 IN CONST EFI_PEI_SERVICES **PeiServices, 268 IN CONST EFI_PEI_CPU_IO_PPI *This, 269 IN UINT64 Address 270 ) 271 { 272 return 0; 273 } 274 275 /** 276 8-bit I/O write operations. 277 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do 278 nothing. 279 280 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 281 @param This Pointer to local data for the interface. 282 @param Address The physical address of the access. 283 @param Data The data to write. 284 **/ 285 VOID 286 EFIAPI 287 PeiDefaultIoWrite8 ( 288 IN CONST EFI_PEI_SERVICES **PeiServices, 289 IN CONST EFI_PEI_CPU_IO_PPI *This, 290 IN UINT64 Address, 291 IN UINT8 Data 292 ) 293 { 294 } 295 296 /** 297 16-bit I/O write operations. 298 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do 299 nothing. 300 301 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 302 @param This Pointer to local data for the interface. 303 @param Address The physical address of the access. 304 @param Data The data to write. 305 **/ 306 VOID 307 EFIAPI 308 PeiDefaultIoWrite16 ( 309 IN CONST EFI_PEI_SERVICES **PeiServices, 310 IN CONST EFI_PEI_CPU_IO_PPI *This, 311 IN UINT64 Address, 312 IN UINT16 Data 313 ) 314 { 315 } 316 317 /** 318 32-bit I/O write operations. 319 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do 320 nothing. 321 322 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 323 @param This Pointer to local data for the interface. 324 @param Address The physical address of the access. 325 @param Data The data to write. 326 **/ 327 VOID 328 EFIAPI 329 PeiDefaultIoWrite32 ( 330 IN CONST EFI_PEI_SERVICES **PeiServices, 331 IN CONST EFI_PEI_CPU_IO_PPI *This, 332 IN UINT64 Address, 333 IN UINT32 Data 334 ) 335 { 336 } 337 338 /** 339 64-bit I/O write operations. 340 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do 341 nothing. 342 343 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 344 @param This Pointer to local data for the interface. 345 @param Address The physical address of the access. 346 @param Data The data to write. 347 **/ 348 VOID 349 EFIAPI 350 PeiDefaultIoWrite64 ( 351 IN CONST EFI_PEI_SERVICES **PeiServices, 352 IN CONST EFI_PEI_CPU_IO_PPI *This, 353 IN UINT64 Address, 354 IN UINT64 Data 355 ) 356 { 357 } 358 359 /** 360 8-bit memory read operations. 361 362 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 363 return 0. 364 365 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 366 @param This Pointer to local data for the interface. 367 @param Address The physical address of the access. 368 369 @return An 8-bit value returned from the memory space. 370 371 **/ 372 UINT8 373 EFIAPI 374 PeiDefaultMemRead8 ( 375 IN CONST EFI_PEI_SERVICES **PeiServices, 376 IN CONST EFI_PEI_CPU_IO_PPI *This, 377 IN UINT64 Address 378 ) 379 { 380 return 0; 381 } 382 383 /** 384 16-bit memory read operations. 385 386 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 387 return 0. 388 389 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 390 @param This Pointer to local data for the interface. 391 @param Address The physical address of the access. 392 393 @return An 16-bit value returned from the memory space. 394 395 **/ 396 UINT16 397 EFIAPI 398 PeiDefaultMemRead16 ( 399 IN CONST EFI_PEI_SERVICES **PeiServices, 400 IN CONST EFI_PEI_CPU_IO_PPI *This, 401 IN UINT64 Address 402 ) 403 { 404 return 0; 405 } 406 407 /** 408 32-bit memory read operations. 409 410 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 411 return 0. 412 413 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 414 @param This Pointer to local data for the interface. 415 @param Address The physical address of the access. 416 417 @return An 32-bit value returned from the memory space. 418 419 **/ 420 UINT32 421 EFIAPI 422 PeiDefaultMemRead32 ( 423 IN CONST EFI_PEI_SERVICES **PeiServices, 424 IN CONST EFI_PEI_CPU_IO_PPI *This, 425 IN UINT64 Address 426 ) 427 { 428 return 0; 429 } 430 431 /** 432 64-bit memory read operations. 433 434 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then 435 return 0. 436 437 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 438 @param This Pointer to local data for the interface. 439 @param Address The physical address of the access. 440 441 @return An 64-bit value returned from the memory space. 442 443 **/ 444 UINT64 445 EFIAPI 446 PeiDefaultMemRead64 ( 447 IN CONST EFI_PEI_SERVICES **PeiServices, 448 IN CONST EFI_PEI_CPU_IO_PPI *This, 449 IN UINT64 Address 450 ) 451 { 452 return 0; 453 } 454 455 /** 456 8-bit memory write operations. 457 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do 458 nothing. 459 460 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 461 @param This Pointer to local data for the interface. 462 @param Address The physical address of the access. 463 @param Data The data to write. 464 465 **/ 466 VOID 467 EFIAPI 468 PeiDefaultMemWrite8 ( 469 IN CONST EFI_PEI_SERVICES **PeiServices, 470 IN CONST EFI_PEI_CPU_IO_PPI *This, 471 IN UINT64 Address, 472 IN UINT8 Data 473 ) 474 { 475 } 476 477 /** 478 16-bit memory write operations. 479 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do 480 nothing. 481 482 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 483 @param This Pointer to local data for the interface. 484 @param Address The physical address of the access. 485 @param Data The data to write. 486 487 **/ 488 VOID 489 EFIAPI 490 PeiDefaultMemWrite16 ( 491 IN CONST EFI_PEI_SERVICES **PeiServices, 492 IN CONST EFI_PEI_CPU_IO_PPI *This, 493 IN UINT64 Address, 494 IN UINT16 Data 495 ) 496 { 497 } 498 499 /** 500 32-bit memory write operations. 501 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do 502 nothing. 503 504 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 505 @param This Pointer to local data for the interface. 506 @param Address The physical address of the access. 507 @param Data The data to write. 508 509 **/ 510 VOID 511 EFIAPI 512 PeiDefaultMemWrite32 ( 513 IN CONST EFI_PEI_SERVICES **PeiServices, 514 IN CONST EFI_PEI_CPU_IO_PPI *This, 515 IN UINT64 Address, 516 IN UINT32 Data 517 ) 518 { 519 } 520 521 /** 522 64-bit memory write operations. 523 If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do 524 nothing. 525 526 @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. 527 @param This Pointer to local data for the interface. 528 @param Address The physical address of the access. 529 @param Data The data to write. 530 531 **/ 532 VOID 533 EFIAPI 534 PeiDefaultMemWrite64 ( 535 IN CONST EFI_PEI_SERVICES **PeiServices, 536 IN CONST EFI_PEI_CPU_IO_PPI *This, 537 IN UINT64 Address, 538 IN UINT64 Data 539 ) 540 { 541 } 542