From 2e0493a6f6d544770c6c8aa4bc13c7b88553557d Mon Sep 17 00:00:00 2001 From: Rouven Czerwinski Date: Mon, 9 Nov 2020 14:44:29 +0100 Subject: ARM: qemu: add support for qemu virt platform Necessary support to boot barebox on ARM qemu virt platforms. No internal device tree, since it is passed by qemu. Therefore it employs the generic 2nd stage image as the low level code and only adds a virt specific board driver. Signed-off-by: Rouven Czerwinski Signed-off-by: Sascha Hauer --- arch/arm/Kconfig | 2 +- arch/arm/boards/Makefile | 1 + arch/arm/boards/qemu-virt/Makefile | 1 + arch/arm/boards/qemu-virt/board.c | 36 ++++++++++++++++++++++++++++++++++++ arch/arm/mach-vexpress/Kconfig | 4 ++++ 5 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boards/qemu-virt/Makefile create mode 100644 arch/arm/boards/qemu-virt/board.c (limited to 'arch') diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index a8ebfecd9b..ab0bf03013 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -216,7 +216,7 @@ config ARCH_VERSATILE select HAS_DEBUG_LL config ARCH_VEXPRESS - bool "ARM Vexpres boards" + bool "ARM Vexpress & virt boards" select HAS_DEBUG_LL select CPU_V7 select ARM_AMBA diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile index a02d80d2da..81c228efd6 100644 --- a/arch/arm/boards/Makefile +++ b/arch/arm/boards/Makefile @@ -164,6 +164,7 @@ obj-$(CONFIG_MACH_ZYLONITE) += zylonite/ obj-$(CONFIG_MACH_VARISCITE_MX6) += variscite-mx6/ obj-$(CONFIG_MACH_VSCOM_BALTOS) += vscom-baltos/ obj-$(CONFIG_MACH_QEMU_VIRT64) += qemu-virt64/ +obj-$(CONFIG_MACH_VIRT) += qemu-virt/ obj-$(CONFIG_MACH_WARP7) += element14-warp7/ obj-$(CONFIG_MACH_WEBASTO_CCBV2) += webasto-ccbv2/ obj-$(CONFIG_MACH_VF610_TWR) += freescale-vf610-twr/ diff --git a/arch/arm/boards/qemu-virt/Makefile b/arch/arm/boards/qemu-virt/Makefile new file mode 100644 index 0000000000..dcfc2937d3 --- /dev/null +++ b/arch/arm/boards/qemu-virt/Makefile @@ -0,0 +1 @@ +obj-y += board.o diff --git a/arch/arm/boards/qemu-virt/board.c b/arch/arm/boards/qemu-virt/board.c new file mode 100644 index 0000000000..3aeea1a017 --- /dev/null +++ b/arch/arm/boards/qemu-virt/board.c @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2020 Pengutronix e.K. + * + */ +#include +#include +#include + +static int virt_probe(struct device_d *dev) +{ + char *hostname = "virt"; + + if (cpu_is_cortex_a7()) + hostname = "virt-a7"; + else if (cpu_is_cortex_a15()) + hostname = "virt-a15"; + + barebox_set_model("ARM QEMU virt"); + barebox_set_hostname(hostname); + + return 0; +} + +static const struct of_device_id virt_of_match[] = { + { .compatible = "linux,dummy-virt" }, + { /* Sentinel */}, +}; + +static struct driver_d virt_board_driver = { + .name = "board-qemu-virt", + .probe = virt_probe, + .of_compatible = virt_of_match, +}; + +postcore_platform_driver(virt_board_driver); diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig index 38b9dffb17..9d301f7ae8 100644 --- a/arch/arm/mach-vexpress/Kconfig +++ b/arch/arm/mach-vexpress/Kconfig @@ -7,5 +7,9 @@ config ARCH_TEXT_BASE config MACH_VEXPRESS bool "ARM Vexpress" +config MACH_VIRT + bool "QEMU virt" + select ARM_PSCI_CLIENT + select BOARD_ARM_GENERIC_DT endif -- cgit v1.2.3