[PATCH 0/6] emulation: Restructure the Kconfig

From: Simon Glass <sjg@chromium.org> At present ARM and x86 use differently named symbols to mean similar things. For x86, board/emulation/Kconfig contains the targets, but ARM has them in a different file. While ARM uses ARCH_QEMU to mean QEMU, x86 uses VENDOR_EMULATION. This series adjusts the Kconfig for emulation targets on x86 and ARM, to improve consistency. A new arch-neutral MACH_QEMU is introduced. This is enabled for all ARM/x86 emulation targets. Furture work could add this for other archs too. Simon Glass (6): emulation: x86: Rename VENDOR_EMULATION to ARCH_QEMU_X86 arm: x86: Move Kconfig from arch/ to board/ arm: Move inclusion of board/emulation into board/ emulation: Move QFW drivers to drivers/qfw emulation: Rename the uclass file to qfw-uclass.c emulation: Move common qfw file in with other code arch/Kconfig | 2 + arch/arm/Kconfig | 4 -- arch/arm/mach-qemu/Kconfig | 72 --------------------- arch/x86/Kconfig | 15 ++++- arch/x86/cpu/qemu/Kconfig | 12 ---- board/emulation/Kconfig | 81 +++++++++++++++++++++++- board/emulation/qemu-x86/Kconfig | 1 - common/Makefile | 2 - drivers/Makefile | 1 + drivers/misc/Makefile | 8 --- drivers/qfw/Makefile | 13 ++++ drivers/{misc/qfw.c => qfw/qfw-uclass.c} | 0 {common => drivers/qfw}/qfw.c | 0 drivers/{misc => qfw}/qfw_acpi.c | 0 drivers/{misc => qfw}/qfw_mmio.c | 0 drivers/{misc => qfw}/qfw_pio.c | 0 drivers/{misc => qfw}/qfw_sandbox.c | 0 drivers/{misc => qfw}/qfw_smbios.c | 0 fs/Kconfig | 6 +- 19 files changed, 110 insertions(+), 107 deletions(-) create mode 100644 drivers/qfw/Makefile rename drivers/{misc/qfw.c => qfw/qfw-uclass.c} (100%) rename {common => drivers/qfw}/qfw.c (100%) rename drivers/{misc => qfw}/qfw_acpi.c (100%) rename drivers/{misc => qfw}/qfw_mmio.c (100%) rename drivers/{misc => qfw}/qfw_pio.c (100%) rename drivers/{misc => qfw}/qfw_sandbox.c (100%) rename drivers/{misc => qfw}/qfw_smbios.c (100%) -- 2.43.0 base-commit: 537e97237e5caff985c9de5b1651c0dcb19c4c9a branch: qemg

