]> git.proxmox.com Git - mirror_edk2.git/blob - Vlv2DeviceRefCodePkg/ValleyView2Soc/NorthCluster/Include/Ppi/SmmAccess.h
Vlv2TbltDevicePkg/Vlv2DeviceRefCodePkg:
[mirror_edk2.git] / Vlv2DeviceRefCodePkg / ValleyView2Soc / NorthCluster / Include / Ppi / SmmAccess.h
1 //
2 //
3 /*++
4
5 Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved
6
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.
11
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.
14
15
16
17 Module Name:
18
19 SmmAccess.h
20
21 Abstract:
22
23 SmmAccess PPI
24
25 This code abstracts the PEI core to provide SmmAccess services.
26
27 --*/
28
29 #ifndef _PEI_SMM_ACCESS_PPI_H_
30 #define _PEI_SMM_ACCESS_PPI_H_
31
32 #ifdef ECP_FLAG
33 #include "Guid/SmramMemoryReserve/SmramMemoryReserve.h"
34 #else
35 #include "Guid/SmramMemoryReserve.h"
36 #endif
37
38 #define PEI_SMM_ACCESS_PPI_GUID \
39 { \
40 0x268f33a9, 0xcccd, 0x48be, 0x88, 0x17, 0x86, 0x5, 0x3a, 0xc3, 0x2e, 0xd6 \
41 }
42
43 typedef struct _PEI_SMM_ACCESS_PPI PEI_SMM_ACCESS_PPI;
44
45 typedef
46 EFI_STATUS
47 (EFIAPI *PEI_SMM_OPEN) (
48 IN EFI_PEI_SERVICES **PeiServices,
49 IN PEI_SMM_ACCESS_PPI *This,
50 IN UINTN DescriptorIndex
51 )
52 /*++
53
54 Routine Description:
55 This routine accepts a request to "open" a region of SMRAM. The
56 region could be legacy ABSEG, HSEG, or TSEG near top of physical memory.
57 The use of "open" means that the memory is visible from all PEIM
58 and SMM agents.
59
60 Arguments:
61 PeiServices - General purpose services available to every PEIM.
62 This - Pointer to the SMM Access Interface.
63 DescriptorIndex - Region of SMRAM to Open.
64
65 Returns:
66 EFI_SUCCESS - The region was successfully opened.
67 EFI_DEVICE_ERROR - The region could not be opened because locked by
68 chipset.
69 EFI_INVALID_PARAMETER - The descriptor index was out of bounds.
70 --*/
71 ;
72
73 typedef
74 EFI_STATUS
75 (EFIAPI *PEI_SMM_CLOSE) (
76 IN EFI_PEI_SERVICES **PeiServices,
77 IN PEI_SMM_ACCESS_PPI *This,
78 IN UINTN DescriptorIndex
79 )
80 /*++
81
82 Routine Description:
83 This routine accepts a request to "close" a region of SMRAM. The
84 region could be legacy AB or TSEG near top of physical memory.
85 The use of "close" means that the memory is only visible from SMM agents,
86 not from PEIM.
87
88 Arguments:
89 PeiServices - General purpose services available to every PEIM.
90 This - Pointer to the SMM Access Interface.
91 DescriptorIndex - Region of SMRAM to Close.
92
93 Returns:
94 EFI_SUCCESS - The region was successfully closed.
95 EFI_DEVICE_ERROR - The region could not be closed because locked by
96 chipset.
97 EFI_INVALID_PARAMETER - The descriptor index was out of bounds.
98
99 --*/
100 ;
101
102 typedef
103 EFI_STATUS
104 (EFIAPI *PEI_SMM_LOCK) (
105 IN EFI_PEI_SERVICES **PeiServices,
106 IN PEI_SMM_ACCESS_PPI *This,
107 IN UINTN DescriptorIndex
108 )
109 /*++
110
111 Routine Description:
112 This routine accepts a request to "lock" SMRAM. The
113 region could be legacy AB or TSEG near top of physical memory.
114 The use of "lock" means that the memory can no longer be opened
115 to PEIM.
116
117 Arguments:
118 PeiServices - General purpose services available to every PEIM.
119 This - Pointer to the SMM Access Interface.
120 DescriptorIndex - Region of SMRAM to Lock.
121
122 Returns:
123 EFI_SUCCESS - The region was successfully locked.
124 EFI_DEVICE_ERROR - The region could not be locked because at least
125 one range is still open.
126 EFI_INVALID_PARAMETER - The descriptor index was out of bounds.
127
128 --*/
129 ;
130
131 typedef
132 EFI_STATUS
133 (EFIAPI *PEI_SMM_CAPABILITIES) (
134 IN EFI_PEI_SERVICES **PeiServices,
135 IN PEI_SMM_ACCESS_PPI *This,
136 IN OUT UINTN *SmramMapSize,
137 IN OUT EFI_SMRAM_DESCRIPTOR *SmramMap
138 )
139 /*++
140
141 Routine Description:
142 This routine services a user request to discover the SMRAM
143 capabilities of this platform. This will report the possible
144 ranges that are possible for SMRAM access, based upon the
145 memory controller capabilities.
146
147 Arguments:
148 PeiServices - General purpose services available to every PEIM.
149 This - Pointer to the SMRAM Access Interface.
150 SmramMapSize - Pointer to the variable containing size of the
151 buffer to contain the description information.
152 SmramMap - Buffer containing the data describing the Smram
153 region descriptors.
154 Returns:
155 EFI_BUFFER_TOO_SMALL - The user did not provide a sufficient buffer.
156 EFI_SUCCESS - The user provided a sufficiently-sized buffer.
157 --*/
158 ;
159
160 struct _PEI_SMM_ACCESS_PPI {
161 PEI_SMM_OPEN Open;
162 PEI_SMM_CLOSE Close;
163 PEI_SMM_LOCK Lock;
164 PEI_SMM_CAPABILITIES GetCapabilities;
165 BOOLEAN LockState;
166 BOOLEAN OpenState;
167 };
168
169 extern EFI_GUID gPeiSmmAccessPpiGuid;
170
171 #endif