[PATCH v2] platform: ariane: Move ariane platform from fpga to generic
Anup Patel
anup at brainfault.org
Wed Nov 5 08:03:11 PST 2025
On Thu, Oct 23, 2025 at 2:34 PM Manuel Hernández Méndez
<maherme.dev at gmail.com> wrote:
>
> The Ariane framework has a generic PMU that is not used by OpenSBI.
> Due to OpenSBI’s build system we cannot directly reuse the generic
> platform functions, so move the Ariane platform to generic. Also due
> to the generic platform is where new features are added.
>
> Signed-off-by: Manuel Hernández Méndez <maherme.dev at gmail.com>
LGTM.
Reviewed-by: Anup Patel <anup at brainfault.org>
Applied this patch to the riscv/opensbi repo.
Thanks,
Anup
> ---
> docs/platform/fpga-ariane.md | 4 +-
> docs/platform/generic.md | 2 +
> docs/platform/platform.md | 5 ---
> platform/fpga/ariane/Kconfig | 10 -----
> platform/fpga/ariane/configs/defconfig | 0
> platform/fpga/ariane/objects.mk | 42 -------------------
> platform/generic/Kconfig | 4 ++
> platform/generic/configs/defconfig | 1 +
> .../openhwgroup/ariane.c} | 40 ++++++++----------
> platform/generic/openhwgroup/objects.mk | 3 ++
> 10 files changed, 29 insertions(+), 82 deletions(-)
> delete mode 100644 platform/fpga/ariane/Kconfig
> delete mode 100644 platform/fpga/ariane/configs/defconfig
> delete mode 100644 platform/fpga/ariane/objects.mk
> rename platform/{fpga/ariane/platform.c => generic/openhwgroup/ariane.c} (77%)
>
> diff --git a/docs/platform/fpga-ariane.md b/docs/platform/fpga-ariane.md
> index 9b1e1566..720cb172 100644
> --- a/docs/platform/fpga-ariane.md
> +++ b/docs/platform/fpga-ariane.md
> @@ -13,7 +13,7 @@ The FPGA SoC currently contains the following peripherals:
> - Bootrom containing zero stage bootloader and device tree.
>
> To build platform specific library and firmwares, provide the
> -*PLATFORM=fpga/ariane* parameter to the top level `make` command.
> +*PLATFORM=generic* parameter to the top level `make` command.
>
> Platform Options
> ----------------
> @@ -26,7 +26,7 @@ Building Ariane FPGA Platform
> **Linux Kernel Payload**
>
> ```
> -make PLATFORM=fpga/ariane FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
> +make PLATFORM=generic FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
> ```
>
> Booting Ariane FPGA Platform
> diff --git a/docs/platform/generic.md b/docs/platform/generic.md
> index 495baa73..c48d6a9a 100644
> --- a/docs/platform/generic.md
> +++ b/docs/platform/generic.md
> @@ -48,6 +48,7 @@ RISC-V Platforms Using Generic Platform
> * **Spike** (*[spike.md]*)
> * **T-HEAD C9xx series Processors** (*[thead-c9xx.md]*)
> * **OpenPiton FPGA SoC** (*[fpga-openpiton.md]*)
> +* **Ariane FPGA SoC** (*[fpga-ariane.md]*)
>
> [andes-ae350.md]: andes-ae350.md
> [qemu_virt.md]: qemu_virt.md
> @@ -57,3 +58,4 @@ RISC-V Platforms Using Generic Platform
> [spike.md]: spike.md
> [thead-c9xx.md]: thead-c9xx.md
> [fpga-openpiton.md]: fpga-openpiton.md
> +[fpga-ariane.md]: fpga-ariane.md
> diff --git a/docs/platform/platform.md b/docs/platform/platform.md
> index 048c2c4f..b77112ff 100644
> --- a/docs/platform/platform.md
> +++ b/docs/platform/platform.md
> @@ -21,10 +21,6 @@ OpenSBI currently supports the following virtual and hardware platforms:
> * **Kendryte K210 SoC**: Platform support for the Kendryte K210 SoC used on
> boards such as the Kendryte KD233 or the Sipeed MAIX Dock.
>
> -* **Ariane FPGA SoC**: Platform support for the Ariane FPGA SoC used on
> - Genesys 2 board. More details on this platform can be found in the file
> - *[fpga-ariane.md]*.
> -
> * **Andes AE350 SoC**: Platform support for the Andes's SoC (AE350). More
> details on this platform can be found in the file *[andes-ae350.md]*.
>
> @@ -48,7 +44,6 @@ comments to facilitate the implementation.
> [generic.md]: generic.md
> [qemu_virt.md]: qemu_virt.md
> [sifive_fu540.md]: sifive_fu540.md
> -[fpga-ariane.md]: fpga-ariane.md
> [andes-ae350.md]: andes-ae350.md
> [thead-c910.md]: thead-c910.md
> [spike.md]: spike.md
> diff --git a/platform/fpga/ariane/Kconfig b/platform/fpga/ariane/Kconfig
> deleted file mode 100644
> index e1f118b6..00000000
> --- a/platform/fpga/ariane/Kconfig
> +++ /dev/null
> @@ -1,10 +0,0 @@
> -# SPDX-License-Identifier: BSD-2-Clause
> -
> -config PLATFORM_ARIANE_FPGA
> - bool
> - select FDT
> - select IPI_MSWI
> - select IRQCHIP_PLIC
> - select SERIAL_UART8250
> - select TIMER_MTIMER
> - default y
> diff --git a/platform/fpga/ariane/configs/defconfig b/platform/fpga/ariane/configs/defconfig
> deleted file mode 100644
> index e69de29b..00000000
> diff --git a/platform/fpga/ariane/objects.mk b/platform/fpga/ariane/objects.mk
> deleted file mode 100644
> index d1177f41..00000000
> --- a/platform/fpga/ariane/objects.mk
> +++ /dev/null
> @@ -1,42 +0,0 @@
> -#
> -# SPDX-License-Identifier: BSD-2-Clause
> -#
> -# Copyright (C) 2019 FORTH-ICS/CARV
> -# Panagiotis Peristerakis <perister at ics.forth.gr>
> -#
> -
> -# Compiler flags
> -platform-cppflags-y =
> -platform-cflags-y =
> -platform-asflags-y =
> -platform-ldflags-y =
> -
> -# Object to build
> -platform-objs-y += platform.o
> -
> -PLATFORM_RISCV_XLEN = 64
> -
> -# Blobs to build
> -FW_JUMP=n
> -
> -ifeq ($(PLATFORM_RISCV_XLEN), 32)
> - # This needs to be 4MB aligned for 32-bit support
> - FW_JUMP_ADDR=0x80400000
> - else
> - # This needs to be 2MB aligned for 64-bit support
> - FW_JUMP_ADDR=0x80200000
> - endif
> -FW_JUMP_FDT_ADDR=0x82200000
> -
> -# Firmware with payload configuration.
> -FW_PAYLOAD=y
> -
> -ifeq ($(PLATFORM_RISCV_XLEN), 32)
> -# This needs to be 4MB aligned for 32-bit support
> - FW_PAYLOAD_OFFSET=0x400000
> -else
> -# This needs to be 2MB aligned for 64-bit support
> - FW_PAYLOAD_OFFSET=0x200000
> -endif
> -FW_PAYLOAD_FDT_ADDR=0x82200000
> -FW_PAYLOAD_ALIGN=0x1000
> diff --git a/platform/generic/Kconfig b/platform/generic/Kconfig
> index aedc59a5..25b8886b 100644
> --- a/platform/generic/Kconfig
> +++ b/platform/generic/Kconfig
> @@ -47,6 +47,10 @@ config PLATFORM_OPENHWGROUP_OPENPITON
> bool "OpenHWGroup Openpiton support"
> default n
>
> +config PLATFORM_OPENHWGROUP_ARIANE
> + bool "OpenHWGroup Ariane support"
> + default n
> +
> config PLATFORM_RENESAS_RZFIVE
> bool "Renesas RZ/Five support"
> select ANDES_PMA
> diff --git a/platform/generic/configs/defconfig b/platform/generic/configs/defconfig
> index 05b9ea2d..834496cb 100644
> --- a/platform/generic/configs/defconfig
> +++ b/platform/generic/configs/defconfig
> @@ -1,6 +1,7 @@
> CONFIG_PLATFORM_ALLWINNER_D1=y
> CONFIG_PLATFORM_ANDES_AE350=y
> CONFIG_PLATFORM_ANDES_QILAI=y
> +CONFIG_PLATFORM_OPENHWGROUP_ARIANE=y
> CONFIG_PLATFORM_OPENHWGROUP_OPENPITON=y
> CONFIG_PLATFORM_RENESAS_RZFIVE=y
> CONFIG_PLATFORM_SIFIVE_FU540=y
> diff --git a/platform/fpga/ariane/platform.c b/platform/generic/openhwgroup/ariane.c
> similarity index 77%
> rename from platform/fpga/ariane/platform.c
> rename to platform/generic/openhwgroup/ariane.c
> index 1b6b052f..6931e3f0 100644
> --- a/platform/fpga/ariane/platform.c
> +++ b/platform/generic/openhwgroup/ariane.c
> @@ -4,12 +4,7 @@
> * Panagiotis Peristerakis <perister at ics.forth.gr>
> */
>
> -#include <sbi/riscv_asm.h>
> -#include <sbi/riscv_encoding.h>
> -#include <sbi/riscv_io.h>
> -#include <sbi/sbi_const.h>
> -#include <sbi/sbi_hart.h>
> -#include <sbi/sbi_platform.h>
> +#include <platform_override.h>
> #include <sbi_utils/fdt/fdt_helper.h>
> #include <sbi_utils/fdt/fdt_fixup.h>
> #include <sbi_utils/ipi/aclint_mswi.h>
> @@ -121,23 +116,22 @@ static int ariane_timer_init(void)
> return aclint_mtimer_cold_init(&mtimer, NULL);
> }
>
> -/*
> - * Platform descriptor.
> - */
> -const struct sbi_platform_operations platform_ops = {
> - .early_init = ariane_early_init,
> - .final_init = ariane_final_init,
> - .irqchip_init = ariane_irqchip_init,
> - .timer_init = ariane_timer_init,
> +static int openhwgroup_ariane_platform_init(const void *fdt, int nodeoff, const struct fdt_match *match)
> +{
> + generic_platform_ops.early_init = ariane_early_init;
> + generic_platform_ops.timer_init = ariane_timer_init;
> + generic_platform_ops.irqchip_init = ariane_irqchip_init;
> + generic_platform_ops.final_init = ariane_final_init;
> +
> + return 0;
> +}
> +
> +static const struct fdt_match openhwgroup_ariane_match[] = {
> + { .compatible = "eth,ariane-bare-dev" },
> + { },
> };
>
> -const struct sbi_platform platform = {
> - .opensbi_version = OPENSBI_VERSION,
> - .platform_version = SBI_PLATFORM_VERSION(0x0, 0x01),
> - .name = "ARIANE RISC-V",
> - .features = SBI_PLATFORM_DEFAULT_FEATURES,
> - .hart_count = ARIANE_HART_COUNT,
> - .hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE,
> - .heap_size = SBI_PLATFORM_DEFAULT_HEAP_SIZE(ARIANE_HART_COUNT),
> - .platform_ops_addr = (unsigned long)&platform_ops
> +const struct fdt_driver openhwgroup_ariane = {
> + .match_table = openhwgroup_ariane_match,
> + .init = openhwgroup_ariane_platform_init,
> };
> diff --git a/platform/generic/openhwgroup/objects.mk b/platform/generic/openhwgroup/objects.mk
> index ab6ca79d..2906dd9b 100644
> --- a/platform/generic/openhwgroup/objects.mk
> +++ b/platform/generic/openhwgroup/objects.mk
> @@ -6,3 +6,6 @@
>
> carray-platform_override_modules-$(CONFIG_PLATFORM_OPENHWGROUP_OPENPITON) += openhwgroup_openpiton
> platform-objs-$(CONFIG_PLATFORM_OPENHWGROUP_OPENPITON) += openhwgroup/openpiton.o
> +
> +carray-platform_override_modules-$(CONFIG_PLATFORM_OPENHWGROUP_ARIANE) += openhwgroup_ariane
> +platform-objs-$(CONFIG_PLATFORM_OPENHWGROUP_ARIANE) += openhwgroup/ariane.o
> --
> 2.34.1
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi
More information about the opensbi
mailing list