mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-12-27 16:58:09 +01:00
7c0aa811ec
Signed-off-by: Sergey Isakov <isakov-sl@bk.ru>
536 lines
16 KiB
C
536 lines
16 KiB
C
/** @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
|
|
)
|
|
{
|
|
}
|