xref: /freebsd/stand/kboot/include/efi.h (revision 92ad79ec33fb5caf9a79c0bd8b33697b34c8e26d)
1136d2dc0SWarner Losh /*-
2136d2dc0SWarner Losh  * Copyright (c) 2024, Netflix, Inc.
3136d2dc0SWarner Losh  *
4136d2dc0SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
5136d2dc0SWarner Losh  */
6136d2dc0SWarner Losh 
7136d2dc0SWarner Losh #pragma once
8136d2dc0SWarner Losh 
9136d2dc0SWarner Losh #include <sys/efi.h>
10136d2dc0SWarner Losh #include <machine/metadata.h>
11136d2dc0SWarner Losh 
12136d2dc0SWarner Losh /* Note, we mix and match FreeBSD types and EFI standard defined types */
13136d2dc0SWarner Losh 
14136d2dc0SWarner Losh typedef void (*efi_map_entry_cb)(struct efi_md *, void *argp);
15136d2dc0SWarner Losh 
16*92ad79ecSWarner Losh struct preloaded_file;
17*92ad79ecSWarner Losh 
18*92ad79ecSWarner Losh bool efi_read_from_pa(uint64_t pa, uint32_t map_size, uint32_t desc_size, uint32_t vers);
19*92ad79ecSWarner Losh void efi_read_from_sysfs(void);
20*92ad79ecSWarner Losh void efi_set_systbl(uint64_t tbl);
21136d2dc0SWarner Losh void foreach_efi_map_entry(struct efi_map_header *efihdr, efi_map_entry_cb cb, void *argp);
22136d2dc0SWarner Losh void print_efi_map(struct efi_map_header *efihdr);
23*92ad79ecSWarner Losh void efi_bi_loadsmap(struct preloaded_file *kfp);
24*92ad79ecSWarner Losh 
25*92ad79ecSWarner Losh extern uint32_t efi_map_size;
26*92ad79ecSWarner Losh extern vm_paddr_t efi_map_phys_src;	/* From DTB */
27*92ad79ecSWarner Losh extern vm_paddr_t efi_map_phys_dst;	/* From our memory map metadata module */
28