hc
2024-03-25 edb30157bad0c0001c32b854271ace01d3b9a16a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/** @file
  APIs of PCH GPIO UNLOCK SMI Dispatch Protocol.
 
Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
 
**/
#ifndef _PCH_GPIO_UNLOCK_SMI_DISPATCH_PROTOCOL_H_
#define _PCH_GPIO_UNLOCK_SMI_DISPATCH_PROTOCOL_H_
 
//
// Extern the GUID for protocol users.
//
extern EFI_GUID                         gPchGpioUnlockSmiDispatchProtocolGuid;
 
//
// Forward reference for ANSI C compatibility
//
typedef struct _PCH_GPIO_UNLOCK_SMI_DISPATCH_PROTOCOL       PCH_GPIO_UNLOCK_SMI_DISPATCH_PROTOCOL;
 
//
// Member functions
//
 
/**
  Callback function for an PCH GPIO UNLOCK SMI handler dispatch.
 
  @param[in] DispatchHandle             The unique handle assigned to this handler by register function.
 
**/
typedef
VOID
(EFIAPI *PCH_GPIO_UNLOCK_SMI_DISPATCH_CALLBACK) (
  IN EFI_HANDLE                         DispatchHandle
  );
 
/**
  Register a child SMI source dispatch function for specific PCH GPIO UNLOCK SMI dispatch event.
 
  @param[in] This                       Protocol instance pointer.
  @param[in] DispatchFunction           Pointer to dispatch function to be invoked for
                                        this SMI source
  @param[out] 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_ACCESS_DENIED             Return access denied if the EndOfDxe event has been triggered
**/
typedef
EFI_STATUS
(EFIAPI *PCH_GPIO_UNLOCK_SMI_DISPATCH_REGISTER) (
  IN  PCH_GPIO_UNLOCK_SMI_DISPATCH_PROTOCOL       *This,
  IN  PCH_GPIO_UNLOCK_SMI_DISPATCH_CALLBACK       DispatchFunction,
  OUT EFI_HANDLE                                  *DispatchHandle
  );
 
/**
  Unregister a child SMI source dispatch function with a parent GPIO UNLOCK 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 EFI_ACCESS_DENIED             Return access denied if the EndOfDxe event has been triggered
**/
typedef
EFI_STATUS
(EFIAPI *PCH_GPIO_UNLOCK_SMI_DISPATCH_UNREGISTER) (
  IN  PCH_GPIO_UNLOCK_SMI_DISPATCH_PROTOCOL       *This,
  IN  EFI_HANDLE                                  DispatchHandle
  );
 
/**
  Interface structure for PCH GPIOUNLOCK SMI Dispatch Protocol
  The PCH GPIO UNLOCK SMI DISPATCH PROTOCOL provides the ability to dispatch function for
  PCH gpio unlock SMIs.
**/
struct _PCH_GPIO_UNLOCK_SMI_DISPATCH_PROTOCOL {
  /**
    This member specifies the revision of this structure. This field is used to
    indicate backwards compatible changes to the protocol.
  **/
  UINT8                                           Revision;
  /**
    Smi unregister function for PCH GPIO UNLOCK SMI DISPATCH PROTOCOL.
  **/
  PCH_GPIO_UNLOCK_SMI_DISPATCH_UNREGISTER         UnRegister;
  /**
    GpioUnlock
    The event is triggered if the GPIO registers lockdown logic is requesting an SMI#.
  **/
  PCH_GPIO_UNLOCK_SMI_DISPATCH_REGISTER           Register;
};
 
/**
  PCH GPIO UNLOCK SMI dispatch revision number
 
  Revision 1:   Initial version
**/
#define PCH_GPIO_UNLOCK_SMI_DISPATCH_REVISION     1
 
#endif