From: Simon Glass <sjg@chromium.org> This name matches the ARM name and 'emulation' is not really a vendor. Use ARCH_QEMU_X86 instead, moving that option from its existing location. In the few cases where both ARCH_QEMU_X86 and ARCH_QEMU_ARM are used together, use MACH_QEMU since it is simpler. Signed-off-by: Simon Glass <sjg@chromium.org> --- arch/x86/Kconfig | 14 ++++++++++++-- arch/x86/cpu/qemu/Kconfig | 12 ------------ board/emulation/Kconfig | 2 +- board/emulation/qemu-x86/Kconfig | 1 - fs/Kconfig | 6 +++--- 5 files changed, 16 insertions(+), 19 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index f06f7a9d4da..df1b706ccf7 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -59,7 +59,7 @@ config SPL_X86_64 choice prompt "Mainboard vendor" - default VENDOR_EMULATION + default ARCH_QEMU_X86 config VENDOR_ADVANTECH bool "advantech" @@ -77,8 +77,18 @@ config ARCH_EFI_X86 bool "efi" select ARCH_EFI -config VENDOR_EMULATION +config ARCH_QEMU_X86 bool "emulation" + select MACH_QEMU + select ARCH_EARLY_INIT_R + imply AHCI_PCI + imply E1000 + imply SCSI + imply SCSI_AHCI + imply SYS_NS16550 + imply USB + imply USB_EHCI_HCD + imply VIDEO_VESA config VENDOR_GOOGLE bool "Google" diff --git a/arch/x86/cpu/qemu/Kconfig b/arch/x86/cpu/qemu/Kconfig index 03b96ce9e59..76f847fffef 100644 --- a/arch/x86/cpu/qemu/Kconfig +++ b/arch/x86/cpu/qemu/Kconfig @@ -2,18 +2,6 @@ # # Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com> -config ARCH_QEMU_X86 - bool - select ARCH_EARLY_INIT_R - imply AHCI_PCI - imply E1000 - imply SCSI - imply SCSI_AHCI - imply SYS_NS16550 - imply USB - imply USB_EHCI_HCD - imply VIDEO_VESA - if ARCH_QEMU_X86 config SYS_CAR_ADDR diff --git a/board/emulation/Kconfig b/board/emulation/Kconfig index f821458fa6a..07b8274d749 100644 --- a/board/emulation/Kconfig +++ b/board/emulation/Kconfig @@ -2,7 +2,7 @@ # # Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com> -if VENDOR_EMULATION +if ARCH_QEMU_X86 choice prompt "Mainboard model" diff --git a/board/emulation/qemu-x86/Kconfig b/board/emulation/qemu-x86/Kconfig index c9b6ee37719..b7b13101f2e 100644 --- a/board/emulation/qemu-x86/Kconfig +++ b/board/emulation/qemu-x86/Kconfig @@ -16,7 +16,6 @@ config TEXT_BASE config BOARD_SPECIFIC_OPTIONS # dummy def_bool y select X86_RESET_VECTOR - select ARCH_QEMU_X86 select QFW_PIO if CMD_QFW select BOARD_ROMSIZE_KB_1024 if TARGET_QEMU_X86 select BOARD_ROMSIZE_KB_2048 if TARGET_QEMU_X86_64 diff --git a/fs/Kconfig b/fs/Kconfig index 377ab09a285..b73d53dd3a3 100644 --- a/fs/Kconfig +++ b/fs/Kconfig @@ -6,7 +6,7 @@ menu "File systems" config FS bool "Support for filesystems" - default y if SANDBOX || VENDOR_EMULATION || ARCH_QEMU_ARM + default y if SANDBOX || ARCH_QEMU_X86 || ARCH_QEMU_ARM depends on EXPERT help Provides an interface for filesystems, allowing them to be @@ -15,14 +15,14 @@ config FS config DIR bool "Support for directories" depends on FS - default y if SANDBOX || VENDOR_EMULATION || ARCH_QEMU_ARM + default y if SANDBOX || ARCH_QEMU_X86 || ARCH_QEMU_ARM help Provides an interface for directories within filesystems, allowing them to be listed. config FILE bool "Support for files" - default y if SANDBOX || VENDOR_EMULATION || ARCH_QEMU_ARM + default y if SANDBOX || ARCH_QEMU_X86 || ARCH_QEMU_ARM help Provides an interface for files, allowing them to be opened, read, written and modified. Files are children of a filesystem device -- 2.43.0

