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