[PATCH v2] platform: openpiton: Move openpiton platform from fpga to generic
Anup Patel
anup at brainfault.org
Tue Aug 26 04:25:09 PDT 2025
On Wed, Aug 13, 2025 at 5:01 PM Manuel Hernández Méndez
<maherme.dev at gmail.com> wrote:
>
> The OpenPiton 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 OpenPiton 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>
Overall, this movement is in right direction. If you already have DT nodes
for timer, clint, and plic in the OpenPiton FDT passed to OpenSBI then
generic/openhwgroup/openpiton.c can be further simplified but this can
be done as separate patch.
Reviewed-by: Anup Patel <anup at brainfault.org>
Applied this patch to the riscv/opensbi repo.
Thanks,
Anup
> ---
> platform/fpga/openpiton/Kconfig | 10 -----
> platform/fpga/openpiton/configs/defconfig | 0
> platform/fpga/openpiton/objects.mk | 41 ------------------
> platform/generic/Kconfig | 4 ++
> platform/generic/configs/defconfig | 1 +
> platform/generic/openhwgroup/objects.mk | 8 ++++
> .../openhwgroup/openpiton.c} | 43 ++++++++-----------
> 7 files changed, 31 insertions(+), 76 deletions(-)
> delete mode 100644 platform/fpga/openpiton/Kconfig
> delete mode 100644 platform/fpga/openpiton/configs/defconfig
> delete mode 100644 platform/fpga/openpiton/objects.mk
> create mode 100644 platform/generic/openhwgroup/objects.mk
> rename platform/{fpga/openpiton/platform.c => generic/openhwgroup/openpiton.c} (82%)
>
> diff --git a/platform/fpga/openpiton/Kconfig b/platform/fpga/openpiton/Kconfig
> deleted file mode 100644
> index bc9c86ee..00000000
> --- a/platform/fpga/openpiton/Kconfig
> +++ /dev/null
> @@ -1,10 +0,0 @@
> -# SPDX-License-Identifier: BSD-2-Clause
> -
> -config PLATFORM_OPENPITON_FPGA
> - bool
> - select FDT
> - select IPI_MSWI
> - select IRQCHIP_PLIC
> - select SERIAL_UART8250
> - select TIMER_MTIMER
> - default y
> diff --git a/platform/fpga/openpiton/configs/defconfig b/platform/fpga/openpiton/configs/defconfig
> deleted file mode 100644
> index e69de29b..00000000
> diff --git a/platform/fpga/openpiton/objects.mk b/platform/fpga/openpiton/objects.mk
> deleted file mode 100644
> index 1a0ce0c7..00000000
> --- a/platform/fpga/openpiton/objects.mk
> +++ /dev/null
> @@ -1,41 +0,0 @@
> -#
> -# SPDX-License-Identifier: BSD-2-Clause
> -#
> -# Copyright (c) 2020 Western Digital Corporation or its affiliates.
> -#
> -
> -# Compiler flags
> -platform-cppflags-y =
> -platform-cflags-y =
> -platform-asflags-y =
> -platform-ldflags-y =
> -
> -# Objects 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 a24d6ab2..7559a4bd 100644
> --- a/platform/generic/Kconfig
> +++ b/platform/generic/Kconfig
> @@ -36,6 +36,10 @@ config PLATFORM_ANDES_AE350
> select ANDES_PMA
> default n
>
> +config PLATFORM_OPENHWGROUP_OPENPITON
> + bool "OpenHWGroup Openpiton 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 c7a6531e..4b93d0bc 100644
> --- a/platform/generic/configs/defconfig
> +++ b/platform/generic/configs/defconfig
> @@ -7,6 +7,7 @@ CONFIG_PLATFORM_SOPHGO_SG2042=y
> CONFIG_PLATFORM_STARFIVE_JH7110=y
> CONFIG_PLATFORM_THEAD=y
> CONFIG_PLATFORM_MIPS_P8700=y
> +CONFIG_PLATFORM_OPENHWGROUP_OPENPITON=y
> CONFIG_FDT_CPPC=y
> CONFIG_FDT_CPPC_RPMI=y
> CONFIG_FDT_GPIO=y
> diff --git a/platform/generic/openhwgroup/objects.mk b/platform/generic/openhwgroup/objects.mk
> new file mode 100644
> index 00000000..ab6ca79d
> --- /dev/null
> +++ b/platform/generic/openhwgroup/objects.mk
> @@ -0,0 +1,8 @@
> +#
> +# SPDX-License-Identifier: BSD-2-Clause
> +#
> +# Copyright (c) 2020 Western Digital Corporation or its affiliates.
> +#
> +
> +carray-platform_override_modules-$(CONFIG_PLATFORM_OPENHWGROUP_OPENPITON) += openhwgroup_openpiton
> +platform-objs-$(CONFIG_PLATFORM_OPENHWGROUP_OPENPITON) += openhwgroup/openpiton.o
> diff --git a/platform/fpga/openpiton/platform.c b/platform/generic/openhwgroup/openpiton.c
> similarity index 82%
> rename from platform/fpga/openpiton/platform.c
> rename to platform/generic/openhwgroup/openpiton.c
> index faa299ce..94567abb 100644
> --- a/platform/fpga/openpiton/platform.c
> +++ b/platform/generic/openhwgroup/openpiton.c
> @@ -3,12 +3,7 @@
> * Copyright (c) 2020 Western Digital Corporation or its affiliates.
> */
>
> -#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>
> @@ -156,25 +151,23 @@ static int openpiton_timer_init(void)
> return aclint_mtimer_cold_init(&mtimer, NULL);
> }
>
> -/*
> - * Platform descriptor.
> - */
> -const struct sbi_platform_operations platform_ops = {
> - .early_init = openpiton_early_init,
> - .final_init = openpiton_final_init,
> - .irqchip_init = openpiton_irqchip_init,
> - .ipi_init = openpiton_ipi_init,
> - .timer_init = openpiton_timer_init,
> +static int openhwgroup_openpiton_platform_init(const void *fdt, int nodeoff, const struct fdt_match *match)
> +{
> + generic_platform_ops.early_init = openpiton_early_init;
> + generic_platform_ops.timer_init = openpiton_timer_init;
> + generic_platform_ops.ipi_init = openpiton_ipi_init;
> + generic_platform_ops.irqchip_init = openpiton_irqchip_init;
> + generic_platform_ops.final_init = openpiton_final_init;
> +
> + return 0;
> +}
> +
> +static const struct fdt_match openhwgroup_openpiton_match[] = {
> + { .compatible = "openpiton,cva6platform" },
> + { },
> };
>
> -const struct sbi_platform platform = {
> - .opensbi_version = OPENSBI_VERSION,
> - .platform_version = SBI_PLATFORM_VERSION(0x0, 0x01),
> - .name = "OPENPITON RISC-V",
> - .features = SBI_PLATFORM_DEFAULT_FEATURES,
> - .hart_count = OPENPITON_DEFAULT_HART_COUNT,
> - .hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE,
> - .heap_size =
> - SBI_PLATFORM_DEFAULT_HEAP_SIZE(OPENPITON_DEFAULT_HART_COUNT),
> - .platform_ops_addr = (unsigned long)&platform_ops
> +const struct fdt_driver openhwgroup_openpiton = {
> + .match_table = openhwgroup_openpiton_match,
> + .init = openhwgroup_openpiton_platform_init,
> };
> --
> 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