diff options
Diffstat (limited to 'payloads/libpayload/arch')
-rw-r--r-- | payloads/libpayload/arch/x86/sysinfo.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/payloads/libpayload/arch/x86/sysinfo.c b/payloads/libpayload/arch/x86/sysinfo.c index c3336b81e4..ddd6550e08 100644 --- a/payloads/libpayload/arch/x86/sysinfo.c +++ b/payloads/libpayload/arch/x86/sysinfo.c @@ -32,12 +32,14 @@ #include <coreboot_tables.h> #include <multiboot_tables.h> +#define CPU_KHZ_DEFAULT 200 + /** * This is a global structure that is used through the library - we set it * up initially with some dummy values - hopefully they will be overridden. */ struct sysinfo_t lib_sysinfo = { - .cpu_khz = 200, + .cpu_khz = CPU_KHZ_DEFAULT, #if IS_ENABLED(CONFIG_LP_SERIAL_CONSOLE) .ser_ioport = CONFIG_LP_SERIAL_IOBASE, #else @@ -49,9 +51,6 @@ int lib_get_sysinfo(void) { int ret; - /* Get the CPU speed (for delays). */ - lib_sysinfo.cpu_khz = get_cpu_speed(); - #if IS_ENABLED(CONFIG_LP_MULTIBOOT) /* Get the information from the multiboot tables, * if they exist */ @@ -63,6 +62,10 @@ int lib_get_sysinfo(void) ret = get_coreboot_info(&lib_sysinfo); + /* Get the CPU speed (for delays) if not set from the default value. */ + if (lib_sysinfo.cpu_khz == CPU_KHZ_DEFAULT) + lib_sysinfo.cpu_khz = get_cpu_speed(); + if (!lib_sysinfo.n_memranges) { /* If we can't get a good memory range, use the default. */ lib_sysinfo.n_memranges = 2; |