+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>\r
-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:\r
-\r
- CpuIo.h\r
-\r
-Abstract:\r
-\r
- CPU IO PPI defined in Tiano\r
- CPU IO PPI abstracts CPU IO access\r
- \r
-\r
---*/\r
-\r
-#ifndef _PEI_CPUIO_PPI_H_\r
-#define _PEI_CPUIO_PPI_H_\r
-\r
-#define PEI_CPU_IO_PPI_GUID \\r
- { \\r
- 0xe6af1f7b, 0xfc3f, 0x46da, {0xa8, 0x28, 0xa3, 0xb4, 0x57, 0xa4, 0x42, 0x82} \\r
- }\r
-\r
-EFI_FORWARD_DECLARATION (PEI_CPU_IO_PPI);\r
-\r
-//\r
-// *******************************************************\r
-// PEI_CPU_IO_PPI_WIDTH\r
-// *******************************************************\r
-//\r
-typedef enum {\r
- PeiCpuIoWidthUint8,\r
- PeiCpuIoWidthUint16,\r
- PeiCpuIoWidthUint32,\r
- PeiCpuIoWidthUint64,\r
- PeiCpuIoWidthFifoUint8,\r
- PeiCpuIoWidthFifoUint16,\r
- PeiCpuIoWidthFifoUint32,\r
- PeiCpuIoWidthFifoUint64,\r
- PeiCpuIoWidthFillUint8,\r
- PeiCpuIoWidthFillUint16,\r
- PeiCpuIoWidthFillUint32,\r
- PeiCpuIoWidthFillUint64,\r
- PeiCpuIoWidthMaximum\r
-} PEI_CPU_IO_PPI_WIDTH;\r
-\r
-//\r
-// *******************************************************\r
-// PEI_CPU_IO_PPI_IO_MEM\r
-// *******************************************************\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *PEI_CPU_IO_PPI_IO_MEM) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN PEI_CPU_IO_PPI_WIDTH Width,\r
- IN UINT64 Address,\r
- IN UINTN Count,\r
- IN OUT VOID *Buffer\r
- );\r
-\r
-//\r
-// *******************************************************\r
-// PEI_CPU_IO_PPI_ACCESS\r
-// *******************************************************\r
-//\r
-typedef struct {\r
- PEI_CPU_IO_PPI_IO_MEM Read;\r
- PEI_CPU_IO_PPI_IO_MEM Write;\r
-} PEI_CPU_IO_PPI_ACCESS;\r
-\r
-//\r
-// *******************************************************\r
-// Base IO Class Functions\r
-// *******************************************************\r
-//\r
-typedef\r
-UINT8\r
-(EFIAPI *PEI_CPU_IO_PPI_IO_READ8) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address\r
- );\r
-\r
-typedef\r
-UINT16\r
-(EFIAPI *PEI_CPU_IO_PPI_IO_READ16) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address\r
- );\r
-\r
-typedef\r
-UINT32\r
-(EFIAPI *PEI_CPU_IO_PPI_IO_READ32) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address\r
- );\r
-\r
-typedef\r
-UINT64\r
-(EFIAPI *PEI_CPU_IO_PPI_IO_READ64) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *PEI_CPU_IO_PPI_IO_WRITE8) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address,\r
- IN UINT8 Data\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *PEI_CPU_IO_PPI_IO_WRITE16) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address,\r
- IN UINT16 Data\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *PEI_CPU_IO_PPI_IO_WRITE32) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address,\r
- IN UINT32 Data\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *PEI_CPU_IO_PPI_IO_WRITE64) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address,\r
- IN UINT64 Data\r
- );\r
-\r
-typedef\r
-UINT8\r
-(EFIAPI *PEI_CPU_IO_PPI_MEM_READ8) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address\r
- );\r
-\r
-typedef\r
-UINT16\r
-(EFIAPI *PEI_CPU_IO_PPI_MEM_READ16) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address\r
- );\r
-\r
-typedef\r
-UINT32\r
-(EFIAPI *PEI_CPU_IO_PPI_MEM_READ32) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address\r
- );\r
-\r
-typedef\r
-UINT64\r
-(EFIAPI *PEI_CPU_IO_PPI_MEM_READ64) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *PEI_CPU_IO_PPI_MEM_WRITE8) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address,\r
- IN UINT8 Data\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *PEI_CPU_IO_PPI_MEM_WRITE16) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address,\r
- IN UINT16 Data\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *PEI_CPU_IO_PPI_MEM_WRITE32) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address,\r
- IN UINT32 Data\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *PEI_CPU_IO_PPI_MEM_WRITE64) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_CPU_IO_PPI * This,\r
- IN UINT64 Address,\r
- IN UINT64 Data\r
- );\r
-\r
-//\r
-// *******************************************************\r
-// PEI_CPU_IO_PPI\r
-// *******************************************************\r
-//\r
-struct _PEI_CPU_IO_PPI {\r
- PEI_CPU_IO_PPI_ACCESS Mem;\r
- PEI_CPU_IO_PPI_ACCESS Io;\r
- PEI_CPU_IO_PPI_IO_READ8 IoRead8;\r
- PEI_CPU_IO_PPI_IO_READ16 IoRead16;\r
- PEI_CPU_IO_PPI_IO_READ32 IoRead32;\r
- PEI_CPU_IO_PPI_IO_READ64 IoRead64;\r
- PEI_CPU_IO_PPI_IO_WRITE8 IoWrite8;\r
- PEI_CPU_IO_PPI_IO_WRITE16 IoWrite16;\r
- PEI_CPU_IO_PPI_IO_WRITE32 IoWrite32;\r
- PEI_CPU_IO_PPI_IO_WRITE64 IoWrite64;\r
- PEI_CPU_IO_PPI_MEM_READ8 MemRead8;\r
- PEI_CPU_IO_PPI_MEM_READ16 MemRead16;\r
- PEI_CPU_IO_PPI_MEM_READ32 MemRead32;\r
- PEI_CPU_IO_PPI_MEM_READ64 MemRead64;\r
- PEI_CPU_IO_PPI_MEM_WRITE8 MemWrite8;\r
- PEI_CPU_IO_PPI_MEM_WRITE16 MemWrite16;\r
- PEI_CPU_IO_PPI_MEM_WRITE32 MemWrite32;\r
- PEI_CPU_IO_PPI_MEM_WRITE64 MemWrite64;\r
-};\r
-\r
-extern EFI_GUID gPeiCpuIoPpiInServiceTableGuid;\r
-\r
-#endif\r