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