From: Simon Glass <sjg@chromium.org> Set up a single place in Kconfig where board/emulation/Kconfig is included, removing the two sites in arch/arm and arch/x86 Move the ARM-specific Kconfig into this file. Signed-off-by: Simon Glass <sjg@chromium.org> --- arch/Kconfig | 2 + arch/arm/Kconfig | 2 - arch/arm/mach-qemu/Kconfig | 72 ------------------------------------ arch/x86/Kconfig | 1 - board/emulation/Kconfig | 76 +++++++++++++++++++++++++++++++++++++- 5 files changed, 77 insertions(+), 76 deletions(-) diff --git a/arch/Kconfig b/arch/Kconfig index 9c357b58d44..49ab4f825d8 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -573,3 +573,5 @@ config MACH_QEMU help This should enabled for all QEMU targets, on all architectures. It controls features which are particular to running U-Boot on QEMU. + +source "board/emulation/Kconfig" diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 6239e117d31..e31d368b513 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -2325,8 +2325,6 @@ source "arch/arm/mach-meson/Kconfig" source "arch/arm/mach-mediatek/Kconfig" -source "arch/arm/mach-qemu/Kconfig" - source "arch/arm/mach-rockchip/Kconfig" source "arch/arm/mach-s5pc1xx/Kconfig" diff --git a/arch/arm/mach-qemu/Kconfig b/arch/arm/mach-qemu/Kconfig index 2915d3b3837..e69de29bb2d 100644 --- a/arch/arm/mach-qemu/Kconfig +++ b/arch/arm/mach-qemu/Kconfig @@ -1,72 +0,0 @@ -if ARCH_QEMU_ARM - -config SYS_VENDOR - default "emulation" - -choice - prompt "QEMU ARM architecture" - default TARGET_QEMU_ARM_64BIT - -config TARGET_QEMU_ARM_32BIT - bool "ARMv7-A, 32bit" - select ARCH_SUPPORT_PSCI - select BOARD_LATE_INIT - select CPU_V7A - select SYS_ARCH_TIMER - -config TARGET_QEMU_ARM_32BIT_SPL - bool "ARMv7-A, 32bit with SPL" - select ARCH_SUPPORT_PSCI - select BOARD_LATE_INIT - select CPU_V7A - select SYS_ARCH_TIMER - select SPL - select BINMAN - -config TARGET_QEMU_ARM_64BIT - bool "ARMv8, 64bit" - select ARM64 - select BOARD_LATE_INIT - -config TARGET_QEMU_ARM_SBSA - bool "SBSA Reference" - select ARM64 - select BINMAN - select BOARD_LATE_INIT - select ENABLE_ARM_SOC_BOOT0_HOOK - select MISC_INIT_R - -config TARGET_QEMU_ARM_64BIT_SPL - bool "ARMv8, 64bit with SPL" - select ARM64 - select BOARD_LATE_INIT - select SPL - select BINMAN - -endchoice - -if TARGET_QEMU_ARM_32BIT || TARGET_QEMU_ARM_64BIT || \ - TARGET_QEMU_ARM_32BIT_SPL || TARGET_QEMU_ARM_64BIT_SPL - -config SYS_BOARD - default "qemu-arm" - -config SYS_CONFIG_NAME - default "qemu-arm" - -endif - -if TARGET_QEMU_ARM_SBSA - -config SYS_BOARD - default "qemu-sbsa" - -config SYS_CONFIG_NAME - default "qemu-sbsa" - -config SYS_SOC - default "qemu-sbsa" - -endif - -endif diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index df1b706ccf7..c29b5781a98 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -119,7 +119,6 @@ source "board/advantech/Kconfig" source "board/congatec/Kconfig" source "board/coreboot/Kconfig" source "board/dfi/Kconfig" -source "board/emulation/Kconfig" source "board/google/Kconfig" source "board/intel/Kconfig" diff --git a/board/emulation/Kconfig b/board/emulation/Kconfig index 07b8274d749..e88375a2653 100644 --- a/board/emulation/Kconfig +++ b/board/emulation/Kconfig @@ -2,6 +2,80 @@ # # Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com> +if ARCH_QEMU_ARM + +config SYS_VENDOR + default "emulation" + +choice + prompt "QEMU ARM architecture" + default TARGET_QEMU_ARM_64BIT + +config TARGET_QEMU_ARM_32BIT + bool "ARMv7-A, 32bit" + select ARCH_SUPPORT_PSCI + select BOARD_LATE_INIT + select CPU_V7A + select SYS_ARCH_TIMER + +config TARGET_QEMU_ARM_32BIT_SPL + bool "ARMv7-A, 32bit with SPL" + select ARCH_SUPPORT_PSCI + select BOARD_LATE_INIT + select CPU_V7A + select SYS_ARCH_TIMER + select SPL + select BINMAN + +config TARGET_QEMU_ARM_64BIT + bool "ARMv8, 64bit" + select ARM64 + select BOARD_LATE_INIT + +config TARGET_QEMU_ARM_SBSA + bool "SBSA Reference" + select ARM64 + select BINMAN + select BOARD_LATE_INIT + select ENABLE_ARM_SOC_BOOT0_HOOK + select MISC_INIT_R + +config TARGET_QEMU_ARM_64BIT_SPL + bool "ARMv8, 64bit with SPL" + select ARM64 + select BOARD_LATE_INIT + select SPL + select BINMAN + +endchoice + +if TARGET_QEMU_ARM_32BIT || TARGET_QEMU_ARM_64BIT || \ + TARGET_QEMU_ARM_32BIT_SPL || TARGET_QEMU_ARM_64BIT_SPL + +config SYS_BOARD + default "qemu-arm" + +config SYS_CONFIG_NAME + default "qemu-arm" + +endif + +if TARGET_QEMU_ARM_SBSA + +config SYS_BOARD + default "qemu-sbsa" + +config SYS_CONFIG_NAME + default "qemu-sbsa" + +config SYS_SOC + default "qemu-sbsa" + +endif + +endif # ARCH_QEMU_ARM + + if ARCH_QEMU_X86 choice @@ -27,4 +101,4 @@ endchoice source "board/emulation/qemu-x86/Kconfig" -endif +endif # ARCH_QEMU_X86 -- 2.43.0

