x86: Run QEMU machine setup in SPL
authorSimon Glass <sjg@chromium.org>
Sun, 30 Jul 2023 17:16:01 +0000 (11:16 -0600)
committerBin Meng <bmeng.cn@gmail.com>
Wed, 9 Aug 2023 15:31:11 +0000 (23:31 +0800)
Call the hardware-init function from QEMU from SPL. This allows the
video BIOS to operate correctly.

Create an x86-wide qemu.h header to avoid having to #ifdef the header
in spl.c

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com> # qemu-x86_64
arch/x86/cpu/qemu/qemu.c
arch/x86/include/asm/qemu.h [new file with mode: 0644]
arch/x86/lib/spl.c

index 274978c..7041455 100644 (file)
@@ -48,7 +48,7 @@ static void enable_pm_ich9(void)
        pci_write_config32(ICH9_PM, PMBA, CONFIG_ACPI_PM1_BASE | 1);
 }
 
-static void qemu_chipset_init(void)
+void qemu_chipset_init(void)
 {
        u16 device, xbcs;
        int pam, i;
diff --git a/arch/x86/include/asm/qemu.h b/arch/x86/include/asm/qemu.h
new file mode 100644 (file)
index 0000000..f1e95ff
--- /dev/null
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Generic QEMU header
+ *
+ * Copyright 2023 Google LLC
+ */
+
+#ifndef __QEMU_H
+#define __QEMU_H
+
+/* set up the chipset for QEMU so that video can be used */
+void qemu_chipset_init(void);
+
+#endif
index 55c0615..f99df08 100644 (file)
@@ -27,6 +27,7 @@
 #include <asm/mtrr.h>
 #include <asm/pci.h>
 #include <asm/processor.h>
+#include <asm/qemu.h>
 #include <asm/spl.h>
 #include <asm-generic/sections.h>
 
@@ -291,6 +292,8 @@ void spl_board_init(void)
 #ifndef CONFIG_TPL
        preloader_console_init();
 #endif
+       if (IS_ENABLED(CONFIG_QEMU))
+               qemu_chipset_init();
 
        if (CONFIG_IS_ENABLED(VIDEO)) {
                struct udevice *dev;