diff options
Diffstat (limited to 'include/linux/efi.h')
| -rw-r--r-- | include/linux/efi.h | 58 |
1 files changed, 42 insertions, 16 deletions
diff --git a/include/linux/efi.h b/include/linux/efi.h index 5f8f176154f7..bc5687d0f315 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h | |||
| @@ -39,6 +39,8 @@ | |||
| 39 | typedef unsigned long efi_status_t; | 39 | typedef unsigned long efi_status_t; |
| 40 | typedef u8 efi_bool_t; | 40 | typedef u8 efi_bool_t; |
| 41 | typedef u16 efi_char16_t; /* UNICODE character */ | 41 | typedef u16 efi_char16_t; /* UNICODE character */ |
| 42 | typedef u64 efi_physical_addr_t; | ||
| 43 | typedef void *efi_handle_t; | ||
| 42 | 44 | ||
| 43 | 45 | ||
| 44 | typedef struct { | 46 | typedef struct { |
| @@ -96,6 +98,7 @@ typedef struct { | |||
| 96 | #define EFI_MEMORY_DESCRIPTOR_VERSION 1 | 98 | #define EFI_MEMORY_DESCRIPTOR_VERSION 1 |
| 97 | 99 | ||
| 98 | #define EFI_PAGE_SHIFT 12 | 100 | #define EFI_PAGE_SHIFT 12 |
| 101 | #define EFI_PAGE_SIZE (1UL << EFI_PAGE_SHIFT) | ||
| 99 | 102 | ||
| 100 | typedef struct { | 103 | typedef struct { |
| 101 | u32 type; | 104 | u32 type; |
| @@ -157,11 +160,13 @@ typedef struct { | |||
| 157 | efi_table_hdr_t hdr; | 160 | efi_table_hdr_t hdr; |
| 158 | void *raise_tpl; | 161 | void *raise_tpl; |
| 159 | void *restore_tpl; | 162 | void *restore_tpl; |
| 160 | void *allocate_pages; | 163 | efi_status_t (*allocate_pages)(int, int, unsigned long, |
| 161 | void *free_pages; | 164 | efi_physical_addr_t *); |
| 162 | void *get_memory_map; | 165 | efi_status_t (*free_pages)(efi_physical_addr_t, unsigned long); |
| 163 | void *allocate_pool; | 166 | efi_status_t (*get_memory_map)(unsigned long *, void *, unsigned long *, |
| 164 | void *free_pool; | 167 | unsigned long *, u32 *); |
| 168 | efi_status_t (*allocate_pool)(int, unsigned long, void **); | ||
| 169 | efi_status_t (*free_pool)(void *); | ||
| 165 | void *create_event; | 170 | void *create_event; |
| 166 | void *set_timer; | 171 | void *set_timer; |
| 167 | void *wait_for_event; | 172 | void *wait_for_event; |
| @@ -171,7 +176,7 @@ typedef struct { | |||
| 171 | void *install_protocol_interface; | 176 | void *install_protocol_interface; |
| 172 | void *reinstall_protocol_interface; | 177 | void *reinstall_protocol_interface; |
| 173 | void *uninstall_protocol_interface; | 178 | void *uninstall_protocol_interface; |
| 174 | void *handle_protocol; | 179 | efi_status_t (*handle_protocol)(efi_handle_t, efi_guid_t *, void **); |
| 175 | void *__reserved; | 180 | void *__reserved; |
| 176 | void *register_protocol_notify; | 181 | void *register_protocol_notify; |
| 177 | void *locate_handle; | 182 | void *locate_handle; |
| @@ -181,7 +186,7 @@ typedef struct { | |||
| 181 | void *start_image; | 186 | void *start_image; |
| 182 | void *exit; | 187 | void *exit; |
| 183 | void *unload_image; | 188 | void *unload_image; |
| 184 | void *exit_boot_services; | 189 | efi_status_t (*exit_boot_services)(efi_handle_t, unsigned long); |
| 185 | void *get_next_monotonic_count; | 190 | void *get_next_monotonic_count; |
| 186 | void *stall; | 191 | void *stall; |
| 187 | void *set_watchdog_timer; | 192 | void *set_watchdog_timer; |
| @@ -404,6 +409,12 @@ typedef struct { | |||
| 404 | unsigned long table; | 409 | unsigned long table; |
| 405 | } efi_config_table_t; | 410 | } efi_config_table_t; |
| 406 | 411 | ||
| 412 | typedef struct { | ||
| 413 | efi_guid_t guid; | ||
| 414 | const char *name; | ||
| 415 | unsigned long *ptr; | ||
| 416 | } efi_config_table_type_t; | ||
| 417 | |||
| 407 | #define EFI_SYSTEM_TABLE_SIGNATURE ((u64)0x5453595320494249ULL) | 418 | #define EFI_SYSTEM_TABLE_SIGNATURE ((u64)0x5453595320494249ULL) |
| 408 | 419 | ||
| 409 | #define EFI_2_30_SYSTEM_TABLE_REVISION ((2 << 16) | (30)) | 420 | #define EFI_2_30_SYSTEM_TABLE_REVISION ((2 << 16) | (30)) |
| @@ -488,10 +499,6 @@ typedef struct { | |||
| 488 | unsigned long unload; | 499 | unsigned long unload; |
| 489 | } efi_loaded_image_t; | 500 | } efi_loaded_image_t; |
| 490 | 501 | ||
| 491 | typedef struct { | ||
| 492 | u64 revision; | ||
| 493 | void *open_volume; | ||
| 494 | } efi_file_io_interface_t; | ||
| 495 | 502 | ||
| 496 | typedef struct { | 503 | typedef struct { |
| 497 | u64 size; | 504 | u64 size; |
| @@ -504,20 +511,30 @@ typedef struct { | |||
| 504 | efi_char16_t filename[1]; | 511 | efi_char16_t filename[1]; |
| 505 | } efi_file_info_t; | 512 | } efi_file_info_t; |
| 506 | 513 | ||
| 507 | typedef struct { | 514 | typedef struct _efi_file_handle { |
| 508 | u64 revision; | 515 | u64 revision; |
| 509 | void *open; | 516 | efi_status_t (*open)(struct _efi_file_handle *, |
| 510 | void *close; | 517 | struct _efi_file_handle **, |
| 518 | efi_char16_t *, u64, u64); | ||
| 519 | efi_status_t (*close)(struct _efi_file_handle *); | ||
| 511 | void *delete; | 520 | void *delete; |
| 512 | void *read; | 521 | efi_status_t (*read)(struct _efi_file_handle *, unsigned long *, |
| 522 | void *); | ||
| 513 | void *write; | 523 | void *write; |
| 514 | void *get_position; | 524 | void *get_position; |
| 515 | void *set_position; | 525 | void *set_position; |
| 516 | void *get_info; | 526 | efi_status_t (*get_info)(struct _efi_file_handle *, efi_guid_t *, |
| 527 | unsigned long *, void *); | ||
| 517 | void *set_info; | 528 | void *set_info; |
| 518 | void *flush; | 529 | void *flush; |
| 519 | } efi_file_handle_t; | 530 | } efi_file_handle_t; |
| 520 | 531 | ||
| 532 | typedef struct _efi_file_io_interface { | ||
| 533 | u64 revision; | ||
| 534 | int (*open_volume)(struct _efi_file_io_interface *, | ||
| 535 | efi_file_handle_t **); | ||
| 536 | } efi_file_io_interface_t; | ||
| 537 | |||
| 521 | #define EFI_FILE_MODE_READ 0x0000000000000001 | 538 | #define EFI_FILE_MODE_READ 0x0000000000000001 |
| 522 | #define EFI_FILE_MODE_WRITE 0x0000000000000002 | 539 | #define EFI_FILE_MODE_WRITE 0x0000000000000002 |
| 523 | #define EFI_FILE_MODE_CREATE 0x8000000000000000 | 540 | #define EFI_FILE_MODE_CREATE 0x8000000000000000 |
| @@ -552,6 +569,7 @@ extern struct efi { | |||
| 552 | efi_get_next_high_mono_count_t *get_next_high_mono_count; | 569 | efi_get_next_high_mono_count_t *get_next_high_mono_count; |
| 553 | efi_reset_system_t *reset_system; | 570 | efi_reset_system_t *reset_system; |
| 554 | efi_set_virtual_address_map_t *set_virtual_address_map; | 571 | efi_set_virtual_address_map_t *set_virtual_address_map; |
| 572 | struct efi_memory_map *memmap; | ||
| 555 | } efi; | 573 | } efi; |
| 556 | 574 | ||
| 557 | static inline int | 575 | static inline int |
| @@ -587,6 +605,7 @@ static inline efi_status_t efi_query_variable_store(u32 attributes, unsigned lon | |||
| 587 | } | 605 | } |
| 588 | #endif | 606 | #endif |
| 589 | extern void __iomem *efi_lookup_mapped_addr(u64 phys_addr); | 607 | extern void __iomem *efi_lookup_mapped_addr(u64 phys_addr); |
| 608 | extern int efi_config_init(efi_config_table_type_t *arch_tables); | ||
| 590 | extern u64 efi_get_iobase (void); | 609 | extern u64 efi_get_iobase (void); |
| 591 | extern u32 efi_mem_type (unsigned long phys_addr); | 610 | extern u32 efi_mem_type (unsigned long phys_addr); |
| 592 | extern u64 efi_mem_attributes (unsigned long phys_addr); | 611 | extern u64 efi_mem_attributes (unsigned long phys_addr); |
| @@ -784,6 +803,13 @@ struct efivar_entry { | |||
| 784 | struct kobject kobj; | 803 | struct kobject kobj; |
| 785 | }; | 804 | }; |
| 786 | 805 | ||
| 806 | |||
| 807 | struct efi_simple_text_output_protocol { | ||
| 808 | void *reset; | ||
| 809 | efi_status_t (*output_string)(void *, void *); | ||
| 810 | void *test_string; | ||
| 811 | }; | ||
| 812 | |||
| 787 | extern struct list_head efivar_sysfs_list; | 813 | extern struct list_head efivar_sysfs_list; |
| 788 | 814 | ||
| 789 | static inline void | 815 | static inline void |
