From 54d6c6b2ab58d87f1b7e1933b0475a78f10ffd23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20L=C3=B3pez?= Date: Mon, 16 Dec 2024 13:36:44 +0100 Subject: [PATCH] mb/qemu-i440fx: refactor fw_cfg logic as separate driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The fw_cfg device can be used by other qemu boards outside i440fx (and q35, which manually includes the code). Factor out the fw_cfg code as a separate driver that qemu mainboards can enable. Change-Id: I8c5c4cb5f5478abd21aab8e8d0b503db41d81d40 Signed-off-by: Carlos López Reviewed-on: https://review.coreboot.org/c/coreboot/+/85673 Reviewed-by: Nicholas Chin Tested-by: build bot (Jenkins) --- src/drivers/emulation/qemu/Kconfig | 6 ++++++ src/drivers/emulation/qemu/Makefile.mk | 6 ++++++ .../qemu-i440fx => drivers/emulation/qemu}/fw_cfg.c | 5 ++--- .../emulation/qemu-i440fx => include/device}/fw_cfg.h | 0 .../emulation/qemu-i440fx => include/device}/fw_cfg_if.h | 0 src/mainboard/emulation/qemu-i440fx/Kconfig | 1 + src/mainboard/emulation/qemu-i440fx/Makefile.mk | 1 - src/mainboard/emulation/qemu-i440fx/bootmode.c | 2 +- src/mainboard/emulation/qemu-i440fx/memmap.c | 2 +- src/mainboard/emulation/qemu-i440fx/northbridge.c | 5 ++--- src/mainboard/emulation/qemu-q35/Kconfig | 1 + src/mainboard/emulation/qemu-q35/Makefile.mk | 1 - src/mainboard/emulation/qemu-q35/acpi_tables.c | 2 +- src/mainboard/emulation/qemu-q35/cpu.c | 2 +- src/mainboard/emulation/qemu-q35/memmap.c | 2 +- 15 files changed, 23 insertions(+), 13 deletions(-) rename src/{mainboard/emulation/qemu-i440fx => drivers/emulation/qemu}/fw_cfg.c (99%) rename src/{mainboard/emulation/qemu-i440fx => include/device}/fw_cfg.h (100%) rename src/{mainboard/emulation/qemu-i440fx => include/device}/fw_cfg_if.h (100%) diff --git a/src/drivers/emulation/qemu/Kconfig b/src/drivers/emulation/qemu/Kconfig index 5b01ae785b..cab06948f2 100644 --- a/src/drivers/emulation/qemu/Kconfig +++ b/src/drivers/emulation/qemu/Kconfig @@ -35,3 +35,9 @@ config DRIVERS_EMULATION_QEMU_YRES default 600 depends on LINEAR_FRAMEBUFFER depends on DRIVERS_EMULATION_QEMU_BOCHS || DRIVERS_EMULATION_QEMU_CIRRUS + +config DRIVERS_EMULATION_QEMU_FW_CFG + bool "qemu fw_cfg" + default n + help + qemu fw_cfg driver diff --git a/src/drivers/emulation/qemu/Makefile.mk b/src/drivers/emulation/qemu/Makefile.mk index 619782fb1e..76bd864b0a 100644 --- a/src/drivers/emulation/qemu/Makefile.mk +++ b/src/drivers/emulation/qemu/Makefile.mk @@ -7,3 +7,9 @@ ramstage-$(CONFIG_CONSOLE_QEMU_DEBUGCON) += qemu_debugcon.c ramstage-$(CONFIG_DRIVERS_EMULATION_QEMU_BOCHS) += bochs.c ramstage-$(CONFIG_DRIVERS_EMULATION_QEMU_CIRRUS) += cirrus.c + +bootblock-$(CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG) += fw_cfg.c +romstage-$(CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG) += fw_cfg.c +verstage-$(CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG) += fw_cfg.c +postcar-$(CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG) += fw_cfg.c +ramstage-$(CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG) += fw_cfg.c diff --git a/src/mainboard/emulation/qemu-i440fx/fw_cfg.c b/src/drivers/emulation/qemu/fw_cfg.c similarity index 99% rename from src/mainboard/emulation/qemu-i440fx/fw_cfg.c rename to src/drivers/emulation/qemu/fw_cfg.c index ad664a6ee0..3725419e7b 100644 --- a/src/mainboard/emulation/qemu-i440fx/fw_cfg.c +++ b/src/drivers/emulation/qemu/fw_cfg.c @@ -8,9 +8,8 @@ #include #include #include - -#include "fw_cfg.h" -#include "fw_cfg_if.h" +#include +#include #define FW_CFG_PORT_CTL 0x0510 #define FW_CFG_PORT_DATA 0x0511 diff --git a/src/mainboard/emulation/qemu-i440fx/fw_cfg.h b/src/include/device/fw_cfg.h similarity index 100% rename from src/mainboard/emulation/qemu-i440fx/fw_cfg.h rename to src/include/device/fw_cfg.h diff --git a/src/mainboard/emulation/qemu-i440fx/fw_cfg_if.h b/src/include/device/fw_cfg_if.h similarity index 100% rename from src/mainboard/emulation/qemu-i440fx/fw_cfg_if.h rename to src/include/device/fw_cfg_if.h diff --git a/src/mainboard/emulation/qemu-i440fx/Kconfig b/src/mainboard/emulation/qemu-i440fx/Kconfig index 6d6181c5bb..e17e25dbf5 100644 --- a/src/mainboard/emulation/qemu-i440fx/Kconfig +++ b/src/mainboard/emulation/qemu-i440fx/Kconfig @@ -20,6 +20,7 @@ config BOARD_SPECIFIC_OPTIONS select BOOT_DEVICE_NOT_SPI_FLASH select BOOT_DEVICE_MEMORY_MAPPED select BOOT_DEVICE_SUPPORTS_WRITES + select DRIVERS_EMULATION_QEMU_FW_CFG config VBOOT select VBOOT_MUST_REQUEST_DISPLAY diff --git a/src/mainboard/emulation/qemu-i440fx/Makefile.mk b/src/mainboard/emulation/qemu-i440fx/Makefile.mk index 6ff2f73f11..c20f427474 100644 --- a/src/mainboard/emulation/qemu-i440fx/Makefile.mk +++ b/src/mainboard/emulation/qemu-i440fx/Makefile.mk @@ -9,5 +9,4 @@ ramstage-y += memmap.c ramstage-y += northbridge.c ramstage-y += rom_media.c -all-y += fw_cfg.c all-y += bootmode.c diff --git a/src/mainboard/emulation/qemu-i440fx/bootmode.c b/src/mainboard/emulation/qemu-i440fx/bootmode.c index 12990b2552..ce064788a6 100644 --- a/src/mainboard/emulation/qemu-i440fx/bootmode.c +++ b/src/mainboard/emulation/qemu-i440fx/bootmode.c @@ -2,7 +2,7 @@ #include #include -#include "fw_cfg.h" +#include /* * Enable recovery mode with fw_cfg option to qemu: diff --git a/src/mainboard/emulation/qemu-i440fx/memmap.c b/src/mainboard/emulation/qemu-i440fx/memmap.c index be730b7516..a8033f21fd 100644 --- a/src/mainboard/emulation/qemu-i440fx/memmap.c +++ b/src/mainboard/emulation/qemu-i440fx/memmap.c @@ -5,8 +5,8 @@ #include #include #include +#include #include "memory.h" -#include "fw_cfg.h" #define CMOS_ADDR_PORT 0x70 #define CMOS_DATA_PORT 0x71 diff --git a/src/mainboard/emulation/qemu-i440fx/northbridge.c b/src/mainboard/emulation/qemu-i440fx/northbridge.c index 609e389899..5c8636c8f0 100644 --- a/src/mainboard/emulation/qemu-i440fx/northbridge.c +++ b/src/mainboard/emulation/qemu-i440fx/northbridge.c @@ -9,15 +9,14 @@ #include #include #include +#include +#include #include #include #include #include #include "memory.h" -#include "fw_cfg.h" -#include "fw_cfg_if.h" - #include "acpi.h" static void qemu_reserve_ports(struct device *dev, unsigned int idx, diff --git a/src/mainboard/emulation/qemu-q35/Kconfig b/src/mainboard/emulation/qemu-q35/Kconfig index 70a7437fc8..854c0533c3 100644 --- a/src/mainboard/emulation/qemu-q35/Kconfig +++ b/src/mainboard/emulation/qemu-q35/Kconfig @@ -18,6 +18,7 @@ config BOARD_SPECIFIC_OPTIONS select BOOT_DEVICE_NOT_SPI_FLASH select BOOT_DEVICE_MEMORY_MAPPED select BOOT_DEVICE_SUPPORTS_WRITES + select DRIVERS_EMULATION_QEMU_FW_CFG config VBOOT select VBOOT_MUST_REQUEST_DISPLAY diff --git a/src/mainboard/emulation/qemu-q35/Makefile.mk b/src/mainboard/emulation/qemu-q35/Makefile.mk index c1619f5ede..fc85e642b8 100644 --- a/src/mainboard/emulation/qemu-q35/Makefile.mk +++ b/src/mainboard/emulation/qemu-q35/Makefile.mk @@ -16,7 +16,6 @@ ramstage-y += ../qemu-i440fx/rom_media.c ramstage-y += memmap.c ramstage-y += cpu.c -all-y += ../qemu-i440fx/fw_cfg.c all-y += ../qemu-i440fx/bootmode.c ramstage-$(CONFIG_CHROMEOS) += chromeos.c diff --git a/src/mainboard/emulation/qemu-q35/acpi_tables.c b/src/mainboard/emulation/qemu-q35/acpi_tables.c index e85ce659f6..c1c483da88 100644 --- a/src/mainboard/emulation/qemu-q35/acpi_tables.c +++ b/src/mainboard/emulation/qemu-q35/acpi_tables.c @@ -1,8 +1,8 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include +#include -#include "../qemu-i440fx/fw_cfg.h" #include "../qemu-i440fx/acpi.h" void mainboard_fill_fadt(acpi_fadt_t *fadt) diff --git a/src/mainboard/emulation/qemu-q35/cpu.c b/src/mainboard/emulation/qemu-q35/cpu.c index c57ec500fe..c30c833a50 100644 --- a/src/mainboard/emulation/qemu-q35/cpu.c +++ b/src/mainboard/emulation/qemu-q35/cpu.c @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/mainboard/emulation/qemu-q35/memmap.c b/src/mainboard/emulation/qemu-q35/memmap.c index d57b25c2e3..3e8da5ca08 100644 --- a/src/mainboard/emulation/qemu-q35/memmap.c +++ b/src/mainboard/emulation/qemu-q35/memmap.c @@ -5,9 +5,9 @@ #include #include #include +#include #include #include -#include #include #include "q35.h"