Home | History | Annotate | Line # | Download | only in inc
      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