\r
Provides the parent dispatch service for a given Sx-state source generator.\r
\r
- Copyright (c) 2009 - 2010, 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
+ Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#ifndef _SMM_SX_DISPATCH2_H_\r
#define _SMM_SX_DISPATCH2_H_\r
\r
-#include <Pi/PiSmmCis.h>\r
-\r
-#define EFI_SMM_SX_DISPATCH2_PROTOCOL_GUID \\r
- { \\r
- 0x456d2859, 0xa84b, 0x4e47, {0xa2, 0xee, 0x32, 0x76, 0xd8, 0x86, 0x99, 0x7d } \\r
- }\r
-\r
-///\r
-/// Sleep states S0-S5\r
-///\r
-typedef enum {\r
- SxS0,\r
- SxS1,\r
- SxS2,\r
- SxS3,\r
- SxS4,\r
- SxS5,\r
- EfiMaximumSleepType\r
-} EFI_SLEEP_TYPE;\r
+#include <Protocol/MmSxDispatch.h>\r
\r
-///\r
-/// Sleep state phase: entry or exit\r
-///\r
-typedef enum {\r
- SxEntry,\r
- SxExit,\r
- EfiMaximumPhase\r
-} EFI_SLEEP_PHASE;\r
+#define EFI_SMM_SX_DISPATCH2_PROTOCOL_GUID EFI_MM_SX_DISPATCH_PROTOCOL_GUID\r
\r
///\r
/// The dispatch function's context\r
///\r
-typedef struct {\r
- EFI_SLEEP_TYPE Type;\r
- EFI_SLEEP_PHASE Phase;\r
-} EFI_SMM_SX_REGISTER_CONTEXT;\r
-\r
-typedef struct _EFI_SMM_SX_DISPATCH2_PROTOCOL EFI_SMM_SX_DISPATCH2_PROTOCOL;\r
+typedef EFI_MM_SX_REGISTER_CONTEXT EFI_SMM_SX_REGISTER_CONTEXT;\r
\r
-/**\r
- Provides the parent dispatch service for a given Sx source generator.\r
+typedef EFI_MM_SX_DISPATCH_PROTOCOL EFI_SMM_SX_DISPATCH2_PROTOCOL;\r
\r
- This service registers a function (DispatchFunction) which will be called when the sleep state \r
- event specified by RegisterContext is detected. On return, DispatchHandle contains a \r
- unique handle which may be used later to unregister the function using UnRegister().\r
- The DispatchFunction will be called with Context set to the same value as was passed into \r
- this function in RegisterContext and with CommBuffer and CommBufferSize set to \r
- NULL and 0 respectively.\r
+typedef EFI_MM_SX_REGISTER EFI_SMM_SX_REGISTER2;\r
\r
- @param[in] This Pointer to the EFI_SMM_SX_DISPATCH2_PROTOCOL instance.\r
- @param[in] DispatchFunction Function to register for handler when the specified sleep state event occurs.\r
- @param[in] RegisterContext 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 which Sx state type and phase the caller\r
- wishes to be called back on. For this intertace,\r
- the Sx driver will call the registered handlers for\r
- all Sx type and phases, so the Sx state handler(s)\r
- must check the Type and Phase field of the Dispatch\r
- context and act accordingly.\r
- @param[out] DispatchHandle Handle of dispatch function, for when interfacing\r
- with the parent Sx state 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_UNSUPPORTED The Sx driver or hardware does not support that\r
- Sx Type/Phase.\r
- @retval EFI_DEVICE_ERROR The Sx driver was unable to enable the SMI source.\r
- @retval EFI_INVALID_PARAMETER RegisterContext is invalid. Type & Phase are not\r
- within valid range.\r
- @retval EFI_OUT_OF_RESOURCES There is not enough memory (system or SMM) to manage this\r
- child.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_SX_REGISTER2)(\r
- IN CONST EFI_SMM_SX_DISPATCH2_PROTOCOL *This,\r
- IN EFI_SMM_HANDLER_ENTRY_POINT2 DispatchFunction,\r
- IN CONST EFI_SMM_SX_REGISTER_CONTEXT *RegisterContext,\r
- OUT EFI_HANDLE *DispatchHandle\r
- );\r
-\r
-/**\r
- Unregisters an Sx-state service.\r
-\r
- This service removes the handler associated with DispatchHandle so that it will no longer be \r
- called in response to sleep event.\r
-\r
- @param[in] This Pointer to the EFI_SMM_SX_DISPATCH2_PROTOCOL instance.\r
- @param[in] DispatchHandle Handle of the service to remove. \r
-\r
- @retval EFI_SUCCESS The service has been successfully removed.\r
- @retval EFI_INVALID_PARAMETER The DispatchHandle was not valid.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_SX_UNREGISTER2)(\r
- IN CONST EFI_SMM_SX_DISPATCH2_PROTOCOL *This,\r
- IN EFI_HANDLE DispatchHandle\r
- );\r
-\r
-///\r
-/// Interface structure for the SMM Sx Dispatch Protocol\r
-///\r
-/// The EFI_SMM_SX_DISPATCH2_PROTOCOL provides the ability to install child handlers to \r
-/// respond to sleep state related events.\r
-///\r
-struct _EFI_SMM_SX_DISPATCH2_PROTOCOL {\r
- EFI_SMM_SX_REGISTER2 Register;\r
- EFI_SMM_SX_UNREGISTER2 UnRegister;\r
-};\r
+typedef EFI_MM_SX_UNREGISTER EFI_SMM_SX_UNREGISTER2;\r
\r
extern EFI_GUID gEfiSmmSxDispatch2ProtocolGuid;\r
\r