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