xref: /freebsd/stand/efi/include/efidef.h (revision 2a63c3be158216222d89a073dcbd6a72ee4aab5a)
1ca987d46SWarner Losh #ifndef _EFI_DEF_H
2ca987d46SWarner Losh #define _EFI_DEF_H
3ca987d46SWarner Losh 
4ca987d46SWarner Losh /*++
5ca987d46SWarner Losh 
6ca987d46SWarner Losh Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
7ca987d46SWarner Losh This software and associated documentation (if any) is furnished
8ca987d46SWarner Losh under a license and may only be used or copied in accordance
9ca987d46SWarner Losh with the terms of the license. Except as permitted by such
10ca987d46SWarner Losh license, no part of this software or documentation may be
11ca987d46SWarner Losh reproduced, stored in a retrieval system, or transmitted in any
12ca987d46SWarner Losh form or by any means without the express written consent of
13ca987d46SWarner Losh Intel Corporation.
14ca987d46SWarner Losh 
15ca987d46SWarner Losh Module Name:
16ca987d46SWarner Losh 
17ca987d46SWarner Losh     efidef.h
18ca987d46SWarner Losh 
19ca987d46SWarner Losh Abstract:
20ca987d46SWarner Losh 
21ca987d46SWarner Losh     EFI definitions
22ca987d46SWarner Losh 
23ca987d46SWarner Losh 
24ca987d46SWarner Losh 
25ca987d46SWarner Losh 
26ca987d46SWarner Losh Revision History
27ca987d46SWarner Losh 
28ca987d46SWarner Losh --*/
29ca987d46SWarner Losh 
30ca987d46SWarner Losh typedef UINT16          CHAR16;
31ca987d46SWarner Losh typedef UINT8           CHAR8;
32ca987d46SWarner Losh #ifndef ACPI_THREAD_ID		/* ACPI's definitions are fine */
33ca987d46SWarner Losh typedef UINT8           BOOLEAN;
34ca987d46SWarner Losh #endif
35ca987d46SWarner Losh 
36ca987d46SWarner Losh #ifndef TRUE
37ca987d46SWarner Losh     #define TRUE    ((BOOLEAN) 1)
38ca987d46SWarner Losh     #define FALSE   ((BOOLEAN) 0)
39ca987d46SWarner Losh #endif
40ca987d46SWarner Losh 
41ca987d46SWarner Losh #ifndef NULL
42ca987d46SWarner Losh     #define NULL    ((VOID *) 0)
43ca987d46SWarner Losh #endif
44ca987d46SWarner Losh 
45ca987d46SWarner Losh typedef UINTN           EFI_STATUS;
46ca987d46SWarner Losh typedef UINT64          EFI_LBA;
47ca987d46SWarner Losh typedef UINTN           EFI_TPL;
48ca987d46SWarner Losh typedef VOID            *EFI_HANDLE;
49ca987d46SWarner Losh typedef VOID            *EFI_EVENT;
50ca987d46SWarner Losh 
51ca987d46SWarner Losh 
52ca987d46SWarner Losh //
53ca987d46SWarner Losh // Prototype argument decoration for EFI parameters to indicate
54ca987d46SWarner Losh // their direction
55ca987d46SWarner Losh //
56ca987d46SWarner Losh // IN - argument is passed into the function
57ca987d46SWarner Losh // OUT - argument (pointer) is returned from the function
58ca987d46SWarner Losh // OPTIONAL - argument is optional
59ca987d46SWarner Losh //
60ca987d46SWarner Losh 
61ca987d46SWarner Losh #ifndef IN
62ca987d46SWarner Losh     #define IN
63ca987d46SWarner Losh     #define OUT
64ca987d46SWarner Losh     #define OPTIONAL
65*40c9957cSWarner Losh     #define CONST const
66ca987d46SWarner Losh #endif
67ca987d46SWarner Losh 
68ca987d46SWarner Losh 
69ca987d46SWarner Losh //
70ca987d46SWarner Losh // A GUID
71ca987d46SWarner Losh //
72ca987d46SWarner Losh 
73ca987d46SWarner Losh typedef struct {
74ca987d46SWarner Losh     UINT32  Data1;
75ca987d46SWarner Losh     UINT16  Data2;
76ca987d46SWarner Losh     UINT16  Data3;
77ca987d46SWarner Losh     UINT8   Data4[8];
78ca987d46SWarner Losh } EFI_GUID;
79ca987d46SWarner Losh 
80ca987d46SWarner Losh 
81ca987d46SWarner Losh //
82ca987d46SWarner Losh // Time
83ca987d46SWarner Losh //
84ca987d46SWarner Losh 
85ca987d46SWarner Losh typedef struct {
86ca987d46SWarner Losh     UINT16      Year;       // 1998 - 20XX
87ca987d46SWarner Losh     UINT8       Month;      // 1 - 12
88ca987d46SWarner Losh     UINT8       Day;        // 1 - 31
89ca987d46SWarner Losh     UINT8       Hour;       // 0 - 23
90ca987d46SWarner Losh     UINT8       Minute;     // 0 - 59
91ca987d46SWarner Losh     UINT8       Second;     // 0 - 59
92ca987d46SWarner Losh     UINT8       Pad1;
93ca987d46SWarner Losh     UINT32      Nanosecond; // 0 - 999,999,999
94ca987d46SWarner Losh     INT16       TimeZone;   // -1440 to 1440 or 2047
95ca987d46SWarner Losh     UINT8       Daylight;
96ca987d46SWarner Losh     UINT8       Pad2;
97ca987d46SWarner Losh } EFI_TIME;
98ca987d46SWarner Losh 
99ca987d46SWarner Losh // Bit definitions for EFI_TIME.Daylight
100ca987d46SWarner Losh #define EFI_TIME_ADJUST_DAYLIGHT    0x01
101ca987d46SWarner Losh #define EFI_TIME_IN_DAYLIGHT        0x02
102ca987d46SWarner Losh 
103ca987d46SWarner Losh // Value definition for EFI_TIME.TimeZone
104ca987d46SWarner Losh #define EFI_UNSPECIFIED_TIMEZONE    0x07FF
105ca987d46SWarner Losh 
106ca987d46SWarner Losh 
107ca987d46SWarner Losh 
108ca987d46SWarner Losh //
109ca987d46SWarner Losh // Networking
110ca987d46SWarner Losh //
111ca987d46SWarner Losh 
112ca987d46SWarner Losh typedef struct {
113ca987d46SWarner Losh     UINT8                   Addr[4];
114ca987d46SWarner Losh } EFI_IPv4_ADDRESS;
115ca987d46SWarner Losh 
116ca987d46SWarner Losh typedef struct {
117ca987d46SWarner Losh     UINT8                   Addr[16];
118ca987d46SWarner Losh } EFI_IPv6_ADDRESS;
119ca987d46SWarner Losh 
120ca987d46SWarner Losh typedef struct {
121ca987d46SWarner Losh     UINT8                   Addr[32];
122ca987d46SWarner Losh } EFI_MAC_ADDRESS;
123ca987d46SWarner Losh 
12465641822SToomas Soome typedef struct {
12565641822SToomas Soome     UINT32 ReceivedQueueTimeoutValue;
12665641822SToomas Soome     UINT32 TransmitQueueTimeoutValue;
12765641822SToomas Soome     UINT16 ProtocolTypeFilter;
12865641822SToomas Soome     BOOLEAN EnableUnicastReceive;
12965641822SToomas Soome     BOOLEAN EnableMulticastReceive;
13065641822SToomas Soome     BOOLEAN EnableBroadcastReceive;
13165641822SToomas Soome     BOOLEAN EnablePromiscuousReceive;
13265641822SToomas Soome     BOOLEAN FlushQueuesOnReset;
13365641822SToomas Soome     BOOLEAN EnableReceiveTimestamps;
13465641822SToomas Soome     BOOLEAN DisableBackgroundPolling;
13565641822SToomas Soome } EFI_MANAGED_NETWORK_CONFIG_DATA;
13665641822SToomas Soome 
137ca987d46SWarner Losh //
138ca987d46SWarner Losh // Memory
139ca987d46SWarner Losh //
140ca987d46SWarner Losh 
141ca987d46SWarner Losh typedef UINT64          EFI_PHYSICAL_ADDRESS;
142ca987d46SWarner Losh typedef UINT64          EFI_VIRTUAL_ADDRESS;
143ca987d46SWarner Losh 
144ca987d46SWarner Losh typedef enum {
145ca987d46SWarner Losh     AllocateAnyPages,
146ca987d46SWarner Losh     AllocateMaxAddress,
147ca987d46SWarner Losh     AllocateAddress,
148ca987d46SWarner Losh     MaxAllocateType
149ca987d46SWarner Losh } EFI_ALLOCATE_TYPE;
150ca987d46SWarner Losh 
151ca987d46SWarner Losh //Preseve the attr on any range supplied.
152ca987d46SWarner Losh //ConventialMemory must have WB,SR,SW when supplied.
153ca987d46SWarner Losh //When allocating from ConventialMemory always make it WB,SR,SW
154ca987d46SWarner Losh //When returning to ConventialMemory always make it WB,SR,SW
155ca987d46SWarner Losh //When getting the memory map, or on RT for runtime types
156ca987d46SWarner Losh 
157ca987d46SWarner Losh 
158ca987d46SWarner Losh typedef enum {
159ca987d46SWarner Losh     EfiReservedMemoryType,
160ca987d46SWarner Losh     EfiLoaderCode,
161ca987d46SWarner Losh     EfiLoaderData,
162ca987d46SWarner Losh     EfiBootServicesCode,
163ca987d46SWarner Losh     EfiBootServicesData,
164ca987d46SWarner Losh     EfiRuntimeServicesCode,
165ca987d46SWarner Losh     EfiRuntimeServicesData,
166ca987d46SWarner Losh     EfiConventionalMemory,
167ca987d46SWarner Losh     EfiUnusableMemory,
168ca987d46SWarner Losh     EfiACPIReclaimMemory,
169ca987d46SWarner Losh     EfiACPIMemoryNVS,
170ca987d46SWarner Losh     EfiMemoryMappedIO,
171ca987d46SWarner Losh     EfiMemoryMappedIOPortSpace,
172ca987d46SWarner Losh     EfiPalCode,
17334ada209SToomas Soome     EfiPersistentMemory,
174ca987d46SWarner Losh     EfiMaxMemoryType
175ca987d46SWarner Losh } EFI_MEMORY_TYPE;
176ca987d46SWarner Losh 
177ca987d46SWarner Losh // possible caching types for the memory range
178ca987d46SWarner Losh #define EFI_MEMORY_UC			0x0000000000000001
179ca987d46SWarner Losh #define EFI_MEMORY_WC			0x0000000000000002
180ca987d46SWarner Losh #define EFI_MEMORY_WT			0x0000000000000004
181ca987d46SWarner Losh #define EFI_MEMORY_WB			0x0000000000000008
182ca987d46SWarner Losh #define EFI_MEMORY_UCE			0x0000000000000010
183ca987d46SWarner Losh 
184ca987d46SWarner Losh // physical memory protection on range
185ca987d46SWarner Losh #define EFI_MEMORY_WP			0x0000000000001000
186ca987d46SWarner Losh #define EFI_MEMORY_RP			0x0000000000002000
187ca987d46SWarner Losh #define EFI_MEMORY_XP			0x0000000000004000
18834ada209SToomas Soome #define	EFI_MEMORY_NV			0x0000000000008000
18934ada209SToomas Soome #define	EFI_MEMORY_MORE_RELIABLE	0x0000000000010000
19034ada209SToomas Soome #define	EFI_MEMORY_RO			0x0000000000020000
191ca987d46SWarner Losh 
192ca987d46SWarner Losh // range requires a runtime mapping
193ca987d46SWarner Losh #define EFI_MEMORY_RUNTIME		0x8000000000000000
194ca987d46SWarner Losh 
195ca987d46SWarner Losh #define EFI_MEMORY_DESCRIPTOR_VERSION  1
196ca987d46SWarner Losh typedef struct {
197ca987d46SWarner Losh     UINT32                          Type;           // Field size is 32 bits followed by 32 bit pad
198ca987d46SWarner Losh     UINT32                          Pad;
199ca987d46SWarner Losh     EFI_PHYSICAL_ADDRESS            PhysicalStart;  // Field size is 64 bits
200ca987d46SWarner Losh     EFI_VIRTUAL_ADDRESS             VirtualStart;   // Field size is 64 bits
201ca987d46SWarner Losh     UINT64                          NumberOfPages;  // Field size is 64 bits
202ca987d46SWarner Losh     UINT64                          Attribute;      // Field size is 64 bits
203ca987d46SWarner Losh } EFI_MEMORY_DESCRIPTOR;
204ca987d46SWarner Losh 
205ca987d46SWarner Losh //
206ca987d46SWarner Losh // International Language
207ca987d46SWarner Losh //
208ca987d46SWarner Losh 
209ca987d46SWarner Losh typedef UINT8   ISO_639_2;
210ca987d46SWarner Losh #define ISO_639_2_ENTRY_SIZE    3
211ca987d46SWarner Losh 
212ca987d46SWarner Losh //
213ca987d46SWarner Losh //
214ca987d46SWarner Losh //
215ca987d46SWarner Losh 
216ca987d46SWarner Losh #define EFI_PAGE_SIZE   4096
217ca987d46SWarner Losh #define EFI_PAGE_MASK   0xFFF
218ca987d46SWarner Losh #define EFI_PAGE_SHIFT  12
219ca987d46SWarner Losh 
220ca987d46SWarner Losh #define EFI_SIZE_TO_PAGES(a)  \
221ca987d46SWarner Losh     ( ((a) >> EFI_PAGE_SHIFT) + (((a) & EFI_PAGE_MASK) ? 1 : 0) )
222ca987d46SWarner Losh 
223ca987d46SWarner Losh #endif
224