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