1 /** @file
2 
3   Copyright (c) 2014 - 2015, Intel Corporation. All rights reserved.<BR>
4   This program and the accompanying materials
5   are licensed and made available under the terms and conditions of the BSD License
6   which accompanies this distribution.  The full text of the license may be found at
7   http://opensource.org/licenses/bsd-license.php.
8 
9   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11 
12 **/
13 
14 #ifndef _FSP_COMMON_LIB_H_
15 #define _FSP_COMMON_LIB_H_
16 
17 #include <FspGlobalData.h>
18 #include <FspMeasurePointId.h>
19 
20 /**
21   This function sets the FSP global data pointer.
22 
23   @param[in] FspData       Fsp global data pointer.
24 
25 **/
26 VOID
27 EFIAPI
28 SetFspGlobalDataPointer (
29   IN FSP_GLOBAL_DATA   *FspData
30   );
31 
32 /**
33   This function gets the FSP global data pointer.
34 
35 **/
36 FSP_GLOBAL_DATA *
37 EFIAPI
38 GetFspGlobalDataPointer (
39   VOID
40   );
41 
42 /**
43   This function gets back the FSP API paramter passed by the bootlaoder.
44 
45   @retval ApiParameter FSP API paramter passed by the bootlaoder.
46 **/
47 UINT32
48 EFIAPI
49 GetFspApiParameter (
50   VOID
51   );
52 
53 /**
54   This function sets the FSP API paramter in the stack.
55 
56    @param[in] Value       New parameter value.
57 
58 **/
59 VOID
60 EFIAPI
61 SetFspApiParameter (
62   IN UINT32      Value
63   );
64 
65 /**
66   This function sets the FSP continuation function parameters in the stack.
67 
68   @param[in] Value             New parameter value to set.
69   @param[in] Index             Parameter index.
70 **/
71 VOID
72 EFIAPI
73 SetFspContinuationFuncParameter (
74   IN UINT32      Value,
75   IN UINT32      Index
76   );
77 
78 /**
79   This function changes the BootLoader return address in stack.
80 
81   @param[in] ReturnAddress       Address to return.
82 
83 **/
84 VOID
85 EFIAPI
86 SetFspApiReturnAddress (
87   IN UINT32  ReturnAddress
88   );
89 
90 /**
91   This function set the API status code returned to the BootLoader.
92 
93   @param[in] ReturnStatus       Status code to return.
94 
95 **/
96 VOID
97 EFIAPI
98 SetFspApiReturnStatus (
99   IN UINT32  ReturnStatus
100   );
101 
102 /**
103   This function sets the context switching stack to a new stack frame.
104 
105   @param[in] NewStackTop       New core stack to be set.
106 
107 **/
108 VOID
109 EFIAPI
110 SetFspCoreStackPointer (
111   IN VOID   *NewStackTop
112   );
113 
114 /**
115   This function sets the platform specific data pointer.
116 
117   @param[in] PlatformData       Fsp platform specific data pointer.
118 
119 **/
120 VOID
121 EFIAPI
122 SetFspPlatformDataPointer (
123   IN VOID   *PlatformData
124   );
125 
126 /**
127   This function gets the platform specific data pointer.
128 
129    @param[in] PlatformData       Fsp platform specific data pointer.
130 
131 **/
132 VOID *
133 EFIAPI
134 GetFspPlatformDataPointer (
135   VOID
136   );
137 
138 /**
139   This function sets the UPD data pointer.
140 
141   @param[in] UpdDataRgnPtr   UPD data pointer.
142 **/
143 VOID
144 EFIAPI
145 SetFspUpdDataPointer (
146   IN VOID    *UpdDataRgnPtr
147   );
148 
149 /**
150   This function gets the UPD data pointer.
151 
152   @return UpdDataRgnPtr   UPD data pointer.
153 **/
154 VOID *
155 EFIAPI
156 GetFspUpdDataPointer (
157   VOID
158   );
159 
160 /**
161   This function sets the memory init UPD data pointer.
162 
163   @param[in] MemoryInitUpdPtr   memory init UPD data pointer.
164 **/
165 VOID
166 EFIAPI
167 SetFspMemoryInitUpdDataPointer (
168   IN VOID    *MemoryInitUpdPtr
169   );
170 
171 /**
172   This function gets the memory init UPD data pointer.
173 
174   @return memory init UPD data pointer.
175 **/
176 VOID *
177 EFIAPI
178 GetFspMemoryInitUpdDataPointer (
179   VOID
180   );
181 
182 /**
183   This function sets the silicon init UPD data pointer.
184 
185   @param[in] SiliconInitUpdPtr   silicon init UPD data pointer.
186 **/
187 VOID
188 EFIAPI
189 SetFspSiliconInitUpdDataPointer (
190   IN VOID    *SiliconInitUpdPtr
191   );
192 
193 /**
194   This function gets the silicon init UPD data pointer.
195 
196   @return silicon init UPD data pointer.
197 **/
198 VOID *
199 EFIAPI
200 GetFspSiliconInitUpdDataPointer (
201   VOID
202   );
203 
204 /**
205   Set FSP measurement point timestamp.
206 
207   @param[in] Id       Measurement point ID.
208 
209   @return performance timestamp.
210 **/
211 UINT64
212 EFIAPI
213 SetFspMeasurePoint (
214   IN UINT8  Id
215   );
216 
217 /**
218   This function gets the FSP info header pointer.
219 
220   @retval FspInfoHeader   FSP info header pointer
221 **/
222 FSP_INFO_HEADER *
223 EFIAPI
224 GetFspInfoHeader (
225   VOID
226   );
227 
228 /**
229   This function gets the FSP info header pointer from the API context.
230 
231   @retval FspInfoHeader   FSP info header pointer
232 **/
233 FSP_INFO_HEADER *
234 EFIAPI
235 GetFspInfoHeaderFromApiContext (
236   VOID
237   );
238 
239 /**
240   This function gets the VPD data pointer.
241 
242   @return VpdDataRgnPtr   VPD data pointer.
243 **/
244 VOID *
245 EFIAPI
246 GetFspVpdDataPointer (
247   VOID
248   );
249 
250 /**
251   This function gets FSP API calling mode.
252 
253   @retval API calling mode
254 **/
255 UINT8
256 EFIAPI
257 GetFspApiCallingMode (
258   VOID
259   );
260 
261 /**
262   This function sets FSP API calling mode.
263 
264   @param[in] Mode     API calling mode
265 **/
266 VOID
267 EFIAPI
268 SetFspApiCallingMode (
269   UINT8  Mode
270   );
271 
272 #endif
273