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