5 Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved
7 This program and the accompanying materials are licensed and made available under
8 the terms and conditions of the BSD License that accompanies this distribution.
9 The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php.
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
21 SmmIchnDispatch Extended Protocol
24 #ifndef _EFI_SMM_ICHN_DISPATCH_EX_H_
25 #define _EFI_SMM_ICHN_DISPATCH_EX_H_
28 #include <Protocol/SmmIchnDispatch/SmmIchnDispatch.h>
30 #include <Protocol/SmmIchnDispatch.h>
33 #define EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL_GUID \
35 0x3920405b, 0xc897, 0x44da, 0x88, 0xf3, 0x4c, 0x49, 0x8a, 0x6f, 0xf7, 0x36 \
37 extern EFI_GUID gEfiSmmIchnDispatchExProtocolGuid
;
40 /// Forward reference for ANSI C compatibility
42 typedef struct _EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL
;
45 /// Related Definitions
48 /// Ichn Dispatch Extended Types
51 IchnExPciExpress
= NUM_ICHN_TYPES
+ 1,
61 IchnExPcie0LinkActive
,
62 IchnExPcie1LinkActive
,
63 IchnExPcie2LinkActive
,
64 IchnExPcie3LinkActive
,
66 /// INSERT NEW ITEMS JUST BEFORE THIS LINE
68 IchnExTypeMAX
/// the maximum number of items in this enumeration
69 } EFI_SMM_ICHN_EX_SMI_TYPE
;
72 EFI_SMM_ICHN_EX_SMI_TYPE Type
;
73 } EFI_SMM_ICHN_DISPATCH_EX_CONTEXT
;
80 (EFIAPI
*EFI_SMM_ICHN_DISPATCH_EX
) (
81 IN EFI_HANDLE DispatchHandle
,
82 IN EFI_SMM_ICHN_DISPATCH_EX_CONTEXT
* DispatchContext
88 Dispatch function for a ICH n Extended specific SMI handler.
90 @param[in] DispatchHandle Handle of this dispatch function.
91 @param[in] DispatchContext Pointer to the dispatch function's context.
92 The DispatchContext fields are filled in
93 by the dispatching driver prior to
94 invoking this dispatch function.
101 (EFIAPI
*EFI_SMM_ICHN_EX_REGISTER
) (
102 IN EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL
* This
,
103 IN EFI_SMM_ICHN_DISPATCH_EX DispatchFunction
,
104 IN EFI_SMM_ICHN_DISPATCH_EX_CONTEXT
* DispatchContext
,
105 OUT EFI_HANDLE
* DispatchHandle
111 Register a child SMI source dispatch function with a parent SMM driver
113 @param[in] This Protocol instance pointer.
114 @param[in] DispatchFunction Pointer to dispatch function to be invoked for
116 @param[in] DispatchContext Pointer to the dispatch function's context.
117 The caller fills this context in before calling
118 the register function to indicate to the register
119 function the ICHN SMI source for which the dispatch
120 function should be invoked.
121 @param[in] DispatchHandle Handle of dispatch function, for when interfacing
122 with the parent SMM driver.
124 @retval EFI_SUCCESS The dispatch function has been successfully
125 registered and the SMI source has been enabled.
126 @retval EFI_DEVICE_ERROR The driver was unable to enable the SMI source.
127 @retval EFI_OUT_OF_RESOURCES Not enough memory (system or SMM) to manage this
129 @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The ICHN input value
130 is not within valid range.
135 (EFIAPI
*EFI_SMM_ICHN_EX_UNREGISTER
) (
136 IN EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL
* This
,
137 IN EFI_HANDLE DispatchHandle
143 Unregister a child SMI source dispatch function with a parent SMM driver
145 @param[in] This Protocol instance pointer.
146 @param[in] DispatchHandle Handle of dispatch function to deregister.
148 @retval EFI_SUCCESS The dispatch function has been successfully
149 unregistered and the SMI source has been disabled
150 if there are no other registered child dispatch
151 functions for this SMI source.
152 @retval EFI_INVALID_PARAMETER Handle is invalid.
158 /// Interface structure for the SMM Ich n specific SMI Dispatch Protocol
160 typedef struct _EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL
{
161 EFI_SMM_ICHN_EX_REGISTER Register
;
162 EFI_SMM_ICHN_EX_UNREGISTER UnRegister
;