]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OldMdePkg/Include/Ppi/CpuIo.h
Moved the MdePkg to OldMdePkg so that new code in MdePkg does not break existing...
[mirror_edk2.git] / OldMdePkg / Include / Ppi / CpuIo.h
diff --git a/OldMdePkg/Include/Ppi/CpuIo.h b/OldMdePkg/Include/Ppi/CpuIo.h
new file mode 100644 (file)
index 0000000..791348d
--- /dev/null
@@ -0,0 +1,474 @@
+/** @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