]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Add into MdePkg definitions for the SMM Cpu I/O Protocol defined in the PI 1.2 specif...
authorrsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 31 Aug 2009 03:23:38 +0000 (03:23 +0000)
committerrsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 31 Aug 2009 03:23:38 +0000 (03:23 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9208 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Include/Protocol/SmmCpuIo.h [new file with mode: 0644]
MdePkg/MdePkg.dec

diff --git a/MdePkg/Include/Protocol/SmmCpuIo.h b/MdePkg/Include/Protocol/SmmCpuIo.h
new file mode 100644 (file)
index 0000000..90d0e93
--- /dev/null
@@ -0,0 +1,87 @@
+/** @file\r
+  SMM CPU I/O protocol as defined in the PI 1.2 specification.\r
+\r
+  This protocol provides CPU I/O and memory access within SMM.\r
+\r
+  Copyright (c) 2009, 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
+**/\r
+\r
+#ifndef _SMM_CPU_IO_H_\r
+#define _SMM_CPU_IO_H_\r
+\r
+#define EFI_SMM_CPU_IO_PROTOCOL_GUID \\r
+  { \\r
+    0x3242A9D8, 0xCE70, 0x4AA0, { 0x95, 0x5D, 0x5E, 0x7B, 0x14, 0x0D, 0xE4, 0xD2 } \\r
+  }\r
+\r
+typedef struct _EFI_SMM_CPU_IO_PROTOCOL  EFI_SMM_CPU_IO_PROTOCOL;\r
+\r
+///\r
+/// Width of the SMM CPU I/O operations\r
+///\r
+typedef enum {\r
+  SMM_IO_UINT8  = 0,\r
+  SMM_IO_UINT16 = 1,\r
+  SMM_IO_UINT32 = 2,\r
+  SMM_IO_UINT64 = 3\r
+} EFI_SMM_IO_WIDTH;\r
+\r
+/**\r
+  Provides the basic memory and I/O interfaces used toabstract accesses to devices.\r
+\r
+  The I/O operations are carried out exactly as requested.  The caller is responsible for any alignment \r
+  and I/O width issues that the bus, device, platform, or type of I/O might require.\r
+\r
+  @param[in]      This           The EFI_SMM_CPU_IO_PROTOCOL instance.\r
+  @param[in]      Width          Signifies the width of the I/O operations.\r
+  @param[in]      Address        The base address of the I/O operations.\r
+                                 The caller is responsible for aligning the Address if required. \r
+  @param[in]      Count          The number of I/O operations to perform.\r
+  @param[in,out]  Buffer         For read operations, the destination buffer to store the results.\r
+                                 For write operations, the source buffer from which to write data.\r
+\r
+  @retval EFI_SUCCESS            The data was read from or written to the device.\r
+  @retval EFI_UNSUPPORTED        The Address is not valid for this system.\r
+  @retval EFI_INVALID_PARAMETER  Width or Count, or both, were invalid.\r
+  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack of resources.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMM_CPU_IO)(\r
+  IN CONST EFI_SMM_CPU_IO_PROTOCOL  *This,\r
+  IN EFI_SMM_IO_WIDTH               Width,\r
+  IN UINT64                         Address,\r
+  IN UINTN                          Count,\r
+  IN OUT VOID                       *Buffer\r
+  );\r
+\r
+typedef struct {\r
+  ///\r
+  /// This service provides the various modalities of memory and I/O read.\r
+  ///\r
+  EFI_SMM_CPU_IO  Read;\r
+  ///\r
+  /// This service provides the various modalities of memory and I/O write.\r
+  ///\r
+  EFI_SMM_CPU_IO  Write;\r
+} EFI_SMM_IO_ACCESS;\r
+\r
+///\r
+/// SMM CPU I/O Protocol provides CPU I/O and memory access within SMM.\r
+///\r
+typedef struct _EFI_SMM_CPU_IO_PROTOCOL {\r
+  EFI_SMM_IO_ACCESS Mem;  ///< Allows reads and writes to memory-mapped I/O space.\r
+  EFI_SMM_IO_ACCESS Io;   ///< Allows reads and writes to I/O space.\r
+};\r
+\r
+extern EFI_GUID gEfiSmmCpuIoProtocolGuid;\r
+\r
+#endif\r
index 28cb07f0bf0d9ae63803b986230ee56c95aae2b2..b6c7ac37a430940901da8c33adf26e883d59c689 100644 (file)
   gEfiAcpiSdtProtocolGuid         = { 0xeb97088e, 0xcfdf, 0x49c6, { 0xbe, 0x4b, 0xd9, 0x6, 0xa5, 0xb2, 0xe, 0x86 }}\r
   \r
   ## Include/Protocol/SuperIo.h\r
-  gEfiSioProtocolGuid             = { 0x215fdd18, 0xbd50, 0x4feb, { 0x89, 0xb, 0x58, 0xca, 0xb, 0x47, 0x39, 0xe9 } }\r
+  gEfiSioProtocolGuid             = { 0x215fdd18, 0xbd50, 0x4feb, { 0x89, 0xb, 0x58, 0xca, 0xb, 0x47, 0x39, 0xe9 }}\r
   \r
+  ## Include/Protocol/SmmCpuIo.h\r
+  gEfiSmmCpuIoProtocolGuid        = { 0x3242a9d8, 0xce70, 0x4aa0, { 0x95, 0x5d, 0x5e, 0x7b, 0x14, 0x0d, 0xe4, 0xd2 }}\r
+\r
   #\r
   # Protocols defined in UEFI2.1/UEFI2.0/EFI1.1\r
   #\r