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