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