]> git.proxmox.com Git - mirror_edk2.git/blame - QuarkPlatformPkg/Include/Library/PlatformHelperLib.h
QuarkPlatformPkg: Add new package for Galileo boards
[mirror_edk2.git] / QuarkPlatformPkg / Include / Library / PlatformHelperLib.h
CommitLineData
b303605e
MK
1/** @file\r
2PlatformHelperLib function prototype definitions.\r
3\r
4Copyright (c) 2013 Intel Corporation.\r
5\r
6This program and the accompanying materials\r
7are licensed and made available under the terms and conditions of the BSD License\r
8which accompanies this distribution. The full text of the license may be found at\r
9http://opensource.org/licenses/bsd-license.php\r
10\r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#ifndef __PLATFORM_HELPER_LIB_H__\r
17#define __PLATFORM_HELPER_LIB_H__\r
18\r
19#include "Platform.h"\r
20\r
21//\r
22// Function prototypes for routines exported by this library.\r
23//\r
24\r
25/**\r
26 Find pointer to RAW data in Firmware volume file.\r
27\r
28 @param FvNameGuid Firmware volume to search. If == NULL search all.\r
29 @param FileNameGuid Firmware volume file to search for.\r
30 @param SectionData Pointer to RAW data section of found file.\r
31 @param SectionDataSize Pointer to UNITN to get size of RAW data.\r
32\r
33 @retval EFI_SUCCESS Raw Data found.\r
34 @retval EFI_INVALID_PARAMETER FileNameGuid == NULL.\r
35 @retval EFI_NOT_FOUND Firmware volume file not found.\r
36 @retval EFI_UNSUPPORTED Unsupported in current enviroment (PEI or DXE).\r
37\r
38**/\r
39EFI_STATUS\r
40EFIAPI\r
41PlatformFindFvFileRawDataSection (\r
42 IN CONST EFI_GUID *FvNameGuid OPTIONAL,\r
43 IN CONST EFI_GUID *FileNameGuid,\r
44 OUT VOID **SectionData,\r
45 OUT UINTN *SectionDataSize\r
46 );\r
47\r
48/**\r
49 Read 8bit character from debug stream.\r
50\r
51 Block until character is read.\r
52\r
53 @return 8bit character read from debug stream.\r
54\r
55**/\r
56CHAR8\r
57EFIAPI\r
58PlatformDebugPortGetChar8 (\r
59 VOID\r
60 );\r
61\r
62/**\r
63 Find free spi protect register and write to it to protect a flash region.\r
64\r
65 @param DirectValue Value to directly write to register.\r
66 if DirectValue == 0 the use Base & Length below.\r
67 @param BaseAddress Base address of region in Flash Memory Map.\r
68 @param Length Length of region to protect.\r
69\r
70 @retval EFI_SUCCESS Free spi protect register found & written.\r
71 @retval EFI_NOT_FOUND Free Spi protect register not found.\r
72 @retval EFI_DEVICE_ERROR Unable to write to spi protect register.\r
73\r
74**/\r
75EFI_STATUS\r
76EFIAPI\r
77PlatformWriteFirstFreeSpiProtect (\r
78 IN CONST UINT32 DirectValue,\r
79 IN CONST UINT32 BaseAddress,\r
80 IN CONST UINT32 Length\r
81 );\r
82\r
83/**\r
84 Lock legacy SPI static configuration information.\r
85\r
86 Function will assert if unable to lock config.\r
87\r
88**/\r
89VOID\r
90EFIAPI\r
91PlatformFlashLockConfig (\r
92 VOID\r
93 );\r
94\r
95/**\r
96 Lock regions and config of SPI flash given the policy for this platform.\r
97\r
98 Function will assert if unable to lock regions or config.\r
99\r
100 @param PreBootPolicy If TRUE do Pre Boot Flash Lock Policy.\r
101\r
102**/\r
103VOID\r
104EFIAPI\r
105PlatformFlashLockPolicy (\r
106 IN CONST BOOLEAN PreBootPolicy\r
107 );\r
108\r
109/**\r
110 Erase and Write to platform flash.\r
111\r
112 Routine accesses one flash block at a time, each access consists\r
113 of an erase followed by a write of FLASH_BLOCK_SIZE. One or both\r
114 of DoErase & DoWrite params must be TRUE.\r
115\r
116 Limitations:-\r
117 CpuWriteAddress must be aligned to FLASH_BLOCK_SIZE.\r
118 DataSize must be a multiple of FLASH_BLOCK_SIZE.\r
119\r
120 @param Smst If != NULL then InSmm and use to locate\r
121 SpiProtocol.\r
122 @param CpuWriteAddress Address in CPU memory map of flash region.\r
123 @param Data The buffer containing the data to be written.\r
124 @param DataSize Amount of data to write.\r
125 @param DoErase Earse each block.\r
126 @param DoWrite Write to each block.\r
127\r
128 @retval EFI_SUCCESS Operation successful.\r
129 @retval EFI_NOT_READY Required resources not setup.\r
130 @retval EFI_INVALID_PARAMETER Invalid parameter.\r
131 @retval Others Unexpected error happened.\r
132\r
133**/\r
134EFI_STATUS\r
135EFIAPI\r
136PlatformFlashEraseWrite (\r
137 IN VOID *Smst,\r
138 IN UINTN CpuWriteAddress,\r
139 IN UINT8 *Data,\r
140 IN UINTN DataSize,\r
141 IN BOOLEAN DoErase,\r
142 IN BOOLEAN DoWrite\r
143 );\r
144\r
145/** Check if System booted with recovery Boot Stage1 image.\r
146\r
147 @retval TRUE If system booted with recovery Boot Stage1 image.\r
148 @retval FALSE If system booted with normal stage1 image.\r
149\r
150**/\r
151BOOLEAN\r
152EFIAPI\r
153PlatformIsBootWithRecoveryStage1 (\r
154 VOID\r
155 );\r
156\r
157/**\r
158 Clear SPI Protect registers.\r
159\r
160 @retval EFI_SUCESS SPI protect registers cleared.\r
161 @retval EFI_ACCESS_DENIED Unable to clear SPI protect registers.\r
162**/\r
163\r
164EFI_STATUS\r
165EFIAPI\r
166PlatformClearSpiProtect (\r
167 VOID\r
168 );\r
169\r
170/**\r
171 Determine if an SPI address range is protected.\r
172\r
173 @param SpiBaseAddress Base of SPI range.\r
174 @param Length Length of SPI range.\r
175\r
176 @retval TRUE Range is protected.\r
177 @retval FALSE Range is not protected.\r
178**/\r
179BOOLEAN\r
180EFIAPI\r
181PlatformIsSpiRangeProtected (\r
182 IN CONST UINT32 SpiBaseAddress,\r
183 IN CONST UINT32 Length\r
184 );\r
185\r
186/**\r
187 Set Legacy GPIO Level\r
188\r
189 @param LevelRegOffset GPIO level register Offset from GPIO Base Address.\r
190 @param GpioNum GPIO bit to change.\r
191 @param HighLevel If TRUE set GPIO High else Set GPIO low.\r
192\r
193**/\r
194VOID\r
195EFIAPI\r
196PlatformLegacyGpioSetLevel (\r
197 IN CONST UINT32 LevelRegOffset,\r
198 IN CONST UINT32 GpioNum,\r
199 IN CONST BOOLEAN HighLevel\r
200 );\r
201\r
202/**\r
203 Get Legacy GPIO Level\r
204\r
205 @param LevelRegOffset GPIO level register Offset from GPIO Base Address.\r
206 @param GpioNum GPIO bit to check.\r
207\r
208 @retval TRUE If bit is SET.\r
209 @retval FALSE If bit is CLEAR.\r
210\r
211**/\r
212BOOLEAN\r
213EFIAPI\r
214PlatformLegacyGpioGetLevel (\r
215 IN CONST UINT32 LevelRegOffset,\r
216 IN CONST UINT32 GpioNum\r
217 );\r
218\r
219/**\r
220 Set the direction of Pcal9555 IO Expander GPIO pin.\r
221\r
222 @param Pcal9555SlaveAddr I2c Slave address of Pcal9555 Io Expander.\r
223 @param GpioNum Gpio direction to configure - values 0-7 for Port0\r
224 and 8-15 for Port1.\r
225 @param CfgAsInput If TRUE set pin direction as input else set as output.\r
226\r
227**/\r
228VOID\r
229EFIAPI\r
230PlatformPcal9555GpioSetDir (\r
231 IN CONST UINT32 Pcal9555SlaveAddr,\r
232 IN CONST UINT32 GpioNum,\r
233 IN CONST BOOLEAN CfgAsInput\r
234 );\r
235\r
236/**\r
237 Set the level of Pcal9555 IO Expander GPIO high or low.\r
238\r
239 @param Pcal9555SlaveAddr I2c Slave address of Pcal9555 Io Expander.\r
240 @param GpioNum Gpio to change values 0-7 for Port0 and 8-15\r
241 for Port1.\r
242 @param HighLevel If TRUE set pin high else set pin low.\r
243\r
244**/\r
245VOID\r
246EFIAPI\r
247PlatformPcal9555GpioSetLevel (\r
248 IN CONST UINT32 Pcal9555SlaveAddr,\r
249 IN CONST UINT32 GpioNum,\r
250 IN CONST BOOLEAN HighLevel\r
251 );\r
252\r
253/**\r
254\r
255 Enable pull-up/pull-down resistors of Pcal9555 GPIOs.\r
256\r
257 @param Pcal9555SlaveAddr I2c Slave address of Pcal9555 Io Expander.\r
258 @param GpioNum Gpio to change values 0-7 for Port0 and 8-15\r
259 for Port1.\r
260\r
261**/\r
262VOID\r
263EFIAPI\r
264PlatformPcal9555GpioEnablePull (\r
265 IN CONST UINT32 Pcal9555SlaveAddr,\r
266 IN CONST UINT32 GpioNum\r
267 );\r
268\r
269/**\r
270\r
271 Disable pull-up/pull-down resistors of Pcal9555 GPIOs.\r
272\r
273 @param Pcal9555SlaveAddr I2c Slave address of Pcal9555 Io Expander.\r
274 @param GpioNum Gpio to change values 0-7 for Port0 and 8-15\r
275 for Port1.\r
276\r
277**/\r
278VOID\r
279EFIAPI\r
280PlatformPcal9555GpioDisablePull (\r
281 IN CONST UINT32 Pcal9555SlaveAddr,\r
282 IN CONST UINT32 GpioNum\r
283 );\r
284\r
285BOOLEAN\r
286EFIAPI\r
287PlatformPcal9555GpioGetState (\r
288 IN CONST UINT32 Pcal9555SlaveAddr,\r
289 IN CONST UINT32 GpioNum\r
290 );\r
291\r
292/**\r
293 Init platform LEDs into known state.\r
294\r
295 @param PlatformType Executing platform type.\r
296\r
297 @retval EFI_SUCCESS Operation success.\r
298\r
299**/\r
300EFI_STATUS\r
301EFIAPI\r
302PlatformLedInit (\r
303 IN CONST EFI_PLATFORM_TYPE Type\r
304 );\r
305\r
306/**\r
307 Turn on or off platform flash update LED.\r
308\r
309 @param PlatformType Executing platform type.\r
310 @param TurnOn If TRUE turn on else turn off.\r
311\r
312 @retval EFI_SUCCESS Operation success.\r
313\r
314**/\r
315EFI_STATUS\r
316EFIAPI\r
317PlatformFlashUpdateLed (\r
318 IN CONST EFI_PLATFORM_TYPE Type,\r
319 IN CONST BOOLEAN TurnOn\r
320 );\r
321\r
322#endif // #ifndef __PLATFORM_HELPER_LIB_H__\r