From: Simon Glass <sjg@chromium.org> Now that ARM is using board/emulation/Kconfig, put the includes for the board-specific Kconfig into this file too. With this, both ARM and x86 use board/emulation/Kconfig to list the targets. Signed-off-by: Simon Glass <sjg@chromium.org> --- arch/arm/Kconfig | 2 -- board/emulation/Kconfig | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index e31d368b513..f64de1de808 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -2386,8 +2386,6 @@ source "board/broadcom/bcmns/Kconfig" source "board/broadcom/bcmns3/Kconfig" source "board/cavium/thunderx/Kconfig" source "board/eets/pdu001/Kconfig" -source "board/emulation/qemu-arm/Kconfig" -source "board/emulation/qemu-sbsa/Kconfig" source "board/freescale/ls2080aqds/Kconfig" source "board/freescale/ls2080ardb/Kconfig" source "board/freescale/ls1088a/Kconfig" diff --git a/board/emulation/Kconfig b/board/emulation/Kconfig index e88375a2653..e58cc7d20e3 100644 --- a/board/emulation/Kconfig +++ b/board/emulation/Kconfig @@ -73,6 +73,9 @@ config SYS_SOC endif +source "board/emulation/qemu-arm/Kconfig" +source "board/emulation/qemu-sbsa/Kconfig" + endif # ARCH_QEMU_ARM -- 2.43.0

From: Simon Glass <sjg@chromium.org> There seems to be enough QFW code now to have its own directory. Move the files there before adding more. Signed-off-by: Simon Glass <sjg@chromium.org> --- drivers/Makefile | 1 + drivers/misc/Makefile | 8 -------- drivers/qfw/Makefile | 11 +++++++++++ drivers/{misc => qfw}/qfw.c | 0 drivers/{misc => qfw}/qfw_acpi.c | 0 drivers/{misc => qfw}/qfw_mmio.c | 0 drivers/{misc => qfw}/qfw_pio.c | 0 drivers/{misc => qfw}/qfw_sandbox.c | 0 drivers/{misc => qfw}/qfw_smbios.c | 0 9 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 drivers/qfw/Makefile rename drivers/{misc => qfw}/qfw.c (100%) rename drivers/{misc => qfw}/qfw_acpi.c (100%) rename drivers/{misc => qfw}/qfw_mmio.c (100%) rename drivers/{misc => qfw}/qfw_pio.c (100%) rename drivers/{misc => qfw}/qfw_sandbox.c (100%) rename drivers/{misc => qfw}/qfw_smbios.c (100%) diff --git a/drivers/Makefile b/drivers/Makefile index 86a002c7163..7ed91ad5abb 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -35,6 +35,7 @@ obj-$(CONFIG_$(PHASE_)TIMER) += timer/ obj-$(CONFIG_$(PHASE_)VIRTIO) += virtio/ obj-$(CONFIG_$(PHASE_)DM_MAILBOX) += mailbox/ obj-$(CONFIG_$(PHASE_)REMOTEPROC) += remoteproc/ +obj-$(CONFIG_QFW) += qfw/ obj-$(CONFIG_$(PHASE_)SYSINFO) += sysinfo/ obj-$(CONFIG_$(PHASE_)SM) += sm/ obj-$(CONFIG_$(PHASE_)TPM) += tpm/ diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index ec302e5a16e..fd45491551a 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -57,14 +57,6 @@ obj-$(CONFIG_NPCM_HOST) += npcm_host_intf.o obj-$(CONFIG_NUVOTON_NCT6102D) += nuvoton_nct6102d.o obj-$(CONFIG_P2SB) += p2sb-uclass.o obj-$(CONFIG_$(PHASE_)PWRSEQ) += pwrseq-uclass.o -ifdef CONFIG_QFW -obj-y += qfw.o -obj-$(CONFIG_QFW_ACPI) += qfw_acpi.o -obj-$(CONFIG_QFW_PIO) += qfw_pio.o -obj-$(CONFIG_QFW_MMIO) += qfw_mmio.o -obj-$(CONFIG_QFW_SMBIOS) += qfw_smbios.o -obj-$(CONFIG_SANDBOX) += qfw_sandbox.o -endif obj-$(CONFIG_$(PHASE_)ROCKCHIP_EFUSE) += rockchip-efuse.o obj-$(CONFIG_$(PHASE_)ROCKCHIP_OTP) += rockchip-otp.o obj-$(CONFIG_$(PHASE_)ROCKCHIP_IODOMAIN) += rockchip-io-domain.o diff --git a/drivers/qfw/Makefile b/drivers/qfw/Makefile new file mode 100644 index 00000000000..9dd8d5b3a86 --- /dev/null +++ b/drivers/qfw/Makefile @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2004-2006 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. + +obj-y += qfw.o +obj-$(CONFIG_QFW_ACPI) += qfw_acpi.o +obj-$(CONFIG_QFW_PIO) += qfw_pio.o +obj-$(CONFIG_QFW_MMIO) += qfw_mmio.o +obj-$(CONFIG_QFW_SMBIOS) += qfw_smbios.o +obj-$(CONFIG_SANDBOX) += qfw_sandbox.o diff --git a/drivers/misc/qfw.c b/drivers/qfw/qfw.c similarity index 100% rename from drivers/misc/qfw.c rename to drivers/qfw/qfw.c diff --git a/drivers/misc/qfw_acpi.c b/drivers/qfw/qfw_acpi.c similarity index 100% rename from drivers/misc/qfw_acpi.c rename to drivers/qfw/qfw_acpi.c diff --git a/drivers/misc/qfw_mmio.c b/drivers/qfw/qfw_mmio.c similarity index 100% rename from drivers/misc/qfw_mmio.c rename to drivers/qfw/qfw_mmio.c diff --git a/drivers/misc/qfw_pio.c b/drivers/qfw/qfw_pio.c similarity index 100% rename from drivers/misc/qfw_pio.c rename to drivers/qfw/qfw_pio.c diff --git a/drivers/misc/qfw_sandbox.c b/drivers/qfw/qfw_sandbox.c similarity index 100% rename from drivers/misc/qfw_sandbox.c rename to drivers/qfw/qfw_sandbox.c diff --git a/drivers/misc/qfw_smbios.c b/drivers/qfw/qfw_smbios.c similarity index 100% rename from drivers/misc/qfw_smbios.c rename to drivers/qfw/qfw_smbios.c -- 2.43.0

