[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