]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Vlv2DeviceRefCodePkg/ValleyView2Soc/SouthCluster/Include/Protocol/SmmIchnDispatchEx.h
Upload BSD-licensed Vlv2TbltDevicePkg and Vlv2DeviceRefCodePkg to
[mirror_edk2.git] / Vlv2DeviceRefCodePkg / ValleyView2Soc / SouthCluster / Include / Protocol / SmmIchnDispatchEx.h
diff --git a/Vlv2DeviceRefCodePkg/ValleyView2Soc/SouthCluster/Include/Protocol/SmmIchnDispatchEx.h b/Vlv2DeviceRefCodePkg/ValleyView2Soc/SouthCluster/Include/Protocol/SmmIchnDispatchEx.h
new file mode 100644 (file)
index 0000000..8400156
--- /dev/null
@@ -0,0 +1,165 @@
+/**\r
+**/\r
+/**\r
+\r
+Copyright (c) 2012  - 2014, Intel Corporation. All rights reserved\r
+\r
+  This program and the accompanying materials are licensed and made available under\r
+  the terms and conditions of the BSD License that accompanies this distribution.\r
+  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
+  @file\r
+  SmmIchnDispatchEx.h\r
+\r
+  @brief\r
+  SmmIchnDispatch Extended Protocol\r
+\r
+**/\r
+#ifndef _EFI_SMM_ICHN_DISPATCH_EX_H_\r
+#define _EFI_SMM_ICHN_DISPATCH_EX_H_\r
+\r
+#ifdef ECP_FLAG\r
+#include <Protocol/SmmIchnDispatch/SmmIchnDispatch.h>\r
+#else\r
+#include <Protocol/SmmIchnDispatch.h>\r
+#endif\r
+\r
+#define EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL_GUID \\r
+  { \\r
+    0x3920405b, 0xc897, 0x44da, 0x88, 0xf3, 0x4c, 0x49, 0x8a, 0x6f, 0xf7, 0x36 \\r
+  }\r
+extern EFI_GUID                                   gEfiSmmIchnDispatchExProtocolGuid;\r
+\r
+///\r
+/// Forward reference for ANSI C compatibility\r
+///\r
+typedef struct _EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL;\r
+\r
+///\r
+/// Related Definitions\r
+///\r
+///\r
+/// Ichn Dispatch Extended Types\r
+///\r
+typedef enum {\r
+  IchnExPciExpress = NUM_ICHN_TYPES + 1,\r
+  IchnExMonitor,\r
+  IchnExSpi,\r
+  IchnExQRT,\r
+  IchnExGpioUnlock,\r
+  IchnExTmrOverflow,\r
+  IchnExPcie0Hotplug,\r
+  IchnExPcie1Hotplug,\r
+  IchnExPcie2Hotplug,\r
+  IchnExPcie3Hotplug,\r
+  IchnExPcie0LinkActive,\r
+  IchnExPcie1LinkActive,\r
+  IchnExPcie2LinkActive,\r
+  IchnExPcie3LinkActive,\r
+  ///\r
+  /// INSERT NEW ITEMS JUST BEFORE THIS LINE\r
+  ///\r
+  IchnExTypeMAX /// the maximum number of items in this enumeration\r
+} EFI_SMM_ICHN_EX_SMI_TYPE;\r
+\r
+typedef struct {\r
+  EFI_SMM_ICHN_EX_SMI_TYPE  Type;\r
+} EFI_SMM_ICHN_DISPATCH_EX_CONTEXT;\r
+\r
+///\r
+/// Member functions\r
+///\r
+typedef\r
+VOID\r
+(EFIAPI *EFI_SMM_ICHN_DISPATCH_EX) (\r
+  IN  EFI_HANDLE                                DispatchHandle,\r
+  IN  EFI_SMM_ICHN_DISPATCH_EX_CONTEXT          * DispatchContext\r
+  );\r
+\r
+/**\r
+\r
+  @brief\r
+  Dispatch function for a ICH n Extended specific SMI handler.\r
+\r
+  @param[in] DispatchHandle       Handle of this dispatch function.\r
+  @param[in] DispatchContext      Pointer to the dispatch function's context.\r
+                                  The DispatchContext fields are filled in\r
+                                  by the dispatching driver prior to\r
+                                  invoking this dispatch function.\r
+\r
+    @retval None\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMM_ICHN_EX_REGISTER) (\r
+  IN  EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL   * This,\r
+  IN  EFI_SMM_ICHN_DISPATCH_EX            DispatchFunction,\r
+  IN  EFI_SMM_ICHN_DISPATCH_EX_CONTEXT    * DispatchContext,\r
+  OUT EFI_HANDLE                          * DispatchHandle\r
+  );\r
+\r
+/**\r
+\r
+  @brief\r
+  Register a child SMI source dispatch function with a parent SMM driver\r
+\r
+  @param[in] This                 Protocol instance pointer.\r
+  @param[in] DispatchFunction     Pointer to dispatch function to be invoked for\r
+                                  this SMI source\r
+  @param[in] DispatchContext      Pointer to the dispatch function's context.\r
+                                  The caller fills this context in before calling\r
+                                  the register function to indicate to the register\r
+                                  function the ICHN SMI source for which the dispatch\r
+                                  function should be invoked.\r
+  @param[in] DispatchHandle       Handle of dispatch function, for when interfacing\r
+                                  with the parent SMM driver.\r
+\r
+  @retval EFI_SUCCESS             The dispatch function has been successfully\r
+                                  registered and the SMI source has been enabled.\r
+  @retval EFI_DEVICE_ERROR        The driver was unable to enable the SMI source.\r
+  @retval EFI_OUT_OF_RESOURCES    Not enough memory (system or SMM) to manage this\r
+                                  child.\r
+  @retval EFI_INVALID_PARAMETER   DispatchContext is invalid. The ICHN input value\r
+                                  is not within valid range.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMM_ICHN_EX_UNREGISTER) (\r
+  IN  EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL         * This,\r
+  IN  EFI_HANDLE                                DispatchHandle\r
+  );\r
+\r
+/**\r
+\r
+  @brief\r
+  Unregister a child SMI source dispatch function with a parent SMM driver\r
+\r
+  @param[in] This                 Protocol instance pointer.\r
+  @param[in] DispatchHandle       Handle of dispatch function to deregister.\r
+\r
+  @retval EFI_SUCCESS             The dispatch function has been successfully\r
+                                  unregistered and the SMI source has been disabled\r
+                                  if there are no other registered child dispatch\r
+                                  functions for this SMI source.\r
+  @retval EFI_INVALID_PARAMETER   Handle is invalid.\r
+  @retval Others                  TBD\r
+\r
+**/\r
+\r
+///\r
+/// Interface structure for the SMM Ich n specific SMI Dispatch Protocol\r
+///\r
+typedef struct _EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL {\r
+  EFI_SMM_ICHN_EX_REGISTER    Register;\r
+  EFI_SMM_ICHN_EX_UNREGISTER  UnRegister;\r
+};\r
+\r
+#endif\r