1/*++ 2 3Copyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR> 4This program and the accompanying materials 5are licensed and made available under the terms and conditions of the BSD License 6which accompanies this distribution. The full text of the license may be found at 7http://opensource.org/licenses/bsd-license.php 8 9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 12Module Name: 13 14 EfiBootScript.h 15 16Abstract: 17 18 19 20--*/ 21 22#ifndef _EFI_SCRIPT_H_ 23#define _EFI_SCRIPT_H_ 24 25#include "EfiSmbus.h" 26 27#define EFI_ACPI_S3_RESUME_SCRIPT_TABLE 0x00 28 29// 30// Boot Script Opcode Definitions 31// 32typedef const UINT16 EFI_BOOT_SCRIPT_OPCODE; 33 34#define EFI_BOOT_SCRIPT_IO_WRITE_OPCODE 0x00 35#define EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE 0x01 36#define EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE 0x02 37#define EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE 0x03 38#define EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE 0x04 39#define EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE 0x05 40#define EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE 0x06 41#define EFI_BOOT_SCRIPT_STALL_OPCODE 0x07 42#define EFI_BOOT_SCRIPT_DISPATCH_OPCODE 0x08 43 44// 45// Extensions to boot script definitions 46// 47#define EFI_BOOT_SCRIPT_MEM_POLL_OPCODE 0x09 48#define EFI_BOOT_SCRIPT_INFORMATION_OPCODE 0x0A 49#define EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE 0x0B 50#define EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE 0x0C 51 52#define EFI_BOOT_SCRIPT_TABLE_OPCODE 0xAA 53#define EFI_BOOT_SCRIPT_TERMINATE_OPCODE 0xFF 54 55#pragma pack(1) 56 57// 58// EFI Boot Script Width 59// 60typedef enum { 61 EfiBootScriptWidthUint8, 62 EfiBootScriptWidthUint16, 63 EfiBootScriptWidthUint32, 64 EfiBootScriptWidthUint64, 65 EfiBootScriptWidthFifoUint8, 66 EfiBootScriptWidthFifoUint16, 67 EfiBootScriptWidthFifoUint32, 68 EfiBootScriptWidthFifoUint64, 69 EfiBootScriptWidthFillUint8, 70 EfiBootScriptWidthFillUint16, 71 EfiBootScriptWidthFillUint32, 72 EfiBootScriptWidthFillUint64, 73 EfiBootScriptWidthMaximum 74} EFI_BOOT_SCRIPT_WIDTH; 75 76typedef struct { 77 UINT16 OpCode; 78 UINT8 Length; 79} EFI_BOOT_SCRIPT_GENERIC_HEADER; 80 81typedef struct { 82 UINT16 OpCode; 83 UINT8 Length; 84 UINT16 Version; 85 UINT32 TableLength; 86 UINT16 Reserved[2]; 87} EFI_BOOT_SCRIPT_TABLE_HEADER; 88 89typedef struct { 90 UINT16 OpCode; 91 UINT8 Length; 92 UINT32 Width; 93} EFI_BOOT_SCRIPT_COMMON_HEADER; 94 95typedef struct { 96 UINT16 OpCode; 97 UINT8 Length; 98 UINT32 Width; 99 UINT32 Count; 100 UINT64 Address; 101} EFI_BOOT_SCRIPT_IO_WRITE; 102 103typedef struct { 104 UINT16 OpCode; 105 UINT8 Length; 106 UINT32 Width; 107 UINT64 Address; 108} EFI_BOOT_SCRIPT_IO_READ_WRITE; 109 110typedef struct { 111 UINT16 OpCode; 112 UINT8 Length; 113 UINT32 Width; 114 UINT32 Count; 115 UINT64 Address; 116} EFI_BOOT_SCRIPT_MEM_WRITE; 117 118typedef struct { 119 UINT16 OpCode; 120 UINT8 Length; 121 UINT32 Width; 122 UINT64 Address; 123} EFI_BOOT_SCRIPT_MEM_READ_WRITE; 124 125typedef struct { 126 UINT16 OpCode; 127 UINT8 Length; 128 UINT32 Width; 129 UINT32 Count; 130 UINT64 Address; 131} EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE; 132 133typedef struct { 134 UINT16 OpCode; 135 UINT8 Length; 136 UINT32 Width; 137 UINT32 Count; 138 UINT64 Address; 139 UINT16 Segment; 140} EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE; 141 142typedef struct { 143 UINT16 OpCode; 144 UINT8 Length; 145 UINT32 Width; 146 UINT64 Address; 147} EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE; 148 149typedef struct { 150 UINT16 OpCode; 151 UINT8 Length; 152 UINT32 Width; 153 UINT64 Address; 154 UINT16 Segment; 155} EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE; 156 157 158typedef struct { 159 UINT16 OpCode; 160 UINT8 Length; 161 UINT64 SlaveAddress; 162 UINT64 Command; 163 UINT32 Operation; 164 BOOLEAN PecCheck; 165 UINT32 DataSize; 166} EFI_BOOT_SCRIPT_SMBUS_EXECUTE; 167 168typedef struct { 169 UINT16 OpCode; 170 UINT8 Length; 171 UINT64 Duration; 172} EFI_BOOT_SCRIPT_STALL; 173 174typedef struct { 175 UINT16 OpCode; 176 UINT8 Length; 177 EFI_PHYSICAL_ADDRESS EntryPoint; 178} EFI_BOOT_SCRIPT_DISPATCH; 179 180typedef struct { 181 UINT16 OpCode; 182 UINT8 Length; 183 UINT32 Width; 184 UINT64 Address; 185 UINT64 BitMask; 186 UINT64 BitValue; 187 UINT64 Duration; 188 UINT64 LoopTimes; 189} EFI_BOOT_SCRIPT_MEM_POLL; 190 191typedef struct { 192 UINT16 OpCode; 193 UINT8 Length; 194 UINT32 InformationLength; 195 EFI_PHYSICAL_ADDRESS Information; 196} EFI_BOOT_SCRIPT_INFORMATION; 197 198typedef struct { 199 UINT16 OpCode; 200 UINT8 Length; 201} EFI_BOOT_SCRIPT_TERMINATE; 202 203typedef union { 204 EFI_BOOT_SCRIPT_GENERIC_HEADER *Header; 205 EFI_BOOT_SCRIPT_TABLE_HEADER *TableInfo; 206 EFI_BOOT_SCRIPT_IO_WRITE *IoWrite; 207 EFI_BOOT_SCRIPT_IO_READ_WRITE *IoReadWrite; 208 EFI_BOOT_SCRIPT_MEM_WRITE *MemWrite; 209 EFI_BOOT_SCRIPT_MEM_READ_WRITE *MemReadWrite; 210 EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE *PciWrite; 211 EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE *PciReadWrite; 212 EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE *PciWrite2; 213 EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE *PciReadWrite2; 214 EFI_BOOT_SCRIPT_SMBUS_EXECUTE *SmbusExecute; 215 EFI_BOOT_SCRIPT_STALL *Stall; 216 EFI_BOOT_SCRIPT_DISPATCH *Dispatch; 217 EFI_BOOT_SCRIPT_MEM_POLL *MemPoll; 218 EFI_BOOT_SCRIPT_INFORMATION *Information; 219 EFI_BOOT_SCRIPT_TERMINATE *Terminate; 220 EFI_BOOT_SCRIPT_COMMON_HEADER *CommonHeader; 221 UINT8 *Raw; 222} BOOT_SCRIPT_POINTERS; 223 224#pragma pack() 225 226#endif 227