177943Sdfr/* $FreeBSD$ */
277943Sdfr#ifndef _EFI_DEF_H
377943Sdfr#define _EFI_DEF_H
477943Sdfr
577943Sdfr/*++
677943Sdfr
7163898SmarcelCopyright (c)  1999 - 2002 Intel Corporation. All rights reserved
8163898SmarcelThis software and associated documentation (if any) is furnished
9163898Smarcelunder a license and may only be used or copied in accordance
10163898Smarcelwith the terms of the license. Except as permitted by such
11163898Smarcellicense, no part of this software or documentation may be
12163898Smarcelreproduced, stored in a retrieval system, or transmitted in any
13163898Smarcelform or by any means without the express written consent of
14163898SmarcelIntel Corporation.
1577943Sdfr
1677943SdfrModule Name:
1777943Sdfr
1877943Sdfr    efidef.h
1977943Sdfr
2077943SdfrAbstract:
2177943Sdfr
2277943Sdfr    EFI definitions
2377943Sdfr
2477943Sdfr
2577943Sdfr
2677943Sdfr
2777943SdfrRevision History
2877943Sdfr
2977943Sdfr--*/
3077943Sdfr
3177943Sdfrtypedef UINT16          CHAR16;
3277943Sdfrtypedef UINT8           CHAR8;
3377943Sdfrtypedef UINT8           BOOLEAN;
3477943Sdfr
3577943Sdfr#ifndef TRUE
3677943Sdfr    #define TRUE    ((BOOLEAN) 1)
3777943Sdfr    #define FALSE   ((BOOLEAN) 0)
3877943Sdfr#endif
3977943Sdfr
4077943Sdfr#ifndef NULL
4177943Sdfr    #define NULL    ((VOID *) 0)
4277943Sdfr#endif
4377943Sdfr
4477943Sdfrtypedef UINTN           EFI_STATUS;
4577943Sdfrtypedef UINT64          EFI_LBA;
4677943Sdfrtypedef UINTN           EFI_TPL;
4777943Sdfrtypedef VOID            *EFI_HANDLE;
4877943Sdfrtypedef VOID            *EFI_EVENT;
4977943Sdfr
5077943Sdfr
51163898Smarcel//
52163898Smarcel// Prototype argument decoration for EFI parameters to indicate
53163898Smarcel// their direction
54163898Smarcel//
55163898Smarcel// IN - argument is passed into the function
56163898Smarcel// OUT - argument (pointer) is returned from the function
57163898Smarcel// OPTIONAL - argument is optional
58163898Smarcel//
5977943Sdfr
6077943Sdfr#ifndef IN
6177943Sdfr    #define IN
6277943Sdfr    #define OUT
6377943Sdfr    #define OPTIONAL
6477943Sdfr#endif
6577943Sdfr
6677943Sdfr
67163898Smarcel//
68163898Smarcel// A GUID
69163898Smarcel//
7077943Sdfr
7177943Sdfrtypedef struct {
7277943Sdfr    UINT32  Data1;
7377943Sdfr    UINT16  Data2;
7477943Sdfr    UINT16  Data3;
7577943Sdfr    UINT8   Data4[8];
7677943Sdfr} EFI_GUID;
7777943Sdfr
7877943Sdfr
79163898Smarcel//
80163898Smarcel// Time
81163898Smarcel//
8277943Sdfr
8377943Sdfrtypedef struct {
84163898Smarcel    UINT16      Year;       // 1998 - 20XX
85163898Smarcel    UINT8       Month;      // 1 - 12
86163898Smarcel    UINT8       Day;        // 1 - 31
87163898Smarcel    UINT8       Hour;       // 0 - 23
88163898Smarcel    UINT8       Minute;     // 0 - 59
89163898Smarcel    UINT8       Second;     // 0 - 59
90163898Smarcel    UINT8       Pad1;
91163898Smarcel    UINT32      Nanosecond; // 0 - 999,999,999
92163898Smarcel    INT16       TimeZone;   // -1440 to 1440 or 2047
93163898Smarcel    UINT8       Daylight;
94163898Smarcel    UINT8       Pad2;
9577943Sdfr} EFI_TIME;
9677943Sdfr
97163898Smarcel// Bit definitions for EFI_TIME.Daylight
9877943Sdfr#define EFI_TIME_ADJUST_DAYLIGHT    0x01
9977943Sdfr#define EFI_TIME_IN_DAYLIGHT        0x02
10077943Sdfr
101163898Smarcel// Value definition for EFI_TIME.TimeZone
10277943Sdfr#define EFI_UNSPECIFIED_TIMEZONE    0x07FF
10377943Sdfr
10477943Sdfr
10577943Sdfr
106163898Smarcel//
107163898Smarcel// Networking
108163898Smarcel//
10977943Sdfr
11077943Sdfrtypedef struct {
11177943Sdfr    UINT8                   Addr[4];
11277943Sdfr} EFI_IPv4_ADDRESS;
11377943Sdfr
11477943Sdfrtypedef struct {
11577943Sdfr    UINT8                   Addr[16];
11677943Sdfr} EFI_IPv6_ADDRESS;
11777943Sdfr
11877943Sdfrtypedef struct {
11977943Sdfr    UINT8                   Addr[32];
12077943Sdfr} EFI_MAC_ADDRESS;
12177943Sdfr
122163898Smarcel//
123163898Smarcel// Memory
124163898Smarcel//
12577943Sdfr
12677943Sdfrtypedef UINT64          EFI_PHYSICAL_ADDRESS;
12777943Sdfrtypedef UINT64          EFI_VIRTUAL_ADDRESS;
12877943Sdfr
12977943Sdfrtypedef enum {
13077943Sdfr    AllocateAnyPages,
13177943Sdfr    AllocateMaxAddress,
13277943Sdfr    AllocateAddress,
13377943Sdfr    MaxAllocateType
13477943Sdfr} EFI_ALLOCATE_TYPE;
13577943Sdfr
136163898Smarcel//Preseve the attr on any range supplied.
137163898Smarcel//ConventialMemory must have WB,SR,SW when supplied.
138163898Smarcel//When allocating from ConventialMemory always make it WB,SR,SW
139163898Smarcel//When returning to ConventialMemory always make it WB,SR,SW
140163898Smarcel//When getting the memory map, or on RT for runtime types
14177943Sdfr
142163898Smarcel
14377943Sdfrtypedef enum {
14477943Sdfr    EfiReservedMemoryType,
14577943Sdfr    EfiLoaderCode,
14677943Sdfr    EfiLoaderData,
14777943Sdfr    EfiBootServicesCode,
14877943Sdfr    EfiBootServicesData,
14977943Sdfr    EfiRuntimeServicesCode,
15077943Sdfr    EfiRuntimeServicesData,
15177943Sdfr    EfiConventionalMemory,
15277943Sdfr    EfiUnusableMemory,
15377943Sdfr    EfiACPIReclaimMemory,
15477943Sdfr    EfiACPIMemoryNVS,
15577943Sdfr    EfiMemoryMappedIO,
15677943Sdfr    EfiMemoryMappedIOPortSpace,
15777943Sdfr    EfiPalCode,
15877943Sdfr    EfiMaxMemoryType
15977943Sdfr} EFI_MEMORY_TYPE;
16077943Sdfr
161163898Smarcel// possible caching types for the memory range
16277943Sdfr#define EFI_MEMORY_UC           0x0000000000000001
16377943Sdfr#define EFI_MEMORY_WC           0x0000000000000002
16477943Sdfr#define EFI_MEMORY_WT           0x0000000000000004
16577943Sdfr#define EFI_MEMORY_WB           0x0000000000000008
16677943Sdfr#define EFI_MEMORY_UCE          0x0000000000000010
16777943Sdfr
168163898Smarcel// physical memory protection on range
16977943Sdfr#define EFI_MEMORY_WP           0x0000000000001000
17077943Sdfr#define EFI_MEMORY_RP           0x0000000000002000
17177943Sdfr#define EFI_MEMORY_XP           0x0000000000004000
17277943Sdfr
173163898Smarcel// range requires a runtime mapping
17477943Sdfr#define EFI_MEMORY_RUNTIME      0x8000000000000000
17577943Sdfr
17677943Sdfr#define EFI_MEMORY_DESCRIPTOR_VERSION  1
17777943Sdfrtypedef struct {
178163898Smarcel    UINT32                          Type;           // Field size is 32 bits followed by 32 bit pad
179163898Smarcel    EFI_PHYSICAL_ADDRESS            PhysicalStart;  // Field size is 64 bits
180163898Smarcel    EFI_VIRTUAL_ADDRESS             VirtualStart;   // Field size is 64 bits
181163898Smarcel    UINT64                          NumberOfPages;  // Field size is 64 bits
182163898Smarcel    UINT64                          Attribute;      // Field size is 64 bits
18377943Sdfr} EFI_MEMORY_DESCRIPTOR;
18477943Sdfr
185163898Smarcel//
186163898Smarcel// International Language
187163898Smarcel//
18877943Sdfr
18977943Sdfrtypedef UINT8   ISO_639_2;
19077943Sdfr#define ISO_639_2_ENTRY_SIZE    3
19177943Sdfr
192163898Smarcel//
193163898Smarcel//
194163898Smarcel//
195163898Smarcel
19677943Sdfr#define EFI_PAGE_SIZE   4096
19777943Sdfr#define EFI_PAGE_MASK   0xFFF
19877943Sdfr#define EFI_PAGE_SHIFT  12
19977943Sdfr
20077943Sdfr#define EFI_SIZE_TO_PAGES(a)  \
201163898Smarcel    ( ((a) >> EFI_PAGE_SHIFT) + (((a) & EFI_PAGE_MASK) ? 1 : 0) )
20277943Sdfr
20377943Sdfr#endif
204