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