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