https://svn.code.sf.net/p/edk2/code/trunk/edk2/, which are for MinnowBoard MAX open source project. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: David Wei <david.wei@intel.com> Reviewed-by: Mike Wu <mike.wu@intel.com> Reviewed-by: Hot Tian <hot.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16599 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			166 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
| **/
 | |
| /**
 | |
| 
 | |
| Copyright (c) 2012  - 2014, Intel Corporation. All rights reserved
 | |
| 
 | |
|   This program and the accompanying materials are licensed and made available under
 | |
|   the terms and conditions of the BSD License that accompanies this distribution.
 | |
|   The full text of the license may be found at
 | |
|   http://opensource.org/licenses/bsd-license.php.
 | |
| 
 | |
|   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
|   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| 
 | |
| 
 | |
| 
 | |
|   @file
 | |
|   SmmIchnDispatchEx.h
 | |
| 
 | |
|   @brief
 | |
|   SmmIchnDispatch Extended Protocol
 | |
| 
 | |
| **/
 | |
| #ifndef _EFI_SMM_ICHN_DISPATCH_EX_H_
 | |
| #define _EFI_SMM_ICHN_DISPATCH_EX_H_
 | |
| 
 | |
| #ifdef ECP_FLAG
 | |
| #include <Protocol/SmmIchnDispatch/SmmIchnDispatch.h>
 | |
| #else
 | |
| #include <Protocol/SmmIchnDispatch.h>
 | |
| #endif
 | |
| 
 | |
| #define EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL_GUID \
 | |
|   { \
 | |
|     0x3920405b, 0xc897, 0x44da, 0x88, 0xf3, 0x4c, 0x49, 0x8a, 0x6f, 0xf7, 0x36 \
 | |
|   }
 | |
| extern EFI_GUID                                   gEfiSmmIchnDispatchExProtocolGuid;
 | |
| 
 | |
| ///
 | |
| /// Forward reference for ANSI C compatibility
 | |
| ///
 | |
| typedef struct _EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL;
 | |
| 
 | |
| ///
 | |
| /// Related Definitions
 | |
| ///
 | |
| ///
 | |
| /// Ichn Dispatch Extended Types
 | |
| ///
 | |
| typedef enum {
 | |
|   IchnExPciExpress = NUM_ICHN_TYPES + 1,
 | |
|   IchnExMonitor,
 | |
|   IchnExSpi,
 | |
|   IchnExQRT,
 | |
|   IchnExGpioUnlock,
 | |
|   IchnExTmrOverflow,
 | |
|   IchnExPcie0Hotplug,
 | |
|   IchnExPcie1Hotplug,
 | |
|   IchnExPcie2Hotplug,
 | |
|   IchnExPcie3Hotplug,
 | |
|   IchnExPcie0LinkActive,
 | |
|   IchnExPcie1LinkActive,
 | |
|   IchnExPcie2LinkActive,
 | |
|   IchnExPcie3LinkActive,
 | |
|   ///
 | |
|   /// INSERT NEW ITEMS JUST BEFORE THIS LINE
 | |
|   ///
 | |
|   IchnExTypeMAX /// the maximum number of items in this enumeration
 | |
| } EFI_SMM_ICHN_EX_SMI_TYPE;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_SMM_ICHN_EX_SMI_TYPE  Type;
 | |
| } EFI_SMM_ICHN_DISPATCH_EX_CONTEXT;
 | |
| 
 | |
| ///
 | |
| /// Member functions
 | |
| ///
 | |
| typedef
 | |
| VOID
 | |
| (EFIAPI *EFI_SMM_ICHN_DISPATCH_EX) (
 | |
|   IN  EFI_HANDLE                                DispatchHandle,
 | |
|   IN  EFI_SMM_ICHN_DISPATCH_EX_CONTEXT          * DispatchContext
 | |
|   );
 | |
| 
 | |
| /**
 | |
| 
 | |
|   @brief
 | |
|   Dispatch function for a ICH n Extended specific SMI handler.
 | |
| 
 | |
|   @param[in] DispatchHandle       Handle of this dispatch function.
 | |
|   @param[in] DispatchContext      Pointer to the dispatch function's context.
 | |
|                                   The DispatchContext fields are filled in
 | |
|                                   by the dispatching driver prior to
 | |
|                                   invoking this dispatch function.
 | |
| 
 | |
|     @retval None
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_SMM_ICHN_EX_REGISTER) (
 | |
|   IN  EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL   * This,
 | |
|   IN  EFI_SMM_ICHN_DISPATCH_EX            DispatchFunction,
 | |
|   IN  EFI_SMM_ICHN_DISPATCH_EX_CONTEXT    * DispatchContext,
 | |
|   OUT EFI_HANDLE                          * DispatchHandle
 | |
|   );
 | |
| 
 | |
| /**
 | |
| 
 | |
|   @brief
 | |
|   Register a child SMI source dispatch function with a parent SMM driver
 | |
| 
 | |
|   @param[in] This                 Protocol instance pointer.
 | |
|   @param[in] DispatchFunction     Pointer to dispatch function to be invoked for
 | |
|                                   this SMI source
 | |
|   @param[in] DispatchContext      Pointer to the dispatch function's context.
 | |
|                                   The caller fills this context in before calling
 | |
|                                   the register function to indicate to the register
 | |
|                                   function the ICHN SMI source for which the dispatch
 | |
|                                   function should be invoked.
 | |
|   @param[in] DispatchHandle       Handle of dispatch function, for when interfacing
 | |
|                                   with the parent SMM driver.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The dispatch function has been successfully
 | |
|                                   registered and the SMI source has been enabled.
 | |
|   @retval EFI_DEVICE_ERROR        The driver was unable to enable the SMI source.
 | |
|   @retval EFI_OUT_OF_RESOURCES    Not enough memory (system or SMM) to manage this
 | |
|                                   child.
 | |
|   @retval EFI_INVALID_PARAMETER   DispatchContext is invalid. The ICHN input value
 | |
|                                   is not within valid range.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_SMM_ICHN_EX_UNREGISTER) (
 | |
|   IN  EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL         * This,
 | |
|   IN  EFI_HANDLE                                DispatchHandle
 | |
|   );
 | |
| 
 | |
| /**
 | |
| 
 | |
|   @brief
 | |
|   Unregister a child SMI source dispatch function with a parent SMM driver
 | |
| 
 | |
|   @param[in] This                 Protocol instance pointer.
 | |
|   @param[in] DispatchHandle       Handle of dispatch function to deregister.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The dispatch function has been successfully
 | |
|                                   unregistered and the SMI source has been disabled
 | |
|                                   if there are no other registered child dispatch
 | |
|                                   functions for this SMI source.
 | |
|   @retval EFI_INVALID_PARAMETER   Handle is invalid.
 | |
|   @retval Others                  TBD
 | |
| 
 | |
| **/
 | |
| 
 | |
| ///
 | |
| /// Interface structure for the SMM Ich n specific SMI Dispatch Protocol
 | |
| ///
 | |
| typedef struct _EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL {
 | |
|   EFI_SMM_ICHN_EX_REGISTER    Register;
 | |
|   EFI_SMM_ICHN_EX_UNREGISTER  UnRegister;
 | |
| };
 | |
| 
 | |
| #endif
 |