ia64/xen-unstable

annotate xen/include/asm-ia64/linux-xen/linux/efi.h @ 9496:d16c16f64060

[IA64] dom0 vp model xen part: moved efi.h from linux to linux-xen to modify.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
author awilliam@xenbuild.aw
date Fri Apr 07 13:41:32 2006 -0600 (2006-04-07)
parents
children bb99a6e5456a
rev   line source
awilliam@9496 1 #ifndef _LINUX_EFI_H
awilliam@9496 2 #define _LINUX_EFI_H
awilliam@9496 3
awilliam@9496 4 /*
awilliam@9496 5 * Extensible Firmware Interface
awilliam@9496 6 * Based on 'Extensible Firmware Interface Specification' version 0.9, April 30, 1999
awilliam@9496 7 *
awilliam@9496 8 * Copyright (C) 1999 VA Linux Systems
awilliam@9496 9 * Copyright (C) 1999 Walt Drummond <drummond@valinux.com>
awilliam@9496 10 * Copyright (C) 1999, 2002-2003 Hewlett-Packard Co.
awilliam@9496 11 * David Mosberger-Tang <davidm@hpl.hp.com>
awilliam@9496 12 * Stephane Eranian <eranian@hpl.hp.com>
awilliam@9496 13 */
awilliam@9496 14 #include <linux/init.h>
awilliam@9496 15 #include <linux/string.h>
awilliam@9496 16 #include <linux/time.h>
awilliam@9496 17 #include <linux/types.h>
awilliam@9496 18 #include <linux/proc_fs.h>
awilliam@9496 19 #include <linux/rtc.h>
awilliam@9496 20 #include <linux/ioport.h>
awilliam@9496 21
awilliam@9496 22 #include <asm/page.h>
awilliam@9496 23 #include <asm/system.h>
awilliam@9496 24
awilliam@9496 25 #define EFI_SUCCESS 0
awilliam@9496 26 #define EFI_LOAD_ERROR ( 1 | (1UL << (BITS_PER_LONG-1)))
awilliam@9496 27 #define EFI_INVALID_PARAMETER ( 2 | (1UL << (BITS_PER_LONG-1)))
awilliam@9496 28 #define EFI_UNSUPPORTED ( 3 | (1UL << (BITS_PER_LONG-1)))
awilliam@9496 29 #define EFI_BAD_BUFFER_SIZE ( 4 | (1UL << (BITS_PER_LONG-1)))
awilliam@9496 30 #define EFI_BUFFER_TOO_SMALL ( 5 | (1UL << (BITS_PER_LONG-1)))
awilliam@9496 31 #define EFI_NOT_FOUND (14 | (1UL << (BITS_PER_LONG-1)))
awilliam@9496 32
awilliam@9496 33 typedef unsigned long efi_status_t;
awilliam@9496 34 typedef u8 efi_bool_t;
awilliam@9496 35 typedef u16 efi_char16_t; /* UNICODE character */
awilliam@9496 36
awilliam@9496 37
awilliam@9496 38 typedef struct {
awilliam@9496 39 u8 b[16];
awilliam@9496 40 } efi_guid_t;
awilliam@9496 41
awilliam@9496 42 #define EFI_GUID(a,b,c,d0,d1,d2,d3,d4,d5,d6,d7) \
awilliam@9496 43 ((efi_guid_t) \
awilliam@9496 44 {{ (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \
awilliam@9496 45 (b) & 0xff, ((b) >> 8) & 0xff, \
awilliam@9496 46 (c) & 0xff, ((c) >> 8) & 0xff, \
awilliam@9496 47 (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
awilliam@9496 48
awilliam@9496 49 /*
awilliam@9496 50 * Generic EFI table header
awilliam@9496 51 */
awilliam@9496 52 typedef struct {
awilliam@9496 53 u64 signature;
awilliam@9496 54 u32 revision;
awilliam@9496 55 u32 headersize;
awilliam@9496 56 u32 crc32;
awilliam@9496 57 u32 reserved;
awilliam@9496 58 } efi_table_hdr_t;
awilliam@9496 59
awilliam@9496 60 /*
awilliam@9496 61 * Memory map descriptor:
awilliam@9496 62 */
awilliam@9496 63
awilliam@9496 64 /* Memory types: */
awilliam@9496 65 #define EFI_RESERVED_TYPE 0
awilliam@9496 66 #define EFI_LOADER_CODE 1
awilliam@9496 67 #define EFI_LOADER_DATA 2
awilliam@9496 68 #define EFI_BOOT_SERVICES_CODE 3
awilliam@9496 69 #define EFI_BOOT_SERVICES_DATA 4
awilliam@9496 70 #define EFI_RUNTIME_SERVICES_CODE 5
awilliam@9496 71 #define EFI_RUNTIME_SERVICES_DATA 6
awilliam@9496 72 #define EFI_CONVENTIONAL_MEMORY 7
awilliam@9496 73 #define EFI_UNUSABLE_MEMORY 8
awilliam@9496 74 #define EFI_ACPI_RECLAIM_MEMORY 9
awilliam@9496 75 #define EFI_ACPI_MEMORY_NVS 10
awilliam@9496 76 #define EFI_MEMORY_MAPPED_IO 11
awilliam@9496 77 #define EFI_MEMORY_MAPPED_IO_PORT_SPACE 12
awilliam@9496 78 #define EFI_PAL_CODE 13
awilliam@9496 79 #define EFI_MAX_MEMORY_TYPE 14
awilliam@9496 80
awilliam@9496 81 /* Attribute values: */
awilliam@9496 82 #define EFI_MEMORY_UC ((u64)0x0000000000000001ULL) /* uncached */
awilliam@9496 83 #define EFI_MEMORY_WC ((u64)0x0000000000000002ULL) /* write-coalescing */
awilliam@9496 84 #define EFI_MEMORY_WT ((u64)0x0000000000000004ULL) /* write-through */
awilliam@9496 85 #define EFI_MEMORY_WB ((u64)0x0000000000000008ULL) /* write-back */
awilliam@9496 86 #define EFI_MEMORY_WP ((u64)0x0000000000001000ULL) /* write-protect */
awilliam@9496 87 #define EFI_MEMORY_RP ((u64)0x0000000000002000ULL) /* read-protect */
awilliam@9496 88 #define EFI_MEMORY_XP ((u64)0x0000000000004000ULL) /* execute-protect */
awilliam@9496 89 #define EFI_MEMORY_RUNTIME ((u64)0x8000000000000000ULL) /* range requires runtime mapping */
awilliam@9496 90 #define EFI_MEMORY_DESCRIPTOR_VERSION 1
awilliam@9496 91
awilliam@9496 92 #define EFI_PAGE_SHIFT 12
awilliam@9496 93
awilliam@9496 94 /*
awilliam@9496 95 * For current x86 implementations of EFI, there is
awilliam@9496 96 * additional padding in the mem descriptors. This is not
awilliam@9496 97 * the case in ia64. Need to have this fixed in the f/w.
awilliam@9496 98 */
awilliam@9496 99 typedef struct {
awilliam@9496 100 u32 type;
awilliam@9496 101 u32 pad;
awilliam@9496 102 u64 phys_addr;
awilliam@9496 103 u64 virt_addr;
awilliam@9496 104 u64 num_pages;
awilliam@9496 105 u64 attribute;
awilliam@9496 106 #if defined (__i386__)
awilliam@9496 107 u64 pad1;
awilliam@9496 108 #endif
awilliam@9496 109 } efi_memory_desc_t;
awilliam@9496 110
awilliam@9496 111 typedef int (*efi_freemem_callback_t) (unsigned long start, unsigned long end, void *arg);
awilliam@9496 112
awilliam@9496 113 /*
awilliam@9496 114 * Types and defines for Time Services
awilliam@9496 115 */
awilliam@9496 116 #define EFI_TIME_ADJUST_DAYLIGHT 0x1
awilliam@9496 117 #define EFI_TIME_IN_DAYLIGHT 0x2
awilliam@9496 118 #define EFI_UNSPECIFIED_TIMEZONE 0x07ff
awilliam@9496 119
awilliam@9496 120 typedef struct {
awilliam@9496 121 u16 year;
awilliam@9496 122 u8 month;
awilliam@9496 123 u8 day;
awilliam@9496 124 u8 hour;
awilliam@9496 125 u8 minute;
awilliam@9496 126 u8 second;
awilliam@9496 127 u8 pad1;
awilliam@9496 128 u32 nanosecond;
awilliam@9496 129 s16 timezone;
awilliam@9496 130 u8 daylight;
awilliam@9496 131 u8 pad2;
awilliam@9496 132 } efi_time_t;
awilliam@9496 133
awilliam@9496 134 typedef struct {
awilliam@9496 135 u32 resolution;
awilliam@9496 136 u32 accuracy;
awilliam@9496 137 u8 sets_to_zero;
awilliam@9496 138 } efi_time_cap_t;
awilliam@9496 139
awilliam@9496 140 /*
awilliam@9496 141 * Types and defines for EFI ResetSystem
awilliam@9496 142 */
awilliam@9496 143 #define EFI_RESET_COLD 0
awilliam@9496 144 #define EFI_RESET_WARM 1
awilliam@9496 145 #define EFI_RESET_SHUTDOWN 2
awilliam@9496 146
awilliam@9496 147 /*
awilliam@9496 148 * EFI Runtime Services table
awilliam@9496 149 */
awilliam@9496 150 #define EFI_RUNTIME_SERVICES_SIGNATURE ((u64)0x5652453544e5552ULL)
awilliam@9496 151 #define EFI_RUNTIME_SERVICES_REVISION 0x00010000
awilliam@9496 152
awilliam@9496 153 typedef struct {
awilliam@9496 154 efi_table_hdr_t hdr;
awilliam@9496 155 unsigned long get_time;
awilliam@9496 156 unsigned long set_time;
awilliam@9496 157 unsigned long get_wakeup_time;
awilliam@9496 158 unsigned long set_wakeup_time;
awilliam@9496 159 unsigned long set_virtual_address_map;
awilliam@9496 160 unsigned long convert_pointer;
awilliam@9496 161 unsigned long get_variable;
awilliam@9496 162 unsigned long get_next_variable;
awilliam@9496 163 unsigned long set_variable;
awilliam@9496 164 unsigned long get_next_high_mono_count;
awilliam@9496 165 unsigned long reset_system;
awilliam@9496 166 } efi_runtime_services_t;
awilliam@9496 167
awilliam@9496 168 typedef efi_status_t efi_get_time_t (efi_time_t *tm, efi_time_cap_t *tc);
awilliam@9496 169 typedef efi_status_t efi_set_time_t (efi_time_t *tm);
awilliam@9496 170 typedef efi_status_t efi_get_wakeup_time_t (efi_bool_t *enabled, efi_bool_t *pending,
awilliam@9496 171 efi_time_t *tm);
awilliam@9496 172 typedef efi_status_t efi_set_wakeup_time_t (efi_bool_t enabled, efi_time_t *tm);
awilliam@9496 173 typedef efi_status_t efi_get_variable_t (efi_char16_t *name, efi_guid_t *vendor, u32 *attr,
awilliam@9496 174 unsigned long *data_size, void *data);
awilliam@9496 175 typedef efi_status_t efi_get_next_variable_t (unsigned long *name_size, efi_char16_t *name,
awilliam@9496 176 efi_guid_t *vendor);
awilliam@9496 177 typedef efi_status_t efi_set_variable_t (efi_char16_t *name, efi_guid_t *vendor,
awilliam@9496 178 unsigned long attr, unsigned long data_size,
awilliam@9496 179 void *data);
awilliam@9496 180 typedef efi_status_t efi_get_next_high_mono_count_t (u32 *count);
awilliam@9496 181 typedef void efi_reset_system_t (int reset_type, efi_status_t status,
awilliam@9496 182 unsigned long data_size, efi_char16_t *data);
awilliam@9496 183 typedef efi_status_t efi_set_virtual_address_map_t (unsigned long memory_map_size,
awilliam@9496 184 unsigned long descriptor_size,
awilliam@9496 185 u32 descriptor_version,
awilliam@9496 186 efi_memory_desc_t *virtual_map);
awilliam@9496 187
awilliam@9496 188 /*
awilliam@9496 189 * EFI Configuration Table and GUID definitions
awilliam@9496 190 */
awilliam@9496 191 #define NULL_GUID \
awilliam@9496 192 EFI_GUID( 0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 )
awilliam@9496 193
awilliam@9496 194 #define MPS_TABLE_GUID \
awilliam@9496 195 EFI_GUID( 0xeb9d2d2f, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d )
awilliam@9496 196
awilliam@9496 197 #define ACPI_TABLE_GUID \
awilliam@9496 198 EFI_GUID( 0xeb9d2d30, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d )
awilliam@9496 199
awilliam@9496 200 #define ACPI_20_TABLE_GUID \
awilliam@9496 201 EFI_GUID( 0x8868e871, 0xe4f1, 0x11d3, 0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 )
awilliam@9496 202
awilliam@9496 203 #define SMBIOS_TABLE_GUID \
awilliam@9496 204 EFI_GUID( 0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d )
awilliam@9496 205
awilliam@9496 206 #define SAL_SYSTEM_TABLE_GUID \
awilliam@9496 207 EFI_GUID( 0xeb9d2d32, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d )
awilliam@9496 208
awilliam@9496 209 #define HCDP_TABLE_GUID \
awilliam@9496 210 EFI_GUID( 0xf951938d, 0x620b, 0x42ef, 0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 )
awilliam@9496 211
awilliam@9496 212 #define UGA_IO_PROTOCOL_GUID \
awilliam@9496 213 EFI_GUID( 0x61a4d49e, 0x6f68, 0x4f1b, 0xb9, 0x22, 0xa8, 0x6e, 0xed, 0xb, 0x7, 0xa2 )
awilliam@9496 214
awilliam@9496 215 #define EFI_GLOBAL_VARIABLE_GUID \
awilliam@9496 216 EFI_GUID( 0x8be4df61, 0x93ca, 0x11d2, 0xaa, 0x0d, 0x00, 0xe0, 0x98, 0x03, 0x2b, 0x8c )
awilliam@9496 217
awilliam@9496 218 typedef struct {
awilliam@9496 219 efi_guid_t guid;
awilliam@9496 220 unsigned long table;
awilliam@9496 221 } efi_config_table_t;
awilliam@9496 222
awilliam@9496 223 #define EFI_SYSTEM_TABLE_SIGNATURE ((u64)0x5453595320494249ULL)
awilliam@9496 224 #define EFI_SYSTEM_TABLE_REVISION ((1 << 16) | 00)
awilliam@9496 225
awilliam@9496 226 typedef struct {
awilliam@9496 227 efi_table_hdr_t hdr;
awilliam@9496 228 unsigned long fw_vendor; /* physical addr of CHAR16 vendor string */
awilliam@9496 229 u32 fw_revision;
awilliam@9496 230 unsigned long con_in_handle;
awilliam@9496 231 unsigned long con_in;
awilliam@9496 232 unsigned long con_out_handle;
awilliam@9496 233 unsigned long con_out;
awilliam@9496 234 unsigned long stderr_handle;
awilliam@9496 235 unsigned long stderr;
awilliam@9496 236 efi_runtime_services_t *runtime;
awilliam@9496 237 unsigned long boottime;
awilliam@9496 238 unsigned long nr_tables;
awilliam@9496 239 unsigned long tables;
awilliam@9496 240 } efi_system_table_t;
awilliam@9496 241
awilliam@9496 242 struct efi_memory_map {
awilliam@9496 243 efi_memory_desc_t *phys_map;
awilliam@9496 244 efi_memory_desc_t *map;
awilliam@9496 245 int nr_map;
awilliam@9496 246 unsigned long desc_version;
awilliam@9496 247 };
awilliam@9496 248
awilliam@9496 249 /*
awilliam@9496 250 * All runtime access to EFI goes through this structure:
awilliam@9496 251 */
awilliam@9496 252 extern struct efi {
awilliam@9496 253 efi_system_table_t *systab; /* EFI system table */
awilliam@9496 254 void *mps; /* MPS table */
awilliam@9496 255 void *acpi; /* ACPI table (IA64 ext 0.71) */
awilliam@9496 256 void *acpi20; /* ACPI table (ACPI 2.0) */
awilliam@9496 257 void *smbios; /* SM BIOS table */
awilliam@9496 258 void *sal_systab; /* SAL system table */
awilliam@9496 259 void *boot_info; /* boot info table */
awilliam@9496 260 void *hcdp; /* HCDP table */
awilliam@9496 261 void *uga; /* UGA table */
awilliam@9496 262 efi_get_time_t *get_time;
awilliam@9496 263 efi_set_time_t *set_time;
awilliam@9496 264 efi_get_wakeup_time_t *get_wakeup_time;
awilliam@9496 265 efi_set_wakeup_time_t *set_wakeup_time;
awilliam@9496 266 efi_get_variable_t *get_variable;
awilliam@9496 267 efi_get_next_variable_t *get_next_variable;
awilliam@9496 268 efi_set_variable_t *set_variable;
awilliam@9496 269 efi_get_next_high_mono_count_t *get_next_high_mono_count;
awilliam@9496 270 efi_reset_system_t *reset_system;
awilliam@9496 271 efi_set_virtual_address_map_t *set_virtual_address_map;
awilliam@9496 272 } efi;
awilliam@9496 273
awilliam@9496 274 static inline int
awilliam@9496 275 efi_guidcmp (efi_guid_t left, efi_guid_t right)
awilliam@9496 276 {
awilliam@9496 277 return memcmp(&left, &right, sizeof (efi_guid_t));
awilliam@9496 278 }
awilliam@9496 279
awilliam@9496 280 static inline char *
awilliam@9496 281 efi_guid_unparse(efi_guid_t *guid, char *out)
awilliam@9496 282 {
awilliam@9496 283 sprintf(out, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
awilliam@9496 284 guid->b[3], guid->b[2], guid->b[1], guid->b[0],
awilliam@9496 285 guid->b[5], guid->b[4], guid->b[7], guid->b[6],
awilliam@9496 286 guid->b[8], guid->b[9], guid->b[10], guid->b[11],
awilliam@9496 287 guid->b[12], guid->b[13], guid->b[14], guid->b[15]);
awilliam@9496 288 return out;
awilliam@9496 289 }
awilliam@9496 290
awilliam@9496 291 extern void efi_init (void);
awilliam@9496 292 extern void *efi_get_pal_addr (void);
awilliam@9496 293 extern void efi_map_pal_code (void);
awilliam@9496 294 extern void efi_map_memmap(void);
awilliam@9496 295 extern void efi_memmap_walk (efi_freemem_callback_t callback, void *arg);
awilliam@9496 296 extern void efi_gettimeofday (struct timespec *ts);
awilliam@9496 297 extern void efi_enter_virtual_mode (void); /* switch EFI to virtual mode, if possible */
awilliam@9496 298 extern u64 efi_get_iobase (void);
awilliam@9496 299 extern u32 efi_mem_type (unsigned long phys_addr);
awilliam@9496 300 extern u64 efi_mem_attributes (unsigned long phys_addr);
awilliam@9496 301 extern int __init efi_uart_console_only (void);
awilliam@9496 302 extern void efi_initialize_iomem_resources(struct resource *code_resource,
awilliam@9496 303 struct resource *data_resource);
awilliam@9496 304 extern unsigned long __init efi_get_time(void);
awilliam@9496 305 extern int __init efi_set_rtc_mmss(unsigned long nowtime);
awilliam@9496 306 extern struct efi_memory_map memmap;
awilliam@9496 307
awilliam@9496 308 /**
awilliam@9496 309 * efi_range_is_wc - check the WC bit on an address range
awilliam@9496 310 * @start: starting kvirt address
awilliam@9496 311 * @len: length of range
awilliam@9496 312 *
awilliam@9496 313 * Consult the EFI memory map and make sure it's ok to set this range WC.
awilliam@9496 314 * Returns true or false.
awilliam@9496 315 */
awilliam@9496 316 static inline int efi_range_is_wc(unsigned long start, unsigned long len)
awilliam@9496 317 {
awilliam@9496 318 unsigned long i;
awilliam@9496 319
awilliam@9496 320 for (i = 0; i < len; i += (1UL << EFI_PAGE_SHIFT)) {
awilliam@9496 321 unsigned long paddr = __pa(start + i);
awilliam@9496 322 if (!(efi_mem_attributes(paddr) & EFI_MEMORY_WC))
awilliam@9496 323 return 0;
awilliam@9496 324 }
awilliam@9496 325 /* The range checked out */
awilliam@9496 326 return 1;
awilliam@9496 327 }
awilliam@9496 328
awilliam@9496 329 #ifdef CONFIG_EFI_PCDP
awilliam@9496 330 extern int __init efi_setup_pcdp_console(char *);
awilliam@9496 331 #endif
awilliam@9496 332
awilliam@9496 333 /*
awilliam@9496 334 * We play games with efi_enabled so that the compiler will, if possible, remove
awilliam@9496 335 * EFI-related code altogether.
awilliam@9496 336 */
awilliam@9496 337 #ifdef CONFIG_EFI
awilliam@9496 338 # ifdef CONFIG_X86
awilliam@9496 339 extern int efi_enabled;
awilliam@9496 340 # else
awilliam@9496 341 # define efi_enabled 1
awilliam@9496 342 # endif
awilliam@9496 343 #else
awilliam@9496 344 # define efi_enabled 0
awilliam@9496 345 #endif
awilliam@9496 346
awilliam@9496 347 /*
awilliam@9496 348 * Variable Attributes
awilliam@9496 349 */
awilliam@9496 350 #define EFI_VARIABLE_NON_VOLATILE 0x0000000000000001
awilliam@9496 351 #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002
awilliam@9496 352 #define EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004
awilliam@9496 353
awilliam@9496 354 /*
awilliam@9496 355 * EFI Device Path information
awilliam@9496 356 */
awilliam@9496 357 #define EFI_DEV_HW 0x01
awilliam@9496 358 #define EFI_DEV_PCI 1
awilliam@9496 359 #define EFI_DEV_PCCARD 2
awilliam@9496 360 #define EFI_DEV_MEM_MAPPED 3
awilliam@9496 361 #define EFI_DEV_VENDOR 4
awilliam@9496 362 #define EFI_DEV_CONTROLLER 5
awilliam@9496 363 #define EFI_DEV_ACPI 0x02
awilliam@9496 364 #define EFI_DEV_BASIC_ACPI 1
awilliam@9496 365 #define EFI_DEV_EXPANDED_ACPI 2
awilliam@9496 366 #define EFI_DEV_MSG 0x03
awilliam@9496 367 #define EFI_DEV_MSG_ATAPI 1
awilliam@9496 368 #define EFI_DEV_MSG_SCSI 2
awilliam@9496 369 #define EFI_DEV_MSG_FC 3
awilliam@9496 370 #define EFI_DEV_MSG_1394 4
awilliam@9496 371 #define EFI_DEV_MSG_USB 5
awilliam@9496 372 #define EFI_DEV_MSG_USB_CLASS 15
awilliam@9496 373 #define EFI_DEV_MSG_I20 6
awilliam@9496 374 #define EFI_DEV_MSG_MAC 11
awilliam@9496 375 #define EFI_DEV_MSG_IPV4 12
awilliam@9496 376 #define EFI_DEV_MSG_IPV6 13
awilliam@9496 377 #define EFI_DEV_MSG_INFINIBAND 9
awilliam@9496 378 #define EFI_DEV_MSG_UART 14
awilliam@9496 379 #define EFI_DEV_MSG_VENDOR 10
awilliam@9496 380 #define EFI_DEV_MEDIA 0x04
awilliam@9496 381 #define EFI_DEV_MEDIA_HARD_DRIVE 1
awilliam@9496 382 #define EFI_DEV_MEDIA_CDROM 2
awilliam@9496 383 #define EFI_DEV_MEDIA_VENDOR 3
awilliam@9496 384 #define EFI_DEV_MEDIA_FILE 4
awilliam@9496 385 #define EFI_DEV_MEDIA_PROTOCOL 5
awilliam@9496 386 #define EFI_DEV_BIOS_BOOT 0x05
awilliam@9496 387 #define EFI_DEV_END_PATH 0x7F
awilliam@9496 388 #define EFI_DEV_END_PATH2 0xFF
awilliam@9496 389 #define EFI_DEV_END_INSTANCE 0x01
awilliam@9496 390 #define EFI_DEV_END_ENTIRE 0xFF
awilliam@9496 391
awilliam@9496 392 struct efi_generic_dev_path {
awilliam@9496 393 u8 type;
awilliam@9496 394 u8 sub_type;
awilliam@9496 395 u16 length;
awilliam@9496 396 } __attribute ((packed));
awilliam@9496 397
awilliam@9496 398 #endif /* _LINUX_EFI_H */