]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Common/BootScript.h
a6b6f50b1fa5bf55419963f8257a015197498522
[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
40 #define EFI_BOOT_SCRIPT_TABLE_OPCODE 0xAA
41 #define EFI_BOOT_SCRIPT_TERMINATE_OPCODE 0xFF
42
43 #ifndef __GNUC__
44 #pragma pack(1)
45 #endif
46
47 //
48 // EFI Boot Script Width
49 //
50 typedef enum {
51 EfiBootScriptWidthUint8,
52 EfiBootScriptWidthUint16,
53 EfiBootScriptWidthUint32,
54 EfiBootScriptWidthUint64,
55 EfiBootScriptWidthFifoUint8,
56 EfiBootScriptWidthFifoUint16,
57 EfiBootScriptWidthFifoUint32,
58 EfiBootScriptWidthFifoUint64,
59 EfiBootScriptWidthFillUint8,
60 EfiBootScriptWidthFillUint16,
61 EfiBootScriptWidthFillUint32,
62 EfiBootScriptWidthFillUint64,
63 EfiBootScriptWidthMaximum
64 } EFI_BOOT_SCRIPT_WIDTH;
65
66 //
67 // EFI Smbus Device Address, Smbus Device Command, Smbus Operation
68 //
69 typedef struct {
70 UINTN SmbusDeviceAddress : 7;
71 } EFI_SMBUS_DEVICE_ADDRESS;
72
73 typedef UINTN EFI_SMBUS_DEVICE_COMMAND;
74
75 typedef enum _EFI_SMBUS_OPERATION
76 {
77 EfiSmbusQuickRead,
78 EfiSmbusQuickWrite,
79 EfiSmbusReceiveByte,
80 EfiSmbusSendByte,
81 EfiSmbusReadByte,
82 EfiSmbusWriteByte,
83 EfiSmbusReadWord,
84 EfiSmbusWriteWord,
85 EfiSmbusReadBlock,
86 EfiSmbusWriteBlock,
87 EfiSmbusProcessCall,
88 EfiSmbusBWBRProcessCall
89 } EFI_SMBUS_OPERATION;
90
91 //
92 // Boot Script Opcode Header Structure Definitions
93 //
94
95 typedef struct {
96 UINT16 OpCode;
97 UINT8 Length;
98 } EFI_BOOT_SCRIPT_GENERIC_HEADER;
99
100 typedef struct {
101 UINT16 OpCode;
102 UINT8 Length;
103 UINT16 Version;
104 UINT32 TableLength;
105 UINT16 Reserved[2];
106 } EFI_BOOT_SCRIPT_TABLE_HEADER;
107
108 typedef struct {
109 UINT16 OpCode;
110 UINT8 Length;
111 EFI_BOOT_SCRIPT_WIDTH Width;
112 } EFI_BOOT_SCRIPT_COMMON_HEADER;
113
114 typedef struct {
115 UINT16 OpCode;
116 UINT8 Length;
117 EFI_BOOT_SCRIPT_WIDTH Width;
118 UINTN Count;
119 UINT64 Address;
120 } EFI_BOOT_SCRIPT_IO_WRITE;
121
122 typedef struct {
123 UINT16 OpCode;
124 UINT8 Length;
125 EFI_BOOT_SCRIPT_WIDTH Width;
126 UINT64 Address;
127 } EFI_BOOT_SCRIPT_IO_READ_WRITE;
128
129 typedef struct {
130 UINT16 OpCode;
131 UINT8 Length;
132 EFI_BOOT_SCRIPT_WIDTH Width;
133 UINTN Count;
134 UINT64 Address;
135 } EFI_BOOT_SCRIPT_MEM_WRITE;
136
137 typedef struct {
138 UINT16 OpCode;
139 UINT8 Length;
140 EFI_BOOT_SCRIPT_WIDTH Width;
141 UINT64 Address;
142 } EFI_BOOT_SCRIPT_MEM_READ_WRITE;
143
144 typedef struct {
145 UINT16 OpCode;
146 UINT8 Length;
147 EFI_BOOT_SCRIPT_WIDTH Width;
148 UINTN Count;
149 UINT64 Address;
150 } EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE;
151
152 typedef struct {
153 UINT16 OpCode;
154 UINT8 Length;
155 EFI_BOOT_SCRIPT_WIDTH Width;
156 UINT64 Address;
157 } EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE;
158
159 typedef struct {
160 UINT16 OpCode;
161 UINT8 Length;
162 EFI_SMBUS_DEVICE_ADDRESS SlaveAddress;
163 EFI_SMBUS_DEVICE_COMMAND Command;
164 EFI_SMBUS_OPERATION Operation;
165 BOOLEAN PecCheck;
166 UINTN DataSize;
167 } EFI_BOOT_SCRIPT_SMBUS_EXECUTE;
168
169 typedef struct {
170 UINT16 OpCode;
171 UINT8 Length;
172 UINTN Duration;
173 } EFI_BOOT_SCRIPT_STALL;
174
175 typedef struct {
176 UINT16 OpCode;
177 UINT8 Length;
178 EFI_PHYSICAL_ADDRESS EntryPoint;
179 } EFI_BOOT_SCRIPT_DISPATCH;
180
181 typedef struct {
182 UINT16 OpCode;
183 UINT8 Length;
184 EFI_PHYSICAL_ADDRESS EntryPoint;
185 EFI_PHYSICAL_ADDRESS Context;
186 } EFI_BOOT_SCRIPT_DISPATCH_2;
187
188 typedef struct {
189 UINT16 OpCode;
190 UINT8 Length;
191 } EFI_BOOT_SCRIPT_TERMINATE;
192
193 typedef union {
194 EFI_BOOT_SCRIPT_GENERIC_HEADER *Header;
195 EFI_BOOT_SCRIPT_TABLE_HEADER *TableInfo;
196 EFI_BOOT_SCRIPT_IO_WRITE *IoWrite;
197 EFI_BOOT_SCRIPT_IO_READ_WRITE *IoReadWrite;
198 EFI_BOOT_SCRIPT_MEM_WRITE *MemWrite;
199 EFI_BOOT_SCRIPT_MEM_READ_WRITE *MemReadWrite;
200 EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE *PciWrite;
201 EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE *PciReadWrite;
202 EFI_BOOT_SCRIPT_SMBUS_EXECUTE *SmbusExecute;
203 EFI_BOOT_SCRIPT_STALL *Stall;
204 EFI_BOOT_SCRIPT_DISPATCH *Dispatch;
205 EFI_BOOT_SCRIPT_DISPATCH_2 *Dispatch2;
206 EFI_BOOT_SCRIPT_TERMINATE *Terminate;
207 EFI_BOOT_SCRIPT_COMMON_HEADER *CommonHeader;
208 UINT8 *Raw;
209 } BOOT_SCRIPT_POINTERS;
210
211 #ifndef __GNUC__
212 #pragma pack()
213 #endif
214
215 #endif