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