| /** @file | |
| The default version of EFI_PEI_CPU_IO_PPI support published by PeiServices in | |
| PeiCore initialization phase. | |
| EFI_PEI_CPU_IO_PPI is installed by some platform or chipset-specific PEIM that | |
| abstracts the processor-visible I/O operations. When PeiCore is started, the | |
| default version of EFI_PEI_CPU_IO_PPI will be assigned to PeiServices table. | |
| Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #include "PeiMain.h" | |
| /// | |
| /// This default instance of EFI_PEI_CPU_IO_PPI install assigned to EFI_PEI_SERVICE.CpuIo | |
| /// when PeiCore's initialization. | |
| /// | |
| EFI_PEI_CPU_IO_PPI gPeiDefaultCpuIoPpi = { | |
| { | |
| PeiDefaultMemRead, | |
| PeiDefaultMemWrite | |
| }, | |
| { | |
| PeiDefaultIoRead, | |
| PeiDefaultIoWrite | |
| }, | |
| PeiDefaultIoRead8, | |
| PeiDefaultIoRead16, | |
| PeiDefaultIoRead32, | |
| PeiDefaultIoRead64, | |
| PeiDefaultIoWrite8, | |
| PeiDefaultIoWrite16, | |
| PeiDefaultIoWrite32, | |
| PeiDefaultIoWrite64, | |
| PeiDefaultMemRead8, | |
| PeiDefaultMemRead16, | |
| PeiDefaultMemRead32, | |
| PeiDefaultMemRead64, | |
| PeiDefaultMemWrite8, | |
| PeiDefaultMemWrite16, | |
| PeiDefaultMemWrite32, | |
| PeiDefaultMemWrite64 | |
| }; | |
| /** | |
| Memory-based read services. | |
| This function is to perform the Memory Access Read service based on installed | |
| instance of the EFI_PEI_CPU_IO_PPI. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return EFI_NOT_YET_AVAILABLE. | |
| @param PeiServices An indirect pointer to the PEI Services Table | |
| published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Width The width of the access. Enumerated in bytes. | |
| @param Address The physical address of the access. | |
| @param Count The number of accesses to perform. | |
| @param Buffer A pointer to the buffer of data. | |
| @retval EFI_SUCCESS The function completed successfully. | |
| @retval EFI_NOT_YET_AVAILABLE The service has not been installed. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| PeiDefaultMemRead ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN EFI_PEI_CPU_IO_PPI_WIDTH Width, | |
| IN UINT64 Address, | |
| IN UINTN Count, | |
| IN OUT VOID *Buffer | |
| ) | |
| { | |
| return EFI_NOT_AVAILABLE_YET; | |
| } | |
| /** | |
| Memory-based write services. | |
| This function is to perform the Memory Access Write service based on installed | |
| instance of the EFI_PEI_CPU_IO_PPI. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return EFI_NOT_YET_AVAILABLE. | |
| @param PeiServices An indirect pointer to the PEI Services Table | |
| published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Width The width of the access. Enumerated in bytes. | |
| @param Address The physical address of the access. | |
| @param Count The number of accesses to perform. | |
| @param Buffer A pointer to the buffer of data. | |
| @retval EFI_SUCCESS The function completed successfully. | |
| @retval EFI_NOT_YET_AVAILABLE The service has not been installed. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| PeiDefaultMemWrite ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN EFI_PEI_CPU_IO_PPI_WIDTH Width, | |
| IN UINT64 Address, | |
| IN UINTN Count, | |
| IN OUT VOID *Buffer | |
| ) | |
| { | |
| return EFI_NOT_AVAILABLE_YET; | |
| } | |
| /** | |
| IO-based read services. | |
| This function is to perform the IO-base read service for the EFI_PEI_CPU_IO_PPI. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return EFI_NOT_YET_AVAILABLE. | |
| @param PeiServices An indirect pointer to the PEI Services Table | |
| published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Width The width of the access. Enumerated in bytes. | |
| @param Address The physical address of the access. | |
| @param Count The number of accesses to perform. | |
| @param Buffer A pointer to the buffer of data. | |
| @retval EFI_SUCCESS The function completed successfully. | |
| @retval EFI_NOT_YET_AVAILABLE The service has not been installed. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| PeiDefaultIoRead ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN EFI_PEI_CPU_IO_PPI_WIDTH Width, | |
| IN UINT64 Address, | |
| IN UINTN Count, | |
| IN OUT VOID *Buffer | |
| ) | |
| { | |
| return EFI_NOT_AVAILABLE_YET; | |
| } | |
| /** | |
| IO-based write services. | |
| This function is to perform the IO-base write service for the EFI_PEI_CPU_IO_PPI. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return EFI_NOT_YET_AVAILABLE. | |
| @param PeiServices An indirect pointer to the PEI Services Table | |
| published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Width The width of the access. Enumerated in bytes. | |
| @param Address The physical address of the access. | |
| @param Count The number of accesses to perform. | |
| @param Buffer A pointer to the buffer of data. | |
| @retval EFI_SUCCESS The function completed successfully. | |
| @retval EFI_NOT_YET_AVAILABLE The service has not been installed. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| PeiDefaultIoWrite ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN EFI_PEI_CPU_IO_PPI_WIDTH Width, | |
| IN UINT64 Address, | |
| IN UINTN Count, | |
| IN OUT VOID *Buffer | |
| ) | |
| { | |
| return EFI_NOT_AVAILABLE_YET; | |
| } | |
| /** | |
| 8-bit I/O read operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return 0. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @return An 8-bit value returned from the I/O space. | |
| **/ | |
| UINT8 | |
| EFIAPI | |
| PeiDefaultIoRead8 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address | |
| ) | |
| { | |
| return 0; | |
| } | |
| /** | |
| Reads an 16-bit I/O port. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return 0. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @return A 16-bit value returned from the I/O space. | |
| **/ | |
| UINT16 | |
| EFIAPI | |
| PeiDefaultIoRead16 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address | |
| ) | |
| { | |
| return 0; | |
| } | |
| /** | |
| Reads an 32-bit I/O port. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return 0. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @return A 32-bit value returned from the I/O space. | |
| **/ | |
| UINT32 | |
| EFIAPI | |
| PeiDefaultIoRead32 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address | |
| ) | |
| { | |
| return 0; | |
| } | |
| /** | |
| Reads an 64-bit I/O port. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return 0. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @return A 64-bit value returned from the I/O space. | |
| **/ | |
| UINT64 | |
| EFIAPI | |
| PeiDefaultIoRead64 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address | |
| ) | |
| { | |
| return 0; | |
| } | |
| /** | |
| 8-bit I/O write operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do | |
| nothing. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @param Data The data to write. | |
| **/ | |
| VOID | |
| EFIAPI | |
| PeiDefaultIoWrite8 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address, | |
| IN UINT8 Data | |
| ) | |
| { | |
| } | |
| /** | |
| 16-bit I/O write operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do | |
| nothing. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @param Data The data to write. | |
| **/ | |
| VOID | |
| EFIAPI | |
| PeiDefaultIoWrite16 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address, | |
| IN UINT16 Data | |
| ) | |
| { | |
| } | |
| /** | |
| 32-bit I/O write operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do | |
| nothing. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @param Data The data to write. | |
| **/ | |
| VOID | |
| EFIAPI | |
| PeiDefaultIoWrite32 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address, | |
| IN UINT32 Data | |
| ) | |
| { | |
| } | |
| /** | |
| 64-bit I/O write operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do | |
| nothing. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @param Data The data to write. | |
| **/ | |
| VOID | |
| EFIAPI | |
| PeiDefaultIoWrite64 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address, | |
| IN UINT64 Data | |
| ) | |
| { | |
| } | |
| /** | |
| 8-bit memory read operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return 0. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @return An 8-bit value returned from the memory space. | |
| **/ | |
| UINT8 | |
| EFIAPI | |
| PeiDefaultMemRead8 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address | |
| ) | |
| { | |
| return 0; | |
| } | |
| /** | |
| 16-bit memory read operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return 0. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @return An 16-bit value returned from the memory space. | |
| **/ | |
| UINT16 | |
| EFIAPI | |
| PeiDefaultMemRead16 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address | |
| ) | |
| { | |
| return 0; | |
| } | |
| /** | |
| 32-bit memory read operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return 0. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @return An 32-bit value returned from the memory space. | |
| **/ | |
| UINT32 | |
| EFIAPI | |
| PeiDefaultMemRead32 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address | |
| ) | |
| { | |
| return 0; | |
| } | |
| /** | |
| 64-bit memory read operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then | |
| return 0. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @return An 64-bit value returned from the memory space. | |
| **/ | |
| UINT64 | |
| EFIAPI | |
| PeiDefaultMemRead64 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address | |
| ) | |
| { | |
| return 0; | |
| } | |
| /** | |
| 8-bit memory write operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do | |
| nothing. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @param Data The data to write. | |
| **/ | |
| VOID | |
| EFIAPI | |
| PeiDefaultMemWrite8 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address, | |
| IN UINT8 Data | |
| ) | |
| { | |
| } | |
| /** | |
| 16-bit memory write operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do | |
| nothing. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @param Data The data to write. | |
| **/ | |
| VOID | |
| EFIAPI | |
| PeiDefaultMemWrite16 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address, | |
| IN UINT16 Data | |
| ) | |
| { | |
| } | |
| /** | |
| 32-bit memory write operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do | |
| nothing. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @param Data The data to write. | |
| **/ | |
| VOID | |
| EFIAPI | |
| PeiDefaultMemWrite32 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address, | |
| IN UINT32 Data | |
| ) | |
| { | |
| } | |
| /** | |
| 64-bit memory write operations. | |
| If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do | |
| nothing. | |
| @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. | |
| @param This Pointer to local data for the interface. | |
| @param Address The physical address of the access. | |
| @param Data The data to write. | |
| **/ | |
| VOID | |
| EFIAPI | |
| PeiDefaultMemWrite64 ( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_CPU_IO_PPI *This, | |
| IN UINT64 Address, | |
| IN UINT64 Data | |
| ) | |
| { | |
| } |