From: Simon Glass <sjg@chromium.org> The qfw.c file mostly contains the uclass implementation, so rename it to fit with other uclass files. Signed-off-by: Simon Glass <sjg@chromium.org> --- drivers/qfw/Makefile | 2 +- drivers/qfw/{qfw.c => qfw-uclass.c} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename drivers/qfw/{qfw.c => qfw-uclass.c} (100%) diff --git a/drivers/qfw/Makefile b/drivers/qfw/Makefile index 9dd8d5b3a86..90da78a6cef 100644 --- a/drivers/qfw/Makefile +++ b/drivers/qfw/Makefile @@ -3,7 +3,7 @@ # (C) Copyright 2004-2006 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. -obj-y += qfw.o +obj-y += qfw-uclass.o obj-$(CONFIG_QFW_ACPI) += qfw_acpi.o obj-$(CONFIG_QFW_PIO) += qfw_pio.o obj-$(CONFIG_QFW_MMIO) += qfw_mmio.o diff --git a/drivers/qfw/qfw.c b/drivers/qfw/qfw-uclass.c similarity index 100% rename from drivers/qfw/qfw.c rename to drivers/qfw/qfw-uclass.c -- 2.43.0

From: Simon Glass <sjg@chromium.org> This file provide common functions related to QFW, so move it into driver/qfw with the other code. Signed-off-by: Simon Glass <sjg@chromium.org> --- common/Makefile | 2 -- drivers/qfw/Makefile | 2 ++ {common => drivers/qfw}/qfw.c | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename {common => drivers/qfw}/qfw.c (100%) diff --git a/common/Makefile b/common/Makefile index 35991562a12..048e4a6b3e2 100644 --- a/common/Makefile +++ b/common/Makefile @@ -99,5 +99,3 @@ obj-$(CONFIG_$(PHASE_)YMODEM_SUPPORT) += xyzModem.o obj-$(CONFIG_$(PHASE_)AVB_VERIFY) += avb_verify.o obj-$(CONFIG_$(PHASE_)STACKPROTECTOR) += stackprot.o obj-$(CONFIG_SCP03) += scp03.o - -obj-$(CONFIG_QFW) += qfw.o diff --git a/drivers/qfw/Makefile b/drivers/qfw/Makefile index 90da78a6cef..95123bdcfac 100644 --- a/drivers/qfw/Makefile +++ b/drivers/qfw/Makefile @@ -4,6 +4,8 @@ # Wolfgang Denk, DENX Software Engineering, wd@denx.de. obj-y += qfw-uclass.o + +obj-y += qfw.o obj-$(CONFIG_QFW_ACPI) += qfw_acpi.o obj-$(CONFIG_QFW_PIO) += qfw_pio.o obj-$(CONFIG_QFW_MMIO) += qfw_mmio.o diff --git a/common/qfw.c b/drivers/qfw/qfw.c similarity index 100% rename from common/qfw.c rename to drivers/qfw/qfw.c -- 2.43.0
participants (1)
-
Simon Glass