diff options
author | Simon Glass <sjg@chromium.org> | 2023-07-30 11:16:01 -0600 |
---|---|---|
committer | Bin Meng <bmeng.cn@gmail.com> | 2023-08-09 23:31:11 +0800 |
commit | ea6eef27caba27f8b92b13dda123623d59947ece (patch) | |
tree | cee59b412893f47800aace4a50eaaf8f0ded1fca | |
parent | d5a3f14c23edb124babeb9a01f543f2ab3a7e14f (diff) | |
download | u-boot-ea6eef27caba27f8b92b13dda123623d59947ece.zip u-boot-ea6eef27caba27f8b92b13dda123623d59947ece.tar.gz u-boot-ea6eef27caba27f8b92b13dda123623d59947ece.tar.bz2 |
x86: Run QEMU machine setup in SPL
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
-rw-r--r-- | arch/x86/cpu/qemu/qemu.c | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/qemu.h | 14 | ||||
-rw-r--r-- | arch/x86/lib/spl.c | 3 |
3 files changed, 18 insertions, 1 deletions
diff --git a/arch/x86/cpu/qemu/qemu.c b/arch/x86/cpu/qemu/qemu.c index 274978c0..7041455 100644 --- a/arch/x86/cpu/qemu/qemu.c +++ b/arch/x86/cpu/qemu/qemu.c @@ -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 index 0000000..f1e95ff --- /dev/null +++ b/arch/x86/include/asm/qemu.h @@ -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 diff --git a/arch/x86/lib/spl.c b/arch/x86/lib/spl.c index 55c0615..f99df08 100644 --- a/arch/x86/lib/spl.c +++ b/arch/x86/lib/spl.c @@ -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; |