efidef.h revision 1.4 1 1.4 tnn /* $NetBSD: efidef.h,v 1.4 2019/09/13 20:56:29 tnn Exp $ */
2 1.1 jakllsch
3 1.1 jakllsch #ifndef _EFI_DEF_H
4 1.1 jakllsch #define _EFI_DEF_H
5 1.1 jakllsch
6 1.1 jakllsch /*++
7 1.1 jakllsch
8 1.1 jakllsch Copyright (c) 1998 Intel Corporation
9 1.1 jakllsch
10 1.1 jakllsch Module Name:
11 1.1 jakllsch
12 1.1 jakllsch efidef.h
13 1.1 jakllsch
14 1.1 jakllsch Abstract:
15 1.1 jakllsch
16 1.1 jakllsch EFI definitions
17 1.1 jakllsch
18 1.1 jakllsch
19 1.1 jakllsch
20 1.1 jakllsch
21 1.1 jakllsch Revision History
22 1.1 jakllsch
23 1.1 jakllsch --*/
24 1.1 jakllsch
25 1.1 jakllsch typedef UINT16 CHAR16;
26 1.1 jakllsch typedef UINT8 CHAR8;
27 1.4 tnn #ifndef __ACTYPES_H__
28 1.1 jakllsch typedef UINT8 BOOLEAN;
29 1.4 tnn #endif /* __ACTYPES_H__ */
30 1.3 jmcneill #ifndef CONST
31 1.3 jmcneill #define CONST const
32 1.3 jmcneill #endif
33 1.1 jakllsch #ifndef TRUE
34 1.1 jakllsch #define TRUE ((BOOLEAN) 1)
35 1.1 jakllsch #define FALSE ((BOOLEAN) 0)
36 1.1 jakllsch #endif
37 1.1 jakllsch
38 1.1 jakllsch #ifndef NULL
39 1.1 jakllsch #define NULL ((VOID *) 0)
40 1.1 jakllsch #endif
41 1.1 jakllsch
42 1.1 jakllsch typedef UINTN EFI_STATUS;
43 1.1 jakllsch typedef UINT64 EFI_LBA;
44 1.1 jakllsch typedef UINTN EFI_TPL;
45 1.1 jakllsch typedef VOID *EFI_HANDLE;
46 1.1 jakllsch typedef VOID *EFI_EVENT;
47 1.1 jakllsch
48 1.1 jakllsch
49 1.1 jakllsch //
50 1.1 jakllsch // Prototype argument decoration for EFI parameters to indicate
51 1.1 jakllsch // their direction
52 1.1 jakllsch //
53 1.1 jakllsch // IN - argument is passed into the function
54 1.1 jakllsch // OUT - argument (pointer) is returned from the function
55 1.1 jakllsch // OPTIONAL - argument is optional
56 1.1 jakllsch //
57 1.1 jakllsch
58 1.1 jakllsch #ifndef IN
59 1.1 jakllsch #define IN
60 1.1 jakllsch #define OUT
61 1.1 jakllsch #define OPTIONAL
62 1.1 jakllsch #endif
63 1.1 jakllsch
64 1.1 jakllsch
65 1.1 jakllsch //
66 1.1 jakllsch // A GUID
67 1.1 jakllsch //
68 1.1 jakllsch
69 1.1 jakllsch typedef struct {
70 1.1 jakllsch UINT32 Data1;
71 1.1 jakllsch UINT16 Data2;
72 1.1 jakllsch UINT16 Data3;
73 1.1 jakllsch UINT8 Data4[8];
74 1.1 jakllsch } EFI_GUID;
75 1.1 jakllsch
76 1.1 jakllsch
77 1.1 jakllsch //
78 1.1 jakllsch // Time
79 1.1 jakllsch //
80 1.1 jakllsch
81 1.1 jakllsch typedef struct {
82 1.1 jakllsch UINT16 Year; // 1998 - 20XX
83 1.1 jakllsch UINT8 Month; // 1 - 12
84 1.1 jakllsch UINT8 Day; // 1 - 31
85 1.1 jakllsch UINT8 Hour; // 0 - 23
86 1.1 jakllsch UINT8 Minute; // 0 - 59
87 1.1 jakllsch UINT8 Second; // 0 - 59
88 1.1 jakllsch UINT8 Pad1;
89 1.1 jakllsch UINT32 Nanosecond; // 0 - 999,999,999
90 1.1 jakllsch INT16 TimeZone; // -1440 to 1440 or 2047
91 1.1 jakllsch UINT8 Daylight;
92 1.1 jakllsch UINT8 Pad2;
93 1.1 jakllsch } EFI_TIME;
94 1.1 jakllsch
95 1.1 jakllsch // Bit definitions for EFI_TIME.Daylight
96 1.1 jakllsch #define EFI_TIME_ADJUST_DAYLIGHT 0x01
97 1.1 jakllsch #define EFI_TIME_IN_DAYLIGHT 0x02
98 1.1 jakllsch
99 1.1 jakllsch // Value definition for EFI_TIME.TimeZone
100 1.1 jakllsch #define EFI_UNSPECIFIED_TIMEZONE 0x07FF
101 1.1 jakllsch
102 1.1 jakllsch
103 1.1 jakllsch
104 1.1 jakllsch //
105 1.1 jakllsch // Networking
106 1.1 jakllsch //
107 1.1 jakllsch
108 1.1 jakllsch typedef struct {
109 1.1 jakllsch UINT8 Addr[4];
110 1.1 jakllsch } EFI_IPv4_ADDRESS;
111 1.1 jakllsch
112 1.1 jakllsch typedef struct {
113 1.1 jakllsch UINT8 Addr[16];
114 1.1 jakllsch } EFI_IPv6_ADDRESS;
115 1.1 jakllsch
116 1.1 jakllsch typedef struct {
117 1.1 jakllsch UINT8 Addr[32];
118 1.1 jakllsch } EFI_MAC_ADDRESS;
119 1.1 jakllsch
120 1.1 jakllsch typedef struct {
121 1.1 jakllsch UINT32 ReceivedQueueTimeoutValue;
122 1.1 jakllsch UINT32 TransmitQueueTimeoutValue;
123 1.1 jakllsch UINT16 ProtocolTypeFilter;
124 1.1 jakllsch BOOLEAN EnableUnicastReceive;
125 1.1 jakllsch BOOLEAN EnableMulticastReceive;
126 1.1 jakllsch BOOLEAN EnableBroadcastReceive;
127 1.1 jakllsch BOOLEAN EnablePromiscuousReceive;
128 1.1 jakllsch BOOLEAN FlushQueuesOnReset;
129 1.1 jakllsch BOOLEAN EnableReceiveTimestamps;
130 1.1 jakllsch BOOLEAN DisableBackgroundPolling;
131 1.1 jakllsch } EFI_MANAGED_NETWORK_CONFIG_DATA;
132 1.1 jakllsch
133 1.1 jakllsch //
134 1.1 jakllsch // Memory
135 1.1 jakllsch //
136 1.1 jakllsch
137 1.1 jakllsch typedef UINT64 EFI_PHYSICAL_ADDRESS;
138 1.1 jakllsch typedef UINT64 EFI_VIRTUAL_ADDRESS;
139 1.1 jakllsch
140 1.1 jakllsch typedef enum {
141 1.1 jakllsch AllocateAnyPages,
142 1.1 jakllsch AllocateMaxAddress,
143 1.1 jakllsch AllocateAddress,
144 1.1 jakllsch MaxAllocateType
145 1.1 jakllsch } EFI_ALLOCATE_TYPE;
146 1.1 jakllsch
147 1.1 jakllsch //Preseve the attr on any range supplied.
148 1.1 jakllsch //ConventialMemory must have WB,SR,SW when supplied.
149 1.1 jakllsch //When allocating from ConventialMemory always make it WB,SR,SW
150 1.1 jakllsch //When returning to ConventialMemory always make it WB,SR,SW
151 1.1 jakllsch //When getting the memory map, or on RT for runtime types
152 1.1 jakllsch
153 1.1 jakllsch
154 1.1 jakllsch typedef enum {
155 1.1 jakllsch EfiReservedMemoryType,
156 1.1 jakllsch EfiLoaderCode,
157 1.1 jakllsch EfiLoaderData,
158 1.1 jakllsch EfiBootServicesCode,
159 1.1 jakllsch EfiBootServicesData,
160 1.1 jakllsch EfiRuntimeServicesCode,
161 1.1 jakllsch EfiRuntimeServicesData,
162 1.1 jakllsch EfiConventionalMemory,
163 1.1 jakllsch EfiUnusableMemory,
164 1.1 jakllsch EfiACPIReclaimMemory,
165 1.1 jakllsch EfiACPIMemoryNVS,
166 1.1 jakllsch EfiMemoryMappedIO,
167 1.1 jakllsch EfiMemoryMappedIOPortSpace,
168 1.1 jakllsch EfiPalCode,
169 1.2 nonaka EfiPersistentMemory,
170 1.1 jakllsch EfiMaxMemoryType
171 1.1 jakllsch } EFI_MEMORY_TYPE;
172 1.1 jakllsch
173 1.1 jakllsch // possible caching types for the memory range
174 1.1 jakllsch #define EFI_MEMORY_UC 0x0000000000000001
175 1.1 jakllsch #define EFI_MEMORY_WC 0x0000000000000002
176 1.1 jakllsch #define EFI_MEMORY_WT 0x0000000000000004
177 1.1 jakllsch #define EFI_MEMORY_WB 0x0000000000000008
178 1.1 jakllsch #define EFI_MEMORY_UCE 0x0000000000000010
179 1.1 jakllsch
180 1.1 jakllsch // physical memory protection on range
181 1.1 jakllsch #define EFI_MEMORY_WP 0x0000000000001000
182 1.1 jakllsch #define EFI_MEMORY_RP 0x0000000000002000
183 1.1 jakllsch #define EFI_MEMORY_XP 0x0000000000004000
184 1.1 jakllsch
185 1.1 jakllsch // range requires a runtime mapping
186 1.1 jakllsch #define EFI_MEMORY_RUNTIME 0x8000000000000000
187 1.1 jakllsch
188 1.1 jakllsch #define EFI_MEMORY_DESCRIPTOR_VERSION 1
189 1.1 jakllsch typedef struct {
190 1.1 jakllsch UINT32 Type; // Field size is 32 bits followed by 32 bit pad
191 1.1 jakllsch UINT32 Pad;
192 1.1 jakllsch EFI_PHYSICAL_ADDRESS PhysicalStart; // Field size is 64 bits
193 1.1 jakllsch EFI_VIRTUAL_ADDRESS VirtualStart; // Field size is 64 bits
194 1.1 jakllsch UINT64 NumberOfPages; // Field size is 64 bits
195 1.1 jakllsch UINT64 Attribute; // Field size is 64 bits
196 1.1 jakllsch } EFI_MEMORY_DESCRIPTOR;
197 1.1 jakllsch
198 1.1 jakllsch //
199 1.1 jakllsch // International Language
200 1.1 jakllsch //
201 1.1 jakllsch
202 1.1 jakllsch typedef UINT8 ISO_639_2;
203 1.1 jakllsch #define ISO_639_2_ENTRY_SIZE 3
204 1.1 jakllsch
205 1.1 jakllsch //
206 1.1 jakllsch //
207 1.1 jakllsch //
208 1.1 jakllsch
209 1.1 jakllsch #define EFI_PAGE_SIZE 4096
210 1.1 jakllsch #define EFI_PAGE_MASK 0xFFF
211 1.1 jakllsch #define EFI_PAGE_SHIFT 12
212 1.1 jakllsch
213 1.1 jakllsch #define EFI_SIZE_TO_PAGES(a) \
214 1.1 jakllsch ( ((a) >> EFI_PAGE_SHIFT) + ((a) & EFI_PAGE_MASK ? 1 : 0) )
215 1.1 jakllsch
216 1.3 jmcneill #define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001
217 1.3 jmcneill #define EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION 0x0000000000000002
218 1.3 jmcneill #define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED \
219 1.3 jmcneill 0x0000000000000004
220 1.3 jmcneill #define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED \
221 1.3 jmcneill 0x0000000000000008
222 1.3 jmcneill #define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED \
223 1.3 jmcneill 0x0000000000000010
224 1.3 jmcneill
225 1.1 jakllsch #endif
226