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