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