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 <common.h>
13 #include <linux/compiler.h>
14 #include <libfdt.h>
15 #include <asm/arch/tables.h>
16 
17 /* Allow a maximum of 16 memory range definitions. */
18 #define SYSINFO_MAX_MEM_RANGES 16
19 /* Allow a maximum of 8 GPIOs */
20 #define SYSINFO_MAX_GPIOS 8
21 
22 struct sysinfo_t {
23 	int n_memranges;
24 	struct memrange {
25 		unsigned long long base;
26 		unsigned long long size;
27 		unsigned int type;
28 	} memrange[SYSINFO_MAX_MEM_RANGES];
29 
30 	u32 cmos_range_start;
31 	u32 cmos_range_end;
32 	u32 cmos_checksum_location;
33 	u32 vbnv_start;
34 	u32 vbnv_size;
35 
36 	char *version;
37 	char *extra_version;
38 	char *build;
39 	char *compile_time;
40 	char *compile_by;
41 	char *compile_host;
42 	char *compile_domain;
43 	char *compiler;
44 	char *linker;
45 	char *assembler;
46 
47 	struct cb_framebuffer *framebuffer;
48 
49 	int num_gpios;
50 	struct cb_gpio gpios[SYSINFO_MAX_GPIOS];
51 
52 	void	*vdat_addr;
53 	u32	vdat_size;
54 	void	*tstamp_table;
55 	void	*cbmem_cons;
56 
57 	struct cb_serial *serial;
58 };
59 
60 extern struct sysinfo_t lib_sysinfo;
61 
62 #endif
63