x86: Move coreboot sysinfo parsing into generic x86 code
authorSimon Glass <sjg@chromium.org>
Mon, 15 Mar 2021 05:00:21 +0000 (18:00 +1300)
committerSimon Glass <sjg@chromium.org>
Sat, 27 Mar 2021 00:59:59 +0000 (13:59 +1300)
It is useful to be able to parse coreboot tables on any x86 build which is
booted from coreboot. Add a new Kconfig option to enable this feature and
move the code so it can be used on any board, if enabled.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/x86/Kconfig
arch/x86/cpu/coreboot/Makefile
arch/x86/lib/Makefile
arch/x86/lib/coreboot/Makefile [new file with mode: 0644]
arch/x86/lib/coreboot/cb_sysinfo.c [moved from arch/x86/cpu/coreboot/tables.c with 100% similarity]

index 5b089af..970bdff 100644 (file)
@@ -1047,4 +1047,25 @@ config INTEL_GMA_SWSMISCI
 
 endif # INTEL_SOC
 
+config COREBOOT_SYSINFO
+       bool "Support reading coreboot sysinfo"
+       default y if SYS_COREBOOT
+       help
+         Select this option to read the coreboot sysinfo table on start-up,
+         if present. This is written by coreboot before it exits and provides
+         various pieces of information about the running system, including
+         display, memory and build information. It is stored in
+         struct sysinfo_t after parsing by get_coreboot_info().
+
+config SPL_COREBOOT_SYSINFO
+       bool "Support reading coreboot sysinfo"
+       depends on SPL
+       default y if COREBOOT_SYSINFO
+       help
+         Select this option to read the coreboot sysinfo table in SPL,
+         if present. This is written by coreboot before it exits and provides
+         various pieces of information about the running system, including
+         display, memory and build information. It is stored in
+         struct sysinfo_t after parsing by get_coreboot_info().
+
 endmenu
index 605f903..a6cdb9a 100644 (file)
@@ -20,5 +20,4 @@ else
 obj-y += sdram.o
 endif
 obj-y += coreboot.o
-obj-y += tables.o
 obj-y += timestamp.o
index 1bcbb49..65d9b3b 100644 (file)
@@ -15,6 +15,7 @@ ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
 endif
 obj-y  += cmd_boot.o
+obj-$(CONFIG_$(SPL_)COREBOOT_SYSINFO)  += coreboot/
 obj-$(CONFIG_SEABIOS) += coreboot_table.o
 obj-y  += early_cmos.o
 obj-y  += e820.o
diff --git a/arch/x86/lib/coreboot/Makefile b/arch/x86/lib/coreboot/Makefile
new file mode 100644 (file)
index 0000000..b5250d9
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier:     GPL-2.0+
+#
+# Copyright 2021 Google LLC
+#
+
+obj-y += cb_sysinfo.o