1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /*
3  * This file is part of the libpayload project.
4  *
5  * Copyright (C) 2008 Advanced Micro Devices, Inc.
6  */
7 
8 #ifndef _COREBOOT_SYSINFO_H
9 #define _COREBOOT_SYSINFO_H
10 
11 #include <asm/coreboot_tables.h>
12 
13 /* Maximum number of memory range definitions */
14 #define SYSINFO_MAX_MEM_RANGES	32
15 /* Allow a maximum of 8 GPIOs */
16 #define SYSINFO_MAX_GPIOS	8
17 
18 struct sysinfo_t {
19 	int n_memranges;
20 	struct memrange {
21 		unsigned long long base;
22 		unsigned long long size;
23 		unsigned int type;
24 	} memrange[SYSINFO_MAX_MEM_RANGES];
25 
26 	u32 cmos_range_start;
27 	u32 cmos_range_end;
28 	u32 cmos_checksum_location;
29 	u32 vbnv_start;
30 	u32 vbnv_size;
31 
32 	char *version;
33 	char *extra_version;
34 	char *build;
35 	char *compile_time;
36 	char *compile_by;
37 	char *compile_host;
38 	char *compile_domain;
39 	char *compiler;
40 	char *linker;
41 	char *assembler;
42 
43 	struct cb_framebuffer *framebuffer;
44 
45 	int num_gpios;
46 	struct cb_gpio gpios[SYSINFO_MAX_GPIOS];
47 
48 	void	*vdat_addr;
49 	u32	vdat_size;
50 	void	*tstamp_table;
51 	void	*cbmem_cons;
52 	u64 smbios_start;
53 	u32 smbios_size;
54 
55 	struct cb_serial *serial;
56 };
57 
58 extern struct sysinfo_t lib_sysinfo;
59 
60 int get_coreboot_info(struct sysinfo_t *info);
61 
62 #endif
63