]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OldMdePkg/Include/Protocol/SmmControl.h
Moved the MdePkg to OldMdePkg so that new code in MdePkg does not break existing...
[mirror_edk2.git] / OldMdePkg / Include / Protocol / SmmControl.h
diff --git a/OldMdePkg/Include/Protocol/SmmControl.h b/OldMdePkg/Include/Protocol/SmmControl.h
new file mode 100644 (file)
index 0000000..a83d25b
--- /dev/null
@@ -0,0 +1,128 @@
+/** @file\r
+  This file declares SMM Control abstraction protocol.\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:  SmmControl.h\r
+\r
+  @par Revision Reference:\r
+  This Protocol is defined in Framework of EFI SMM Core Interface Spec\r
+  Version 0.9.\r
+\r
+**/\r
+\r
+#ifndef _SMM_CONTROL_H_\r
+#define _SMM_CONTROL_H_\r
+\r
+typedef struct _EFI_SMM_CONTROL_PROTOCOL              EFI_SMM_CONTROL_PROTOCOL;\r
+\r
+#define EFI_SMM_CONTROL_PROTOCOL_GUID \\r
+  { \\r
+    0x8d12e231, 0xc667, 0x4fd1, {0x98, 0xf2, 0x24, 0x49, 0xa7, 0xe7, 0xb2, 0xe5 } \\r
+  }\r
+\r
+// SMM Access specification Data Structures\r
+//\r
+typedef struct {\r
+  UINT8 SmiTriggerRegister;\r
+  UINT8 SmiDataRegister;\r
+} EFI_SMM_CONTROL_REGISTER;\r
+\r
+//\r
+// SMM Control specification member function\r
+//\r
+/**\r
+  Invokes SMI activation from either the preboot or runtime environment.\r
+\r
+  @param  This                  The EFI_SMM_CONTROL_PROTOCOL instance.\r
+  @param  ArgumentBuffer        Optional sized data to pass into the protocol activation.\r
+  @param  ArgumentBufferSize    Optional size of the data.\r
+  @param  Periodic              Optional mechanism to engender a periodic stream.\r
+  @param  ActivationInterval    Optional parameter to repeat at this period one\r
+                                time or, if the Periodic Boolean is set, periodically.\r
+\r
+  @retval EFI_SUCCESS           The SMI/PMI has been engendered.\r
+  @retval EFI_DEVICE_ERROR      The timing is unsupported.\r
+  @retval EFI_INVALID_PARAMETER The activation period is unsupported.\r
+  @retval EFI_NOT_STARTED       The SMM base service has not been initialized.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMM_ACTIVATE) (\r
+  IN EFI_SMM_CONTROL_PROTOCOL                             *This,\r
+  IN OUT INT8                                             *ArgumentBuffer OPTIONAL,\r
+  IN OUT UINTN                                            *ArgumentBufferSize OPTIONAL,\r
+  IN BOOLEAN                                              Periodic OPTIONAL,\r
+  IN UINTN                                                ActivationInterval OPTIONAL\r
+  );\r
+\r
+/**\r
+  Clears any system state that was created in response to the Active call.\r
+\r
+  @param  This                  The EFI_SMM_CONTROL_PROTOCOL instance.\r
+  @param  Periodic              Optional parameter to repeat at this period one time\r
+\r
+  @retval EFI_SUCCESS           The SMI/PMI has been engendered.\r
+  @retval EFI_DEVICE_ERROR      The source could not be cleared.\r
+  @retval EFI_INVALID_PARAMETER The service did not support the Periodic input argument.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMM_DEACTIVATE) (\r
+  IN EFI_SMM_CONTROL_PROTOCOL                   *This,\r
+  IN BOOLEAN                                    Periodic OPTIONAL\r
+  );\r
+\r
+/**\r
+  Provides information on the source register used to generate the SMI.\r
+\r
+  @param  This                  The EFI_SMM_CONTROL_PROTOCOL instance.\r
+  @param  SmiRegister           Pointer to the SMI register description structure\r
+\r
+  @retval EFI_SUCCESS           The register structure has been returned.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMM_GET_REGISTER_INFO) (\r
+  IN EFI_SMM_CONTROL_PROTOCOL           *This,\r
+  IN OUT EFI_SMM_CONTROL_REGISTER       *SmiRegister\r
+  );\r
+\r
+/**\r
+  @par Protocol Description:\r
+  This protocol is used initiate SMI/PMI activations. \r
+\r
+  @param Trigger\r
+  Initiates the SMI/PMI activation.\r
+\r
+  @param Clear\r
+  Quiesces the SMI/PMI activation. \r
+\r
+  @param GetRegisterInfo\r
+  Provides data on the register used as the source of the SMI.\r
+\r
+  @param MinimumTriggerPeriod\r
+  Minimum interval at which the platform can set the period. \r
+\r
+**/\r
+\r
+struct _EFI_SMM_CONTROL_PROTOCOL {\r
+  EFI_SMM_ACTIVATE          Trigger;\r
+  EFI_SMM_DEACTIVATE        Clear;\r
+  EFI_SMM_GET_REGISTER_INFO GetRegisterInfo;\r
+  UINTN                     MinimumTriggerPeriod;\r
+};\r
+\r
+extern EFI_GUID gEfiSmmControlProtocolGuid;\r
+\r
+#endif\r