coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
util.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef FSP1_1_UTIL_H
4 #define FSP1_1_UTIL_H
5 
6 #include <arch/cpu.h>
7 #include <fsp/api.h>
8 /* Current users expect to get the SoC's FSP definitions by including util.h. */
9 #include <fsp/soc_binding.h>
10 #include <program_loading.h>
11 #include <commonlib/region.h>
12 
13 /* find_fsp() should only be called from assembly code. */
14 FSP_INFO_HEADER *find_fsp(uintptr_t fsp_base_address);
15 /* Set FSP's runtime information. */
16 void fsp_set_runtime(FSP_INFO_HEADER *fih, void *hob_list);
17 /* Use a new FSP_INFO_HEADER at runtime. */
18 void fsp_update_fih(FSP_INFO_HEADER *fih);
19 /* fsp_get_fih() is only valid after calling fsp_set_runtime(). */
20 FSP_INFO_HEADER *fsp_get_fih(void);
21 /* fsp_get_hob_list() is only valid after calling fsp_set_runtime(). */
22 void *fsp_get_hob_list(void);
23 void fsp_early_init(FSP_INFO_HEADER *fsp_info);
24 void fsp_notify(u32 phase);
25 void print_hob_type_structure(u16 hob_type, void *hob_list_ptr);
26 void print_fsp_info(FSP_INFO_HEADER *fsp_header);
27 void *get_resource_hob(const EFI_GUID *guid, const void *hob_start);
28 void fsp_display_upd_value(const char *name, uint32_t size, uint64_t old,
29  uint64_t new);
30 void report_fsp_output(void);
31 
32 /* Return version of FSP associated with fih. */
33 static inline uint32_t fsp_version(FSP_INFO_HEADER *fih)
34 {
35  return fih->ImageRevision;
36 }
37 
38 /*
39  * Relocate FSP entire binary into ram. Returns < 0 on error, 0 on success.
40  * The CBFS file name of the FSP source and the relocation information
41  * is encoded in a struct prog with its entry point set to the FSP info header.
42  */
43 int fsp_relocate(struct prog *fsp_relocd);
44 
45 /* Additional HOB types not included in the FSP:
46  * #define EFI_HOB_TYPE_HANDOFF 0x0001
47  * #define EFI_HOB_TYPE_MEMORY_ALLOCATION 0x0002
48  * #define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR 0x0003
49  * #define EFI_HOB_TYPE_GUID_EXTENSION 0x0004
50  * #define EFI_HOB_TYPE_FV 0x0005
51  * #define EFI_HOB_TYPE_CPU 0x0006
52  * #define EFI_HOB_TYPE_MEMORY_POOL 0x0007
53  * #define EFI_HOB_TYPE_CV 0x0008
54  * #define EFI_HOB_TYPE_UNUSED 0xFFFE
55  * #define EFI_HOB_TYPE_END_OF_HOB_LIST 0xffff
56  */
57 #define EFI_HOB_TYPE_HANDOFF 0x0001
58 #define EFI_HOB_TYPE_MEMORY_POOL 0x0007
59 
60 /* The offset in bytes from the start of the info structure */
61 #define FSP_IMAGE_SIG_LOC 0
62 #define FSP_IMAGE_ID_LOC 16
63 #define FSP_IMAGE_BASE_LOC 28
64 #define FSP_IMAGE_ATTRIBUTE_LOC 32
65 #define GRAPHICS_SUPPORT_BIT (1 << 0)
66 
67 #define ERROR_NO_FV_SIG 1
68 #define ERROR_NO_FFS_GUID 2
69 #define ERROR_NO_INFO_HEADER 3
70 #define ERROR_IMAGEBASE_MISMATCH 4
71 #define ERROR_INFO_HEAD_SIG_MISMATCH 5
72 #define ERROR_FSP_SIG_MISMATCH 6
73 #define ERROR_FSP_REV_MISMATCH 7
74 
75 #if ENV_RAMSTAGE
76 extern void *FspHobListPtr;
77 #endif
78 
79 void *get_hob_list(void);
80 void *get_guid_hob(const EFI_GUID *guid, const void *hob_start);
81 
83 
84 #endif /* FSP1_1_UTIL_H */
const char * name
Definition: mmu.c:92
#define asmlinkage
Definition: cpu.h:8
void fsp_set_runtime(FSP_INFO_HEADER *fih, void *hob_list)
Definition: fsp_util.c:177
void report_fsp_output(void)
Definition: fsp_report.c:11
void fsp_early_init(FSP_INFO_HEADER *fsp_info)
void print_fsp_info(FSP_INFO_HEADER *fsp_header)
Definition: fsp_util.c:74
void * get_hob_list(void)
Definition: hob.c:16
void print_hob_type_structure(u16 hob_type, void *hob_list_ptr)
Definition: hob.c:235
void fsp_notify(u32 phase)
Definition: fsp_util.c:114
void * get_resource_hob(const EFI_GUID *guid, const void *hob_start)
Definition: hob.c:65
void fsp_display_upd_value(const char *name, uint32_t size, uint64_t old, uint64_t new)
Definition: fsp_util.c:226
FSP_INFO_HEADER * find_fsp(uintptr_t fsp_base_address)
Definition: fsp_util.c:12
static uint32_t fsp_version(FSP_INFO_HEADER *fih)
Definition: util.h:33
FSP_INFO_HEADER * fsp_get_fih(void)
Definition: fsp_util.c:190
void * get_guid_hob(const EFI_GUID *guid, const void *hob_start)
Definition: hob.c:48
void fsp_update_fih(FSP_INFO_HEADER *fih)
Definition: fsp_util.c:214
int fsp_relocate(struct prog *fsp_relocd)
Definition: fsp_relocate.c:9
void * fsp_get_hob_list(void)
Definition: fsp_util.c:202
asmlinkage void chipset_teardown_car_main(void)
Definition: temp_ram_exit.c:8
hob_type
Definition: util.h:90
unsigned int uint32_t
Definition: stdint.h:14
uint32_t u32
Definition: stdint.h:51
unsigned long uintptr_t
Definition: stdint.h:21
uint16_t u16
Definition: stdint.h:48
unsigned long long uint64_t
Definition: stdint.h:17