]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Library/Dxe/Include/EfiScriptLib.h
600cbb6a032e9f924c471d69b286e46dd3c3ee93
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / Dxe / Include / EfiScriptLib.h
1 /*++
2
3 Copyright (c) 2004 - 2007, Intel Corporation
4 All rights reserved. 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 Module Name:
13
14 EfiScriptLib.h
15
16 Abstract:
17
18
19 --*/
20
21 #ifndef _EFI_SCRIPT_LIB_H_
22 #define _EFI_SCRIPT_LIB_H_
23
24 #include "Tiano.h"
25 #include "EfiCommonLib.h"
26 #include "EfiBootScript.h"
27 #include EFI_PROTOCOL_DEFINITION (BootScriptSave)
28
29
30 EFI_STATUS
31 EFIAPI
32 BootScriptSaveInitialize (
33 IN EFI_HANDLE ImageHandle,
34 IN EFI_SYSTEM_TABLE *SystemTable
35 )
36 /*++
37
38 Routine Description:
39
40 Intialize Boot Script Lib if it has not yet been initialized.
41
42 Arguments:
43
44 ImageHandle - The firmware allocated handle for the EFI image.
45
46 SystemTable - A pointer to the EFI System Table.
47
48 Returns:
49
50 EFI_STATUS always returns EFI_SUCCESS
51
52 --*/
53 ;
54
55 EFI_STATUS
56 EFIAPI
57 BootScriptSaveIoWrite (
58 IN UINT16 TableName,
59 IN EFI_BOOT_SCRIPT_WIDTH Width,
60 IN UINT64 Address,
61 IN UINTN Count,
62 IN VOID *Buffer
63 )
64 /*++
65
66 Routine Description:
67
68 Save I/O write to boot script with opcode EFI_BOOT_SCRIPT_IO_WRITE_OPCODE
69
70 Arguments:
71
72 TableName - Desired boot script table
73
74 Width - The width of the I/O operations.
75
76 Address - The base address of the I/O operations.
77
78 Count - The number of I/O operations to perform.
79
80 Buffer - The source buffer from which to write data.
81
82 Returns:
83
84 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
85
86 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
87
88 --*/
89 ;
90
91 EFI_STATUS
92 EFIAPI
93 BootScriptSaveIoReadWrite (
94 IN UINT16 TableName,
95 IN EFI_BOOT_SCRIPT_WIDTH Width,
96 IN UINT64 Address,
97 IN VOID *Data,
98 IN VOID *DataMask
99 )
100 /*++
101
102 Routine Description:
103
104 Save I/O modify to boot script with opcode EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE
105
106 Arguments:
107
108 TableName - Desired boot script table
109
110 Width - The width of the I/O operations.
111
112 Address - The base address of the I/O operations.
113
114 Data - A pointer to the data to be OR-ed.
115
116 DataMask - A pointer to the data mask to be AND-ed with the data read from the register.
117
118 Returns:
119
120 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
121
122 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
123
124 --*/
125 ;
126
127 EFI_STATUS
128 EFIAPI
129 BootScriptSaveMemWrite (
130 IN UINT16 TableName,
131 IN EFI_BOOT_SCRIPT_WIDTH Width,
132 IN UINT64 Address,
133 IN UINTN Count,
134 IN VOID *Buffer
135 )
136 /*++
137
138 Routine Description:
139
140 Save memory write to boot script with opcode EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE
141
142 Arguments:
143
144 TableName - Desired boot script table
145
146 Width - The width of the memory operations.
147
148 Address - The base address of the memory operations.
149
150 Count - The number of memory operations to perform.
151
152 Buffer - The source buffer from which to write the data.
153
154 Returns:
155
156 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
157
158 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
159
160 --*/
161 ;
162
163 EFI_STATUS
164 EFIAPI
165 BootScriptSaveMemReadWrite (
166 IN UINT16 TableName,
167 IN EFI_BOOT_SCRIPT_WIDTH Width,
168 IN UINT64 Address,
169 IN VOID *Data,
170 IN VOID *DataMask
171 )
172 /*++
173
174 Routine Description:
175
176 Save memory modify to boot script with opcode EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE
177
178 Arguments:
179
180 TableName - Desired boot script table
181
182 Width - The width of the memory operations.
183
184 Address - The base address of the memory operations.
185
186 Data - A pointer to the data to be OR-ed.
187
188 DataMask - A pointer to the data mask to be AND-ed with the data read from the register.
189
190 Returns:
191
192 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
193
194 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
195
196 --*/
197 ;
198
199 EFI_STATUS
200 EFIAPI
201 BootScriptSavePciCfgWrite (
202 IN UINT16 TableName,
203 IN EFI_BOOT_SCRIPT_WIDTH Width,
204 IN UINT64 Address,
205 IN UINTN Count,
206 IN VOID *Buffer
207 )
208 /*++
209
210 Routine Description:
211
212 Save PCI configuration space write operation to boot script with opcode
213 EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE
214
215 Arguments:
216
217 TableName - Desired boot script table
218
219 Width - The width of the PCI operations
220
221 Address - The address within the PCI configuration space.
222
223 Count - The number of PCI operations to perform.
224
225 Buffer - The source buffer from which to write the data.
226
227 Returns:
228
229 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
230
231 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
232
233 --*/
234 ;
235
236 EFI_STATUS
237 EFIAPI
238 BootScriptSavePciCfgReadWrite (
239 IN UINT16 TableName,
240 IN EFI_BOOT_SCRIPT_WIDTH Width,
241 IN UINT64 Address,
242 IN VOID *Data,
243 IN VOID *DataMask
244 )
245 /*++
246
247 Routine Description:
248
249 Save PCI configuration space modify operation to boot script with opcode
250 EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE
251
252 Arguments:
253
254 TableName - Desired boot script table
255
256 Width - The width of the PCI operations
257
258 Address - The address within the PCI configuration space.
259
260 Data - A pointer to the data to be OR-ed.
261
262 DataMask - A pointer to the data mask to be AND-ed with the data read from the register.
263
264 Returns:
265
266 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
267
268 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
269
270 --*/
271 ;
272 ;
273
274 EFI_STATUS
275 EFIAPI
276 BootScriptSaveSmbusExecute (
277 IN UINT16 TableName,
278 IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress,
279 IN EFI_SMBUS_DEVICE_COMMAND Command,
280 IN EFI_SMBUS_OPERATION Operation,
281 IN BOOLEAN PecCheck,
282 IN UINTN *Length,
283 IN VOID *Buffer
284 )
285 /*++
286
287 Routine Description:
288
289 Save SMBus command execution to boot script with opcode
290 EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE
291
292 Arguments:
293
294 TableName - Desired boot script table
295 SlaveAddress - The SMBus address for the slave device that the operation is targeting.
296 Command - The command that is transmitted by the SMBus host controller to the
297 SMBus slave device.
298 Operation - Indicates which particular SMBus protocol it will use to execute the
299 SMBus transactions.
300 PecCheck - Defines if Packet Error Code (PEC) checking is required for this operation.
301 Length - A pointer to signify the number of bytes that this operation will do.
302 Buffer - Contains the value of data to execute to the SMBUS slave device.
303
304 Returns:
305
306 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
307
308 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
309
310 --*/
311 ;
312
313 EFI_STATUS
314 EFIAPI
315 BootScriptSaveStall (
316 IN UINT16 TableName,
317 IN UINTN Duration
318 )
319 /*++
320
321 Routine Description:
322
323 Save execution stall on the processor to boot script with opcode
324 EFI_BOOT_SCRIPT_STALL_OPCODE
325
326 Arguments:
327
328 TableName - Desired boot script table
329
330 Duration - Duration in microseconds of the stall.
331
332 Returns:
333
334 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
335
336 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
337
338 --*/
339 ;
340
341 EFI_STATUS
342 EFIAPI
343 BootScriptSaveDispatch (
344 IN UINT16 TableName,
345 IN EFI_PHYSICAL_ADDRESS EntryPoint
346 )
347 /*++
348
349 Routine Description:
350
351 Save dispatching specified arbitrary code to boot script with opcode
352 EFI_BOOT_SCRIPT_DISPATCH_OPCODE
353
354 Arguments:
355
356 TableName - Desired boot script table
357
358 EntryPoint - Entry point of the code to be dispatched.
359
360 Returns:
361
362 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
363
364 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
365
366 --*/
367 ;
368
369 EFI_STATUS
370 EFIAPI
371 BootScriptMemPoll (
372 IN UINT16 TableName,
373 IN EFI_BOOT_SCRIPT_WIDTH Width,
374 IN UINT64 Address,
375 IN VOID *BitMask,
376 IN VOID *BitValue,
377 IN UINTN Duration,
378 IN UINTN LoopTimes
379 )
380 /*++
381
382 Routine Description:
383 Polling one memory mapping register
384
385 Arguments:
386 TableName - Desired boot script table
387
388 Width - The width of the memory operations.
389
390 Address - The base address of the memory operations.
391
392 BitMask - A pointer to the bit mask to be AND-ed with the data read from the register.
393
394 BitValue - A pointer to the data value after to be Masked.
395
396 Duration - Duration in microseconds of the stall.
397
398 LoopTimes - The times of the register polling.
399
400 Returns:
401
402 EFI_SUCCESS - The operation was executed successfully
403
404 --*/
405 ;
406
407 EFI_STATUS
408 EFIAPI
409 BootScriptSaveInformation (
410 IN UINT16 TableName,
411 IN UINT32 Length,
412 IN EFI_PHYSICAL_ADDRESS Buffer
413 )
414 /*++
415
416 Routine Description:
417
418 Save a Information Opcode record in table specified with TableName
419
420 Arguments:
421
422 TableName - Desired boot script table
423 Length - Length of information in bytes
424 Buffer - Content of information that will be saved in script table
425
426 Returns:
427
428 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
429
430 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
431
432 --*/
433 ;
434
435 EFI_STATUS
436 EFIAPI
437 BootScriptSaveInformationUnicodeString (
438 IN UINT16 TableName,
439 IN CHAR16 *String
440 )
441 /*++
442
443 Routine Description:
444
445 Save a Information Opcode record in table specified with TableName, the information
446 is a unicode string.
447
448 Arguments:
449
450 TableName - Desired boot script table
451 String - The string that will be saved in script table
452
453 Returns:
454
455 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
456
457 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
458
459 --*/
460 ;
461
462 EFI_STATUS
463 EFIAPI
464 BootScriptSaveInformationAsciiString (
465 IN UINT16 TableName,
466 IN CHAR8 *String
467 )
468 /*++
469
470 Routine Description:
471
472 Save a Information Opcode record in table specified with TableName, the information
473 is a ascii string.
474
475 Arguments:
476
477 TableName - Desired boot script table
478 String - The string that will be saved in script table
479
480 Returns:
481
482 EFI_NOT_FOUND - BootScriptSave Protocol not exist.
483
484 EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
485
486 --*/
487 ;
488
489 #ifdef EFI_S3_RESUME
490
491 #define INITIALIZE_SCRIPT(ImageHandle, SystemTable) \
492 BootScriptSaveInitialize(ImageHandle, SystemTable)
493
494 #define SCRIPT_IO_WRITE(TableName, Width, Address, Count, Buffer) \
495 BootScriptSaveIoWrite(TableName, Width, Address, Count, Buffer)
496
497 #define SCRIPT_IO_READ_WRITE(TableName, Width, Address, Data, DataMask) \
498 BootScriptSaveIoReadWrite(TableName, Width, Address, Data, DataMask)
499
500 #define SCRIPT_MEM_WRITE(TableName, Width, Address, Count, Buffer) \
501 BootScriptSaveMemWrite(TableName, Width, Address, Count, Buffer)
502
503 #define SCRIPT_MEM_WRITE_THIS(TableName, Width, Address, Count) \
504 BootScriptSaveMemWrite(TableName, Width, Address, Count, (VOID*)(UINTN)Address)
505
506 #define SCRIPT_MEM_READ_WRITE(TableName, Width, Address, Data, DataMask) \
507 BootScriptSaveMemReadWrite(TableName, Width, Address, Data, DataMask)
508
509 #define SCRIPT_PCI_CFG_WRITE(TableName, Width, Address, Count, Buffer) \
510 BootScriptSavePciCfgWrite(TableName, Width, Address, Count, Buffer)
511
512 #define SCRIPT_PCI_CFG_READ_WRITE(TableName, Width, Address, Data, DataMask) \
513 BootScriptSavePciCfgReadWrite(TableName, Width, Address, Data, DataMask)
514
515 #define SCRIPT_SMBUS_EXECUTE(TableName, SlaveAddress, Command, Operation, PecCheck, Length, Buffer) \
516 BootScriptSaveSmbusExecute(TableName, SlaveAddress, Command, Operation, PecCheck, Length, Buffer)
517
518 #define SCRIPT_STALL(TableName, Duration) \
519 BootScriptSaveStall(TableName, Duration)
520
521 #define SCRIPT_DISPATCH(TableName, EntryPoint) \
522 BootScriptSaveDispatch(TableName, EntryPoint)
523
524 #define SCRIPT_MEM_POLL(TableName, Width, Address, BitMask, BitValue, Duration, LoopTimes) \
525 BootScriptMemPoll(TableName, Width, Address, BitMask, BitValue, Duration, LoopTimes)
526
527 #define SCRIPT_INFORMATION(TableName, Length, Buffer) \
528 BootScriptSaveInformation(TableName, Length, Buffer)
529
530 #define SCRIPT_INFORMATION_UNICODE_STRING(TableName, String) \
531 BootScriptSaveInformationUnicodeString(TableName, String)
532
533 #define SCRIPT_INFORMATION_ASCII_STRING(TableName, String) \
534 BootScriptSaveInformationAsciiString(TableName, String)
535
536 //
537 // For backward compatibility
538 //
539 #define SCRIPT_INOFRMATION(TableName, Length, Buffer) \
540 BootScriptSaveInformation(TableName, Length, Buffer)
541
542 #define SCRIPT_INOFRMATION_UNICODE_STRING(TableName, String) \
543 BootScriptSaveInformationUnicodeString(TableName, String)
544
545 #define SCRIPT_INOFRMATION_ASCII_STRING(TableName, String) \
546 BootScriptSaveInformationAsciiString(TableName, String)
547
548 #else
549
550 #define INITIALIZE_SCRIPT(ImageHandle, SystemTable)
551
552 #define SCRIPT_IO_WRITE(TableName, Width, Address, Count, Buffer)
553
554 #define SCRIPT_IO_READ_WRITE(TableName, Width, Address, Data, DataMask)
555
556 #define SCRIPT_MEM_WRITE(TableName, Width, Address, Count, Buffer)
557
558 #define SCRIPT_MEM_WRITE_THIS(TableName, Width, Address, Count)
559
560 #define SCRIPT_MEM_READ_WRITE(TableName, Width, Address, Data, DataMask)
561
562 #define SCRIPT_PCI_CFG_WRITE(TableName, Width, Address, Count, Buffer)
563
564 #define SCRIPT_PCI_CFG_READ_WRITE(TableName, Width, Address, Data, DataMask)
565
566 #define SCRIPT_SMBUS_EXECUTE(TableName, SlaveAddress, Command, Operation, PecCheck, Length, Buffer)
567
568 #define SCRIPT_STALL(TableName, Duration)
569
570 #define SCRIPT_DISPATCH(TableName, EntryPoint)
571
572 #define SCRIPT_MEM_POLL(TableName, Width, Address, BitMask, BitValue, Duration, LoopTimes)
573
574 #define SCRIPT_INFORMATION(TableName, Length, Buffer)
575
576 #define SCRIPT_INFORMATION_UNICODE_STRING(TableName, String)
577
578 #define SCRIPT_INFORMATION_ASCII_STRING(TableName, String)
579
580 //
581 // For backward compatibility
582 //
583 #define SCRIPT_INOFRMATION(TableName, Length, Buffer)
584
585 #define SCRIPT_INOFRMATION_UNICODE_STRING(TableName, String)
586
587 #define SCRIPT_INOFRMATION_ASCII_STRING(TableName, String)
588
589 #endif
590
591 #endif