Home | History | Annotate | Download | only in Include
      1 /*++
      2 
      3 Copyright (c) 2004 - 2007, 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 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
    592