+++ /dev/null
-/** @file\r
- This file declares CPU IO PPI that abstracts CPU IO access\r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: CpuIo.h\r
-\r
- @par Revision Reference:\r
- This PPI is defined in PEI CIS.\r
- Version 0.91.\r
-\r
-**/\r
-\r
-#ifndef __PEI_CPUIO_PPI_H__\r
-#define __PEI_CPUIO_PPI_H__\r
-\r
-#define EFI_PEI_CPU_IO_PPI_INSTALLED_GUID \\r
- { \\r
- 0xe6af1f7b, 0xfc3f, 0x46da, {0xa8, 0x28, 0xa3, 0xb4, 0x57, 0xa4, 0x42, 0x82 } \\r
- }\r
-\r
-typedef struct _EFI_PEI_CPU_IO_PPI EFI_PEI_CPU_IO_PPI;\r
-\r
-//\r
-// *******************************************************\r
-// EFI_PEI_CPU_IO_PPI_WIDTH\r
-// *******************************************************\r
-//\r
-typedef enum {\r
- EfiPeiCpuIoWidthUint8,\r
- EfiPeiCpuIoWidthUint16,\r
- EfiPeiCpuIoWidthUint32,\r
- EfiPeiCpuIoWidthUint64,\r
- EfiPeiCpuIoWidthFifoUint8,\r
- EfiPeiCpuIoWidthFifoUint16,\r
- EfiPeiCpuIoWidthFifoUint32,\r
- EfiPeiCpuIoWidthFifoUint64,\r
- EfiPeiCpuIoWidthFillUint8,\r
- EfiPeiCpuIoWidthFillUint16,\r
- EfiPeiCpuIoWidthFillUint32,\r
- EfiPeiCpuIoWidthFillUint64,\r
- EfiPeiCpuIoWidthMaximum\r
-} EFI_PEI_CPU_IO_PPI_WIDTH;\r
-\r
-/**\r
- Memory-based access services and I/O-based access services.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Width The width of the access. Enumerated in bytes.\r
- @param Address The physical address of the access.\r
- @param Count The number of accesses to perform.\r
- @param Buffer A pointer to the buffer of data.\r
-\r
- @retval EFI_SUCCESS The function completed successfully.\r
- @retval EFI_NOT_YET_AVAILABLE The service has not been installed.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_MEM) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN EFI_PEI_CPU_IO_PPI_WIDTH Width,\r
- IN UINT64 Address,\r
- IN UINTN Count,\r
- IN OUT VOID *Buffer\r
- );\r
-\r
-//\r
-// *******************************************************\r
-// EFI_PEI_CPU_IO_PPI_ACCESS\r
-// *******************************************************\r
-//\r
-typedef struct {\r
- EFI_PEI_CPU_IO_PPI_IO_MEM Read;\r
- EFI_PEI_CPU_IO_PPI_IO_MEM Write;\r
-} EFI_PEI_CPU_IO_PPI_ACCESS;\r
-\r
-/**\r
- 8-bit I/O read operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
-\r
- @return UINT8\r
-\r
-**/\r
-typedef\r
-UINT8\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ8) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address\r
- );\r
-\r
-/**\r
- 16-bit I/O read operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
-\r
- @return UINT16\r
-\r
-**/\r
-typedef\r
-UINT16\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ16) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address\r
- );\r
-\r
-/**\r
- 32-bit I/O read operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
-\r
- @return UINT32\r
-\r
-**/\r
-typedef\r
-UINT32\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ32) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address\r
- );\r
-\r
-/**\r
- 64-bit I/O read operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
-\r
- @return UINT64\r
-\r
-**/\r
-typedef\r
-UINT64\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ64) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address\r
- );\r
-\r
-/**\r
- 8-bit I/O write operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
- @param Data The data to write.\r
-\r
- @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE8) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address,\r
- IN UINT8 Data\r
- );\r
-\r
-/**\r
- 16-bit I/O write operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
- @param Data The data to write.\r
-\r
- @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE16) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address,\r
- IN UINT16 Data\r
- );\r
-\r
-/**\r
- 32-bit I/O write operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
- @param Data The data to write.\r
-\r
- @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE32) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address,\r
- IN UINT32 Data\r
- );\r
-\r
-/**\r
- 64-bit I/O write operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
- @param Data The data to write.\r
-\r
- @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE64) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address,\r
- IN UINT64 Data\r
- );\r
-\r
-/**\r
- 8-bit Memory read operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
-\r
- @return UINT8\r
-\r
-**/\r
-typedef\r
-UINT8\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ8) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address\r
- );\r
-\r
-/**\r
- 16-bit Memory read operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
-\r
- @return UINT16\r
-\r
-**/\r
-typedef\r
-UINT16\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ16) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address\r
- );\r
-\r
-/**\r
- 32-bit Memory read operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
-\r
- @return UINT32\r
-\r
-**/\r
-typedef\r
-UINT32\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ32) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address\r
- );\r
-\r
-/**\r
- 64-bit Memory read operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
-\r
- @return UINT64\r
-\r
-**/\r
-typedef\r
-UINT64\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ64) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address\r
- );\r
-\r
-/**\r
- 8-bit Memory write operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
- @param Data The data to write.\r
-\r
- @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE8) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address,\r
- IN UINT8 Data\r
- );\r
-\r
-/**\r
- 16-bit Memory write operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
- @param Data The data to write.\r
-\r
- @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE16) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address,\r
- IN UINT16 Data\r
- );\r
-\r
-/**\r
- 32-bit Memory write operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
- @param Data The data to write.\r
-\r
- @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE32) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address,\r
- IN UINT32 Data\r
- );\r
-\r
-/**\r
- 64-bit Memory write operations.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
- @param This Pointer to local data for the interface.\r
- @param Address The physical address of the access.\r
- @param Data The data to write.\r
-\r
- @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE64) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_CPU_IO_PPI *This,\r
- IN UINT64 Address,\r
- IN UINT64 Data\r
- );\r
-\r
-/**\r
- @par Ppi Description:\r
- EFI_PEI_CPU_IO_PPI provides a set of memory and I/O-based services.\r
- The perspective of the services is that of the processor, not the bus or system.\r
-\r
- @param Mem\r
- Collection of memory-access services.\r
-\r
- @param I/O\r
- Collection of I/O-access services.\r
-\r
- @param IoRead8\r
- 8-bit read service.\r
-\r
- @param IoRead16\r
- 16-bit read service.\r
-\r
- @param IoRead32\r
- 32-bit read service.\r
-\r
- @param IoRead64\r
- 64-bit read service.\r
-\r
- @param IoWrite8\r
- 8-bit write service.\r
-\r
- @param IoWrite16\r
- 16-bit write service.\r
-\r
- @param IoWrite32\r
- 32-bit write service.\r
-\r
- @param IoWrite64\r
- 64-bit write service.\r
-\r
- @param MemRead8\r
- 8-bit read service.\r
-\r
- @param MemRead16\r
- 16-bit read service.\r
-\r
- @param MemRead32\r
- 32-bit read service.\r
-\r
- @param MemRead64\r
- 64-bit read service.\r
-\r
- @param MemWrite8\r
- 8-bit write service.\r
-\r
- @param MemWrite16\r
- 16-bit write service.\r
-\r
- @param MemWrite32\r
- 32-bit write service.\r
-\r
- @param MemWrite64\r
- 64-bit write service.\r
-\r
-**/\r
-struct _EFI_PEI_CPU_IO_PPI {\r
- EFI_PEI_CPU_IO_PPI_ACCESS Mem;\r
- EFI_PEI_CPU_IO_PPI_ACCESS Io;\r
- EFI_PEI_CPU_IO_PPI_IO_READ8 IoRead8;\r
- EFI_PEI_CPU_IO_PPI_IO_READ16 IoRead16;\r
- EFI_PEI_CPU_IO_PPI_IO_READ32 IoRead32;\r
- EFI_PEI_CPU_IO_PPI_IO_READ64 IoRead64;\r
- EFI_PEI_CPU_IO_PPI_IO_WRITE8 IoWrite8;\r
- EFI_PEI_CPU_IO_PPI_IO_WRITE16 IoWrite16;\r
- EFI_PEI_CPU_IO_PPI_IO_WRITE32 IoWrite32;\r
- EFI_PEI_CPU_IO_PPI_IO_WRITE64 IoWrite64;\r
- EFI_PEI_CPU_IO_PPI_MEM_READ8 MemRead8;\r
- EFI_PEI_CPU_IO_PPI_MEM_READ16 MemRead16;\r
- EFI_PEI_CPU_IO_PPI_MEM_READ32 MemRead32;\r
- EFI_PEI_CPU_IO_PPI_MEM_READ64 MemRead64;\r
- EFI_PEI_CPU_IO_PPI_MEM_WRITE8 MemWrite8;\r
- EFI_PEI_CPU_IO_PPI_MEM_WRITE16 MemWrite16;\r
- EFI_PEI_CPU_IO_PPI_MEM_WRITE32 MemWrite32;\r
- EFI_PEI_CPU_IO_PPI_MEM_WRITE64 MemWrite64;\r
-};\r
-\r
-extern EFI_GUID gEfiPeiCpuIoPpiInServiceTableGuid;\r
-\r
-#endif\r